From 3b8b0b3fba253c55f15a3733df5dae88905e9fd1 Mon Sep 17 00:00:00 2001 From: Euguuu Date: Tue, 4 May 2021 18:57:06 +0200 Subject: [PATCH 001/164] init oaut2 client feature --- front/src/components/oauth2/OAuth2Config.jsx | 119 +++++++++++++ front/src/components/oauth2/actions.js | 112 ++++++++++++ front/src/config/i18n/en.json | 12 ++ front/src/config/i18n/fr.json | 12 ++ server/api/controllers/oauth2.controller.js | 164 ++++++++++++++++++ server/config/oauth2/providers.json | 11 ++ server/lib/oauth2/index.js | 13 ++ server/lib/oauth2/oauth2.deleteVar.js | 31 ++++ server/lib/oauth2/oauth2.executeQuery.js | 136 +++++++++++++++ server/lib/oauth2/oauth2.saveVar.js | 35 ++++ server/package.json | 3 + server/seeders/20190226025931-variable.js | 18 ++ .../oauth2/oauth2.controller.test.js | 110 ++++++++++++ .../controllers/oauth2/oauth2.request.test.js | 70 ++++++++ server/test/lib/oauth2/oauth2manager.test.js | 125 +++++++++++++ 15 files changed, 971 insertions(+) create mode 100755 front/src/components/oauth2/OAuth2Config.jsx create mode 100755 front/src/components/oauth2/actions.js create mode 100644 server/api/controllers/oauth2.controller.js create mode 100644 server/config/oauth2/providers.json create mode 100755 server/lib/oauth2/index.js create mode 100755 server/lib/oauth2/oauth2.deleteVar.js create mode 100644 server/lib/oauth2/oauth2.executeQuery.js create mode 100755 server/lib/oauth2/oauth2.saveVar.js create mode 100755 server/test/controllers/oauth2/oauth2.controller.test.js create mode 100755 server/test/controllers/oauth2/oauth2.request.test.js create mode 100755 server/test/lib/oauth2/oauth2manager.test.js diff --git a/front/src/components/oauth2/OAuth2Config.jsx b/front/src/components/oauth2/OAuth2Config.jsx new file mode 100755 index 0000000000..1146eb3d76 --- /dev/null +++ b/front/src/components/oauth2/OAuth2Config.jsx @@ -0,0 +1,119 @@ +import { RequestStatus } from '../../utils/consts'; +import { Text, Localizer, MarkupText } from 'preact-i18n'; +import cx from 'classnames'; + +const OAuth2Config = ({ integrationImg, integrationName, children, ...props }) => ( +
+
+
+
+
+
+
+
+
+
+ {props.oauth2GetStatus !== RequestStatus.Getting && !props.clientIdInDb && ( +
+

+ +

+ {props.oauth2ErrorMsg && ( +
+ +
+ )} +

+ +

+

+ +

+
+
+ +
+
+ + } + onInput={props.updateClientId} + value={props.clientId} + /> + +
+
+
+
+ + } + onInput={props.updateSecretId} + value={props.secretId} + /> + +
+
+
+ + + +
+
+ )} + {props.oauth2GetStatus === RequestStatus.Success && props.clientIdInDb && ( +
+

+ +

+
+

+ +

+

+ + + + {`${props.clientIdInDb}`} +

+

+ +

+

+ +

+
+

+ +

+
+ + + +
+
+ )} +
+
+
+
+
+
+
+
+
+); + +export default OAuth2Config; diff --git a/front/src/components/oauth2/actions.js b/front/src/components/oauth2/actions.js new file mode 100755 index 0000000000..167aea1e28 --- /dev/null +++ b/front/src/components/oauth2/actions.js @@ -0,0 +1,112 @@ +import { RequestStatus } from '../../utils/consts'; + +const actions = store => ({ + updateIntegrationName(state, e) { + store.setState({ + integrationName: e + }); + }, + updateClientId(state, e) { + store.setState({ + clientId: e.target.value + }); + }, + updateSecretId(state, e) { + store.setState({ + secretId: e.target.value + }); + }, + async getCurrentConfig(state) { + store.setState({ + oauth2GetStatus: RequestStatus.Getting + }); + + const returnServiceId = await state.httpClient.get(`/api/v1/service/${state.integrationName}/getServiceId`); + + const returnGetConfig = await state.httpClient.get('/api/v1/service/oauth2/client/current-config', { + integrationName: state.integrationName, + serviceId: returnServiceId.result.serviceId + }); + + if (returnGetConfig) { + // Case of config found + store.setState({ + clientIdInDb: returnGetConfig.clientId, + oauth2ErrorMsg: null, + oauth2GetStatus: RequestStatus.Success + }); + } else { + store.setState({ + oauth2ErrorMsg: null, + oauth2GetStatus: RequestStatus.Success + }); + } + }, + async startConnect(state) { + store.setState({ + oauth2GetStatus: RequestStatus.Getting + }); + try { + if (!state.secretId || !state.clientId) { + store.setState({ + oauth2GetStatus: RequestStatus.Error, + oauth2ErrorMsg: 'errorEmptyConfig' + }); + return; + } + + const returnSaveVar = await state.httpClient.post(`/api/v1/service/${state.integrationName}/savevar`, { + clientId: state.clientId, + secretId: state.secretId, + integrationName: state.integrationName + }); + + let serviceId; + if (returnSaveVar.success === true) { + serviceId = returnSaveVar.result.serviceId; + } else { + store.setState({ + oauth2GetStatus: RequestStatus.Error, + oauth2ErrorMsg: 'errorServiceId' + }); + } + + const returnValue = await state.httpClient.post('/api/v1/service/oauth2/client/authorization-uri', { + clientId: state.clientId, + secretId: state.secretId, + integrationName: state.integrationName, + serviceId + }); + if (returnValue.success === true) { + window.location = returnValue.authorizationUri; + } else { + store.setState({ + oauth2GetStatus: RequestStatus.Error, + oauth2ErrorMsg: 'errorAuthorizationUri' + }); + return; + } + } catch (e) { + store.setState({ + oauth2GetStatus: RequestStatus.Error, + oauth2ErrorMsg: 'errorAuthorizationUri' + }); + return; + } + }, + async unConnect(state) { + store.setState({ + oauth2GetStatus: RequestStatus.Getting + }); + + await state.httpClient.get(`/api/v1/service/${state.integrationName}/deleteConfig`); + + store.setState({ + clientIdInDb: null, + oauth2ErrorMsg: null, + oauth2GetStatus: RequestStatus.Success + }); + } +}); + +export default actions; diff --git a/front/src/config/i18n/en.json b/front/src/config/i18n/en.json index 9c8360d7e3..b14b2aa615 100644 --- a/front/src/config/i18n/en.json +++ b/front/src/config/i18n/en.json @@ -791,6 +791,18 @@ "saveLabel": "Save configuration" } }, + "oauth2": { + "buttonConnect": "Connect now", + "apiKeyLabel": "Then, enter your client_id and secret_id key here:", + "errorEmptyConfig": "Client Id and Secret Id must not be empty !", + "errorServiceId": "Service Id of current integration must not be found !", + "errorAuthorizationUri": "Error in authorization provider !", + "clientId": "Account client id", + "secretId": "Account secret id", + "instructions": "In this stage please fill in the given client_id and secret_id key below and click on connect button.", + "delete": "To delete your account configuration clic on 'Unconnect' button (all data will be deleted).", + "buttonUnConnect": "Unconnect" + }, "eWeLink": { "title": "eWeLink", "description": "Control your eWeLink devices.", diff --git a/front/src/config/i18n/fr.json b/front/src/config/i18n/fr.json index e0d864d6e5..69c1dda34b 100644 --- a/front/src/config/i18n/fr.json +++ b/front/src/config/i18n/fr.json @@ -791,6 +791,18 @@ "magnet": "Capteur magnétique" } }, + "oauth2": { + "buttonConnect": "Connecter maintenant", + "apiKeyLabel": "Saisissez ensuite votre clé client_id et secret_id ici:", + "errorEmptyConfig": "Client Id et Secret Id ne doivent pas être vide !", + "errorServiceId": "Service Id de l'intégration courante n'a pas été trouvé !", + "errorAuthorizationUri": "Erreur dans la configuration du provider pour l'autorisation de connexion !", + "clientId": "Client id du compte", + "secretId": "Secret id du compte", + "instructions": "À cette étape, veuillez remplir les champs client_id et secret_id ci-dessous et cliquez sur le bouton de connexion.", + "delete": "Pour supprimer vos configuration de compte cliquer sur le bouton 'Déconneter' (toutes les données associées seront supprimées).", + "buttonUnConnect": "Déconnecter" + }, "eWeLink": { "title": "eWeLink", "description": "Contrôlez vos appareils eWeLink.", diff --git a/server/api/controllers/oauth2.controller.js b/server/api/controllers/oauth2.controller.js new file mode 100644 index 0000000000..89aa346c66 --- /dev/null +++ b/server/api/controllers/oauth2.controller.js @@ -0,0 +1,164 @@ +const { AuthorizationCode } = require('simple-oauth2'); +const logger = require('../../utils/logger'); +const asyncMiddleware = require('../middlewares/asyncMiddleware'); +const providers = require('../../config/oauth2/providers.json'); + +module.exports = function OAuth2Controller(gladys) { + /** + * @description uild an authorization uri (to get authorizationcode). + * @api {post} /api/v1/service/oauth2/client/authorization-uri Build an authorization uri (to get authorizationcode) + * @apiName BuildAuthorizationUri + * @apiGroup OAuth2 + */ + async function buildAuthorizationUri(req, res) { + // Find provider configuration + const currentProvider = providers[req.body.integrationName]; + const { tokenHost } = currentProvider; + const { authorizeHost } = currentProvider; + const { authorizePath } = currentProvider; + const { integrationScope } = currentProvider; + const { redirectUriSuffix } = currentProvider; + + // Get variale client_id and secret_id + const clientId = await gladys.variable.getValue( + `${req.body.integrationName.toUpperCase()}_CLIENT_ID`, + req.body.serviceId, + req.user.id, + ); + const secretId = await gladys.variable.getValue( + `${req.body.integrationName.toUpperCase()}_SECRET_ID`, + req.body.serviceId, + req.user.id, + ); + + // Init credentials based on integration name + const credentials = { + client: { + id: clientId, + secret: secretId, + }, + auth: { + tokenHost, + authorizeHost, + authorizePath, + }, + }; + + const client = new AuthorizationCode(credentials); + const authorizationUriResult = await client.authorizeURL({ + redirect_uri: `${req.headers.referer}${redirectUriSuffix}`, + scope: integrationScope, + state: `gladys_state_${req.body.integrationName}`, + }); + + res.json({ + success: true, + authorizationUri: authorizationUriResult, + }); + } + + /** + * @description Build an authorization uri to get an access token. + * @api {post} /api/v1/service/oauth2/client/token-access-uri Build an getToken uri (to get token access) + * @apiName buildTokenAccessUri + * @apiGroup OAuth2 + */ + async function buildTokenAccessUri(req, res) { + // Find provider configuration + const currentProvider = providers[req.body.integrationName]; + const { tokenHost } = currentProvider; + const { tokenPath } = currentProvider; + const { authorizeHost } = currentProvider; + const { authorizePath } = currentProvider; + const { grantType } = currentProvider; + const { redirectUriSuffix } = currentProvider; + + const { authorizationCode } = req.body; + + const clientId = await gladys.variable.getValue( + `${req.body.integrationName.toUpperCase()}_CLIENT_ID`, + req.body.serviceId, + req.user.id, + ); + const secretId = await gladys.variable.getValue( + `${req.body.integrationName.toUpperCase()}_SECRET_ID`, + req.body.serviceId, + req.user.id, + ); + + // Init credentials based on integration name + const credentials = { + client: { + id: clientId, + secret: secretId, + }, + auth: { + tokenHost, + tokenPath, + authorizeHost, + authorizePath, + }, + }; + // Build token access request + const tokenConfig = { + code: authorizationCode, + client_id: clientId, + client_secret: secretId, + grant_type: grantType, + redirect_uri: `${req.headers.referer}${redirectUriSuffix}`, + }; + + try { + const client = new AuthorizationCode(credentials); + const authResult = await client.getToken(tokenConfig, { json: true }); + + // Save accessToken + await gladys.variable.setValue( + `${req.body.integrationName.toUpperCase()}_ACCESS_TOKEN`, + JSON.stringify(authResult), + req.body.serviceId, + req.user.id, + ); + + res.json({ + success: true, + result: authResult, + }); + } catch (error) { + logger.error(error); + + res.json({ + success: false, + result: error.message, + }); + } + } + + /** + * @description Return the current integration config. + * @api {get} /api/v1/service/oauth2/client/current-config Return the current integration config. + * @apiName getCurrentConfig + * @apiGroup oauth2 + */ + async function getCurrentConfig(req, res) { + const { integrationName } = req.query; + const { serviceId } = req.query; + + const resultClientId = await gladys.variable.getValue( + `${integrationName.toUpperCase()}_CLIENT_ID`, + serviceId, + req.user.id, + ); + + res.json({ + success: true, + clientId: resultClientId, + }); + } + + return Object.freeze({ + buildAuthorizationUri: asyncMiddleware(buildAuthorizationUri), + buildTokenAccessUri: asyncMiddleware(buildTokenAccessUri), + getCurrentConfig: asyncMiddleware(getCurrentConfig), + }); +}; diff --git a/server/config/oauth2/providers.json b/server/config/oauth2/providers.json new file mode 100644 index 0000000000..d4afda1cfe --- /dev/null +++ b/server/config/oauth2/providers.json @@ -0,0 +1,11 @@ +{ + "test": { + "tokenHost": "http://localhost:9292", + "tokenPath": "/oauth2/token", + "authorizeHost": "http://localhost:9292", + "authorizePath": "/oauth2_user/authorize2", + "integrationScope": "user.info,user.metrics,user.activity,user.sleepevents", + "grantType": "authorization_code", + "redirectUriSuffix": "dashboard/integration/health/test/settings" + } +} diff --git a/server/lib/oauth2/index.js b/server/lib/oauth2/index.js new file mode 100755 index 0000000000..fc754c6573 --- /dev/null +++ b/server/lib/oauth2/index.js @@ -0,0 +1,13 @@ +const { executeQuery } = require('./oauth2.executeQuery'); +const { saveVar } = require('./oauth2.saveVar'); +const { deleteVar } = require('./oauth2.deleteVar'); + +const OAuth2Manager = function OAuth2Manager(gladys) { + this.gladys = gladys; +}; + +OAuth2Manager.prototype.executeQuery = executeQuery; +OAuth2Manager.prototype.saveVar = saveVar; +OAuth2Manager.prototype.deleteVar = deleteVar; + +module.exports = OAuth2Manager; diff --git a/server/lib/oauth2/oauth2.deleteVar.js b/server/lib/oauth2/oauth2.deleteVar.js new file mode 100755 index 0000000000..8770641105 --- /dev/null +++ b/server/lib/oauth2/oauth2.deleteVar.js @@ -0,0 +1,31 @@ +const logger = require('../../utils/logger'); + +/** + * @description Delete client_id and secrei_id of current oauth2 integration. + * @param {string} integrationName - Name of oauth2 integration. + * @param {string} serviceId - Gladys serviceId of current integration. + * @param {string} userId - Gladys userId of current session. + * @returns {Promise} Resolve with current integration service id. + * @example + * oauth2.deleteVar( + * integrationName: 'withings', + * userId: fd81vs687f0bf3414e0fe3facfba7be9455109409a' + * } + * ); + */ +async function deleteVar(integrationName, serviceId, userId) { + try { + await this.gladys.variable.destroy(`${integrationName.toUpperCase()}_CLIENT_ID`, serviceId, userId); + await this.gladys.variable.destroy(`${integrationName.toUpperCase()}_SECRET_ID`, serviceId, userId); + await this.gladys.variable.destroy(`${integrationName.toUpperCase()}_ACCESS_TOKEN`, serviceId, userId); + } catch (error) { + logger.error(error.message); + return { success: false, errorMsg: error.message }; + } + + return { success: true }; +} + +module.exports = { + deleteVar, +}; diff --git a/server/lib/oauth2/oauth2.executeQuery.js b/server/lib/oauth2/oauth2.executeQuery.js new file mode 100644 index 0000000000..1ec6ed2e8f --- /dev/null +++ b/server/lib/oauth2/oauth2.executeQuery.js @@ -0,0 +1,136 @@ +const queryString = require('query-string'); +const { ClientCredentials } = require('simple-oauth2'); +const { default: axios } = require('axios'); +const logger = require('../../utils/logger'); +const providers = require('../../config/oauth2/providers.json'); + +/** + * @description Refresh Oauth2 token in case of it expired . + * @param {string} serviceId - Gladys service id call method. + * @param {string} integrationName - Name of oauth2 integration. + * @param {Object} gladys - Current gladys instance. + * @param {string} userId - Gladys userId of current session. + * @returns {Object} Response of oauth2 refresh token query . + * @example + * oauth2.refreshTokenAccess('7fdsf4s68r4gfr68f4r63csd7f6f4c3r85', + * 'withings', {...}, '78v4f3df83g74v1fsd8375f63gvrf5c'); + */ +async function refreshTokenAccess(serviceId, integrationName, gladys, userId) { + const clientId = await gladys.variable.getValue(`${integrationName.toUpperCase()}_CLIENT_ID`, serviceId, userId); + const secretId = await gladys.variable.getValue(`${integrationName.toUpperCase()}_SECRET_ID`, serviceId, userId); + const accessToken = JSON.parse( + await gladys.variable.getValue(`${integrationName.toUpperCase()}_ACCESS_TOKEN`, serviceId, userId), + ); + + logger.trace('accessToken: ', accessToken); + // Find provider configuration + const currentProvider = providers[integrationName]; + const { tokenHost } = currentProvider; + const { tokenPath } = currentProvider; + const { authorizeHost } = currentProvider; + const { authorizePath } = currentProvider; + const { integrationScope } = currentProvider; + + // Init credentials based on integration name + const credentials = { + client: { + id: `${clientId}`, + secret: `${secretId}`, + }, + auth: { + tokenHost, + tokenPath, + authorizeHost, + authorizePath, + }, + http: { + json: true, + }, + }; + + try { + const client = new ClientCredentials(credentials); + let authResult = await client.createToken(accessToken); + + if (authResult.expired()) { + logger.trace('Refresh token is requiered'); + // Refresh token + try { + const refreshParams = { + client_id: clientId, + client_secret: secretId, + scope: integrationScope, + }; + + authResult = await authResult.refresh(refreshParams); + + // Save new accessToken + await gladys.variable.setValue( + `${integrationName.toUpperCase()}_ACCESS_TOKEN`, + JSON.stringify(authResult), + serviceId, + userId, + ); + } catch (error) { + logger.error('Error refreshing access token: ', error); + } + } + + logger.trace('authResult: ', authResult); + return authResult; + } catch (error) { + logger.error(error); + return null; + } +} + +/** + * @description Execute a query to Oauth2 API. + * @param {string} serviceId - Gladys service id call method. + * @param {string} userId - Gladys userId of current session. + * @param {string} integrationName - Oauth2 integration name. + * @param {string} queryType - Method of call ('get' or 'post'). + * @param {string} queryUrl - Url to send query. + * @param {string} queryParams - Array of query params. + * @returns {Promise} Result of query . + * @example + * oauth2.executeQuery('7fdsf4s68r4gfr68f4r63csd7f6f4c3r85', '78v4f3df83g74v1fsd8375f63gvrf5c', 'withings' + * 'Bearer', 'get', 'http://localhost/apiname',[...]); + */ +async function executeQuery(serviceId, userId, integrationName, queryType, queryUrl, queryParams) { + // Refresh token access if needed + const accesToken = await refreshTokenAccess(serviceId, integrationName, this.gladys, userId); + + const headerConfig = { + headers: { + Authorization: `${accesToken.token.token_type} ${accesToken.token.access_token}`, + }, + }; + + try { + let result; + if (queryType === 'get' || queryType === 'GET' || queryType === 'Get') { + // Add param in query + result = await axios.get(`${queryUrl}?${queryParams}`, headerConfig); + } else { + // Add param to body + const data = {}; + const queryParamsExtract = queryString.parse(queryParams); + Object.keys(queryParamsExtract).forEach((key) => { + logger.debug(key, queryParamsExtract[key]); + data[key] = queryParamsExtract[key]; + }); + + result = await axios.post(queryUrl, data, headerConfig); + } + + return result; + } catch (error) { + logger.error('Execute query error: ', error.message); + return null; + } +} + +module.exports = { + executeQuery, +}; diff --git a/server/lib/oauth2/oauth2.saveVar.js b/server/lib/oauth2/oauth2.saveVar.js new file mode 100755 index 0000000000..7df9955408 --- /dev/null +++ b/server/lib/oauth2/oauth2.saveVar.js @@ -0,0 +1,35 @@ +const logger = require('../../utils/logger'); + +/** + * @description Save client_id and secrei_id of current oauth2 integration. + * @param {string} clientId - The client_id of oauth2. + * @param {string} secretId - The secret_id of oauth2. + * @param {string} integrationName - Name of oauth2 integration. + * @param {string} serviceId - Gladys serviceId of current integration. + * @param {string} userId - Gladys userId of current session. + * @returns {Promise} Resolve with current integration service id. + * @example + * oauth2.saveVar( + * 'b2f2c27f0bf3414e0fe3facfba7be9455109409a', + * '9d41fe14fz23414e0fe3facfba7be9455109409a', + * 'withings', + * ffsdvs687f0bf3414e0fe3facfba7be945510fds09a' + * fd81vs687f0bf3414e0fe3facfba7be9455109409a' + * } + * ); + */ +async function saveVar(clientId, secretId, integrationName, serviceId, userId) { + try { + await this.gladys.variable.setValue(`${integrationName.toUpperCase()}_CLIENT_ID`, clientId, serviceId, userId); + await this.gladys.variable.setValue(`${integrationName.toUpperCase()}_SECRET_ID`, secretId, serviceId, userId); + } catch (error) { + logger.error(error.message); + return { success: false, errorMsg: error.message }; + } + + return { success: true }; +} + +module.exports = { + saveVar, +}; diff --git a/server/package.json b/server/package.json index 8bfa3f43c8..35103c8085 100644 --- a/server/package.json +++ b/server/package.json @@ -62,6 +62,7 @@ "nodemon": "^2.0.7", "npm-run-all": "^4.1.5", "nyc": "^15.1.0", + "oauth2-mock-server": "^3.1.0", "prettier": "^1.17.1", "proxyquire": "^2.1.0", "shx": "^0.3.2", @@ -92,11 +93,13 @@ "node-webcrypto-ossl": "^1.0.48", "node-nlp": "^4.19.7", "path-to-regexp": "^3.0.0", + "query-string": "^6.12.1", "queue": "^6.0.0", "semver": "^6.1.1", "sequelize": "^6.5.0", "sequelize-cli": "^6.2.0", "set-value": "^3.0.2", + "simple-oauth2": "^4.2.0", "sqlite3": "^5.0.2", "suncalc": "^1.8.0", "tracer": "^1.1.4", diff --git a/server/seeders/20190226025931-variable.js b/server/seeders/20190226025931-variable.js index 1830b781cd..cd80733dee 100644 --- a/server/seeders/20190226025931-variable.js +++ b/server/seeders/20190226025931-variable.js @@ -37,6 +37,24 @@ module.exports = { created_at: '2019-02-12 07:49:07.556 +00:00', updated_at: '2019-02-12 07:49:07.556 +00:00', }, + { + id: '82acb636-47a1-4445-ab23-55947e38875a', + name: 'TEST_CLIENT_ID', + service_id: 'a810b8db-6d04-4697-bed3-c4b72c996279', + user_id: '0cd30aef-9c4e-4a23-88e3-3547971296e5', + value: 'TEST_CLIENT_ID', + created_at: '2019-02-12 07:49:07.556 +00:00', + updated_at: '2019-02-12 07:49:07.556 +00:00', + }, + { + id: '8371e211-1951-4695-b137-2d0182868f07', + name: 'TEST_SECRET_ID', + service_id: 'a810b8db-6d04-4697-bed3-c4b72c996279', + user_id: '0cd30aef-9c4e-4a23-88e3-3547971296e5', + value: 'TEST_SECRET_ID', + created_at: '2019-02-12 07:49:07.556 +00:00', + updated_at: '2019-02-12 07:49:07.556 +00:00', + }, ], {}, ), diff --git a/server/test/controllers/oauth2/oauth2.controller.test.js b/server/test/controllers/oauth2/oauth2.controller.test.js new file mode 100755 index 0000000000..b95459ba66 --- /dev/null +++ b/server/test/controllers/oauth2/oauth2.controller.test.js @@ -0,0 +1,110 @@ +const { expect } = require('chai'); +const { OAuth2Server } = require('oauth2-mock-server'); + +const { buildOauth2Request } = require('./oauth2.request.test'); +const logger = require('../../../utils/logger'); + +const server = new OAuth2Server(); + +describe('POST /api/v1/service/oauth2/client/authorization-uri', () => { + before(async function testBefore() { + // Generate a new RSA key and add it to the keystore + await server.issuer.keys.generateRSA(); + // Start the server + await server.start(9292, 'localhost'); + logger.debug('Issuer URL:', server.issuer.url); + }); + + after(async function testAfter() { + await server.stop(); + }); + + it('should get authorization uri', async () => { + const req = { + header: { + referer: 'fake-referer', + }, + integrationName: 'test', + serviceId: 'a810b8db-6d04-4697-bed3-c4b72c996279', + user: { + id: '0cd30aef-9c4e-4a23-88e3-3547971296e5', + }, + }; + + await buildOauth2Request + .post('/api/v1/service/oauth2/client/authorization-uri') + .send(req) + .expect('Content-Type', /json/) + .expect(200) + .then((res) => { + expect(res.body).to.have.property('success'); + expect(res.body).to.have.property('authorizationUri'); + }); + }); +}); + +describe('POST /api/v1/service/oauth2/client/token-access-uri', () => { + it('should get token access uri', async () => { + const req = { + integrationName: 'test', + serviceId: 'a810b8db-6d04-4697-bed3-c4b72c996279', + authorizationCode: 'fake-code', + user: { + id: '0cd30aef-9c4e-4a23-88e3-3547971296e5', + }, + }; + + await buildOauth2Request + .post('/api/v1/service/oauth2/client/token-access-uri') + .send(req) + .expect('Content-Type', /json/) + .expect(200) + .then((res) => { + expect(res.body).to.have.property('success'); + expect(res.body).to.have.property('result'); + }); + }); +}); + +// failled call +describe('POST /api/v1/service/oauth2/client/token-access-uri', () => { + it('should get token access uri', async () => { + const req = { + integrationName: 'test', + serviceId: 'a810b8db-6d04-4697-bed3-c4b72c996279', + authorizationCode: 'fake-code', + }; + + await buildOauth2Request + .post('/api/v1/service/oauth2/client/token-access-uri') + .send(req) + .expect('Content-Type', /json/) + .expect(200) + .then((res) => { + expect(res.body).to.have.property('success'); + expect(res.body).to.have.property('result'); + }); + }); +}); + +describe('GET /api/v1/service/oauth2/client/current-config', () => { + it('should get token access uri', async () => { + const req = { + integrationName: 'test', + serviceId: 'a810b8db-6d04-4697-bed3-c4b72c996279', + user: { + id: '0cd30aef-9c4e-4a23-88e3-3547971296e5', + }, + }; + + await buildOauth2Request + .get('/api/v1/service/oauth2/client/current-config') + .query(req) + .expect('Content-Type', /json/) + .expect(200) + .then((res) => { + expect(res.body).to.have.property('success'); + expect(res.body).to.have.property('clientId'); + }); + }); +}); diff --git a/server/test/controllers/oauth2/oauth2.request.test.js b/server/test/controllers/oauth2/oauth2.request.test.js new file mode 100755 index 0000000000..437c99c79f --- /dev/null +++ b/server/test/controllers/oauth2/oauth2.request.test.js @@ -0,0 +1,70 @@ +const request = require('supertest'); +const { generateAccessToken } = require('../../../utils/accessToken'); + +const token = generateAccessToken( + '0cd30aef-9c4e-4a23-88e3-3547971296e5', + ['dashboard:write', 'reset-password:write'], + 'baf1fa89-153b-4f2e-adf3-787e410ec291', + 'secret', +); +const header = `Bearer ${token}`; +const referer = 'http://localhost:9090'; + +const buildOauth2Request = { + // @ts-ignore + get: (url) => + request(TEST_BACKEND_APP) + .get(url) + .set('Accept', 'application/json') + .set('Authorization', header) + .set('referer', referer), + // @ts-ignore + post: (url) => + request(TEST_BACKEND_APP) + .post(url) + .set('Accept', 'application/json') + .set('Authorization', header) + .set('referer', referer), + // @ts-ignore + patch: (url) => + request(TEST_BACKEND_APP) + .patch(url) + .set('Accept', 'application/json') + .set('Authorization', header) + .set('referer', referer), + // @ts-ignore + delete: (url) => + request(TEST_BACKEND_APP) + .delete(url) + .set('Accept', 'application/json') + .set('Authorization', header) + .set('referer', referer), +}; + +const unBuildOauth2RequestRequest = { + // @ts-ignore + get: (url) => + request(TEST_BACKEND_APP) + .get(url) + .set('Accept', 'application/json'), + // @ts-ignore + post: (url) => + request(TEST_BACKEND_APP) + .post(url) + .set('Accept', 'application/json'), + // @ts-ignore + patch: (url) => + request(TEST_BACKEND_APP) + .patch(url) + .set('Accept', 'application/json'), + // @ts-ignore + delete: (url) => + request(TEST_BACKEND_APP) + .delete(url) + .set('Accept', 'application/json'), +}; + +module.exports = { + buildOauth2Request, + request: unBuildOauth2RequestRequest, +}; diff --git a/server/test/lib/oauth2/oauth2manager.test.js b/server/test/lib/oauth2/oauth2manager.test.js new file mode 100755 index 0000000000..199ddf0ae2 --- /dev/null +++ b/server/test/lib/oauth2/oauth2manager.test.js @@ -0,0 +1,125 @@ +const { OAuth2Server } = require('oauth2-mock-server'); +const { assert } = require('chai'); +const { fake } = require('sinon'); + +const OAuth2Manager = require('../../../lib/oauth2'); +const logger = require('../../../utils/logger'); + +const server = new OAuth2Server(); + +const serviceId = 'fdsqfds-f46fdqs5f2-f4d5sqf2sd'; +const userId = 'fsdqf4d-4896fsd-fsdq454454sd-fsd'; +const integrationName = 'test'; +const clientId = 'fsdqf4d-4896fsd-fsdq454454sd-fsd'; +const secretId = 'fsdqf4d-4896fsd-fsdq454454sd-fsd'; + +const gladys = { + variable: { + getValue: fake.returns( + '{"access_token":"b96a86b654acb01c2aeb4d5a39f10ff9c964f8e4","expires_in":10800,' + + '"token_type":"Bearer",' + + '"scope":"user.info,user.metrics,user.activity,user.sleepevents",' + + '"refresh_token":"11757dc7fd8d25889f5edfd373d1f525f53d4942",' + + '"userid":"33669966",' + + '"expires_at":"2020-11-13T20:46:50.042Z"}', + ), + setValue: fake.returns(null), + destroy: fake.returns(null), + }, +}; + +/** + * Verify componant to implement oauth2manager executeQuery + */ +describe('oauth2manager test', () => { + before(async function testBefore() { + // Generate a new RSA key and add it to the keystore + await server.issuer.keys.generateRSA(); + // Start the server + await server.start(9292, 'localhost'); + logger.debug('Issuer URL:', server.issuer.url); + }); + + after(async function testAfter() { + await server.stop(); + }); + + const manager = new OAuth2Manager(gladys); + + it('oauth manager get executeQuery test ', async () => { + const queryType = 'get'; + const queryUrl = 'http://localhost:9292/userinfo'; + const queryParams = 'param1=testParam'; + + const result = await manager.executeQuery(serviceId, userId, integrationName, queryType, queryUrl, queryParams); + + return assert.equal(result.status, '200'); + }); + + it('oauth manager post executeQuery test ', async () => { + const queryType = 'post'; + const queryUrl = 'http://localhost:9292/revoke'; + const queryParams = 'param1=testParam'; + + logger.debug(manager); + const result = await manager.executeQuery(serviceId, userId, integrationName, queryType, queryUrl, queryParams); + + return assert.equal(result.status, '200'); + }); + + it('oauth manager get error executeQuery test ', async () => { + const queryType = 'get'; + const queryUrl = 'http://localhost:9292/revoke'; + const queryParams = 'param1=testParam'; + + const result = await manager.executeQuery(serviceId, userId, integrationName, queryType, queryUrl, queryParams); + + return assert.equal(result, null); + }); + + it('oauth manager get error executeQuery test (bad integration name) ', async () => { + const queryType = 'get'; + const queryUrl = 'http://localhost:9292/revoke'; + const queryParams = 'param1=testParam'; + + const result = await manager.executeQuery( + serviceId, + 'fakeUserId', + integrationName, + queryType, + queryUrl, + queryParams, + ); + + return assert.equal(result, null); + }); + + it('oauth manager get error saveVar test ', async () => { + const result = await manager.saveVar(clientId, secretId, integrationName, serviceId, userId); + logger.debug(result); + return assert.equal(result.success, true); + }); + + it('oauth manager get error deleteVar test ', async () => { + const result = await manager.deleteVar(integrationName, serviceId, userId); + logger.debug(result); + return assert.equal(result.success, true); + }); +}); + +describe('oauth2manager failled test', () => { + // check error + const manager = new OAuth2Manager(null); + + it('oauth manager get error saveVar failled test ', async () => { + const result = await manager.saveVar(clientId, secretId, integrationName, serviceId, userId); + logger.debug(result); + return assert.equal(result.success, false); + }); + + it('oauth manager get error deleteVar failled test ', async () => { + const result = await manager.deleteVar(integrationName, serviceId, userId); + logger.debug(result); + return assert.equal(result.success, false); + }); +}); From e46386762cf7eb48933579758c7996d955649bcf Mon Sep 17 00:00:00 2001 From: Euguuu Date: Tue, 4 May 2021 19:09:11 +0200 Subject: [PATCH 002/164] init withings service --- front/src/assets/images/withings/Aura_2.jpg | Bin 0 -> 8342 bytes .../src/assets/images/withings/KidScale.jpeg | Bin 0 -> 10744 bytes .../images/withings/SmartBabyMonitor.jpg | Bin 0 -> 10727 bytes .../assets/images/withings/body-black-kg.jpg | Bin 0 -> 10169 bytes .../images/withings/body-cardio-black-kg.jpg | Bin 0 -> 22511 bytes .../images/withings/body-cardio-white-kg.jpg | Bin 0 -> 12748 bytes .../images/withings/body-plus-black-kg.jpg | Bin 0 -> 15956 bytes .../images/withings/body-plus-white-kg.jpg | Bin 0 -> 10102 bytes .../assets/images/withings/bpm-connect.jpg | Bin 0 -> 28918 bytes front/src/assets/images/withings/bpm-core.jpg | Bin 0 -> 54637 bytes front/src/assets/images/withings/go.jpg | Bin 0 -> 12795 bytes front/src/assets/images/withings/home.jpg | Bin 0 -> 10430 bytes .../images/withings/move-ecg-white-kg.jpg | Bin 0 -> 17969 bytes .../assets/images/withings/pulse-hr-black.jpg | Bin 0 -> 7230 bytes .../images/withings/sleep-analyzer-single.png | Bin 0 -> 289297 bytes .../assets/images/withings/steel-hr-36b.jpg | Bin 0 -> 16424 bytes .../images/withings/steel-hr-sport-40b.jpg | Bin 0 -> 21369 bytes .../assets/images/withings/steel-white.jpg | Bin 0 -> 13043 bytes front/src/assets/images/withings/thermo-c.jpg | Bin 0 -> 10341 bytes .../withings-move-basic-black-yellow.jpg | Bin 0 -> 16116 bytes .../assets/integrations/cover/withings.jpg | Bin 0 -> 21125 bytes front/src/components/app.jsx | 5 + front/src/config/i18n/en.json | 54 +++++- front/src/config/i18n/fr.json | 54 +++++- front/src/config/integrations/healths.json | 6 + front/src/config/integrations/index.js | 2 + .../integration/all/withings/WithingsPage.jsx | 69 ++++++++ .../all/withings/device-page/Device.jsx | 159 ++++++++++++++++++ .../withings/device-page/WithingsDevices.jsx | 70 ++++++++ .../all/withings/device-page/actions.js | 90 ++++++++++ .../all/withings/device-page/index.js | 28 +++ .../all/withings/device-page/style.css | 3 + .../all/withings/settings-page/actions.js | 38 +++++ .../all/withings/settings-page/index.js | 31 ++++ front/src/utils/combineActions.js | 21 +++ front/src/utils/consts.js | 18 ++ server/config/oauth2/providers.json | 9 + server/lib/device/device.create.js | 11 ++ .../device/device.destroyBySelectorPattern.js | 61 +++++++ .../lib/device/device.saveHistoricalState.js | 83 +++++++++ server/lib/device/device.setupPoll.js | 2 + server/lib/device/index.js | 4 + server/seeders/20190227081656-device.js | 26 +++ .../seeders/20190227081700-device-feature.js | 38 +++++ server/utils/constants.js | 28 +++ 45 files changed, 908 insertions(+), 2 deletions(-) create mode 100644 front/src/assets/images/withings/Aura_2.jpg create mode 100644 front/src/assets/images/withings/KidScale.jpeg create mode 100644 front/src/assets/images/withings/SmartBabyMonitor.jpg create mode 100644 front/src/assets/images/withings/body-black-kg.jpg create mode 100644 front/src/assets/images/withings/body-cardio-black-kg.jpg create mode 100644 front/src/assets/images/withings/body-cardio-white-kg.jpg create mode 100644 front/src/assets/images/withings/body-plus-black-kg.jpg create mode 100644 front/src/assets/images/withings/body-plus-white-kg.jpg create mode 100644 front/src/assets/images/withings/bpm-connect.jpg create mode 100644 front/src/assets/images/withings/bpm-core.jpg create mode 100644 front/src/assets/images/withings/go.jpg create mode 100644 front/src/assets/images/withings/home.jpg create mode 100644 front/src/assets/images/withings/move-ecg-white-kg.jpg create mode 100644 front/src/assets/images/withings/pulse-hr-black.jpg create mode 100644 front/src/assets/images/withings/sleep-analyzer-single.png create mode 100644 front/src/assets/images/withings/steel-hr-36b.jpg create mode 100644 front/src/assets/images/withings/steel-hr-sport-40b.jpg create mode 100644 front/src/assets/images/withings/steel-white.jpg create mode 100644 front/src/assets/images/withings/thermo-c.jpg create mode 100644 front/src/assets/images/withings/withings-move-basic-black-yellow.jpg create mode 100755 front/src/assets/integrations/cover/withings.jpg create mode 100644 front/src/config/integrations/healths.json create mode 100755 front/src/routes/integration/all/withings/WithingsPage.jsx create mode 100644 front/src/routes/integration/all/withings/device-page/Device.jsx create mode 100755 front/src/routes/integration/all/withings/device-page/WithingsDevices.jsx create mode 100755 front/src/routes/integration/all/withings/device-page/actions.js create mode 100755 front/src/routes/integration/all/withings/device-page/index.js create mode 100644 front/src/routes/integration/all/withings/device-page/style.css create mode 100755 front/src/routes/integration/all/withings/settings-page/actions.js create mode 100755 front/src/routes/integration/all/withings/settings-page/index.js create mode 100644 front/src/utils/combineActions.js create mode 100755 server/lib/device/device.destroyBySelectorPattern.js create mode 100644 server/lib/device/device.saveHistoricalState.js diff --git a/front/src/assets/images/withings/Aura_2.jpg b/front/src/assets/images/withings/Aura_2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4120d9e1ad91a247b9bb55821d90410f5be68bd2 GIT binary patch literal 8342 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 literal 0 HcmV?d00001 diff --git a/front/src/assets/images/withings/SmartBabyMonitor.jpg b/front/src/assets/images/withings/SmartBabyMonitor.jpg new file mode 100644 index 0000000000000000000000000000000000000000..982f91fe675534eec162deb419d9fba396be3431 GIT binary patch literal 10727 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 literal 0 HcmV?d00001 diff --git a/front/src/assets/images/withings/body-black-kg.jpg b/front/src/assets/images/withings/body-black-kg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f7b40a3ce679d47a8c1682c063f5d47478cb68f0 GIT binary patch literal 10169 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 literal 0 HcmV?d00001 diff --git a/front/src/assets/images/withings/body-cardio-black-kg.jpg b/front/src/assets/images/withings/body-cardio-black-kg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..90313fe0fd18fbba1a13872c01d76528c0841e0b GIT binary patch literal 22511 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 literal 0 HcmV?d00001 diff --git a/front/src/assets/images/withings/body-cardio-white-kg.jpg b/front/src/assets/images/withings/body-cardio-white-kg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c8f5bc5aa512245b452bbf508e1927527fab4b46 GIT binary patch literal 12748 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 literal 0 HcmV?d00001 diff --git a/front/src/assets/images/withings/bpm-connect.jpg b/front/src/assets/images/withings/bpm-connect.jpg new file mode 100644 index 0000000000000000000000000000000000000000..634f666d7cde9d09b78cfafbc52bac48ebc07caa GIT binary patch literal 28918 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

k>8KnK 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 literal 0 HcmV?d00001 diff --git a/front/src/assets/images/withings/bpm-core.jpg b/front/src/assets/images/withings/bpm-core.jpg new file mode 100644 index 0000000000000000000000000000000000000000..88b1674c297774494b11e980d98b4ff8a6a99796 GIT binary patch literal 54637 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 R@AOCgae6MH)AgOa|Jhx-quBre literal 0 HcmV?d00001 diff --git a/front/src/assets/images/withings/go.jpg b/front/src/assets/images/withings/go.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f7e13df3ca48a17af801d1110790053520b3531c GIT binary patch literal 12795 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 literal 0 HcmV?d00001 diff --git a/front/src/assets/images/withings/home.jpg b/front/src/assets/images/withings/home.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f549112640de8f6cfafb150bef1f92509a3c1694 GIT binary patch literal 10430 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 literal 0 HcmV?d00001 diff --git a/front/src/assets/images/withings/move-ecg-white-kg.jpg b/front/src/assets/images/withings/move-ecg-white-kg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f59a174b3be9844c6467b42df8f020b64ea44f6e GIT binary patch literal 17969 zcmb6Aby!@%?l=zb;?Cj}cXxMp_u}sE6nA&G7I*g|#ogV#P`p?v#d){A_kMogf8W`8 z&XbuWXXi{Z$z)E>``Y^+03;_RD+K@o0RSNQ2YBBEhyx%YApTZxfdW@(IA~}nC};#& zSQt1Y1SBLx1Vlt+6m$?W3K|L`A_yCVhJlHNg@uHQgNu!ci;jtf`S&J3NH7l+G(0pk zJSH+CGUor^<$VBv1_w+6TtNcS01#+ENHpO45P;zCFrohr_x}nM5E2>&76J~8#RGy1 z0P_FE0wKUp0Q0^9KmvC|fFMEO2Yo650HEWQzXbG-4Bme#y0siBt(C(R#9?rle=zvPXH)rfXWlj!E0Uc56`~8IAH0Mpi^$o;$RiH0rAHv z?e~*c?9N{d04Ds*L+H~pF(w!WZVDMKpA+E}{6zpzyw2SpP*)!g0VUx1xyWZf{e1;F z{|^Preb1-QeD)FqZo%q3?kYFD{3-f}L9x5IYyZ0Btx1EBMyG-WI3pH5xo6J16Zwk; zPW$I&k~|r)fH1=Wzy$%OKPHb?GXMApW;af56N`TRr6YtLzVc-Lau@U$qsO2#{hE*| z_@@&KP&8MmU7H@nl~4b5H6U<4nXwN{07RIeX8Zm0xp(_yE)mV8@-;x#&j<9#o^X7S z{B2_C&WY%wQ}YAiJAmtuT?9;z`^-euy*5hv`zdD?yR9eE%=6q;Y5HD<49!mQ;^x$U z2k9MP7F+H8rFOJ@(tJ!&1I&X-vbDt#Yx1GVMI^J|vXW8es7IfBoK7aE6O2TZf|$l` zbMMt53;2i-PC^9d5mRkh%e0EGV59;bUeS8pX=9oG*swBm=dD>4r)BYyFO#GxQ5HE| z(?Rjk5?BPWmK|l|mc!}ap>-=MfntpE;i#&XY-oFZHuXbsJDD^9V7<;X$CmxN>%Gnb zt(XV^fS}>3VKipQYvFVh@MWPBa^-s!l)|LA2dRSlN@Xj7Y7af*8AvFouD48=K|77B^4R>!g!nAl-yv!u+&tin!} zu7DMfm+$VM4hWsz;QPGIf80&0vjkPO&P1hVgm$yFYP{n+iuLG~yz07Lb5kh^MI#BV zN}6$I@2dx2`G?0n->kU(jvv1_eLLZk?7|bPj^DIXU_xT!1ze0-#Ky zDh5qY(S;iZiq|*Wvck#{5B@15*3LXzdx!!g0}B$M98{2a%~GR6n9pRi&9|ewnt2Nz zYKoosRfd3!nhb~nI8Btv+rt9s>eJYY5l`~kX8MeF*KYnRtj`5*+lunuXW32ioZl;g zDiEZo!e!cw*wnURE4ty1d{Y|h>T>{XE=&qPHM>mYnhg=O5yT2*Akyfum?g)SIp*nG zZ**b+xb(b6R9>f^0+m{}(0S1SIsiljT{EjElN5Ffvf@>uo_hfRCfhP|{L3-7Fa)F4 zx3nrM?800Q>;{Hxq;6cF1rK)ZRk7&`005aHwuX~4^(Frnk#`pKl) zBtAs1yyybaD(2dxX1U7GY2Al%+5k)d7}5F3A{gf?tXEm>;>5jhy!o`1Vk$~AicPO^ ze6ZsCjh|VVSnHQBzm;;vw)wBBATW#B#r5aa)iXC#uR_V_GzBNp)x+%3Do_V|++X`M zv(=v4o4$FG2kY0tD*`6R9=msQGAo^Zy$lx>OL?U65&T$4vf)>^tN-{8kkZfxTMPhz zU=nN$1OICb5y8e#_`k*wIQ3eWNc5!4f*Ayn1YGzg1U6NVyZ^JG>!&Wl6}Lg)8xSh@ z-SIQeJc)o|0N^NZR6f+-DhcdMNKkrzIQX~cTwDV+ab zTRq#YR6f0HbMW^L{Ph!0-Cq4yL4O;N(sw?)to~o43cwAa;74M;s!!c}U>E?f-JT&% z4Y=yR1H%Z!vM)}}^DlL4|4`&-euMWyLKw}%7%9>#4m#f>i!L2r)<649IA5JQCH?+I zKoA7>>O%ll5ZEFDAt9ikVE_8azvZ86M27*pZx#?12`MZqhX^(~1tmMDC>fg=*ki(h z>44A>7ecpY&CJ?5avmR7=wYomMUG@xXHFA7!qSI+nN!;((Nagp@HP#ascA{5>iA)0 zbdQ%l!$)>$?ZsaBjBHxte(EJeTz#M4uyWjr>b8IL7JI=t|2Dq$;1igBkN4{-K4Q?M zVa=WkANeov5O@)2QrBBIWXg&gCq<4H^%sbTy?6(#*(H|zAK5PK^0c4Of3a~V}HJWCO(%gTU_z2nl4sDjJfprc8w2)SEB6AM?1YfkC(Jf{-9FBOy(ZKzSl_hsp(=LQa zl40n=^6L~W{DoG=%57e?>ld;K@lKy{_*{`wSXvUE13U<~qDVz5F zp~c>Z=C*ic{FqSO(H7B!P8^v z3~s|th37o4tIN}-KuuhC6)RoAg%-wmif5H9+b*_6@h7>n9E_N`CVCzH%Xguy9>pnP zx#bXz;$^Se%OZ0*w3>9ahR@r$S$)s!rAI|jRI7vrdt^Qa-R_#Z~iw`NX zob%uTnK!Y5Wq+W|SoHF+fy;-G8-8PjR{tq(Y zh`Q$6&QBL#{4p&tuvwo!5pcyNg|+3&c5eHm6zTfYxv$vR&{Di@ea)fXuxYlZ=+8LJ zPz#+?kDs_gjbZOSkdZOinte-LxS?6tN(_Vt<)job#tzF-WSk}0$WnxC%2!0RlJukg z(Po}FeBp1_W$KUjAg}6vu)@c?{Y}HO&OkXV4X4ASH&8Gqx0NJbZktZ%x(S())PEh9JU0TWqVV#f=|nZV%cSJc8>+JWF%$lBe^4FY9Gn1BeX8Bhn{Kmj$im<*yWN?*N^W z^o*=`08w4Sb9BUn`j4OZHW3^80lDc8V&cpXmHe?Xm!%%bL>eVYUl)I_F-b~HjMDvf zB#nkk3cA4F@rY6!)pT0qCma=pMa3p7_c_m@NnDmyvRAaSV+4I`xq94isR{W&5yA}J zk{*l9H`F+%J>Q{InVn(o8_n!KU&!Y29Rdf{z2!n`gFujBb8*VBadG=3(nZV_ zPCAzy#!2xMU3*Hkc$2!|6`}Pd2U^aLW)lJjWE*_gyIeyC8W zh#l49pJrE(I&+jCRO>&tE9$fy@`@3sqU>Gd#+Ft~RCoN!-mtZ@Ojtr^SHzJvAq)8q zNclpZClwz)jM%^AN~RIW*uHqnB9l&>Ropmuo{Yr?t97VyH$e4*d8_u|+7H!c*OWxT zqJ|g!K>@cb&3@QBp-h4cK0?65z+@~QM#(zi*2sG7gQr1t!oe4T64aIOp^RTW`bsdH z@-jDMh+6PpsI#YO0lRK<-`N$`My0Kc$jfz=$=F~FUV}l8h`a(3Z3!#x+NTM#WgD$s zJV{^ly$anz(tNJW(GB;*~cKb*2bUrme6BYm*>XB z)6AKBBZt;tls0URXcm#phMIR^_fW+}w~r{<3*S;qu4%7PA#l9nMD92aHano>$J-qJqaAA9}(a@A% zHiJ1rUC3NpkhxHJVfJ4O--h5pgP3B6Zs5qrx1M=cS(2z05nxcvI8J>*ZR2U+HEnMr zLGSa7E{DylFLDkStRQoa&bO4{QGsW`%H&5w`yxs;C$;c0LkjQk*Lv=bi|zcZ;<S!GSd-6q*PI3oDx{IteMeC}z;V?E@qbC=48<3aMOVg}>IKf7DL+;X$M+ zSE)%~QCB=MfzLsP!JWn0|3fnwZBDAz}IGxh?F|EH*J#>b6>HiesXg@?UiV?1a(?t^?Oe{(S# ze=2&p{J~|EM#|!q<-#uV@i3zFY&~rZYUKD zr(9FX8}v*VbRK(>-@~tlJR$iC>w&GZo$;fv`DdXU?KiRunUb5r$joQjE-dC1W(Oqh zKhU0xN7Uj-zuo~jrt8Ut;g6#~JsIa8=LTLD@4K-2`EV^g3}P&lB0gk)H1)@JX;gF^x>Z6`qp9gX+g$yomKF2Sj*y@ z8FJII$;-Gw`rtkz5m(F+_pH;VWcXlfLRj0EafhTYgCyG5@*(=4?9GodqGc=9IF0f7 zTfBG~>ae+}Ew*o}d-Nfx?@^(}l??a4<17vC(Ncw$O4gd*FYl7x5;3k{S30V(+@R`_ z)#g7^_2*^BPHKHX65tm1CS=o0fvsiKxdsV}UZ<~L{IGtABFg$bYMihX)^0UmWgTZ` zYU-(Qc@T&UbuYJd$Dp0-p(avza*4fv!cy*8ITW1MxK2vS7;U_)O+h*|%bQr3#L*FMUe5s5!1jTSRTk}O!HK!xTn zK&B>YZIYetNuB(E(!e>&Z(XZ{2TSST{(B~YUhyxmoQBITYHv#tLXRxd&KI#dGHv) zlowb#2zZorcGCjZu(Lt4hH@2`FIg#fl{;+FNwW^45)-TDY?=q`5A<*f_(oQAwAx(l zTaJDs+$rMf%qPPB>*Vbm3b;apAY44rn;{gqWvt5@~H@@vy?TKoFzO-#+2;VB6-W?88w-db!MMc z9Hnlh7EUf;)%R!rVUJLN_Ow6BMH0$_(o8fiyTg@hquyQn^ESy>q3^Oh!}%pXRQssI z+tk7Zl2}4pMZ78YP%l$H5-;cP0E|P_G>sA-|ATOYBcbtg}rRKXO7gdN~cbP+GrHU*d8z+c9E5yTn37Fge!N zJ(q)n**vT~REuV?nA0%+4ydM2$!oP@jm@wTM5Z1Q*d&Ftw-AsXbhn_%THM6*HT{A1 z0hPXvZ4)JGSfPb^?#z~K=TI>NBOmmwO?j~jede6S{9_iso+_(JoY1T|$WYdV zY}WyIWIDbuEz_N2N0(`))MEmo`T2PWL&da|JaO+x1@GVU0z*f!seLlVphtWHrJBTkr!g{}w#=dw_GU8S+QA(*Cv zTh=RdO6{7kY`Ek!Ez|36Z?voM<&>t+Hk;JVA=S%Y$_U(GCf=ktCa0Th(-YX`p2YqL zy91ouKOERPyDj$dv)opsB{Vk?Y}YP!n)D}yzF=C*Y!azlH}S$9MXiT78dCeC(@xvKUp-wxUg)0%_>y*Xh(~S1yJ;<#(j9$C)lTYGy2LB@4&WTX6DffBj3rwT7NOD+D>bGDqZq(2pB>@*@h`8g`HQKeg{jjPq?P^VIskzWa4DIYZxoM=Lzez(mywN4}jkyyU6T?f% zd{(UNubJ%P^HvI*=hnJd~dg> zY1f`e(`^Mk|EY>Y_PM#b2s1S6EOtxnjn0@h`scJ;6us5n#|PtycH6_ISn6u-$u30n zf}3>p<+nFgx^m`Qt#PeoOW3BamsD}=k0~{rnl&qm>1e7I!_b4?>Nw^_G%U0T*eQi# zNK86|HV#MBXs}AE&qD%osfoss$2xaPSMzL_vDHN@B^9Yw-!$2-T2_~>EZkw zo8BK-F6pK>Jj1~XvA_C7Y(~>#9%Y(b&aKQsdxLDX}Gjz4`Y+je8HV zBnKMWZ>m-G&Ctdcc&Dp!f5eSJ8L4Ilu0AI|`${22&7Nx2il^#gYac&=G6}IE+^AvL zV~!eeN6u^}q&^|fpdO*(B07lL@JS)swbYxgD4XkIr`ee6XML#ndBhClHRaQCIh9_woXetd33lG^B2iyXY+k7TMjXPhoM?^u%1~{+@Wo#>)^~nq zsb&BFZFk{BO1adLLVaH5Pm?qOs7G8nMe?1aAcQ*BwT^-`JC3JruV_|F5At4;K z_LC$zq=@Cu9)oJ*2(opoOBHHCfj)kJ5?Xj>)0+6E z{@hMC*L z!x_QFGFpN0Sdz%|mbX~UD<#g_v7Tsu$HeZijdt@b0S6sMlj(FG&V$%`9+6Nb662Ff z9iqmE(==;X1)6P_QZ-vtskgzXreBt&usj<)(0s+Qa*hT)vSB@Ea(IeAxdNYfFiW(8 z7G8PiG1#fu;?rKpUsw}VCfqll0&|_y&Lj0oLC2q!@mx3|350L**i<4);vgJFSKeBj!1hGl}N9MCdAHNefoYo$?i*X-(rg z2Q3YHRT8t7h-sv%d}7&CqMi3|n@;_JA!-z}?OXX_O|W4z{63ea9$MJj3Du#CeymuS1=1|Ftv`X0cS2xo? zaC2W&(kN7rA^qAi*iV<+aLBpuqo=$Fwc~WBpHRB@wOwfBBo#|mM?eMz&ar)a;Y~Sd zE7K{cv)&dsHAg{{vi@Z=3JbL?s%)8#Y!zxW3ruiZa|=8)zvV_ zoYtL5dCaA5{W{0GwJ(_}zpTq>&gbg$t`klWbtlF!aZH+Gmx(_;T>`9BL%BKA*?QMF zQQ#P1Fj- z<7Dq7Serh}S;cxDw|iEJ$%r*ud;Dw_W?1XC{farRf;xg3yz^K8aJGthS0*TAgg5ra z&z;b%s$~ezk7Ulk#4LIddpY>ob3_i++yWHbM)$mTm(|$eT53I=U?>MgxxMHs1NkU1^f{QVL_7z63PfJNog(GV`%^110-cQTRO$_JHg5^LL$7q4$J^i*aRemS^ z;gmA>tVusnatDUYOR~Al6qfDqux7_1?WwIGv1{4qmt+kYGEIWxEr{gP=bi<@rKC2~ zrY6MCURUMmMw^iHloedWHTrS#V+Uld=LEd{41&dx9Gb1Pu)2!mWIkrK=EIAVujHpV zv&?siB^JsG9!$v}waQUj>^>B8!SSk=vRad%)k{}X?= zl$}NDb0or3YY%wGJd5gOIQgKF=NltLL{xM@|D7i#brnGl_cr2=u{n=9DI2`gok;a_ zZ!^6oAWj-xuWsUrxkw=EBEMK($6?ujDPv0WyW=uFh0lMLg78aLOmK?`5=SrC7%ux& zbGr98mY@XzApUz;@!zBXa54eu-yk9wN2CPb8q`Lgw zF+|=v<{OU$1jGH5r9~i0deZGf$j-qn#mnY{22!TAswC!r>JNh$ki*l!a)lR=Ul*=_Lmdf!dC0!5OL2Cp0}Djh2># z03gnNop%5#Ze`g!>MEV!&JlCZ*b+7N`4Z@fb>LP-oF-rtx6egDsZhwE1gx|C03wD} z>bigkzfR!jLx_FrDWiZNNB91I&d}Uysjm#1G{;o(MU;<7}XS>x&08k^l+~ znMBm+olQNf7ZaXxn*N`NX z$x}-r6P0Y5H32mMAcwzDb7Cx_qv9Xl00|qK^LH}>BxOIuOHT=jJe!O&Ybb>BpfRrH z8r*+YD3t9LlWg5$?(^Vg;od_`35o9aD@asI!PgRh zCP;-YAPwPt(m+X`eP$=q_7S`xv|A!^K>(1JiUstKiBwVz@WkYB$HJiS8=omNwBJ!g z4WUgy#@|A$&2%IqC!NsRrvP2YV&fl#XrakNLK%~SQGuQ~KitV_OoQ`h%0vAHft(?r z&TsAbop;_62(=3E{!@2Zd+_8Y5YpQA%xWsKc%gFpH32}e0nAr%5|jxU%RhWPQG+V6 z>4~{SDqbS6*nmr(uOc$sR)GW%Q9z6(i_%h@mF|l+SiO&M`$8%M2wa#0OT&P$I7RKT zefu9HWU2(9@k1mzGG6P*Z^SI5%A#B3BXx0sjwGHD32}%oA{0L{&fG&(R94_2WKl{( zVHzAx0nRK$+_K9_En?ywz(@-I%EBq1`mBQtq$pzvoCu{R)~uDI{p8XV8gpb^JN2~_ zSO8Uxv2K-^hs=q(jqc=YAlY}`3C*O}@uOtbp&N9&NyJ5mN58vJ+IpUYG%4!R&+V0G zZb4u}1TYyMDTLE-`!K`_2L;cT0YN%e<{0ay3-UlEf`*saAjF>9BmT-`28CqG>3J$@ zV_rSQ(vcV?f{umO0z=kGEW-*z+8Wg!-U0igSnQ2_?*X;eRbHo`Yzzv906>b$LI*!S zksXX6Ly=B%15*y@#hHUmK{=&qn-mQge~!XP?E+qhj>zN|H-#>ZKw%WF%<0K5bgGX%18Z)sRst3w1vJq4_rE&nCOJ6ph1P{m@<1eFwK`ncYUw( z7jc6Elu(3+VO-=jHZ3iQM(rBW;38=&9nh_0!7J3v6||0x(>&6w(8I$53r6@Iv-zSZ zw6PhZF!#jcLY#jD7$=j8%~!U*1GKR8w`}U8`ZnDn9UuW2(XRBWLBJk=W zP&&;XVL)YUb(QETm6fK?^{&N`uICnRi2c_{>Cy0uI)46$WBD+Mi{v!C-WchfP!Z!E zwvhVym!UM6kZ9p}mn_|fq|utv-TQp{Zwf42N^9nzGKhV-eud32u86l_D7>ZYtVZI7 z5QGJK9WiX^@Gp?8G-deW8DYJsm6q{@p#<0>bVI{b_7PUKP>aN8@Paav?<%jos>TWGUfe;bwQ^W>lz&l+ zCGT`saOoH0J52200m>hEFxOPlL9-~z1Aq(kCc)t9zCy?-1Zf?6DO4-0fglX!+Z^cr zmX8R?1^$`Zh-lKYH$+)ZGq6o`&-gC!8e~!@*hTxh#%Lt82~d4TD@B7;N&*p$>$u}Y zz^y!h2qVxR@KpbKgH0UO#b0a&*4MM@5A?TI(obCx`|6HPeK-)xoT=LT0QN?35%0F?$2o_#ddL1tJJ8_ob7xAV$(d;Y$gxC`B$e z2UVanlgo|$#05jpi?%YX*LoHqw$+hi@#QCQSzXbvaCb1}vD`>#=re0no1npV4Vj9` zDstiqZ@^h`ZBYFK&|#>+hb9U&5wy)MWfIVPa62PF)K(AZW^$odaxaij zApt|aMGQrQC6I-?fa^(vm{Z|=oe6mE9V%&e@3R9`d7rWO3^vMM_-Ty&Uu;yqs<93bdEJe6)j8d_4^Qdr~VUXX$EdZC2aIaz{3#Pxf)$n@wO zNAL`>L(mk>ei)C|WufqT7*oh1en9MHP>DX)1_UmXEu!5r*k2hpQR3>8hGmeBlXme( z=7=(DeK>s^I4BH>l+_}6MkOrcc}4YdJOwC#;D888S_J_|Ln^oqS~H3K;B#9ZzFrkL zS3e$%L3aT>ZK58Ko;Le>&%&Y(l*Dcrl{@0PsUDPbCI+AR{xlcGZB~mq#v5PCYlRAZ z2At()H{5p%0={2C!I|wUeh93y{YybwS+KCSO#Pl|NkM}X$^!C0>?u|y?c-0=J~xxS zgml3+GrdsGpd7)C=rR))=$XrucR-*7Q39EB+<>(R5(!#l@nP>h74RFTZ{#jv=9)Bt z%jmz_XFj?2hUX!A83fUonfhS;L+Ix_;H81+9WX#7zwHb-b-K>-TXpg{^}8h6b=tR` ze(>wF`5*I)6OQul7lETRWby=_gMYQA;q*l)HUD%%^}Y{M;*~#tA8>GpOO65slck<& z8sNSGzaIahw6`n44Y`YRPyGsoJ-o}0E8lVckmm*a9ZHG`_S28va}I{iRB-MMczgUW zeHQTdI3AQDOEHlKdHYkMG|A%rbGI_eu}}ie7%;# ze=z=kXx;(Q|KU+A%a!H($B+zf-y{q9ABI{m?^pA`up)8W7@EUF2^dcHA*HSLKOX;sT5^zV zhx0^}JrKj;mcnV$CWfA%F_*gH!?nJTI6X>@l@Lb6Ze?uhQWXQ13%!x7K3_PLZ3cIh zKEW;7fir3szKc@?`?&&7#n)Tp$(`HU!jfnvv?e)zY@AnlQ)Euq1xzJ* z`6Cs5-m|~cM{<~xHWzRJ?o5&8|2rf92vX$V-T~l<sQXee-=`Tx?j zfoLqOAQDm$aC8Qa&H95IRpzhv|3zkhUnGMHA~}-|_rwE*%^Y?&sefEt5gvT=f_sGL z3bdC$zVPDv7OOfle0WdD!BKRwGkkCzFn3zm%JdG9H+_03T=GYGCf=%Adsy52bvH&5 z0{5??)?a~dc8&{fkmHhc_}K?Y8bvp$h(dw>RboUFGUc55w~|lrHP??}P1+?2O&H#Y z06cFv1H6=RtC6*tP|c(>e*%SQ$|4=z+@d4&EB-M#L%sD!iVVAilBU2gjVsBY^-?t2 zIbQ1(P&A@c5n#mdv!s|53OOcFG zW3ELQZtoOkg6VM=xr|Jm^}}fHC(iM+(Q2VdQxh3mqaJzfieuHmO4I2(fcM3g_fP)S zjyHw^R--T0s<2skbw7Xo3?eneV6yQ^cPhh8E8?P(t6Op`OjIGoTrh)5lR!coXj;Y` zEj!xMbcD+`bdkO+PcJ4^vUvoZIt6arlTx;5i9{}ZsA@<%XSH9e2SZ9xCO)o0h=Tg- zyp1z8UwK4XyY7!IT3t_2%G|P7_uqin?-ubS_xOC_6e$ zeK2xBJ$d)r*y;AlMb=CDcU7j3aQCpKzagjAvGjq9-nNnT|2_0UAZt4~Qe=w$?D7lddaJi3N*pBYG|XdrT>?tGSY<8s?h%ajynHg8x(LJu+xC{0PKq2% zf-*~^+}9Yr#?xm!oa(i>A`HZB>~GkTJ1Avh=pDqt59l2@gh&z5Wc7;bP+Vf-7~13} zY_k*`mWhgV66TIcqEPV2;66PVKoR9<24$q76;uP-037eFfL1jdLkJvR|yI z9FjvINo1)B+3ln{aaTh&6O06>V8=S;&=A&*2u!op%iz$$DP0fwWyjK)nRQ=z9n zgN~Hq0Ix!s`u0n(bCsn~M33zjHP50n=a^5S2Rm=$hE(%{O|zM%U`x3SQjjQgG`f9Q zB!lL$?xz7Azp&+<070aWm(PX?TyIP=VIgQJ=DbNq6uDs~Q@dQxOa>{EXLsa=dZ;^{ z!;CM6GU$;=AK|II`H_21pV0#s?@dx0on+9(f@$_2AIgz!aQ2zIg<;%Z68qNq-T^f& zMePQDjy&4}U~T)4LC2=Ae%f*g%#`>~6Fi*ivlmBZyXv3d4zz#0dZ3Czm{rgnNwtTWgZzl*cm%Sx}1?%pF_#-*A<_ zW5ZfgoA?$fp&VKYsKgmmjI%3!^X4rmW(`Og6*IC%>A?@O!yWn}}< z{vA-d1cOiVNmv@^Mf$IA{^JJ0>Da=cXH*rDC9gi#r$YHX?37lg1{-`=qZ5h8A)~Cv zCbVB+y;~mByZ7QEfd|>wHqTbW5N}6Y0?I=aI<=9Hr14{6TTG~MzjJnu4G_(oq3_-h z2o^6*u|61CmQJuM&fm4X!RzCxc=zsECT`A6TFmncSH7Vbdzx9T`QB`K8+=9#H!r$xduNvxWx$}edXVP+vCeKkuYWtsG zn%g{Qwr18hg*U|S17W+nQ(gy&%YQxj-#srs3-4YlvooUpo?=P+O-p-HUX+p-+&%B# zYqe`FO~Tc?)vR_lX|VmxcVbIt`y;Z!cgo3GxK&ru4zzU?C}MNO4#;u(DH%JcByyX~ zUhaU6?n?yI9>=BU{f-GZdYW8|EZgS+ww*lG|k#2KnuxA9B3|pdp7vbX%Bxqfx5n^Y$9Q zvR4W%utL51I4V#6iKP0?eEqSkKH6g%NERxHl;)R{$}Ij9pb*Ya_xV zZM#x)1!Vxpx7V4Y$MmV_xt6REP^e}qyD9vnDHWR&I_}-XCn`STv$y4DGr97y<;E+i z?~}~ghqhJR(IK(LUAEUUIHleu4PQ{8OA(bvZ|Apa(WuCQV?G& z2Ip6z<)*i=GD<#QJnWrtHx%hu%47_%UG&^|&znKKl&1-6FD{YG2R8 zM_c8~F1Iw*7I8IL_-#L-aHEjblir)_(?6UbrA;m3FJ)_iV+rGMn2DE*n$mdeP?q5qMfi0snN9?)Q>MC62Yj#b{v`gYhNlGX82u-E9p`sr&T& z>}yO@spwum6BO2#C|?rH8KjuHz7L(QBzHuD8Bi6dPOs}DW;2Clx-Iol^)|D87qz1z z!I&be)>fjF5Wp4khi>5KaILsBhdGoeKH=N9yU!iCM?ENP?Ua~1K)odz`I;O%GZ_TB zk?r+i$Nmrq++wj0#b{*TXZO0B%dRl?-T~HTbtye<8ny0{uFOI}olWYDPPgjwB$T01a~;Uy>s zF6$jSd@cyO^PO-vCSz_JzSE5>%`(nF97^7c#u~t8(PB&IlYGL}Io@o!6RYC1iUQIpuVmP^lffpZCH0w>&p7@x-o(-N2N6=c zlfcnzWv+uB;bf6x^0mT1|+LXj*V}j1DSH3;j7>6-ywhG+Ns=U zr`@@fkgH8;-8L`xgd$t$DwRUjBIX@%%P%gt6$jx9WR_Zs-oow+A)KYIQ<3_uh5V+2 zQ8$9qA!jZ1GYE1o3avoVk&3#4n^q#!#K6#)M^_heeyI($0LiPcL7XeORRkJ60q#z0 zbaUQxI0m8?rkWU)vf$_)uuVecv;I-7{q)L(UqxP1?v~_>nHtWYx!7vLp-l;i6->!e zD6`RH!&C}11{Qf)Ck+uklKZJsAltcJj9*Uze6(rIsdVS#NraYSu#;cmxtnNXChHT; zC+AKN9^s{7-^K!;8v_N;3N;Hf~$qgQN?l5cSSkK|#-O#Vi=Hx;T2od0qC$JV&Cqt^vuIIebxi{@L)*$o8w zI!-U_WB<^+KCkc09eagVBqkx)h}3@ae)S|@u=yez~IHVau2JIlVukowg) z^mUZ71h&aoYi#B8K^BC0GyM*@-Z16c>MhYHXNhT1qe9m;w(U_mcC06mOEO3eyWXjb zvxx*@<07&bF&aX8tCglXBxYvbd}X0iM^!~NCRBT{Y$V_zAp(Sr@zSX^%P&zMks^+1 z2`6Pv56$Y*Q6}%1@krwJ9OZA>2WMr6>v&<^&JHsZ<{`u9;%JQ)1}ieE@-&LjdP`au zZ+DvqO%!D&7Y^?)(2neMq1!mtdZbs8nVM8PSJM#MZ0fuq=6)d=hWCnMu@J)xn}E0~ z*m~S2^MS7rfned%%HhaqS7_C$+WaWwf^EphWfmaUn;M`mtV(+^Xd(u+}(FU?y>&-${Z0!CK9E`rVN^GSj%a{HF~u3cEI}ajT5GX=? zCNB{A=mHBL2&6}qK3x&Y#8CS12}mb(WXle^6$`4%XS+JucUcKGJ~O$jZ>ccdwu{OU zjQrM!Jld}X{%p2d^9XG)(Asy!Z@^ZNJXoIS{3$a^bfrQ7Kdu>DPkuQ7Fm(5CxmI z>Zr_njE9ArwQGLQ!kokIhERDLsX}zS@q7l|u8YRt2+UrHh}tqrrSVgOPY1PV@P!M_ zCPwh?(aVI5JMGl*IN`N4=?Y<@dCNJ}fvsMBZs*#+#aXq(bk`v1R3PbsGYk{3I>(fC zItLcD<+E*hrl7x3s$#5+(<|wXnB52riZ9Z|Mtmj4IgCgN<`fK`a#qL6ZGmS`ejGNW zhu&M%;LaKAvI*&@EgS*1zA9y{*u!UW*3_yHkOj>frk^~mrT!WZKlhx0d#ADfay+LSZydT_LCer2;}4dqgVBF2=?}AHe)JiqAZy{0e&Go(`5>N z?egYGLKTb!mCnx4H#n~}cx8dwh9wI&4>Xt?j%^ge{xXP-s$Sia-y)g1s#uaC6^)fq zA$@nQ*xNoW3)qc^@<8^YS7XBKVkn$1OrfJii1s)S1O|vQv1+C0nN^Kd5g}=JFhvY# zp4sR*B?>X39mUW})xI=*69ZQ5Xt}VcMEz{~7P@*}#dg(*9e0=@Q~+$EMicw!m@zSi zNvC&AE!Ho3ZQj1zHSVCKdj=_$s3L!l5A8-e@+xa)q3WXV0OY*~3%b^~+ubQIBN@r> z>DIsDx@(tc=P6G~##&4sU{FOen^I-?f?6%CM%*MoyOnet%of$afi)HxaKJUjnQA(D)JpDMKal<7WNWQ_HFiw!U-%kO6>}AfRLd8 zzH1gje_RpZ9N^}+z$lUn`${%1!ww2WCuU>zp8Z%ZMWLFm@sCT>*>%%f7L&1^AW%UU zU7SOf)m%TrUY%GZlk~;@b7O@=_r^xIc1A@-91WyQEnJ`Ez!vhN@we_)6(3;EXJclAC7iH8XOS=P~KaY>Yszy~a@7QSh zs8q#CgI!^ZoAm^jX*tFgcx--C5pOBODZhB0~w2VMckNt7o&(}J4WrZ64TA_1yV zI$AP|4Oes~>_mhs_G9P~pNiHw3)X?s;o;AfdD>egc2{e+ARhQMI;`qLbKmpI5iDSV zf1MiVO;*-r_rYZP^~wJ)=>iu0iHMbJ)%tT|jybI+U%)I!osPOzTSgike6#%Kmx)$I z@XXy&+NM0%zJAjD{h`hFhVUKOnlCVUfqS&0Cs#wV+!7SN3Zau4{xOlGh>Tc?%5`YdPMR*|;Z3gzhr-$p}Hi3o|@n4B6TyiOY zc;@AbW8h%^Sr8nkKM_89lh#H1*(_8nslH6Ji>3}z02&6_PXZz*-LM#-U4(2Au0?Q< zhfzm(B}~hVs99tEaVtCik6wK} z^S)P~Txx9)>3^g6J(2F0>K${x)89MieD9s}zIV>~-xp7Q@Adp1-9F_0p^vA(*YEoO z0AKVY^nV7A`=rcF&iUUv=X`qSeD9spzIV+!!O}}Vg8u+=h5f-)w6wIm?w6OAmzI{7 zbqCphguX@x+nbzbhu(a@!Cperyj$?F>GgiUPqiidX^$uEzrk^f`LXvA{{ZJiRG^od zAHf^YIMr{!u?P0LzY6VEqHCh-6K__ip6L*9f97N3sz$M0Px_9aJN~FXiQDy0ie~<& o&yxP7K5P60R$Cnt{m~MFfLY6az%NKUg%qJe8w&%6?Ee7&*^@5ZM*si- literal 0 HcmV?d00001 diff --git a/front/src/assets/images/withings/pulse-hr-black.jpg b/front/src/assets/images/withings/pulse-hr-black.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f72d23205b35a17aaba586806e96127b28b82e97 GIT binary patch literal 7230 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�<;;9MzHeUqoj6=8w2HpW_);nb}7n zYLu7e@aRP$ybbXJe2VGz39KnXu2vkcEqf6Kq8K_se%ogTfUXTvpL(-g^b@L=02K$+ zKzL1i5bCMDa!)6HcTq0bt@;4MW2%+ncZNB(>QAz7)+NAtBz6gXdBgluYPzw#vvTp- z=n~QQWod~KHBSuAaA#EDK=+xFl`E2`MGEp}dU+A< z?#0E}sI`Zg^d)XBHFZ_<+8MkiQ&v~4$`7#V+8Jc(TP9D8%C()eou3$$-849Gem-$P zb_AGI1<7=K<)SUs&OqH5YuVd=(NPNe5idOP(__9O&VSsvvA!y z>mKHHdF;)gEHLfzFIx(q_$^R^_S=G6$%#s+lDUeywOSLv zZO`^|yFB8l1_!S+1l-Eka_xFh1aCUyccQLWVadCxjmzVNaOYwXDT>_D#{gltsCgM^}e*iSAV|D-l literal 0 HcmV?d00001 diff --git a/front/src/assets/images/withings/sleep-analyzer-single.png b/front/src/assets/images/withings/sleep-analyzer-single.png new file mode 100644 index 0000000000000000000000000000000000000000..affe3024d72d779c2485fd2b691d0d39fcc96fbd GIT binary patch literal 289297 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

< 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 Dd7VGU~Kc)hol55F2W%|8ByvN$^O#LW-z%)SVWi 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 W=R;B9O(1W-sPPmfz^{W;??-u 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

t$?u;Fr6Y|O|OYA1xkCTYDmtM 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 literal 0 HcmV?d00001 diff --git a/front/src/assets/images/withings/steel-hr-36b.jpg b/front/src/assets/images/withings/steel-hr-36b.jpg new file mode 100644 index 0000000000000000000000000000000000000000..58e861f9aed810beb688d614185fdc62a9318a7b GIT binary patch literal 16424 zcmb8WbyQp36E>RQ?k*)b6nA%bcXy|_6)0Y`xNC8@;>EqVI~3RAuDxmBpWW}S?~gm# z>tyyb&z!T@N!Db~naS^^-p01^V?&j1S)ctFEJLqkD9 zBf!GKz#$>oVqs%rBcbBr;b7rmU}0nZISCLF>;nZ2 z4-E~Eg^Y-d_5WLb_X5!2fU$rhNFX`@0v!m64*cB@ApWyVXyBjq{#$?$;5EX)!NP;h zIAF{FnEp_J5WiOdNRU7P1R5k7czP@SZ^ysyM5OyuG5`o^0EvfS^E z1OPxK69#YmMF9NjF5&=T00um3tnWX_C9nV#01pL_0o~WR{eh58`f`lk1LCAXXh4~x z>t@b8FbJ8*vokP=2Ppjk8iEQ?|7iR(+vyK^7g^Fu-fI$-$&0e2ZD6!LPMk#qieCamWoi^aQ;<_n2pvy8r~G%y%9< zm?kJ?cr4hsCt?nhoUwSblSr02k^WrTEke<^WCGQ4Nu`I13V? z3JDdeeQ0RP0)4l-#2|oX(9i6qZGCVUKOj&iCU`6VWhEZ;xgqIJjd4)fiGJ>`J z-UMhgky#E3wmDKXg`tuN7)s@rp4@ytscuhcI$XPMqg3|rBosiMlP~PQ5KZry1y=@$ zfL4jouRn4Sq#Osq)3LGn*sm|gITvCFA+nsQmBVs+750@;1WAKhJXyNWTryIQ;W=A7 z78rYZWcwMh;zX!ue`!C3a~BNE%K%Cf;6V-U=(W}FMTT|P_!$-S5ggz>&# zx-rQBe@`LDO2)^bMSKTiF2~j5;3?X*Ftzt2r=I0~)R+H!#h3RXlXxNr>C??6+d|?j z)6r|nSQR4$=loul0>E}(xP1luA);~9be04iM(ngfcmub~B@!LM5cf^68FFVZX*Dab zKZCVLhcf>%$YCP<@XK1e$ALW92oSWkMNQ3W9m#NIUd|+^A7)B}Njg;caT9z3EBwdK zttRb_wJ-0oMA0H+Ux=ML);CYR9JBeyG?Uf3_YJNvC=MJMuyH0kNE|r-zyM{h=!0%R z01$*T=}icZBw)Fu9S#D3z`-H!75@ES1Qk0A4+H^#3X%`L0sTc_qhmATgaHBY6ohIw zNdG`zViV%vpyB`&iG>1pe<8?Ws{uFw1UwW5%G`b0UkH^h$K#Jeq9oA&4`-7)9(*Ec zK=2gxKd}&CmbChG3sbUCu(Gi$gM%*|I3xq1A$|k4PZWf!xMUthZ~T=zNRpVO_7JE4?~~bA&AZ~y zFT^IFZjFtN%{pQDHjUjX@2|F z)shy|*JUV1`?BI4kJ(@)HR+BfI=JC)qCN5+nsHKmipnb9&O zrXsE?N&%s|z2MofUN?Jg=r=NME?X>&TRT&RA`^m!x3pFq0qUU5xnOeX*I9YDKnR#VKZB9kQ!jyNu@Jx?T9JSO($JWAj;S|UJWLD7eVf|08b$R zo5x=0LYwzl^@tWUo2c7V&XKU}QKQV^s7&oB6sBLzQp$l~ozO~zf-zS_!F8ti3z~1_ zh4PNM|Jar zRMSx6etgpw&CSQxIW`snRl5WE7pJT$o`CY%zC4)cWqU!TzOc~-+XZl zU0J;2so1;HBb8M#x9XH|$e_#d$u4tHi0v<6iT@+S1%6gxBb0oxUq?%CBit9k!EMNI zRh-B6GjEZ^j}@7>XMCcG6d2#>pFW7ELZFajR6=DzxbPs27VX6(5%U!aym1EQII@XH~2L^m*pukic)<V_uO`Yklcg2c0672^ibiC?av2Pi{dRSG8!z`d8-Qn<}~(KkK1T1xo6o z?KXO3F!ka|XMDszkF#UbHTxRpqUo2?aUvetgj`%0%pqm?ao60cxmc?qEIxFzVaUoa zfj7d?xh4iCXfl;_krSOFpVN_MCSk2eqdgT}dnc5PFJ50REFhV3j@p&cJA!Y(4O&~9 zJwf)nJk#u)?Nzc~!w-M!++UN_OQ%L0#XlAnsZ94sY@j~$%QjPx#EaVyvs7McReoA* z9}bUyw?a2Xkr!jOw4^)kx28DIY^c2eS%w9qW2c#-E!gOStP+Jfp)#^Zu&mAQxcU7J<9zj#Yw45i#{RGPx$ zr=_+Kg{a8B&lL0R!&cums$@7A1PYWX!)G|;L&z+mN4Z=#$P`rJePcbzR~(ugYow2^ zN&}J-F!$2Y*|g_05R?;fWAvgYo7T5k$I*|EDfQYsuvfff<8F?~$pwDQUL1-vd^wU~ z;3bzU`xZHbz<+m3(_nh{b%Df#Q8j^s2KPkFk&tm^O)itDgMXaUv0C&I_;D3RQl!|E zqp%^UuoZ`v-3WP|&13ptK9_A8lT=a6{j<@#1j?iRJ2cZg;mf`deczb|gBn6LRZ6+UXt zGVZZZ3o&TuF_zhq{k2&5>I7~J&vfnGGR4#aN2=|BxmM3QI!q~`; z@42zDb?j3}FRKz<5o4cTQo}yyCZ8J$v98YULEes=*YSDDXzhB$KHVBcsZuD-HJP`n z(tAFZjc~Eu&16mK;WEvKua~ABFU3lVEw7*Esi-i8c8AfTcvm5yi&*6Wsl+#Gq-s>N zJ1;%zjEG_=vfrv<8`!OVp@<4ow}r#cSIEy-(96wFFcjp31q)%9gwPCK;+LE(^z<7* z*?^ggU25mBJWO7oU#;(7I7MtGPIg+0Fq+fHbf4GEUl7A&yiLv|*rJk(`e6jz? z8n5l5VBH%^od{Q%3+sP{mk(~e^$m8Xkv6xX40c65`1HNVT@2`1GS06+T5!6M#Cis` z!RFtFWKgI9PGiky@ZJdv{r^Z#0eOG-N030E5Rfky%)kfdy5L;(e*~QUf`sG#(jflO zwpljHU6D8EPn?IQyTBgGXy6nVoTeioLV=UuKaSuj016$0lm(4ULHd^q-alQ#-H?=(pGSRFCvpjZ%A^BVTkib9?;_O<^fRV*Q`%hVGJ1 zVaF^x)bsq&JAc`Bc}aDRc?duKAPMt)lupZibxIP{I5+;IlUDMH-c=#gT=JRu)-=8Y9;zf)Gu^ayZJQeNp+=jB+|8&+&D@4_)7g#+xneO=&DzCts?tyvq9>Ig<9VFcw!&XjB8>ls# zgW1_{$414c{%71EkE;UN=r9VfL^>cDQ;6w@)5F{iv4E3)vda2~}o>+usF7dJMO=j+pg`-dsSNMq3=tesD$E)7bfB(9 zaq2%47^1M-W;MCtbvcW9afiz>^2iKcXS${cI;**swc4y>I6}P3^46qWQTQ;GrvLm{ z-9}#@J5Tmr!TX+?{#oHNDp^-;*6qDTK13#Vg`)ZlL5hrCgv^+|btMra4vU8EUt@kqJ(xrS!qa`5+i23Msn-3{3_Cq{3YS3en*YzS5 z5^(Ne2y?;N21u&LOpW0l0qtg(2n#~Rx>KqTLOd`n;Zi;zG^uP zlR;ly?6$akc)8fr&YZ2Wi3va}9S4d_zqH`Gm{0INz+Y&+;17l^H>q|GXPG?SPNz++x_Mp>lEM%(cp{jZ1&iXC47rATzIIJ3Y~cvTwg;y4Sc0W*}QiNZ}4~O1)1`d0;*6*`2Kv78$^` za3BaZb&8#y4!JcneVt|;C9_G6q7xnb;-GAKM`>x2D-%4(bsZ%ZnOUW-YT64wmB~o6lukD?$(iB|nY1;)HB;Nj-134*K~hW8NnTgEv58jEBdzT$ zd&x(qcQsgDI}JW5M=&*S7u`I*wReO^l3uQaYsOt0ZmjUvB7;8EK#8Wt#kx@l0#$t7 zhj-Wk!Sk7^=I?f!zQHTx(HA1#*T7~gg~%OJV-2n|<|3FMNx_NWECiPhoYM?Mc)JVk z>gG7{o<(@Pu{4$pFf%*g!gYC7)yjWLdKwzq0fI`(bU3Bo`g_k=+Aj za-(6nd)(uzIm^n#9U?lTWaZyWnf2;@bD0a2d(2BFNUR}Sho+HORFW2&`chEOUk5%T6ys!2 z>tk176YQnJYm8y2c(mAu8iu9t|gu`+3E>$in*Aw5Uv=hV2Qs2c8jkFg9iI@BkQ zO9wHg;bbKq%Zkh}@zMsVlb?UQL`2{gb7#|bR~i1Z&vp->d*Us!vIhH;j7!77&0*Ps^?Z+vM6&~f!?l&e?H&34>T zVyU}XvBqD|Gx=Ld<`&?r2CcOS>4&(%{rpWOw%wY%4BtmP87Y;|x(1`7m5dqNTiSaS z%h){XCIPC+>#B_Rv0sj#>x(!s7{5}b-mQ^J?`Bw(4l<2t*5PhdBYTmHvxXwb3wkW_ z$^$E$o1)cX#i`uMcGAwDm3k4lLDp+&3Rqg=GmSNUPIG1N<<#k%rTZzw2tjj&{bPNj zG`6}<`xMdY5==oatC?mE#aQqJ0VBbBTsx>!E7(<@?9=6hvWa&d{ARg8oEs!AISbQS z6a=GkoR#wYs2OjYwQ_uC!vvOzhdufIQGr(ynu@6mjf2i(e=5$HaG51j2S}OCeh zQ>CiCY>B;+1w@bbvv`~ep9#6w1Zq|2*Yh$LwyQ;9>fI#L0WnF-=&z?e+q#1JevF9- zX<ns1?|ii*7|UEATj~$fyed?wyvVy5E2~_{T!8J!fmd@GpMbS-4Wr%C7eELV&gVeT*(QLF;5yTs&e*mYi!z*ZH5`GuSn2gl*L_No+$;C-4N`E_q*A% z>Dt4!Qq86L$~}M^T}^2Ej`gzCX}5JiwXOqyQpG0uK+$rMPk!%5|M;|C0=tAD z5usbNWobdwI#z|m$m_`D89OzSCCV<`2|~^9o7r~?x;Z6V%;e_S)h3f;E?ao!{e#ra zROn$_vEQ+OiemQ42K56ZF8O`~m=E^(j@w8BLJ~7bX}Hf91ANTP;~3web@@M4hg&pF zp~VF{y)&s7yZe5G2AgIdyCL%e|5I17G4S*nf5IvF0p^)1`$L{T={}>+IOzO4Uhan8 zOW&9-f0_B4#fR@WxvP-NpVEHWtraKb^xgh6cPCrvg1^R>$)jr!5F5i14ED>)EViRx zs^N{DdW_8QZfKjSR>gUbNwLpZwgHm+fU}2JUQ0V>t$c!_XlHJ(Wr z3QriGNx)>BGJ2z{|ImdxWN>!Sr(tZm{xU-{-Ghp{k3v1>C?qDgM$mOeE?q&d-xjZL z{gtXuW;#Cw3;zblKR$I$&Y0X%UwCeJ0AH2f6sKOxUPzXmV`IyOa<{#H1Ax}eGV;5{ zuexR{C50G-C_^7AaeN~xY+N2$+^~m^J6#?%gxnOxs|^v0e*jjYs1^xh54ySH&fwPJMV9v z2CRyQI1rbnbaeM=@{YmDXl_5$z_XXsDnno(fAg7@VD2t9-fhJ5P)+IVT@*7$_%+&x zr9#M4Ubp}udcn)$pXkRHoM<;j5oY#b(C$Lgi(pT1=dhl^w=b}_hqR|z40rsXmB?&kc+>RPqRwL%+Tp!ZTQxoK& zC7oXBtn5JBiEiZ{Gs;fcu@hDP{#8)JqIXss`(@mIJ}|!yrk91RzC#+yqH;;6$sVB> zov0Bza2bcY$1E3ZTlWfzFRC}aKccxAYvdu$TjUpc)i};zr(w7(6|sYz6_mNfS?*(8 zS29dk=*vCeBetv^_{zQJGn#8Qf`Q{Os+}IJLBw+aRb@T&7(XC)*{|i$`oxEP2}k4~;OcRN|BMXi~$39T)D{S@!H~ zmS@U5UjL}2;;Lfqnr`@Puio7UmMARyE4NQadeFANcHFlj6#S-yXep0*z(!q;JZDT^$uV;0wp`mJ5~cXf} z$3M|JZERg7^ND|e`>PnWVOMLEf;rMo32W~cya)4Q>O&TGJtw|Nf#T0NgNk9l0c}zY zcbvaK$NSvm1-<)Xj2gr~xC+hThn1eiHO;Y{(1&w|DFZEGqpe=4a03z{+PaPV2&+6s z&6OYn)Eg$`l(z#~SJsZ9f%_O|usH%(^fjeo@V zo}n`$uj}wJneKX_F9cRcJhs52%5;3HjmcOtlJWD!SKy~*+@bMK7Prr6m?hlrHzD(( zQom`?$PNXd%p5KQ_7i5;O-y7(*twxE+l*`)dxsRlEN~d)V^NM=4wq;2I^-M3*n<4+ z&K^3E_2z!uN1H?%C}jt5qB>`^yMflnP^bcH(c(TYIq!>4lN{^)n7+7v?(YYc&toF# zFP+sicUZ|-On;|NTwJXj`c8mmru9`)i`JMyKkSUADJsRwtr9gImh~=m!C>^l0nVp< z^OZP&(J;=mJJ=x>+c1xW!LJ(Kqv#ZO*Uz3YfuL}mABT6ezeO*gmsUTp#Dl26=-Q%`8(;g||9=p?bCob*N{8(+NjC;bN*KF`P zA7KlTuikC&_7zW^np{1{W426d|EyO#z$uQJJGFo5x4+uyz2rj#RyNQXag9m^Wi#1dFWxBRN*!XuYqJifDGXi42rSWE9OAK}i#VyZre2c8gq1H%D4ByIOzqK*kM!LQ{=#;^wddW)zkOwOTreEJ_z|x+(@p(bsrBa z)~)Nx2;DUenT#X6H?jYEbAPdB%JER3GghVt^x61I)V%vv%J3?bHFJ z?$Bm^jCaJI<&{`Of94n)k)NhIig!%78t*^gQsR}T)IHYx+F72y1cJz@AT&qqi1>gM z_|Q9uMT5}jo9Q%LmDu3^%Zy1>Wy*=KH|0wZe3cVdGZ2zTqoyP8mr;_}x^?n~HI|?3 zliqx^43b2Fwb~*CRnY>dBH`RaaF>QL?5wewrDOd1BdSZTG<2&TS0xp$aZ=+K1K+R8 zYVWW{eNKbDeve`t4Kw zvsC+5<2Ae*`E9L*rQ*qb7?)nIYkM=-gWCNOj19>l8#cJJqMZSi9sdzlwS7>JLE$Lu zXV7QweWr@%mQPUE(YtBeHn0tHJ;77bHlN2MPfqezqPD6-9B?b^49N?oS@~0sn@K%B z=sweHS~Qpvb_L7xu{HC#{xiOzMCX&Vq#U@x7f%{hau7~C!7Xe$I6S88>!mwdJf?!* z{4KyUBk-&>qM{A+)T!wWaJD!{l3PK8SdGoAt#v_5^wj^<^&9Y(DE7el^C~y?!2j9J z=r^EWDHihPH{jk-D0q!?QuwLsQwvG^%^QOH2fxq9KOeD6g^KQ#HjBQac%mv_Kji^l z8l}V^-jL+(!u$(_>>qNQe3e!O$#Sbsg=3;E-mGV#D zbb*T_e>({QfBIg~5@aa;XMivO|Cs{NfFO*&)&OY`hV;MiAQ_6df4lr+{o^hI0{ojC zButS25B2w);EqJ7IN)DLcmNoI_^ZdsKm`dyq5U}tC=Lz;?&kT23=jdg1pOt$0nkJ! zAVmJ?5MYiBpc|edK^jUHIV=c(0{|~TI6=>xQ`(^xyqI7aPE1f0BMR^844MsxF|qFuQf#iFeSnmrW+WfEJG0m zND)Q`iNb{dWuSB%YITHhf+zw+ML_8AtRwb$+QLu?aDW8pBxP$D3|fi=8>j%`5Ls{! zoD2m(9)t%60}%OhPcq;dFyPq1V1f*kvUDCAhztU(OH-&)rpVHRz=Q;N3O#z(KZ*=R z5F7vi9)EOD5FAC2@LvMB$x<4C1_$+rBTW$izCVA-3BnW@GJioZ0=7#3ONRh}Zz=c; zf5;d>sDJ6;zEI%52mt_a`R!ji00;v7{U8!#01z^NFRk>q!UqKWJ7)#6!Sc7j2mD)j z`%?%++abi8o;_aFo+qP?FRgl-u|fzqP-SqS49ns zrY22sCl2D9#oD(z&%YE!wU_Mnl=J1&e8co4zyIfr zUAYFp0-e-_k8FRF(>%MU&_w4KHu zO`4C3va!ye$scH~{F7Za>h%5IVfK1W;+fn$^iIV2%KuQh5LWOs&XzF=!@GEe6)Kfn zKoDTK_zi%iRC_t?caH8-v3?bSojG`~?=1K5h9ceez{7eQJ5zX>gLZU-CbMAie*6+_ z0I&i^zRO*DAVrAWrEb$jIO6+LKBR2xMcB<4Mfigrg10$X$s`FxDeBOEPM)Jej*8v@ z2qp10lgW1pZ%Jgt@N^HM(0INtpzOvsL$n5sQhjEVgQFT=F4lo+6f|zoCbFt58Zc3! zaN@N4+MOF0@~x#uIP>e;cTBrau8iaO(0*Dg?0Kq1EBDE_#QJ5?1|#h5`}C0f2)&_A zd%ozUZ=#Qs_)yD1`)?O242D)T@5~%fH&}@&Q|r0RLmQuguL~TRJ0nWpnEJX-3BqAK zhfM*Lt#||0lI>NbCQsZhkkm`w(ZchlOiGf(=$Dq^ z?)4cn9rr&!F?fAJ8MZP!j4J2Mrf3u_Cq<4!sSn!}U}<06<4`*9!)MpF55^s~Wjja& zzwbw*=?FjL7llM7)u0Qj4>?z9HC@qa>&2yU#@I)FKBUyjQiD0tIAoR!!KZ4qYg><( zmhijE;vn0t!MIyivGNP2?s=}jUA;p!6O6Mp0U1!(${u^LQy4H5a+Q{8%mXd|0B~E#lTr@!>-|h04Og|sDwL(zGVq<#6-MzeL z7(S*nQ)9B-DT7do?K(;A!y753MCrubwT9B(M;Y}S5Inb|saY=D`8?7%>1HkFZ5RN< zV1>IzbQ*@>Ocz+Rg#YF3vL#^NRJsizh2dO}lWxXVW;eseUqil5$xu{ZcD*H}eSpJ3 z88T1~_h;p(;#EXT%N~@!+2%NNADwUH2WN<+i!VqF6D4abCeIv&O*UqZTwVhDwmVX$ zejXx8M3qh7m_DBI2|E+hG~4gn2(zu7a=moCGZ6)h*FC&y&w=x`)f4O9b}Pfbc##1L&xAU?rpZKvQCpn)A$yWH{noc?Hj$YllUZktD z1ZXs*+GvS!%xbN2K$=DwM4UwO`Rv4JHxM&oaZ(7Bzp}E6Y*pk)%`7HX*J3%xPh|h- z$eJGOt>9ElnfLydvG%K_57#|XYunt)qN)Dk2c+xJ=4b}3FzCj>5D^A#jtS2sv)=&n zBFNBkfh}pV7@UZ<6r5+Y{x2;qG~Boe&TQ>&ecr= zE2iACLsrlTpyo)>+v?=ifzyR_XLbg1*L-FxpfVjf94~~*by14a_hABo6AYcjELUxi z+BmWsDJ}EA0ggvly3K%haYVgU3ahGpzI38 z!5k%P);d`bESW@+c@2wy;n&KF#)W$c#3Esf}g_;boLy2DrIBM3kX7 z>B_`TtHsQIFD)OS*D7(6CS}iVfzOl5B z0DTl*7a0Hxn6Z}E!`Bwe_DC}RrUQ3Ro_z-HBp0Xm%dI9EK>l>q;{O%DVu4pUCV!J4 zr#5Bjd$Eq4M!UK}X3UQoUVV-9P80tk8O=PRPh+x;c4OQ37Iho=Ki_SIWUQB%PZSF4 z8Njqat)V&!$5a%V(+?Yu`%`U@!#jCcFCq3@WKSop&C*^55b^g&BvEQj0+mi>Sf)Y}W{d(EK>E8Ba&R;OtaCq%kWV(ukK1#AEZMCTb@QMC1}PMQ z6kIp^SeLSaGw!hk0_NGXCkdLa`|+rvNUiQvL~(oOg2NYwnE_K(Z@@2s&-)CU?kp}la(5zl)+E5BJ6hq;bQhVXUpW`2 zML@}iGDNZDjEB;kL>I2KB=vGy8#_IbR;&{~KNs7lU7_{C@uw`QGFK8i3NSq%7GfiK zp=1eH*Zgww6nS+!`V@m?#b*cD2*owm#XcP)#{TTZ=!3OuZkbU=mvKhH z+^@mQ6E^rt6}Oe>1=on|s0K7DB6L_as`$N1k6LD^>8kaGRK`&hmA2|ijFi1?(?Y0B z2_4)if@*q#T-YFbtlA=m4TzNz1?s-8z^1QD_t+j|Gxc522g7rbW@DYhNRPEse4`t>NFrn>4ZnYWlB zy^SPZp2Q8scU9{k>3BmI9Ou9#49l;S$sScz19|9?+1g?&x@48}V;)e=uJQMux#vXR zb0nvwV19TsHKKADj5~6_gc%nZCqP#xY6=}c(d#{3Ki6X1bY(_HeWb7QW76J}5x#7N z+D)QDQlIW%Z*~*jNUu(a7jf&5{oYTBkScp@MlP3iN&6EcQiW4TOZPTao?84SJ@xZg zH|6{}5l7)M&PZ_aKFO7OkvV%T;i${>>NU-RYP^c{)j}tg*V=8sk5%bb3M0@IY;Il- z=evlZHQ7pBEn4kwCb#4UP1UHigLiE#1cclZad|;G#u5xv{VLij2!(z{xjD8p&X0ZJ z+HiKsRtUmE1r{gxvIAwp1?5xN%KeLk)@SdWx?NVk*2>zpbc+JF-f6^;icPTEvTn?W z&y+?=F+!n5!OjzTG~c}F(!rc-*nv47bid0zi zHh80iV{5^^uWN_et&G+kP_9D)>dqhGQninvY53X!qk38yMXm2Sh_r=Chsh!tHzDcY z2MgAhgg1T<(=ePzV{gNmrpaVK!wpVu<|YVuPe8M1aNYtvPXyKFj^T!@i`Gnk!K{Z^ ziyT}Ae}}2hFL&-OH9-aa%tq>2O?o6bGmu=tbIBTM&7yYt4ndCGm!IXn>r*)pW5|+r zO02y5JF*eII+k;N)D_E4LHNjb5Hh%c% z-1>RAv~?xWbq$G%a(A2Y6~t(CrQ4_ElyB$^OG^i_aG=J2m1=IgNS_;Mctc@7{oT;sE#)4d4oCOO5OR#cw(yYG%1DP&E zcB4UYUZ_*WXnE`Nw^n_)p7va{z6@DT-D*h$1ncV`EsE4>hI6^QB+}n_rs`kZ}KO)9UAd6$n7BVsRD}41&?Ph1xbc`9(0Hy>^Tsp#p z4aN=6uMi;1eDxNQ%Jj0}hWXgB8*ixMiw3a#<~4@BY?$Adv=P3&`7wku26oBcJz4f- z#N*7pE+@P`5Bpxn56P#ia0DVrJ0Yt(G*E8Y{Z~(rQXKg&{GVRVfq?-|XsUZ4QmF)X z2$gdpIm}Hn;r#6aWyyg9IY<3_GxTYP8#w`Ibvv8yZk*f_yH)F)pNr?`)sf|j+`rGU zHu41QI)%cMWx`AeVChNTHp*Um0ruaGyp3+C?Tx_JQnX>?Wpl6JH zYvBo+Cc^VGaFX_Zp$h93Zn-{ZD2+GmYIEoH;WbJQQn4o9R|1#sF&{bCCdszRp{H)u zDvj(!*(R4o>0!f~hlkbrmfh!)UXpLOEoqpSBdPuxtuH=uz}7`vy$~_5|Ja5}&Y4*6 zF+vwFG}Q4(Pws+W9vE+IaM*yYj%z296!p<*+0L{Xi#D!Tq`EkM?}p<(Sn3^TT88?v z_CrWAH+xHF_9*~w48#Gw>U*-ItP&_;{901*-SES{5hj*B63xuV7**CcaF73tw+|bQ z=^`+>>vqT`9DS<$lYf1)O+Vp#c-=X&Zg(Atgp|$Ne4wh0#1w@_OwbjNX2FR7eu|7LW30Ns0bJzA7&icl&XhG>QaJm zqLBl)i%s178W#ry>(0Wd!a|y8)yh7R5`1xsk&ED<~E@7wec>!<8!l%6Fe z5H_Cco{Utq^~mLwWOo_^j1h#K$}UiwpJ;1FMd?0BB$UyKHVJRjGP+hQzY|N)5;H)f%SZHT;&Z^de-a*I+ge@YXOc^BT=Lq zHhGfinuR~)nrFp!(C@Ko?QHoee!?3YERH4PZm_24z3@<)4hcbouyRnvANoz#^oRvV z*AxPP##nwj^emz**FG~2^2tLfi)7FIuNS~jEe&SI@#uP*bxCYCJo`hgFKZg*l)%g_x(a2ccu zmq;o}Nm#Z+bD}5XzX1p5#4PpzRGtkyP?c~o3V9=+8cf+n_EDlbPhtn6yC1c!M{$F9 zn=uQ9S#aG8lB-(nlSBFee`i*XU?OcWha}psN&#m$1<0jOkkHd_pna3}kFW1sCy%aU zy*x8WSG-3a+Kt$SgnB;)Yt1H4(jMSnf426>V7d8~!^lMW_=ZAKqn0vITvt{z`$^~f z;UZFF=(>r*flOd!ryKd*8{*7-ZZcCH(QS@PA*zsKm4D>fm}ia?)x|kcFhWkvW}CEk z(rasu%gZZnj?49gp;2z}+5m8K9sdm>KY`7>*|42Di)ixZ^~9+7mWc@)uacRYHV%xScnTb95GWWUnecyk-+P%)M)xYXm zyL$EMuCA{BSpC=qAW4ZyiUB}C005BB2k@~05C(t(fq%;nrw zg91Q+pC&+jtOMXcK>$D`P^3={_Y(gX|G(T|Il5C1vMQbo9K1-kjB0!Xn^qqGV~>%?jUyJM1_AH~!65koz$lmYPJ+Dr ze?SC2yr=aQ?v5hN!B!098*vYRnGe9)^On~jl{(dhD4&qfiMHlFeU`vK(t8aG+%SEc zEuv_GL2V?jd09ZoEaD&oz?8drLU zdh#D!4S_t04Li}K@Cpw*D@LpcqElzL1KRJ^57F(zcPMh$4&b zF+`G(XqAW~HKuUud;kD|6rM+-h{D~lKSmm`XwexxizK=zNiJLnZ4|JU+Ek%#m=6Ff zdyW(Cv)7kV-s@n)50?r7i36<3WZ)nMDX*BL5ye#30{~pCj;9NXOM&FJAQI<-unvpf z=r7SsU&Qv{AP)JYO%mw624s6dS;jNii7Qbhi!38x#IPb_~=)FC-(~Ng>EMZA>Hwf|1wqGpMfVZN@$B|3pEiG*(4h z)fLxc3TCLH87kffZZQYd8cVUTCp`m`w(T1b7lvo*;!tJejuOt-I~Fw$qLb?^3tJ-~ z79>6Z;R{PELn;>olJ)jRFdc)7l4he~fhh(?CSqy4sXVss+$V}hPwT3zI~q}hg;*$? zzRwT86*|SvBB+ZuTQ7BtaDq{h!ErINbBBK46J)FL-lCw(%Z@f{alLMo|VpfS*wH708!&I&qKK;vNK+k2(ou zN{%*};O|$SKt@*9oUw|e-b7Ir!Vm@r*BFXd{zxopD6XU3w7^CPD@+&7qm`@Dmgg1? ztHiNI0{@(6dS|Vot1J$|k-(682S@9NlIX(y=0ZIADJnr_WDO__0q`>6#s%^4kPrjN z0AXZ6$KVgOgGDb@M3}=j=Vrxn0RWN}=a(4hz4F1qSo|o$FmiIUref1h?uP9<;ob&F zjGt7l%|cI#Q{*IuvxQKf3Kw0#o{?CXNsWFb<|foe3LZV}I@(k|WI=-Vqgk<&%95pi?irQG~PV2deh?K|;Q{14Ly#o-4#`0iTnJT!H62nWPYNmY^yW&5+`T+3o-2nVV5CXvPF*)l@ z-X5-!3;+TIh!LkhmeeKYz}Pa6l5gMHz4waRBG44!Vj!+%rb>oso-O&PbRPl$pmE~y zpJrI)6+2d^6S8#E>uF2^9E=Ey`*5gSqV7aS(izdA*(ay2+mT-aE|l7(PtnmN`VUfS2& zteWtz5M)4M8$wLze3=zvSh>fjtr9Z7B)n0y=rE|%!@KK0A^=`aXRJ#Kp6Hn3KnA7K z1x*Zr_=NJ_)83gxrWO(^6djFe+ zL5^-G$&zCMXpXp|OpL5*^&m1a6!W|Pvwc|FtQOs0SIG_omQZz+hFbgAv&D9`L>{*%p8OxBnn7_FF^Z$5zwh{ zSTtpi;6xt_b#Y@RFnogde-QvD^ogJ-sceWRIU5^F2ojWrymP?67+%CpKw;ceY0#)x z{9ywa5FhJ-^1o(_M`XO!NTdpbnItksdZk8VY6~T)2LGY|&l~h}#bW%Nx*KtY8>LL($%L}wBpCSei8V8$d>5c*ulpgvbW5OClJU@VE7l{u-ld_Vl9 zOl{S@N;Ivriq(H?g@KB@Or^T`;=3q-q%t)GdC7fV=H7@Z;$5o5Lv#t9MMy=8p>H|W zx?&-UMXO<*T7zwz(gS{RM$1Ihi#lF%yLmaw7!Ri7KUl?^O5t*H_3YdT;k|lS4GgCNE{uB*k~2CR*nik}x7Q&)APdsjtqL z^G~^N1XT>|dYNNAa@lv~GnKMgrrKxf>(tLie;`%VbA-1UVk4U5xc47pWwVakM~LPH zc~*yrpQ(C4D`>VV`EBXHzt|tUE;4?jGg}Z=(5Ri?A#vE`fFJnp2QE5>u3A47*m{Fs z;nTV0X%EzX$~r_O^aLFx5D+H`4w7Ksk>IH34g9BW49DeBZKWz~;AlD4%%SS6T2@@O z_DyuUv5z3z5GyRo}EZ9Q2Nn6q=iyCde!y1Dl>`I1RPvnpE_~ zS`}qL`q27tNqWbLl73FTtcDbS;QN$FqH44XXj4cL4QCkAtKAEkkdYP5J$DiDn8_~uW~soMLx+f5TVcYcqo0^A9urEzx59V(i zm7JGo`NhCkeh1w{D$?@F-flr9)Xi$siC1mEB6aGn*;^)Tw=6O6FeBD9j>rT? z5q=HA6T&|~{ZJ_FXDFkjOSWXW<(BB(Bh-yvm$%rtkwo(0$Y}qz&QgIy?1lz&>~;NN za!JcC1j$D-1jTVK!H#%&TtUR7$gQNzMw^tF(!EyCZA+I_F=L5y_{w|EeNDUbEwx*T zfoW>#Z=RIWFuhXsT#%GrV)GP?T;hz!cmwH9Aw7dX49DROrHCb~H`FPpob2RoiAwDG z8(!V)s{8_w;i42ltr-*6zgLo(SeWj`XP!g*+QvQ*JS3i&M_xEXNKH)tM z8j?4pBe|O)QU*n#?B`luc=np1Ws+^ZkY+s_hm7R>`=h+YY5i z@)usPxI|rZ#fqCkGAdEFRQ$lVL$K;heuy1N2c;WSOe39! ze(m@R6FZzZ4-(0&Sh5as?`W5GJv6qvTzH;#!VUzh?ku|EIK?uDIMe#FCA6??sVp_` zL*byZU`31Otz%DR~|os06yRQqef=hAsBWI2T1#%KSA|?U8o#O6&K2H7Sm3 zlJ^idb*e|}c*WZd628W-ogF27O~D}bMah;^6)GyPZAspUM-<}5`@51h**9|G zOIN=Twchg!wD3yOV*i@a? z3!axd)9_V@nJCIr@tC(c z#l~l6#N9*4TXiX~6dK>m%1XmXC1$32mf(c>Hq$cTq_wG0dz8VbN1Bo$2>HQ5USe`Z zTt{LkE>Bj#q>+9)u3|f+WCMa#twItjJ2|Zbc{A(qi|OFRh8h}DW!g4LRg!8A2ZK8a z@F~+N*dar48!8Lv_c)1`%JkXpHCR*$CR#mYdBWT0YCEE~&Q@kBNoM_O3tg{liYl+ey|)!1{rzdqQp)Fwq7DAUs2-rz=K zrlIL=y>X!7{n0xX6aDTKq?9?DouR_6lR=zWgSM3WZQaej^3r;{GE;8^MvC@8!f&ZT{JpT4DJ1 zQni7}EwL>4^Ly5qLrul?K|9c%3fMo(E4cV;q;w-lrKv4AW8W)Ot4RkEQy*K0-}-As z*e_}2tTS*(q-m7og;3`Ce1+%u_uA0r_cWPImQqj~qAHg2Y1<@RP$UKK>FlU@q`3TM zl{lA+ltw3Q_@X84WK}pBBps29l-Uf;4v%6u%8JjmVJh42X8rIT7ZxmD)y^SFAg%K^ ziFIi^hlqN%Tt&(-icD-wWt$LFN>@##xu9(%#_{#g7Al!yn=g!Dx77jjLdxiD3mkymL>H-*HK2RQrELI2p8Kj;I!Wm;uu0^EN9Iv|Q*Ut2L|B)I{2!ux+&?0|RmhcWNztrc8~Ef{8RJ)@9!g)2 z0CvIVicxYTj$EAD;YUES!r)sdJq|_)IIlyKvc@ao=vR&wGp)$WL(9E%&E+s=a9RTPf#`sy8Hf(=%YORDKh&-hasWJylWQP{0|vSc_$%KSkqEH^5;nxH9QRM1)w zyTy1bsA`3dITM9*;(jW`a_9A)Co=hNwW*C~JK9szs*``cD^09OkrOqcR=%+Bc+U{W z{TjIBV&v|^cu?G$IvdP3{;aPYv^U*;LxOBFj(c(%wZmH1cRrzM+->^}UQ`o7QEFOW{rF8{MiBtRnOZgPditQ~OUV zP5T~sqwE^hCuUW-$;{F-{PaRF@;=0 zy9#o1w!2C0O1%d4l7$3H7gFxPKLAOe9xM|w00a~S91IfrKiBrJ1B(nmAz~6B6jXEs zMnYBN@)1~j|=-5!ubkv6JPzX>!PfjapASD%*$u9E1?L*hHEZV{jlLX zoLHRySkK@4OemtJDd48mG)D4OS|XkxUrI=cRgt)j5>3DG(ShAF4NG?f95H~0?PMLU zBj)Q@FmrQFZSrrwfs!+a`${E`Vm~m&f#W)^T`O_a2<&NuL{f3MV1Caz)=Zo67J=56 zB9FQ)*PC4M58Bh5Rp)Bly)*&!QDNX`;y-up_smP^<{aFVd;N`Tg%;QANM~0QW##ka zKaD2;j7b5&f#Bf(+5G9X13;091W=g32pJUuP?-e{68^Ci_}9{FLg%S{9A(P|VDk@w z6Kb50HxGUT7r0^LQjHK@Ghp_=Z3O@s1&oLZ36+poP|*;agjvb40gX|}$SE+Ppl^w$C*#*$YZ_wXsqup*S0->}Thwde7x{aJO`?7Ewpl>%rcQ?~M+>$w3cck#tTid&kjkNa#>ZBTx zWL86coNf8`OT^B&%PIH{THJa-uZHmF(?v4a+qYPWVh_Hezbk%*M=`* zGc%9H(xeM!Ub=~qyz}eoxn#hOh1P6iMYUpv=@NZ92(0R3I#i(qo-&#rL#EcXZ|{-Z zD403@q|FtOP9X(t@gQ1oLqbN-%E}beagfCj=asM1QpxLyIY-=hxhHC~aaXUHe(99R;OrhT~#RoK*?UH6BZeQs@ecUuH!SQP8tYH{&wN=Gr~zZ>Kt*K-%MRJ z*5~D48Z;C;3VlBSrAca0z*9~vYQ%B(+kk0wV>>&Q%BX43CfStxc*Io=xeI3h4lQ(r za9cKmV}Jv$AqV^jy@?NvtYVTJ<%Us&p@*JPjo@CfP{ zf917Brw-r5-jjOFB2VYcszB-z`OntQDU&xn!eaW5pG0R^OB9Dn!%A!h*ylvOj~t| zRbxSkF_%%VYY{4y_||Aseb$uEVA452stw!dB!q62r=q-AW;2-aj9#UMp9c|qo9LPT z9Mx$RDGoBsaijg1*TEAZD%+@Njsz#cYUBO3;W(b?zR9eK{#yL#v7vZ-6mK_1fmzc4 zy#J!&%x*C5^$`3Ud1gbG-5ot2V&C(3bGGVB%BQ4QCk*c4$L@PG#@tSUc=(14KA?%GkUrAL!{q%|P1YUx13N zt9lST50b^TAd*dpL7+MBgdQ{2uDV@eSReo2Wd08-(t_Sjj)B{ zw6^0lvnQto-JSs!2uFw7NL{I8V-4WwwPeT1%HbOS^)oyjrkwB~*+PkaXP6pG%#jb= zxcAU*HY1*1%e@roz^s^71tGYuW7d`p%k>1ID=H)Mbx*CtC9QIGlepu;K5`Uc26-%O z!Gyg8=L~&;&iW6sdCRJ%Hnny};^28tU_h1D8}%l`ZxxiQg^T|FXVJrP)r=atyZ7PxdwYB9mZDE+a^_!UKqIdOT%L%Nr0it znOlxSNGZXjvSwg6S>ju* zDm+eDrZN3yY*vttJq%DF(n3KcRbQ9A-aoGUV7uI995_G~cgJSgvSZep$h(tF5=I`&G(?Ak~>F51>mxztUm z=r%dDqwGpa*7yPvyi86`|2C5FDMlyu1@{`W1O(2Z5{&4TWw0Q!Mjx?sC0Xii!p0}5 z)ZF@Ew(2EpnR!(gs`;cW%nSO{skLFlSWK}>m@(E(_WnqzknXKEpFK+{NhL*HLgVmh zpwjw83)-Au&TQ%YK&a&q5k~}#G7Xeuae3*k0g*J_3^aK~&V2N|zVtb$mT;lFsTUUDhsNPtBk%MV@@q7t7KiP z3W_S!Czn&%noYflk8?v77Q{ZBM(I&WiP;xRoCf>$(?J)A)R^RFSY61sErC5rHgZF< zpJta0s}JRneE?v60n6`?SE!uhpti@B_+|=4KZ((j(i2cV0Cqd$_@hRv-yBs~z_l;Fm9n&HTy50M#Q5s?t zGN6$d4lwctJ^*K2=v9OcxcSJ;!S#b95t+I$w1kx4c5DsIwrr=^% zpaucEV5G16UP>tU83ICyf(Ov@D$-;H?=fxi)gORmZPO&cLI|R`c_(MT4pu2C*z_J4 zGBLYJ6CJzgdeb7 zC-iBF38I}qA(UkAuK;;bj*%X6ml*R!_48iSCZ{Nfs|4P}bLaBaUY#ibhPEu^=@42!)Pg8UBY&dIAu#V} zI@rpXqlIuRPn9NYpiz*t-p7c!BA@xM_{D{@<`rp8&Vc`XIQTi1?sQiLRT=48V7s;9S=-0)^q2(x`>;g)^Z8uzInma*slQ={z*en z0mpunL~3z7dEDxFOQ<+vdxUPoR%r3wOUQdyDij-4tv;- zc51}loI`qYlX>UMAs5ugAX_b3e%Pk+3mI65>lE&G0?ir7*lncY%7I%iLL0;a2g7Kx zV-nqip~uMPlGL8iC(&1R?v>Pn#lMi`C~U~2xG%aX!rlQGl^{25f*hS2Gm zZh?4nG)>$r(d9oSKLBJfgxfjUgdxvDVk{4_vq{@V!so9yD!at}V_8ubp7qIuU?s!? z@VP|OYV{n$v-AG#K2G3-^97yYxr;frd1d1?HYZs8N)F++a?-q`$J#vV^)C&vjmvI_ z2QbR%>5>=FL#4(LSAU8RsW^ivC7s7m4&te`ipTLAe^jci@R%#UeR^E*!TiYCE+uk^ z2G8l6F>9#i#;U+a{MA5sP1@0dVnoe-ALZgCXbm!W7;f*kO($vM6XCI+-qfDF+B*^cs%sp+w}=mM(h@+8XRIeK!a z9BsjEqC#%b5<6N622f1-fV$SLKvyh^X4JGQr{DJgd?mMR8-C<@{+yxzmXVtVS4W_R**hZ zMIJSjLsRXSp^s?9?(*8!-_M8oDc+1OwT|b(SsLB7EfCbyD>Wxm8ljOojnPxWFGP#G zyXdpLUC(`8esG5(561)CMQd)=ujBdxr$Mx((sQIDsTJpeOu4yCOe7el zT(ql>Z1T`@K;`jPMs~Q34~YcmzBtxJHgQU-CMcExuOTm+LS; zShU7g3cMmx)OlMGd;nI2ECoq?tVzpSkzSQ*cz!b}HvO27OI!~M|G|r$+C(c?#KJ~- z9SLW2oa|x2yrXHz{{d)lvd&6wel@+Br4j^hG#45igjf>7g{V|u@0CJPDGETo_fHp~ zXIDbliciyKt>Fm92`p7z7P6l`T=YkZ{cKM*%U^O>{-DQCA`tW{^M@#T7w?vS=4ulH z>6W@=aMxICbn|TpiI9bqb@IFbR~`$xf+}|@1BzO;aZ>KE)^{Dln5rbd46#x7&^OYC zH{d`TMM-XzETzYcC$S>V$M;JzQY``pl^RJThiJC%p2EQ?OT`t-G*)@ zCaHLl1MS4@ynQSJ_^~Ut3z}>zC*KO)=t^+BJc~ar$~%~A@hhe0exLg`+Miyi>f`(g zHom_EzLj zX;!kY_RTdYbS(BeSG(2k7WGq)8ZY-PNNT}?n<>=z07#OBsuE#1!+MJiW7O0YmT=~P zsCOO=zzC*MTdtA`m-5l=Ov3Etx1M=TGkIeU#lAkVajreVBOutAJC~7kq)AxY0?m6VLc{2h8}~l zy0G$gtoR_AyOKAE>?uU&UwF3oJrg7Jm*mS)S%dS zey}n?xDCRT;)B<>aAFP=1F9)0seL~GkeU)C*C}Lhj|W7wbM((1`{O<85dp+h^ccq! zl9|tg?DHH&@2z_M<%iIxCG=T!2v@Hh=SsTCmE+f5MEGCS{v2m(`VrWnJX1nU)9Hvv z^-GGEH_fhpZtE<4!AGvXMCztr`DS{1{mEYgqtBKyD`5SDDU>YXtC@$8Iu_=G3zsP^d4pV7^Y#fG)!$isg55(gT4|(&{8(6 zic{MDHIbE8O>Ejl^5<-iID&q)i(809v;cw@|NJ|cpi1iPx0oEux9+kBfmZ=cg$fON zIs(51wkvxa7(PS;7I?M0;%L&9eK*Iht+j3YL+Hx@`m){^THOX;T>e2u!X2K;!$x?H8^S`le090AGo*ZYecK(}<2W8K<^D0aOxJlZ?rn0ow>DUT`E4u6)HAMX z1#rUTt&iRi&Tzw&G+AVUNp0%?uE@f5+Ib~cJ!BR`U zp<$z1a8q#M_wf6xg;#09|JH`yP$o-TB9{At`4afYPs~}H+)Pos$X*|I)A0r(=jT} zicg;mPHu^AJc*?}F)S*(2n7?G`zgvGzl|HWR=H6jU|HzLAtA}umTVg1^us{vjLL#z z$|cyS^yk{`CHKg>JRtxFU?ITsvmuR*8i9sj6fCuoqRK^KXWaG|OWH%-t00oCS?y$n zXBH&q9nHg0I?i3COZa4v(0SvMQpd4}kOMx}1ln?W2ZyUi`fo9;T?gvAra}1Z&3F3v z82?x5Y$61~Dm<~96i|THkl7Wqu~p1n+-3b-YumI%sG*|NPO!bF*>5$&Z}>9OU1k`N z&hiCG6=#BRUa7X)x<_3h`FROWLsDEGo+E>vC#;Ti;}_PSqgn=qZ-I_J4rSjEFAby; zOJY1(T1$+D2v^--lJv-MK9yV9p!#t{9g;7f*KRmn_{k}VYH z6gu(;K#o6?t8B|m%^_ZVl3L3uEDpI6A}i$=CVv{ePNmqp7ExHFUR>Nbx8minoet4# z{8W21_^8}8^9Nu9QrLcTsP=e@HQherG8cKW62a4+OpY}}swzXSYcOfk%f-G6wZOQo z_koN9uDV#q(NL7MM@(^EFG*9}I+fdwHITSWhk&d+cMvxA`YCvZ0Q*fUx7~Yra4`M@ zuz9dE*yZ4hf)H6&$aKNL6vgVRhj01|INnjbn`)WXGW8|4peowI0iI?3>$WZ1=I(Bg zDkmMrq_k@^CU|CqJ0C1_j?z0+G^h+5<1Y`SYfk1{+%aQ=mruH>`I{#=wbqx(@((g?w7Mc>5AAj9z2nan|<$3P7)& zdv-@Q4FdFy;34Uu6grFx^7py!L4nZJI&80{yGX-tS;9#xZRjqsyCIUYP^c2@%SUj_ z+D>3huM@&_PK^4dAtO6@3MLwJTlZx-G#XDFGgogKcAvsS)oXMRnxKfGGlEv6#Zj3} zT=?h}WEh)@EKG~}<&oO94K8z1r6{}c*PFa>-s53SJNU(+;+UZ+uf@srVa!{|*7(A;6zwZ^0Ka zu#blvOji;+4&*N zJt;LIS61rEQ_?`1mFQ~H`R1V$e5f`{o;zw#lW=U>0p z=YA$}c{e9_1VqUliErl4=t6PcK_AZmO?M*FIjE2Hn_Y4EI>z%=x(kX?Hg$p}V@KRm zvne~P(b9XiHw~Lz+X%#UiBxP@g9S1oqR1gp(1XK6+8az?Gzyp3ZU);IfMu|dUFtvC zrNR2~_4{v614J6u86gI*&9}+h9mb&8Pt5;p5;^a}YD_VrnfOABe9==1WGS3x(Uw*= zL>C-Tx`vhonp{(Pqu-~|l^epyl#JLkt9gi-?w_Vj+rnp+sni-?!Zx=NdhROetT++H zMoz_>+d7Aal$9hp_<{dAe;HsY?;5^~GK15H{IimZw635khs+dgSTMxMJ?^UhjTd72 zaz(O+G9jR(qD{qjFCEE&`kJ2B!-5gD6twrb!=UEM&mxUBv*dTR24)14`Sj6s98pw9 z`JB=_TV=30W{O$@vF3enL!enekyGVu?Mo*qT8RL#|l`2`86%is)e!L;cPpm z0U9K_?z)<;tf6dPfm3%zQ7dL#SUeWTab4aPPu-$KPYOdTV1@862)yY`&zx1zK@pI({GStg9Fbp@LSY2 zTi&?pwU`Lp0pfQtCdxOe(}H8h@!&<0>WSnFa7sDpn5BiHas3i=%~E^^y1JAJa4n?e zP-ZG~u6UtTD%o3jLW03uGj(RZoSdCWmv8FHsz$;tP)>P4yejkz{+QQLrKJ`%4adKF zf5O2c=Ho#AW^%x#8S`s9z&c}vvn*C(`|2NJZnbv9HAF!y-Gh(lK}cj**;vPE#?q!1 zy;!wcR4`7nq{1@AKf4SOHXPluRLHJVq8WXvq}x|=w@@OD&xE`f;F;o2ic{keEI!Va zeKcg_xOf{j(GOQ+-}vlVZmQhkiM_miM`Y6a22wDJD_uRs zucZG%0QpLZ@hp`$sx|N(0&sgq1!&U3&ao)s+sh>asQdA%lqK6$Jsdfr|I7mn{cgqs zD8hS4`)c)sc))=4HVQc=uUCsa80|%Z$IL25xIz!-{gAi#W~BM-yh}2oZ;7b8{Ts-K`l@4-Dca}Y&~U(un+ zD$4n!+CB7_7nQv#T#MCeiB*YG6`7i=x)TEPW$+p>t?$@SL@BfBImw86>Gw`GK%gvg z--8R8kIAb!1pesQ?01i1(Nc+Ynm);;-9ax*WWtC(&GSFT0j^e}J2hA}tA8Elu{sB@9v_#Ik{bVqK3@X&teBV@L^6BhIx!b= zJF~2zK8&yaEXCC4YOdmU{yJ*>I|2{io2v!KbL{bnh##><*E%v^=;R=9nLB3AxTD-x zx?MqWNh&UCzD|sO0K}7TM-E?@w9oH#C7bL!j*Tou!5VA#p51r9N&ArE6YC5{S7|+} z&((dM0s9m8^d6UgxK)Yu1Cxd&Q(2>HZFbcnT6cP+xdvPR!2QAkFCqk{9t@MH*L-BI zeftgZ%oVW{Pp3!vW-tAEpAXC25)((YvaZ`KPPio-<+tE-BtrReE@p9;cJCK6#oq{L z*19DVX-r2^-+@0y?y3d7cH`1!b=ogMw6mgR`niwO50|68uHanW9fo^B3?s` zU!vk$eH9R<$W(7a-3jw8wcL)|qM_FP^Lu<;PMkMEt)n*#?mQsR@9oR8{$~u}pKCz? z(9Z-3q(n*5|F;Cd15gFQ{#O$ZO&B!xFOMPs-U#(CA0Pw<>?8c2OaK%#Aqe1Kc_EYd z_l>N_xbqS(>V8M3|@z zpRa7v*e^?(Kueei7XoWo4`M(XWJ-u6lOIV7hAdc|Ng4mmBw3m^x!jaBo+@z_H-!Yh z83!6n*)kO>l#f6H7%##q1X90YOE5|o5CnquO%!6nlu-!-0JMRC1tA|JgOGv*1Bif) z3p9?|5GR=?jtKxpL7JqA(0aieC7@Vw1yZFY8F9cDG$hfI1hO?mQpZ5*0d!~?lB5x` zsVpGPKq%5+3y4gck^`dVKmpQt!oozsJpfdFJRNBwe6f_Z2#|^q)|52SG&z%&Gyn>) z079B5(h2|xK@tFDe%db32oNO9AZ!%)>=Q|#lnh3O2#U~Oo?Ma+fI=1&^p^)Tz_)Hl z1pMtoNw5Iu)=?0`fBGMQ0{y80>>r*q{xAA(2>>BYkocEJ0)hCvaP}_*16w1~s8zNnI16kCW04_o=@Y>p!tXHU{*zy4Hk zz(9-Sh*jQWW3xv!ZViQz%B5@tZI^jFE#v1ZCMu4K}Ie~N`3 z3H(=A%CEw)5#wOX!?(+dy|HKK3T5R%%WD}6yeON9oJ!6Z6OWMuV17Ob3S#@$iXMGJ zH>&V;kfQbc3Gp#yF-@R?Dpt8JqM zPDA_FCTm1UX2EJsIP-$=xLRa}z~t^(Ter{Fi-#qXd}iv|GxIl@it2CYfB`>mLHyS{ zpPhq5$oLtx6HrhzFm!ZinA;2N`(NhR-+U^hN2-_C9;1UT^I5rv5uUA|oo3>RUMDZ5 zK}0hr-gX(?2%b2+KL)-CA{KueE?6}Gyq<`Tj)QW*#Q|63rEwtG)Ln%34T~-Ye6QR( zFGf+)o|BywGk!|C^SEOSQ#jP?Yo=v+?#Vj=GZTx&;jP@vc^qpBIy%-H9UJO49Xsvn zRSX;_=15dntYc7WhZPC?P!^h{WP#=Mex-UPJcAnT6|YJQo%mELrKc7iE=G(bJ0oCs zcC&QE+i0QY0%F_OVDR1;Rj_#W(dcLNW*3^Z?Y5a5B>?Q6`AzADVutTau=Z56HZ})_ z{>>kl_oACW`d@+q!5~_e*|wR%ntx!we)<7lzP6BXZ2DiZ(@k!~k{6H&K(W(J(GAC3 zbTHy4NuT18mzEJwTUj~8TuVkTe$o*^EH&$pczM((#g$GLEsxa8pT_+cF9iZWd;f31 z^q)kr{}V4oN+@7#==&`&cTM>J#7mJr05^`5b`|<)`dT~C6gRPPcN)(Tvxyd^H>yvD z3N)ELQ+q?OP^{SI!473>4Y$nT+3UL0b;&6PkS=eVZ{p=_Vm~%+Ml7<+-<2?7p4_{H zzC<)JY!JR?0q`Sxe%Dd8A!&ys^%LI-t=v?l1W;7#kka>LfjkqCkuq6PZXw{-^hgeP zt0MHLU4u1OdL9WQl1(Mnmb+oITecw#G+O(K;Gwp0f~3-PamV^rff zkmem7G2zNY-j(6{WRz~YkI>=P^@7Ef-?s5BI>IBUo&5 zx8@O5{eX9|4r4n^Rg2S&-O&Pkx(em>#&bq!i$5SE3N;?bbtXsCK^$v6qOp5&%HzJP z`W`7EuyZ++?J(kD(0wLFVS#Va1+6j;d8b3H01KJ8P>gu1ZjQU^-h6FQfPU((mW@0p z=3~>o8sL?hX_GDJah0Ky->AHpcI%+UpB#d2)1AJdypH#7Jbw*kMW~FvraGph-Ofjm zcu+R-MMU#`jZJ;7Z`_4-38kbeBeMq;Gk<}{yx-3&oPvg7c11wgQJ!FnFk&s2Y$K2V_m0pV7X@dD4^c zd@AZR6Me5Mn6N|$V{39hpyX$<$-?K}@l16m$pl~alaWb)q$`9Ybxp_i0 zO*b}8-a*%u+j9>BQzREKHf>zf*OzD9!AmlNFxG~h*^ZWedk-BPjv!&h7=t)p{(92< z0pOG;KrIisZ!B?$g9b|gbvS34QWrRte`g~+zFB{j&cVaBeNpIds2V!)Cxv1^&@dll z9u_%qe0F~o#HrVUJ%-dzC@#i!;3XD@g+UB!&DRP$7ww*U z{ppSAeeFt*XUBK<^6xZ_Rk5aaUa=o(UpnMHhijgbp3j!$QB;QE|MF&=kIKr(TLYP# zjxMC39pFNV5D<|(W1(+a1AN(G0gYaV&2;M_*p>Aa$laCXh7dTaA&BCp0H1Sq@bL=m z^E}><52c;hGz=!nf6A?5udIP=l_ku-RF=in2qOB9?f~f~wHVS^Q$qS5?2rvz&M>!c7sO-^(^VHc`l+|!I*0YjAbJ)Qw2T^tW54uX3p3Xs zX#$^ByMMgk&snwe0Qu#~%B|MfmT0MZG3eTnNTFuh=+*cb0v^Rrfk1WN=VAxh& z!KSzin(u_V7nrVCTwCTosk*wlQZ*J1v)h-+Gm751lFnU_$0mXkivqYT6O6~A!?npA zI(EDxFw4qmlVG9+K*GFpD6KS@b z%tPfgoJdbWv1EwL0jGTdbX_fb!sXk$zmGictq?*T2s+gN7po9d@49Q*apQopWRXKW zkikQG4ikYL>#`XV%^@xmJ8>uA8%p|N-tQ@^T*LgK>!&A0=FttyN>=4+tez@jbM({*Ph}L3sWScRAbJn9g8|mkr)S;&9VOM#LHKW;m~#e z0MKG=v!ha{5p2J5oy?gTkUVsG`$3eIEr{JWPa5SWIR=x%)#~=&kr%IXdk;if)&anN z^8=8j%{So&VJ(KqgwcJlpx7gCB_FY3URbUBe=t;4<}%5#dn$fxo*LRe8B<=CksDFsQww01dH`5*)6G z>6#$`YTP4-!_+poaQ2_#4H*UVw)Nvv5ZJ$i8FQ5@$k=_L)+&oCEp%ruL^OkAtrgoN z2;ipS(*FR7&s0AUKrOrGSiwtxyBnxwoqWY+w$vWRQw-ykB$zRE+@gaj0O3IcwG&-& zptwR`7Ovw*WLWue%bLr|#ut_j?RC)6wwP;<t>>3q@&|;R)+t zx3Ctaisn?QGVX506U{9+awKlj%+tiq zTL;9nLvz2eF#tV?Jvcw*6 zuyNVNjTBy7^M2(bZUWVpAzRYECOQy$frxBk0AnpljE<&QAmyw}9MZTp#8^N$(qgb_ zRnp4}BwP3m!{6!D zQ9jr9g`+9;cl<@Y`BhxjXW~!aWUSG6pRE8s1@n!!2_Jx{s>NITb;>LCwgf}|HlB~X4DOX6aMdb`%tB(TKCAD5i z>mL@j_P6s)YCvN1-Aqc9T&ls;Q$%WYTE$dSxX6%c@x?09gsG7 zMSM8V62}fY+_v&7`HdZz!5#F?@UXnEC|}H?5*G-#PRG4NII1_7@kz);yV{)rr1MYc zGQy=6CsUM(IZHlM^A(g3Ly2K3*l}W?0Q?ck#ep3G5f(I{VH3n!;)s7RvYoMF#fuOs zIXvnV5oEHO^DqY;L#ru%Bka=cXyE%s*t!8(pabo%h}bJWqltKd!}BRnS6-o=$ht^g z++@wg%{pCP1qZ64Zdvvyg*LvT)%8B&F)a?a>>Z9o475PEoCLFuNpv}1DrvTwdWInZ zQGhbPYlw}Ok?C_^1s@TvHPij`8$5Zoqt++aN{SJH)jgsfAq^iR2!;NFq5E0t8ZlB5 z=_btUT9gODxi^m?5r(?JoC*pYkQ*}E^Gb5Fk-=>Qu40uI;fefRe^f#D*{{XBeyG72t zf~-8_)YS0?u)dql50jI+~qZPnYZ=$657(i==VY@l3Y-V!#7H zz-RyiRU0z{v7|>yDBnh6HJijp8}|fLP-qJ2aK081Euyy}WCc4c>1W?SWrGGU&sP^? z)>QKBegOzJt+>9&uMh_g2)MVJhKBDsh0R9zE>{rpk`}QNPZj?F8Ot=diE!=4A}qXW z<^*U3Z7jW(C$We+LPr9G9XL@#7eENq5$;*^YrqFFT`IB*cDUv?;H(m&-VECCTF2N7 zGMwe?P~fAF{D}FJwnNOL9F}Qgzt6S|tCRuc3~|K>FrP3rg`R*OO;d+DSoFt5a(a%L zCdz3p>V=>HDwhBPtAHM-i<-2)58_ID7CxLKqo>+%+UAS1ZRPNJuUg0fB>L0 zMH+G9EUf2hmsH`Hrv~0ydTjvdgR8Q%z%{ z60SQ@#f2uESz~-7{)p3W#E3QwCed`~?lK4e0B@N6;|pGS zJ8zJxL=v0`@s6bk z^fWw)D#6*<(sY7khfVdUKLeq)!7q`pDGUL?7&snoRh!EP9LIdL{D|zr*a(n8R09A2 z2k3LENsh$hka_Mis&OCR-tqp=3?e|HXYD&Yo9)DQwz{@1slc?SC9&^<-o;KUaZthoZlWOP`D%8u$ed5afr~~vsA_(Cg zW!{X3$~N~=p9UifbjwsIDIKA)C}C=(!1IB_#7WN`)y9f?PnmOoLXN=3QfH3Th!_@O z5LcnNHB?3sPA{{Z+! zQrZO}Zz{pAE_SRy0C+@uN)k#Mfd-xfto9U2nyRbor21FY_&vsgq-kD;2ZB2o z=!NY>dtAM=)0Vgdaou9pp|-pl3IGq(8i3U&QNRQapt784<^WS|*gG-!sX}WPLOS4{ zH4KvD*|x{L;y1a~z0m#8(9>b{(taaKuuupnM?eR}uPeZ5Hu3zBz=gx+F;ZuRgilq8 zLS1oWCAp{{Yb}%`I=WSLHC7d`VvgU(RLg zNcTc#+@OkVQ5U=qN9xgszFB{mUrgP4lwkh=s;#x9;dS9s?Z%*62P5vGK}Nd&08;=_ z?i&%sm)%+Ti;CB`zncdb&R^pV3tunuO6>HEi19<)A0NdlL!3GG1^1cqf{A>)l@vLM z=O>n7FQIO1DxAbG1BewAvZ!5KS6Ve4?rgDfT220cSBU@@Y`-a`5sAF{$6dCjnrfP5 zJvx9ha3MN)NQ%0VvhfVr-!JrnN8(7k1bA401itQ2Av}-3AMzJcyJ$a{GeVrK*eF*H zA*lDf%nW9`eAFNc$$_%$p}XQ7M+iB9G64zqM`X}p5D_rPIxgAx)W#R_`nNC-;QR|z z+-ezGI6_ao%b!HNS{>UEpa9^XxPsrc{;^oE(*FQ+Ye_z=Is#i$^x^e^MkWHxHMSb; z^;PjV+2&Y()=*}_wNYXsIUV?jXQhGir{>3)bW4O5rRysc;&=(*CxUpVig>4rc&CbZ zA=E>vQff3{!H8|<3cph617p!hu>xRO&-eh~P=!nyoBcJ8lmVKORidxo{2SU=$^9Pc z45OaVC<}Nc8)tw^96_c;4pSIwE#v9~A4$P)-&1N6W=d#4HYtykNAlf@19a7%7{5hc ziHvIl)j#9>8u+5mxBVm^uEgNY(NV7v!r&^{(Q4O;XMqrCwO0TFtJH4Z+fecjKFV~m z^k3RESar9Jk8lDYjuGa5B9a=|JXh6fT@xx|5d{<;gZTdd2O4vp{{YZ3<T{4qyu=3vKI{ z;w3cU>5DE@MXJ010Ac)l1Q0fFd9qA}IUenAY5fIvf)!@!sKl>7~$2Za&#S#@AmZcT@|O`fmir}mT|(!w|aCvIgHZ(qj9 vLHnE+$Ukt5dTbuV{vs_7&y4~3iIB4UG$OA_1i*)JkX@qlfV|iL0G0pQJF~~q literal 0 HcmV?d00001 diff --git a/front/src/assets/images/withings/steel-white.jpg b/front/src/assets/images/withings/steel-white.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c5f542502341aeaf3c68b8415a9664d626c8f79c GIT binary patch literal 13043 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 NLQpMK>+omz{{v~q|7-vN literal 0 HcmV?d00001 diff --git a/front/src/assets/images/withings/withings-move-basic-black-yellow.jpg b/front/src/assets/images/withings/withings-move-basic-black-yellow.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4e120704165e0f250ad0ce66ccf200ee9fbc104b GIT binary patch literal 16116 zcmb8WWmFu`6E-@);_mM55?q42ySuvt2oT)eU4pwi!8H)v2`+))NpKC^CBOgs-g7_R z?m06xPgPe{ckij~+U|Y*{<;I8$w|pd0T2)X00FMR>pCC~KtV#jUEl%&U(j&S&>#>r z0xT>H91;Q&5+VX3A~FgF8Zrtx3L+vJ4jMWp7B)6E5-Khp4i+8;7B<$K5(p@88xS-+ zG&DRGG9oh8|L^iT2%y73Bml=y5a<9TIs_Ct#Op9X{N^O=o4fzFKtO_hgn@&F2eS#l z94LtYFB{B+f_z;Akf0y{NHi!ka8FMX0RU<;fsG3aWR3umzv6c)Z_4@ppGLldgZah8 z3Xwq2PluU2e;<*5FvP%5vTwLl`|t>s7_*~ks2=QvNJWZ(x~MuhI? z(0>e4;n+Ea5*ax;IT18686A>X&;JzpK5&$BWRcTD0)Z4F%{&V&|D>S~lTzrDF%ro{ z00}HqZT`i7C@)YZBN7A&01{|I&qodauq&t}Ss5?{FcKeG^uIw+<0vv@02u&aqa1OI zydhlXS;|cG0007j5}8kYOHvA85GqF*lD(`O4kH+dq@kfu=QzM@MKyjC-!~seO0u(; zDE(&8K|_yI`o&4&MtmaXL)CQL8+#8*i4{>TDv?FLL7hJRr(i2P&7Q5~mswiFKmdSL zKistu8OImPveHdOpyp6B(a+qQE%7PbGyylgQjeQR5tK7WG)t1HvrtqhP@#h?q$hXx zBjVTr0Jc$-^sg?XsR&=G3iQ*573gJ3WDIejk9BfyQaa%K0SqEFI~d=u>BC_I!EE77 z1tI|A;23V0+lP|rY5@2!FfBE!lYT(4v7!J^1^{r7Ko1MV)?o>NB-#(-QlpDCA+E&U z4_J&3ht1jPM*?#ADmaBVG&w;A;bIYMs?y4k8dJ<>fAE3KY@&(w zBS{Iw)ohIs&Vjlt*B=N>I(?i#04ZvAb{Q2ntuT=V)kT1fz_cIcL>;EaZl{a;N($P| z>^p#J#-rnfRb�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 literal 0 HcmV?d00001 diff --git a/front/src/assets/integrations/cover/withings.jpg b/front/src/assets/integrations/cover/withings.jpg new file mode 100755 index 0000000000000000000000000000000000000000..6351ee0c6ad990888b77f46f0e6ab38709e03d6a GIT binary patch literal 21125 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 W;(hu5jc?^Yn;QNvlt*zf{oerH^gO`; literal 0 HcmV?d00001 diff --git a/front/src/components/app.jsx b/front/src/components/app.jsx index 8ad62ae441..89c6449e54 100644 --- a/front/src/components/app.jsx +++ b/front/src/components/app.jsx @@ -73,6 +73,8 @@ import ZwaveEditPage from '../routes/integration/all/zwave/edit-page'; import RtspCameraPage from '../routes/integration/all/rtsp-camera'; import XiaomiPage from '../routes/integration/all/xiaomi'; import EditXiaomiPage from '../routes/integration/all/xiaomi/edit-page'; +import WithingsDevicePage from '../routes/integration/all/withings/device-page'; +import WithingsSettingsPage from '../routes/integration/all/withings/settings-page'; // MQTT integration import MqttDevicePage from '../routes/integration/all/mqtt/device-page'; @@ -210,6 +212,9 @@ const AppRouter = connect( + + + diff --git a/front/src/config/i18n/en.json b/front/src/config/i18n/en.json index b14b2aa615..f45d0a1204 100644 --- a/front/src/config/i18n/en.json +++ b/front/src/config/i18n/en.json @@ -803,6 +803,36 @@ "delete": "To delete your account configuration clic on 'Unconnect' button (all data will be deleted).", "buttonUnConnect": "Unconnect" }, + "withings": { + "settings": { + "title": "Withings Settings", + "menu": "Settings", + "introduction": "To connect Withings account to Gladys, you first need to create a Withings user account in this link.

To connect Withings measures to Gladys, you need to create a Withings partner account in this link
(in callback url field put http://gladys.local/dashboard/integration/health/withings/settings, in environmnet field choose Dev, you can use Prod with gladys plus url and https protocol, reefer to Documentation link for more details).
", + "instructionsToUse": "To use this integration, go to the dashboard and create a health box.", + "configurationError": "We were not able to configure your account. Are you sure your client_id and secret_id are valid?", + "complete": "Your account is now linked to Gladys with those parameters:", + "clientId": "Client Id:", + "afterIntegration": "Go to devices page to see all devices automatically created." + }, + "device": { + "title": "Withings Devices", + "empty": "No Withings devices available, go to the 'Settings' page to connect your account and create the devices.", + "menu": "Devices", + "noDevices": "No Withings devices available, go to the 'Settings' page to connect your account and create the devices.", + "nameLabel": "Name", + "mostRecentValueAt": "Last value received {{mostRecentValueAt}}.", + "noValueReceived": "No value received.", + "roomLabel": "Room", + "featuresLabel": "Features", + "noFeatures": "No features", + "saveButton": "Save" + }, + "title": "Withings", + "description": "Sync your Withings devices.", + "documentation": "Documentation", + "configuration": "Configuration", + "officialWebSite": "Withings official website" + }, "eWeLink": { "title": "eWeLink", "description": "Control your eWeLink devices.", @@ -1422,7 +1452,11 @@ "volt": "V", "ppm": "ppm", "cm": "cm", - "mm": "mm" + "mm": "mm", + "kg": "kg", + "mmHg": "mmHg", + "bpm": "bpm", + "m/s": "m/s" }, "deviceFeatureCategory": { "light": { @@ -1536,6 +1570,24 @@ "acceleration-z": "Acceleration Z", "bed-activity": "Bed Activity" }, + "health": { + "weight": "Weight", + "height": "Height", + "fat-free-mass": "Fat Free Mass", + "fat-ratio": "Fat Ratio", + "fat-mass-weight": "Fat Mass Weight", + "diastolic-blood-pressure": "Diastolic Blood Pressure", + "systolic-blood-pressure": "Systolic Blood Pressure", + "heart-pulse": "Heart Pulse", + "temperature": "Temperature", + "sp-o2": "Sp O2", + "body-temperature": "Body Temperature", + "skin-temperature": "Skin Temperature", + "muscle-mass": "Muscle Mass", + "hydration": "Hydration", + "bone-mass": "Bone Mass", + "pulse-wave-velocity": "Pulse Wave Velocity" + }, "unknown": { "shortCategoryName": "Unknown", "unknown": "Unknown" diff --git a/front/src/config/i18n/fr.json b/front/src/config/i18n/fr.json index 69c1dda34b..3eca7f93c0 100644 --- a/front/src/config/i18n/fr.json +++ b/front/src/config/i18n/fr.json @@ -803,6 +803,36 @@ "delete": "Pour supprimer vos configuration de compte cliquer sur le bouton 'Déconneter' (toutes les données associées seront supprimées).", "buttonUnConnect": "Déconnecter" }, + "withings": { + "settings": { + "title": "Withings Configuration", + "menu": "Configuration", + "introduction": "Pour connecter le compte Withings à Gladys, vous devez d'abord créer un compte d'utilisateur Withings à ce lien.

Pour relier les mesures Withings à Gladys, vous devez créer un compte partenaire Withings à ce lien
(dans le champ url de callback mettre http://gladys.local/dashboard/integration/health/withings/settings, dans le champs environnement choisir Dev, vous pouvez utiliser Prod avec gladys plus url et le protocole https, voir le lien Documentation pour plus de détails).
", + "instructionsToUse": "Pour utiliser cette intégration, rendez-vous sur le tableau de bord et créez une box de santé.", + "configurationError": "Nous n'avons pas pu configurer votre compte. Êtes-vous sûr que votre client_id et votre secret_id sont corrects ?", + "complete": "Votre compte est maintenant lié à Gladys avec ces paramètres:", + "clientId": "Client Id:", + "afterIntegration": "Allez à la page des appareils pour voir tous les appareils créés automatiquement." + }, + "device": { + "title": "Appareils Withings", + "empty": "Aucun appareils Withings disponibles, allez sur la page 'Configuration' pour connecter votre compte et créer les appareils.", + "menu": "Appareils", + "noDevices": "Aucun appareils Withings disponibles, allez sur la page 'Configuration' pour connecter votre compte et créer les appareils.", + "nameLabel": "Nom", + "mostRecentValueAt": "Dernière valeur reçue {{mostRecentValueAt}}.", + "noValueReceived": "Aucune valeur reçue.", + "roomLabel": "Pièce", + "featuresLabel": "Fonctionnalités", + "noFeatures": "Aucune fonctionnalité", + "saveButton": "Sauvegarder" + }, + "title": "Withings", + "description": "Synchronisez vos appareils Withings.", + "documentation": "Documentation", + "configuration": "Configuration", + "officialWebSite": "Withings site officiel" + }, "eWeLink": { "title": "eWeLink", "description": "Contrôlez vos appareils eWeLink.", @@ -1422,7 +1452,11 @@ "volt": "V", "ppm": "ppm", "cm": "cm", - "mm": "mm" + "mm": "mm", + "kg": "kg", + "mmHg": "mmHg", + "bpm": "bpm", + "m/s": "m/s" }, "deviceFeatureCategory": { "light": { @@ -1536,6 +1570,24 @@ "acceleration-z": "Accélération Z", "bed-activity": "Activité Lit" }, + "health": { + "weight": "Poids", + "height": "Taille", + "fat-free-mass": "Masse sans graisse", + "fat-ratio": "Ratio de graisse", + "fat-mass-weight": "Poids de la masse grasse", + "diastolic-blood-pressure": "Pression artérielle diastolique", + "systolic-blood-pressure": "Pression artérielle systolique", + "heart-pulse": "Pouls cardiaque", + "temperature": "Température", + "sp-o2": "Sp O2", + "body-temperature": "Température corps", + "skin-temperature": "Température peau", + "muscle-mass": "Masse musculaire", + "hydration": "Hydratation", + "bone-mass": "Masse osseuse", + "pulse-wave-velocity": "Vélocité des ondes de pouls" + }, "unknown": { "shortCategoryName": "Inconnu", "unknown": "Inconnu" diff --git a/front/src/config/integrations/healths.json b/front/src/config/integrations/healths.json new file mode 100644 index 0000000000..75c9f0ba98 --- /dev/null +++ b/front/src/config/integrations/healths.json @@ -0,0 +1,6 @@ +[ + { + "key": "withings", + "img": "/assets/integrations/cover/withings.jpg" + } +] diff --git a/front/src/config/integrations/index.js b/front/src/config/integrations/index.js index f3f4782ba8..b4ec9c21be 100644 --- a/front/src/config/integrations/index.js +++ b/front/src/config/integrations/index.js @@ -2,6 +2,7 @@ import devices from './devices.json'; import communications from './communications.json'; import calendars from './calendars.json'; import weathers from './weathers.json'; +import healths from './healths.json'; const integrations = []; const integrationsByType = {}; @@ -25,5 +26,6 @@ pushAllWithType(devices, 'device', 'toggle-right'); pushAllWithType(communications, 'communication', 'message-square'); pushAllWithType(calendars, 'calendar', 'calendar'); pushAllWithType(weathers, 'weather', 'cloud'); +pushAllWithType(healths, 'health', 'heart'); export { integrations, integrationsByType, categories }; diff --git a/front/src/routes/integration/all/withings/WithingsPage.jsx b/front/src/routes/integration/all/withings/WithingsPage.jsx new file mode 100755 index 0000000000..a532c80d1d --- /dev/null +++ b/front/src/routes/integration/all/withings/WithingsPage.jsx @@ -0,0 +1,69 @@ +import { Text } from 'preact-i18n'; +import { Link } from 'preact-router/match'; +import DeviceConfigurationLink from '../../../../components/documentation/DeviceConfigurationLink'; + +const WithingsPage = ({ children, user, ...props }) => ( +

+
+
+
+
+
+

+ +

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
{children}
+
+
+
+
+
+); + +export default WithingsPage; diff --git a/front/src/routes/integration/all/withings/device-page/Device.jsx b/front/src/routes/integration/all/withings/device-page/Device.jsx new file mode 100644 index 0000000000..fc67e87034 --- /dev/null +++ b/front/src/routes/integration/all/withings/device-page/Device.jsx @@ -0,0 +1,159 @@ +import { Text, Localizer } from 'preact-i18n'; +import { Component } from 'preact'; +import cx from 'classnames'; +import get from 'get-value'; +import dayjs from 'dayjs'; +import relativeTime from 'dayjs/plugin/relativeTime'; + +dayjs.extend(relativeTime); + +import { DEVICE_FEATURE_CATEGORIES } from '../../../../../../../server/utils/constants'; +import { RequestStatus, DeviceFeatureCategoriesIcon } from '../../../../../utils/consts'; + +class WithingsDeviceBox extends Component { + refreshDeviceProperty = () => { + if (!this.props.device.features) { + return null; + } + const batteryLevelDeviceFeature = this.props.device.features.find( + deviceFeature => deviceFeature.type === DEVICE_FEATURE_CATEGORIES.BATTERY + ); + const batteryLevel = get(batteryLevelDeviceFeature, 'last_value'); + let mostRecentValueAt = null; + this.props.device.features.forEach(feature => { + if (feature.last_value_changed && new Date(feature.last_value_changed) > mostRecentValueAt) { + mostRecentValueAt = new Date(feature.last_value_changed); + } + }); + this.setState({ + batteryLevel, + mostRecentValueAt + }); + }; + saveDevice = async () => { + this.setState({ loading: true }); + try { + await this.props.saveDevice(this.props.device); + } catch (e) { + this.setState({ error: RequestStatus.Error }); + } + this.setState({ loading: false }); + }; + updateRoom = e => { + this.props.updateDeviceProperty(this.props.deviceIndex, 'room_id', e.target.value); + }; + componentWillMount() { + this.refreshDeviceProperty(); + } + + componentWillUpdate() { + this.refreshDeviceProperty(); + } + + render(props, { batteryLevel, mostRecentValueAt, loading, error }) { + return ( +
+
+
+ {props.device.name} + {batteryLevel && ( +
+
+ + + + +
+
+ )} +
+
+
+
+
+
+ {props.withingsImgMap && ( + + {<Text} + /> + + )} +
+
+ + +
+
+ +
+ {props.device && + props.device.features && + props.device.features.map(feature => ( + + +
+ +
+
+ ))} + {(!props.device.features || props.device.features.length === 0) && ( + + )} +
+

+ {mostRecentValueAt ? ( + + ) : ( + + )} +

+
+
+ +
+
+
+
+
+
+ ); + } +} + +export default WithingsDeviceBox; diff --git a/front/src/routes/integration/all/withings/device-page/WithingsDevices.jsx b/front/src/routes/integration/all/withings/device-page/WithingsDevices.jsx new file mode 100755 index 0000000000..5132e3835a --- /dev/null +++ b/front/src/routes/integration/all/withings/device-page/WithingsDevices.jsx @@ -0,0 +1,70 @@ +import { Text } from 'preact-i18n'; +import cx from 'classnames'; + +import { RequestStatus } from '../../../../../utils/consts'; +import Device from './Device'; +import style from './style.css'; + +const WithingsDevices = ({ children, ...props }) => ( +
+
+
+
+
+
+
+
+
+
+
+

+ +

+
+
+
+
+ {props.withingsDevices && props.withingsDevices.length === 0 && ( +
+ +
+ )} + {props.withingsGetStatus === RequestStatus.Getting &&
} +
+ {props.withingsDevices && + props.withingsDevices.map((withingsDevice, index) => ( + + ))} +
+
+
+
+
+
+
+
+
+
+
+
+
+
+); + +export default WithingsDevices; diff --git a/front/src/routes/integration/all/withings/device-page/actions.js b/front/src/routes/integration/all/withings/device-page/actions.js new file mode 100755 index 0000000000..9249ecd9d0 --- /dev/null +++ b/front/src/routes/integration/all/withings/device-page/actions.js @@ -0,0 +1,90 @@ +import update from 'immutability-helper'; +import { RequestStatus } from '../../../../../utils/consts'; + +const actions = store => ({ + updateDeviceProperty(state, index, property, value) { + const newState = update(state, { + withingsDevices: { + [index]: { + [property]: { + $set: value + } + } + } + }); + store.setState(newState); + }, + async saveDevice(state, device) { + await state.httpClient.post('/api/v1/device', device); + }, + async getHouses(state) { + store.setState({ + withingsGetStatus: RequestStatus.Getting + }); + try { + const params = { + expand: 'rooms' + }; + const houses = await state.httpClient.get(`/api/v1/house`, params); + store.setState({ + houses, + withingsGetStatus: RequestStatus.Success + }); + } catch (e) { + store.setState({ + withingsGetStatus: RequestStatus.Error + }); + } + }, + async getWithingsDevice(state) { + store.setState({ + withingsGetStatus: RequestStatus.Getting + }); + try { + const options = {}; + const withingsDevicesReceived = await state.httpClient.get('/api/v1/service/withings/device', options); + + // Build map of device image by device name + const mapOfDeviceImgByName = new Map(); + mapOfDeviceImgByName.set('Withings - Withings WBS01', 'sleep-analyzer-single.png'); + mapOfDeviceImgByName.set('Withings - WS30', 'sleep-analyzer-single.png'); + mapOfDeviceImgByName.set('Withings - Kid Scale', 'KidScale.jpeg'); + mapOfDeviceImgByName.set('Withings - Smart Body Analyzer', 'body-plus-black-kg.jpg'); + mapOfDeviceImgByName.set('Withings - Body+', 'body-plus-black-kg.jpg'); + mapOfDeviceImgByName.set('Withings - Body Cardio', 'body-cardio-black-kg.jpg'); + mapOfDeviceImgByName.set('Withings - Body', 'body-black-kg.jpg'); + mapOfDeviceImgByName.set('Withings - Smart Baby Monitor', 'SmartBabyMonitor.jpg'); + mapOfDeviceImgByName.set('Withings - Withings Home', 'home.jpg'); + mapOfDeviceImgByName.set('Withings - Withings Blood Pressure Monitor V1', 'bpm-connect.jpg'); + mapOfDeviceImgByName.set('Withings - Withings Blood Pressure Monitor V2', 'bpm-connect.jpg'); + mapOfDeviceImgByName.set('Withings - Withings Blood Pressure Monitor V3', 'bpm-connect.jpg'); + mapOfDeviceImgByName.set('Withings - BPM Core', 'bpm-core.jpg'); + mapOfDeviceImgByName.set('Withings - BPM Connect', 'bpm-connect.jpg'); + mapOfDeviceImgByName.set('Withings - Pulse', 'pulse-hr-black.jpg'); + mapOfDeviceImgByName.set('Withings - Activite', 'go.jpg'); + mapOfDeviceImgByName.set('Withings - Activite (Pop, Steel)', 'steel-white.jpg'); + mapOfDeviceImgByName.set('Withings - Withings Go', 'go.jpg'); + mapOfDeviceImgByName.set('Withings - Activite Steel HR', 'steel-hr-36b.jpg'); + mapOfDeviceImgByName.set('Withings - Activite Steel HR Sport Edition', 'steel-hr-sport-40b.jpg'); + mapOfDeviceImgByName.set('Withings - Pulse HR', 'pulse-hr-black.jpg'); + mapOfDeviceImgByName.set('Withings - Move', 'move-ecg-white-kg.jpg'); + mapOfDeviceImgByName.set('Withings - Move ECG', 'move-ecg-white-kg.jpg'); + mapOfDeviceImgByName.set('Withings - Aura Dock', 'Aura_2.jpg'); + mapOfDeviceImgByName.set('Withings - Aura Sensor', 'Aura_2.jpg'); + mapOfDeviceImgByName.set('Withings - Aura Sensor V2', 'Aura_2.jpg'); + mapOfDeviceImgByName.set('Withings - Thermo', 'thermo-c.jpg'); + + store.setState({ + withingsGetStatus: RequestStatus.Success, + withingsImgMap: mapOfDeviceImgByName, + withingsDevices: withingsDevicesReceived + }); + } catch (e) { + store.setState({ + withingsGetStatus: RequestStatus.Error + }); + } + } +}); + +export default actions; diff --git a/front/src/routes/integration/all/withings/device-page/index.js b/front/src/routes/integration/all/withings/device-page/index.js new file mode 100755 index 0000000000..f22f53521f --- /dev/null +++ b/front/src/routes/integration/all/withings/device-page/index.js @@ -0,0 +1,28 @@ +import { Component } from 'preact'; +import { connect } from 'unistore/preact'; +import actions from './actions'; +import WithingsPage from '../WithingsPage'; +import WithingsDevices from './WithingsDevices'; +import { RequestStatus } from '../../../../../utils/consts'; + +@connect( + 'user,session,houses,withingsClientId,withingsSaveStatus,withingsGetStatus,withingsImgMap,withingsDevices', + actions +) +class WithingsDevicePage extends Component { + componentWillMount() { + this.props.getWithingsDevice(); + this.props.getHouses(); + } + + render(props, {}) { + const loading = props.withingsGetStatus === RequestStatus.Getting; + return ( + + + + ); + } +} + +export default WithingsDevicePage; diff --git a/front/src/routes/integration/all/withings/device-page/style.css b/front/src/routes/integration/all/withings/device-page/style.css new file mode 100644 index 0000000000..e571b54e09 --- /dev/null +++ b/front/src/routes/integration/all/withings/device-page/style.css @@ -0,0 +1,3 @@ +.emptyDiv { + min-height: 400px; +} diff --git a/front/src/routes/integration/all/withings/settings-page/actions.js b/front/src/routes/integration/all/withings/settings-page/actions.js new file mode 100755 index 0000000000..b09070eb27 --- /dev/null +++ b/front/src/routes/integration/all/withings/settings-page/actions.js @@ -0,0 +1,38 @@ +import queryString from 'query-string'; +import { route } from 'preact-router'; +import { RequestStatus } from '../../../../../utils/consts'; + +const actions = store => ({ + async initWithingsDevices(state) { + store.setState({ + oauth2GetStatus: RequestStatus.Getting + }); + try { + // check if this call is a return of oauth2 authorize code + if (state.currentUrl) { + const queryParams = queryString.parse(state.currentUrl.substring(state.currentUrl.indexOf('?'))); + if (queryParams && queryParams.code) { + const returnServiceId = await state.httpClient.get('/api/v1/service/withings/getServiceId'); + const serviceId = returnServiceId.result.serviceId; + + await state.httpClient.post('/api/v1/service/oauth2/buildTokenAccessUri', { + integrationName: 'withings', + authorizationCode: queryParams.code, + serviceId + }); + + await state.httpClient.post('/api/v1/service/withings/init'); + + route('/dashboard/integration/health/withings/settings'); + } + } + } catch (e) { + store.setState({ + oauth2GetStatus: RequestStatus.Error, + oauth2ErrorMsg: 'errorAuthorizationUri' + }); + } + } +}); + +export default actions; diff --git a/front/src/routes/integration/all/withings/settings-page/index.js b/front/src/routes/integration/all/withings/settings-page/index.js new file mode 100755 index 0000000000..67ff7e3d98 --- /dev/null +++ b/front/src/routes/integration/all/withings/settings-page/index.js @@ -0,0 +1,31 @@ +import { Component } from 'preact'; +import { connect } from 'unistore/preact'; +import actions from './actions'; +import actionsOAuth2 from '../../../../../components/oauth2/actions'; +import WithingsPage from '../WithingsPage'; +import OAuth2Config from '../../../../../components/oauth2/OAuth2Config'; +import { RequestStatus } from '../../../../../utils/consts'; +import { combineActions } from '../../../../../utils/combineActions'; + +@connect( + 'user,session,clientIdInDb,withingsSaveStatus,oauth2GetStatus,oauth2ErrorMsg', + combineActions(actions, actionsOAuth2) +) +class WithingsSettingsPage extends Component { + componentWillMount() { + this.props.updateIntegrationName('withings'); + this.props.getCurrentConfig(); + this.props.initWithingsDevices(); + } + + render(props, {}) { + const loading = props.oauth2GetStatus === RequestStatus.Getting; + return ( + + + + ); + } +} + +export default WithingsSettingsPage; diff --git a/front/src/utils/combineActions.js b/front/src/utils/combineActions.js new file mode 100644 index 0000000000..0504ca0614 --- /dev/null +++ b/front/src/utils/combineActions.js @@ -0,0 +1,21 @@ +/** + * @description Combine some actions files + * @param {...any} allActions + * @returns Stoer ith combined actions files + */ +function combineActions(...allActions) { + return store => + allActions.reduce((combined, actions) => { + actions = actions(store); + for (let i in actions) { + if (actions.hasOwnProperty(i)) { + if (combined[i]) throw new Error(`Have a repeat action name: ${i}`); + let action = actions[i]; + combined[i] = action; + } + } + return combined; + }, {}); +} + +export { combineActions }; diff --git a/front/src/utils/consts.js b/front/src/utils/consts.js index 7e59724e9e..b3419762c0 100644 --- a/front/src/utils/consts.js +++ b/front/src/utils/consts.js @@ -187,6 +187,24 @@ export const DeviceFeatureCategoriesIcon = { [DEVICE_FEATURE_CATEGORIES.BUTTON]: { [DEVICE_FEATURE_TYPES.BUTTON.CLICK]: 'circle' }, + [DEVICE_FEATURE_CATEGORIES.HEALTH]: { + [DEVICE_FEATURE_TYPES.HEALTH.BODY_TEMPERATURE]: 'thermometer', + [DEVICE_FEATURE_TYPES.HEALTH.BONE_MASS]: 'grid', + [DEVICE_FEATURE_TYPES.HEALTH.DIASTOLIC_BLOOD_PRESSURE]: 'droplet', + [DEVICE_FEATURE_TYPES.HEALTH.FAT_FREE_MASS]: 'grid', + [DEVICE_FEATURE_TYPES.HEALTH.FAT_MASS_WEIGHT]: 'grid', + [DEVICE_FEATURE_TYPES.HEALTH.FAT_RATIO]: 'percent', + [DEVICE_FEATURE_TYPES.HEALTH.HEARTH_PULSE]: 'activity', + [DEVICE_FEATURE_TYPES.HEALTH.HEIGHT]: 'grid', + [DEVICE_FEATURE_TYPES.HEALTH.HYDRATION]: 'droplet', + [DEVICE_FEATURE_TYPES.HEALTH.MUSCLE_MASS]: 'grid', + [DEVICE_FEATURE_TYPES.HEALTH.PULSE_WAVE_VELOCITY]: 'activity', + [DEVICE_FEATURE_TYPES.HEALTH.SKIN_TEMPERATURE]: 'thermometer', + [DEVICE_FEATURE_TYPES.HEALTH.SPO2]: 'cloud', + [DEVICE_FEATURE_TYPES.HEALTH.SYSTOLIC_BLOOD_PRESSURE]: 'droplet', + [DEVICE_FEATURE_TYPES.HEALTH.TEMPERATURE]: 'thermometer', + [DEVICE_FEATURE_TYPES.HEALTH.WEIGHT]: 'grid' + }, [DEVICE_FEATURE_CATEGORIES.UNKNOWN]: { [DEVICE_FEATURE_TYPES.UNKNOWN.UNKNOWN]: 'help-circle' } diff --git a/server/config/oauth2/providers.json b/server/config/oauth2/providers.json index d4afda1cfe..2851d9575b 100644 --- a/server/config/oauth2/providers.json +++ b/server/config/oauth2/providers.json @@ -7,5 +7,14 @@ "integrationScope": "user.info,user.metrics,user.activity,user.sleepevents", "grantType": "authorization_code", "redirectUriSuffix": "dashboard/integration/health/test/settings" + }, + "withings": { + "tokenHost": "https://account.withings.com", + "tokenPath": "/oauth2/token", + "authorizeHost": "https://account.withings.com", + "authorizePath": "/oauth2_user/authorize2", + "integrationScope": "user.info,user.metrics,user.activity,user.sleepevents", + "grantType": "authorization_code", + "redirectUriSuffix": "dashboard/integration/health/withings/settings" } } diff --git a/server/lib/device/device.create.js b/server/lib/device/device.create.js index adbb2b8a95..a47c89519b 100644 --- a/server/lib/device/device.create.js +++ b/server/lib/device/device.create.js @@ -119,6 +119,17 @@ async function create(device) { // if not, we create it feature.device_id = deviceToReturn.id; const featureCreated = await db.DeviceFeature.create(feature, { transaction }); + + // if feature state are attached, save feature state + if (feature.feature_state) { + feature.feature_state.forEach(async (state) => { + if (state.created_at) { + state.device_feature_id = featureCreated.id; + db.DeviceFeatureState.create(state, { transaction }); + } + }); + } + return featureCreated.get({ plain: true }); }); deviceToReturn.features = newFeatures; diff --git a/server/lib/device/device.destroyBySelectorPattern.js b/server/lib/device/device.destroyBySelectorPattern.js new file mode 100755 index 0000000000..1db88c4b79 --- /dev/null +++ b/server/lib/device/device.destroyBySelectorPattern.js @@ -0,0 +1,61 @@ +const { Op } = require('sequelize'); +const db = require('../../models'); +const { DEVICE_POLL_FREQUENCIES } = require('../../utils/constants'); + +/** + * @description Destroy a device by selectr pattern. + * @param {string} selector - Device selector patter. + * @example + * device.destroyBySelectorPattern('test'); + */ +async function destroyBySelectorPattern(selector) { + const devices = await db.Device.findAll({ + include: [ + { + model: db.DeviceParam, + as: 'params', + }, + { + model: db.DeviceFeature, + as: 'features', + }, + ], + where: { + selector: { [Op.like]: `${selector}%` }, + }, + }); + + devices.map(async (device) => { + device.destroy(); + // removing from ram cache + this.stateManager.deleteState('device', device.selector, device); + this.stateManager.deleteState('deviceByExternalId', device.external_id, device); + this.stateManager.deleteState('deviceById', device.id, device); + device.features.forEach((feature) => { + this.stateManager.deleteState('deviceFeature', feature.selector, feature); + this.stateManager.deleteState('deviceFeatureByExternalId', feature.external_id, feature); + }); + + // remove from poll devices + // foreach frequency + Object.keys(DEVICE_POLL_FREQUENCIES).forEach((frequency) => { + // if the frequency exist + if (this.devicesByPollFrequency[DEVICE_POLL_FREQUENCIES[frequency]]) { + // we see if the device is member of the group without being member + const index = this.devicesByPollFrequency[DEVICE_POLL_FREQUENCIES[frequency]].findIndex( + (d) => d.selector === device.selector, + ); + // if yes, we remove it + if (index !== -1) { + this.devicesByPollFrequency[DEVICE_POLL_FREQUENCIES[frequency]].splice(index, 1); + } + } + }); + }); + + return null; +} + +module.exports = { + destroyBySelectorPattern, +}; diff --git a/server/lib/device/device.saveHistoricalState.js b/server/lib/device/device.saveHistoricalState.js new file mode 100644 index 0000000000..8c35cab930 --- /dev/null +++ b/server/lib/device/device.saveHistoricalState.js @@ -0,0 +1,83 @@ +const db = require('../../models'); +const logger = require('../../utils/logger'); +const { EVENTS, WEBSOCKET_MESSAGE_TYPES } = require('../../utils/constants'); + +/** + * @description Save hstorical device feature state in DB. + * @param {Object} device - A Device object. + * @param {Object} deviceFeature - A DeviceFeature object. + * @param {Object} historicalState - The historical feature state object of the deviceFeature to save. + * @example + * saveHistoricalState({ + * id: 'fc235c88-b10d-4706-8b59-fef92a7119b2', + * selector: 'my-light' + * }, { + * id: '14sd58f3-b10d-4706-8b59-dsdfdsfdsf', + * device_feature_id: '', + * value: 'newValue', + * created_at: '2020-03-03', + * updated_at: '2020-03-03', + * }); + */ +async function saveHistoricalState(device, deviceFeature, historicalState) { + logger.debug(`device.saveHistoricalState of deviceFeature ${deviceFeature.selector}`, historicalState); + + // get current feture to update last value if needed + const deviceFeatureInDB = await db.DeviceFeature.findOne({ + where: { + id: deviceFeature.id, + }, + }); + + await db.DeviceFeatureState.create(historicalState); + if ( + new Date(historicalState.created_at) > new Date(deviceFeatureInDB.last_value_changed) || + !( + deviceFeatureInDB.last_value_changed instanceof Date && + !Number.isNaN(deviceFeatureInDB.last_value_changed.getTime()) + ) + ) { + await db.DeviceFeature.update( + { + last_value: historicalState.value, + last_value_string: historicalState.value, + last_value_changed: historicalState.created_at, + }, + { + where: { + id: deviceFeature.id, + }, + }, + ); + + deviceFeature.last_value = historicalState.value; + deviceFeature.last_value_string = deviceFeature.last_value_string; + deviceFeature.last_value_changed = historicalState.updated_at; + + // save local state in RAM + this.stateManager.setState('deviceFeature', deviceFeature.selector, deviceFeature); + + // send websocket event + this.eventManager.emit(EVENTS.WEBSOCKET.SEND_ALL, { + type: WEBSOCKET_MESSAGE_TYPES.DEVICE.NEW_STRING_STATE, + payload: { + device: device.selector, + last_value: historicalState.value, + last_value_string: historicalState.value, + last_value_changed: historicalState.updated_at, + }, + }); + + // check if there is a trigger matching + this.eventManager.emit(EVENTS.TRIGGERS.CHECK, { + type: EVENTS.DEVICE.NEW_STATE, + device_feature: deviceFeature.selector, + last_value: historicalState.value, + last_value_changed: historicalState.updated_at, + }); + } +} + +module.exports = { + saveHistoricalState, +}; diff --git a/server/lib/device/device.setupPoll.js b/server/lib/device/device.setupPoll.js index 3d6408904c..50962d60f4 100644 --- a/server/lib/device/device.setupPoll.js +++ b/server/lib/device/device.setupPoll.js @@ -6,6 +6,8 @@ const { DEVICE_POLL_FREQUENCIES } = require('../../utils/constants'); * setupPoll(); */ function setupPoll() { + // poll devices who need to be polled every days + setInterval(this.pollAll(DEVICE_POLL_FREQUENCIES.EVERY_DAY), DEVICE_POLL_FREQUENCIES.EVERY_DAY); // poll devices who need to be polled every minutes setInterval(this.pollAll(DEVICE_POLL_FREQUENCIES.EVERY_MINUTES), DEVICE_POLL_FREQUENCIES.EVERY_MINUTES); // poll devices who need to be polled every 30 seconds diff --git a/server/lib/device/index.js b/server/lib/device/index.js index c96a6d542d..de83e2750a 100644 --- a/server/lib/device/index.js +++ b/server/lib/device/index.js @@ -13,6 +13,7 @@ const { addFeature } = require('./device.addFeature'); const { addParam } = require('./device.addParam'); const { create } = require('./device.create'); const { destroy } = require('./device.destroy'); +const { destroyBySelectorPattern } = require('./device.destroyBySelectorPattern'); const { init } = require('./device.init'); const { get } = require('./device.get'); const { getBySelector } = require('./device.getBySelector'); @@ -21,6 +22,7 @@ const { poll } = require('./device.poll'); const { pollAll } = require('./device.pollAll'); const { saveState } = require('./device.saveState'); const { saveStringState } = require('./device.saveStringState'); +const { saveHistoricalState } = require('./device.saveHistoricalState'); const { setParam } = require('./device.setParam'); const { setValue } = require('./device.setValue'); const { setupPoll } = require('./device.setupPoll'); @@ -62,6 +64,7 @@ DeviceManager.prototype.addFeature = addFeature; DeviceManager.prototype.addParam = addParam; DeviceManager.prototype.create = create; DeviceManager.prototype.destroy = destroy; +DeviceManager.prototype.destroyBySelectorPattern = destroyBySelectorPattern; DeviceManager.prototype.init = init; DeviceManager.prototype.get = get; DeviceManager.prototype.getBySelector = getBySelector; @@ -71,6 +74,7 @@ DeviceManager.prototype.pollAll = pollAll; DeviceManager.prototype.newStateEvent = newStateEvent; DeviceManager.prototype.saveState = saveState; DeviceManager.prototype.saveStringState = saveStringState; +DeviceManager.prototype.saveHistoricalState = saveHistoricalState; DeviceManager.prototype.setParam = setParam; DeviceManager.prototype.setupPoll = setupPoll; DeviceManager.prototype.setValue = setValue; diff --git a/server/seeders/20190227081656-device.js b/server/seeders/20190227081656-device.js index c8dada0dc1..60b487f45d 100644 --- a/server/seeders/20190227081656-device.js +++ b/server/seeders/20190227081656-device.js @@ -12,6 +12,7 @@ module.exports = { room_id: '2398c689-8b47-43cc-ad32-e98d9be098b5', created_at: '2019-02-12 07:49:07.556 +00:00', updated_at: '2019-02-12 07:49:07.556 +00:00', + should_poll: false, }, { id: 'a1ce3d5a-dd7c-4452-9a23-d44ba3d9b072', @@ -22,6 +23,7 @@ module.exports = { room_id: '2398c689-8b47-43cc-ad32-e98d9be098b5', created_at: '2019-02-12 07:49:07.556 +00:00', updated_at: '2019-02-12 07:49:07.556 +00:00', + should_poll: false, }, { id: 'fbedb47f-4d25-4381-8923-2633b23192a0', @@ -32,6 +34,30 @@ module.exports = { room_id: '2398c689-8b47-43cc-ad32-e98d9be098b5', created_at: '2019-02-12 07:49:07.556 +00:00', updated_at: '2019-02-12 07:49:07.556 +00:00', + should_poll: false, + }, + { + id: 'cfsmb47f-4d25-4381-8923-2633b23192sm', + name: 'Test withings', + selector: 'test-withings', + external_id: 'test-withings-external', + service_id: 'a810b8db-6d04-4697-bed3-c4b72c996279', + room_id: '2398c689-8b47-43cc-ad32-e98d9be098b5', + created_at: '2019-02-12 07:49:07.556 +00:00', + updated_at: '2019-02-12 07:49:07.556 +00:00', + should_poll: false, + }, + { + id: 'cdfsqdfdssmb47f-4d25-4381fdsqsdf-2633b23192sm', + name: 'Test delete', + selector: 'test-delete', + external_id: 'test-delete-external', + service_id: 'a810b8db-6d04-4697-bed3-c4b72c996279', + room_id: '2398c689-8b47-43cc-ad32-e98d9be098b5', + created_at: '2019-02-12 07:49:07.556 +00:00', + updated_at: '2019-02-12 07:49:07.556 +00:00', + should_poll: true, + poll_frequency: 86400000, }, ], {}, diff --git a/server/seeders/20190227081700-device-feature.js b/server/seeders/20190227081700-device-feature.js index 066638af0c..2e786d20f8 100644 --- a/server/seeders/20190227081700-device-feature.js +++ b/server/seeders/20190227081700-device-feature.js @@ -113,6 +113,44 @@ module.exports = { created_at: '2019-02-12 07:49:07.556 +00:00', updated_at: '2019-02-12 07:49:07.556 +00:00', }, + { + id: '5smd05fc-1736-4b76-99ca-5812329sm036', + name: 'Test withings', + selector: 'test-withings-image', + external_id: 'withings:test', + category: 'health', + type: 'weight', + unit: null, + read_only: false, + has_feedback: false, + min: 0, + max: 0, + last_value: null, + last_value_string: '10', + last_value_changed: new Date().toISOString(), + device_id: 'cfsmb47f-4d25-4381-8923-2633b23192sm', + created_at: '2019-02-12 07:49:07.556 +00:00', + updated_at: '2019-02-12 07:49:07.556 +00:00', + }, + { + id: '5fdsffc-1736-4b76-99ca-5812329sm036', + name: 'Test delete', + selector: 'test-delete-image', + external_id: 'delete:test', + category: 'test', + type: 'weight', + unit: null, + read_only: false, + has_feedback: false, + min: 0, + max: 0, + last_value: null, + last_value_string: '10', + last_value_changed: new Date().toISOString(), + device_id: 'cdfsqdfdssmb47f-4d25-4381fdsqsdf-2633b23192sm', + created_at: '2019-02-12 07:49:07.556 +00:00', + updated_at: '2019-02-12 07:49:07.556 +00:00', + }, ], {}, ), diff --git a/server/utils/constants.js b/server/utils/constants.js index 4964f64def..c611f2de0b 100644 --- a/server/utils/constants.js +++ b/server/utils/constants.js @@ -292,6 +292,7 @@ const DEVICE_FEATURE_CATEGORIES = { ACCESS_CONTROL: 'access-control', CUBE: 'cube', BUTTON: 'button', + HEALTH: 'health', UNKNOWN: 'unknown', }; @@ -351,6 +352,26 @@ const DEVICE_FEATURE_TYPES = { BUTTON: { CLICK: 'click', }, + HEALTH: { + BATTERY: 'battery', + WEIGHT: 'weight', + HEIGHT: 'height', + FAT_FREE_MASS: 'fat-free-mass', + FAT_RATIO: 'fat-ratio', + FAT_MASS_WEIGHT: 'fat-mass-weight', + DIASTOLIC_BLOOD_PRESSURE: 'diastolic-blood-pressure', + SYSTOLIC_BLOOD_PRESSURE: 'systolic-blood-pressure', + HEARTH_PULSE: 'heart-pulse', + TEMPERATURE: 'temperature', + SPO2: 'sp-o2', + BODY_TEMPERATURE: 'body-temperature', + SKIN_TEMPERATURE: 'skin-temperature', + MUSCLE_MASS: 'muscle-mass', + HYDRATION: 'hydration', + BONE_MASS: 'bone-mass', + PULSE_WAVE_VELOCITY: 'pulse-wave-velocity', + UNKNOWN: 'unknown', + }, UNKNOWN: { UNKNOWN: 'unknown', }, @@ -369,6 +390,11 @@ const DEVICE_FEATURE_UNITS = { AMPERE: 'ampere', VOLT: 'volt', PPM: 'ppm', + KILOGRAM: 'kg', + CENTIMETER: 'cm', + MERCURE_MILIMETER: 'mmHg', + BEATS_PER_MINUTE: 'bpm', + METER_PER_SECOND: 'm/s', MM: 'mm', CM: 'cm', }; @@ -394,6 +420,8 @@ const ACTIONS_STATUS = { }; const DEVICE_POLL_FREQUENCIES = { + EVERY_DAY: 24 * 60 * 60 * 1000, + EVERY_HOUR: 60 * 60 * 1000, EVERY_MINUTES: 60 * 1000, EVERY_30_SECONDS: 30 * 1000, EVERY_10_SECONDS: 10 * 1000, From b72ca90c035872d645cc239beccd8d8eb7e5e003 Mon Sep 17 00:00:00 2001 From: Euguuu Date: Tue, 4 May 2021 18:57:06 +0200 Subject: [PATCH 003/164] init oaut2 client feature --- front/src/components/oauth2/OAuth2Config.jsx | 119 +++++++++++++ front/src/components/oauth2/actions.js | 112 ++++++++++++ front/src/config/i18n/en.json | 12 ++ front/src/config/i18n/fr.json | 12 ++ server/api/controllers/oauth2.controller.js | 164 ++++++++++++++++++ server/api/routes.js | 16 ++ server/config/oauth2/providers.json | 11 ++ server/lib/oauth2/index.js | 13 ++ server/lib/oauth2/oauth2.deleteVar.js | 31 ++++ server/lib/oauth2/oauth2.executeQuery.js | 136 +++++++++++++++ server/lib/oauth2/oauth2.saveVar.js | 35 ++++ server/package.json | 3 + server/seeders/20190226025931-variable.js | 18 ++ .../oauth2/oauth2.controller.test.js | 110 ++++++++++++ .../controllers/oauth2/oauth2.request.test.js | 70 ++++++++ server/test/lib/oauth2/oauth2manager.test.js | 125 +++++++++++++ 16 files changed, 987 insertions(+) create mode 100755 front/src/components/oauth2/OAuth2Config.jsx create mode 100755 front/src/components/oauth2/actions.js create mode 100644 server/api/controllers/oauth2.controller.js create mode 100644 server/config/oauth2/providers.json create mode 100755 server/lib/oauth2/index.js create mode 100755 server/lib/oauth2/oauth2.deleteVar.js create mode 100644 server/lib/oauth2/oauth2.executeQuery.js create mode 100755 server/lib/oauth2/oauth2.saveVar.js create mode 100755 server/test/controllers/oauth2/oauth2.controller.test.js create mode 100755 server/test/controllers/oauth2/oauth2.request.test.js create mode 100755 server/test/lib/oauth2/oauth2manager.test.js diff --git a/front/src/components/oauth2/OAuth2Config.jsx b/front/src/components/oauth2/OAuth2Config.jsx new file mode 100755 index 0000000000..1146eb3d76 --- /dev/null +++ b/front/src/components/oauth2/OAuth2Config.jsx @@ -0,0 +1,119 @@ +import { RequestStatus } from '../../utils/consts'; +import { Text, Localizer, MarkupText } from 'preact-i18n'; +import cx from 'classnames'; + +const OAuth2Config = ({ integrationImg, integrationName, children, ...props }) => ( +
+
+
+
+
+
+
+
+
+
+ {props.oauth2GetStatus !== RequestStatus.Getting && !props.clientIdInDb && ( +
+

+ +

+ {props.oauth2ErrorMsg && ( +
+ +
+ )} +

+ +

+

+ +

+
+
+ +
+
+ + } + onInput={props.updateClientId} + value={props.clientId} + /> + +
+
+
+
+ + } + onInput={props.updateSecretId} + value={props.secretId} + /> + +
+
+
+ + + +
+
+ )} + {props.oauth2GetStatus === RequestStatus.Success && props.clientIdInDb && ( +
+

+ +

+
+

+ +

+

+ + + + {`${props.clientIdInDb}`} +

+

+ +

+

+ +

+
+

+ +

+
+ + + +
+
+ )} +
+
+
+
+
+
+
+
+
+); + +export default OAuth2Config; diff --git a/front/src/components/oauth2/actions.js b/front/src/components/oauth2/actions.js new file mode 100755 index 0000000000..167aea1e28 --- /dev/null +++ b/front/src/components/oauth2/actions.js @@ -0,0 +1,112 @@ +import { RequestStatus } from '../../utils/consts'; + +const actions = store => ({ + updateIntegrationName(state, e) { + store.setState({ + integrationName: e + }); + }, + updateClientId(state, e) { + store.setState({ + clientId: e.target.value + }); + }, + updateSecretId(state, e) { + store.setState({ + secretId: e.target.value + }); + }, + async getCurrentConfig(state) { + store.setState({ + oauth2GetStatus: RequestStatus.Getting + }); + + const returnServiceId = await state.httpClient.get(`/api/v1/service/${state.integrationName}/getServiceId`); + + const returnGetConfig = await state.httpClient.get('/api/v1/service/oauth2/client/current-config', { + integrationName: state.integrationName, + serviceId: returnServiceId.result.serviceId + }); + + if (returnGetConfig) { + // Case of config found + store.setState({ + clientIdInDb: returnGetConfig.clientId, + oauth2ErrorMsg: null, + oauth2GetStatus: RequestStatus.Success + }); + } else { + store.setState({ + oauth2ErrorMsg: null, + oauth2GetStatus: RequestStatus.Success + }); + } + }, + async startConnect(state) { + store.setState({ + oauth2GetStatus: RequestStatus.Getting + }); + try { + if (!state.secretId || !state.clientId) { + store.setState({ + oauth2GetStatus: RequestStatus.Error, + oauth2ErrorMsg: 'errorEmptyConfig' + }); + return; + } + + const returnSaveVar = await state.httpClient.post(`/api/v1/service/${state.integrationName}/savevar`, { + clientId: state.clientId, + secretId: state.secretId, + integrationName: state.integrationName + }); + + let serviceId; + if (returnSaveVar.success === true) { + serviceId = returnSaveVar.result.serviceId; + } else { + store.setState({ + oauth2GetStatus: RequestStatus.Error, + oauth2ErrorMsg: 'errorServiceId' + }); + } + + const returnValue = await state.httpClient.post('/api/v1/service/oauth2/client/authorization-uri', { + clientId: state.clientId, + secretId: state.secretId, + integrationName: state.integrationName, + serviceId + }); + if (returnValue.success === true) { + window.location = returnValue.authorizationUri; + } else { + store.setState({ + oauth2GetStatus: RequestStatus.Error, + oauth2ErrorMsg: 'errorAuthorizationUri' + }); + return; + } + } catch (e) { + store.setState({ + oauth2GetStatus: RequestStatus.Error, + oauth2ErrorMsg: 'errorAuthorizationUri' + }); + return; + } + }, + async unConnect(state) { + store.setState({ + oauth2GetStatus: RequestStatus.Getting + }); + + await state.httpClient.get(`/api/v1/service/${state.integrationName}/deleteConfig`); + + store.setState({ + clientIdInDb: null, + oauth2ErrorMsg: null, + oauth2GetStatus: RequestStatus.Success + }); + } +}); + +export default actions; diff --git a/front/src/config/i18n/en.json b/front/src/config/i18n/en.json index 9c8360d7e3..b14b2aa615 100644 --- a/front/src/config/i18n/en.json +++ b/front/src/config/i18n/en.json @@ -791,6 +791,18 @@ "saveLabel": "Save configuration" } }, + "oauth2": { + "buttonConnect": "Connect now", + "apiKeyLabel": "Then, enter your client_id and secret_id key here:", + "errorEmptyConfig": "Client Id and Secret Id must not be empty !", + "errorServiceId": "Service Id of current integration must not be found !", + "errorAuthorizationUri": "Error in authorization provider !", + "clientId": "Account client id", + "secretId": "Account secret id", + "instructions": "In this stage please fill in the given client_id and secret_id key below and click on connect button.", + "delete": "To delete your account configuration clic on 'Unconnect' button (all data will be deleted).", + "buttonUnConnect": "Unconnect" + }, "eWeLink": { "title": "eWeLink", "description": "Control your eWeLink devices.", diff --git a/front/src/config/i18n/fr.json b/front/src/config/i18n/fr.json index e0d864d6e5..69c1dda34b 100644 --- a/front/src/config/i18n/fr.json +++ b/front/src/config/i18n/fr.json @@ -791,6 +791,18 @@ "magnet": "Capteur magnétique" } }, + "oauth2": { + "buttonConnect": "Connecter maintenant", + "apiKeyLabel": "Saisissez ensuite votre clé client_id et secret_id ici:", + "errorEmptyConfig": "Client Id et Secret Id ne doivent pas être vide !", + "errorServiceId": "Service Id de l'intégration courante n'a pas été trouvé !", + "errorAuthorizationUri": "Erreur dans la configuration du provider pour l'autorisation de connexion !", + "clientId": "Client id du compte", + "secretId": "Secret id du compte", + "instructions": "À cette étape, veuillez remplir les champs client_id et secret_id ci-dessous et cliquez sur le bouton de connexion.", + "delete": "Pour supprimer vos configuration de compte cliquer sur le bouton 'Déconneter' (toutes les données associées seront supprimées).", + "buttonUnConnect": "Déconnecter" + }, "eWeLink": { "title": "eWeLink", "description": "Contrôlez vos appareils eWeLink.", diff --git a/server/api/controllers/oauth2.controller.js b/server/api/controllers/oauth2.controller.js new file mode 100644 index 0000000000..89aa346c66 --- /dev/null +++ b/server/api/controllers/oauth2.controller.js @@ -0,0 +1,164 @@ +const { AuthorizationCode } = require('simple-oauth2'); +const logger = require('../../utils/logger'); +const asyncMiddleware = require('../middlewares/asyncMiddleware'); +const providers = require('../../config/oauth2/providers.json'); + +module.exports = function OAuth2Controller(gladys) { + /** + * @description uild an authorization uri (to get authorizationcode). + * @api {post} /api/v1/service/oauth2/client/authorization-uri Build an authorization uri (to get authorizationcode) + * @apiName BuildAuthorizationUri + * @apiGroup OAuth2 + */ + async function buildAuthorizationUri(req, res) { + // Find provider configuration + const currentProvider = providers[req.body.integrationName]; + const { tokenHost } = currentProvider; + const { authorizeHost } = currentProvider; + const { authorizePath } = currentProvider; + const { integrationScope } = currentProvider; + const { redirectUriSuffix } = currentProvider; + + // Get variale client_id and secret_id + const clientId = await gladys.variable.getValue( + `${req.body.integrationName.toUpperCase()}_CLIENT_ID`, + req.body.serviceId, + req.user.id, + ); + const secretId = await gladys.variable.getValue( + `${req.body.integrationName.toUpperCase()}_SECRET_ID`, + req.body.serviceId, + req.user.id, + ); + + // Init credentials based on integration name + const credentials = { + client: { + id: clientId, + secret: secretId, + }, + auth: { + tokenHost, + authorizeHost, + authorizePath, + }, + }; + + const client = new AuthorizationCode(credentials); + const authorizationUriResult = await client.authorizeURL({ + redirect_uri: `${req.headers.referer}${redirectUriSuffix}`, + scope: integrationScope, + state: `gladys_state_${req.body.integrationName}`, + }); + + res.json({ + success: true, + authorizationUri: authorizationUriResult, + }); + } + + /** + * @description Build an authorization uri to get an access token. + * @api {post} /api/v1/service/oauth2/client/token-access-uri Build an getToken uri (to get token access) + * @apiName buildTokenAccessUri + * @apiGroup OAuth2 + */ + async function buildTokenAccessUri(req, res) { + // Find provider configuration + const currentProvider = providers[req.body.integrationName]; + const { tokenHost } = currentProvider; + const { tokenPath } = currentProvider; + const { authorizeHost } = currentProvider; + const { authorizePath } = currentProvider; + const { grantType } = currentProvider; + const { redirectUriSuffix } = currentProvider; + + const { authorizationCode } = req.body; + + const clientId = await gladys.variable.getValue( + `${req.body.integrationName.toUpperCase()}_CLIENT_ID`, + req.body.serviceId, + req.user.id, + ); + const secretId = await gladys.variable.getValue( + `${req.body.integrationName.toUpperCase()}_SECRET_ID`, + req.body.serviceId, + req.user.id, + ); + + // Init credentials based on integration name + const credentials = { + client: { + id: clientId, + secret: secretId, + }, + auth: { + tokenHost, + tokenPath, + authorizeHost, + authorizePath, + }, + }; + // Build token access request + const tokenConfig = { + code: authorizationCode, + client_id: clientId, + client_secret: secretId, + grant_type: grantType, + redirect_uri: `${req.headers.referer}${redirectUriSuffix}`, + }; + + try { + const client = new AuthorizationCode(credentials); + const authResult = await client.getToken(tokenConfig, { json: true }); + + // Save accessToken + await gladys.variable.setValue( + `${req.body.integrationName.toUpperCase()}_ACCESS_TOKEN`, + JSON.stringify(authResult), + req.body.serviceId, + req.user.id, + ); + + res.json({ + success: true, + result: authResult, + }); + } catch (error) { + logger.error(error); + + res.json({ + success: false, + result: error.message, + }); + } + } + + /** + * @description Return the current integration config. + * @api {get} /api/v1/service/oauth2/client/current-config Return the current integration config. + * @apiName getCurrentConfig + * @apiGroup oauth2 + */ + async function getCurrentConfig(req, res) { + const { integrationName } = req.query; + const { serviceId } = req.query; + + const resultClientId = await gladys.variable.getValue( + `${integrationName.toUpperCase()}_CLIENT_ID`, + serviceId, + req.user.id, + ); + + res.json({ + success: true, + clientId: resultClientId, + }); + } + + return Object.freeze({ + buildAuthorizationUri: asyncMiddleware(buildAuthorizationUri), + buildTokenAccessUri: asyncMiddleware(buildTokenAccessUri), + getCurrentConfig: asyncMiddleware(getCurrentConfig), + }); +}; diff --git a/server/api/routes.js b/server/api/routes.js index b51a3384ca..9eb9c6a993 100644 --- a/server/api/routes.js +++ b/server/api/routes.js @@ -18,6 +18,7 @@ const SceneController = require('./controllers/scene.controller'); const SystemController = require('./controllers/system.controller'); const VariableController = require('./controllers/variable.controller'); const WeatherController = require('./controllers/weather.controller'); +const OAuth2Controller = require('./controllers/oauth2.controller'); /** * @description Return object of routes. @@ -47,6 +48,8 @@ function getRoutes(gladys) { const sceneController = SceneController(gladys); const systemController = SystemController(gladys); const weatherController = WeatherController(gladys); + const oauth2Controller = OAuth2Controller(gladys); + const routes = {}; @@ -495,6 +498,19 @@ function getRoutes(gladys) { authenticated: true, controller: weatherController.getByHouse, }, + // oauth2 + 'post /api/v1/service/oauth2/client/authorization-uri': { + authenticated: true, + controller: oauth2Controller.buildAuthorizationUri, + }, + 'post /api/v1/service/oauth2/client/token-access-uri': { + authenticated: true, + controller: oauth2Controller.buildTokenAccessUri, + }, + 'get /api/v1/service/oauth2/client/current-config': { + authenticated: true, + controller: oauth2Controller.getCurrentConfig, + }, }; Object.assign(routes, coreRoutes); diff --git a/server/config/oauth2/providers.json b/server/config/oauth2/providers.json new file mode 100644 index 0000000000..d4afda1cfe --- /dev/null +++ b/server/config/oauth2/providers.json @@ -0,0 +1,11 @@ +{ + "test": { + "tokenHost": "http://localhost:9292", + "tokenPath": "/oauth2/token", + "authorizeHost": "http://localhost:9292", + "authorizePath": "/oauth2_user/authorize2", + "integrationScope": "user.info,user.metrics,user.activity,user.sleepevents", + "grantType": "authorization_code", + "redirectUriSuffix": "dashboard/integration/health/test/settings" + } +} diff --git a/server/lib/oauth2/index.js b/server/lib/oauth2/index.js new file mode 100755 index 0000000000..fc754c6573 --- /dev/null +++ b/server/lib/oauth2/index.js @@ -0,0 +1,13 @@ +const { executeQuery } = require('./oauth2.executeQuery'); +const { saveVar } = require('./oauth2.saveVar'); +const { deleteVar } = require('./oauth2.deleteVar'); + +const OAuth2Manager = function OAuth2Manager(gladys) { + this.gladys = gladys; +}; + +OAuth2Manager.prototype.executeQuery = executeQuery; +OAuth2Manager.prototype.saveVar = saveVar; +OAuth2Manager.prototype.deleteVar = deleteVar; + +module.exports = OAuth2Manager; diff --git a/server/lib/oauth2/oauth2.deleteVar.js b/server/lib/oauth2/oauth2.deleteVar.js new file mode 100755 index 0000000000..8770641105 --- /dev/null +++ b/server/lib/oauth2/oauth2.deleteVar.js @@ -0,0 +1,31 @@ +const logger = require('../../utils/logger'); + +/** + * @description Delete client_id and secrei_id of current oauth2 integration. + * @param {string} integrationName - Name of oauth2 integration. + * @param {string} serviceId - Gladys serviceId of current integration. + * @param {string} userId - Gladys userId of current session. + * @returns {Promise} Resolve with current integration service id. + * @example + * oauth2.deleteVar( + * integrationName: 'withings', + * userId: fd81vs687f0bf3414e0fe3facfba7be9455109409a' + * } + * ); + */ +async function deleteVar(integrationName, serviceId, userId) { + try { + await this.gladys.variable.destroy(`${integrationName.toUpperCase()}_CLIENT_ID`, serviceId, userId); + await this.gladys.variable.destroy(`${integrationName.toUpperCase()}_SECRET_ID`, serviceId, userId); + await this.gladys.variable.destroy(`${integrationName.toUpperCase()}_ACCESS_TOKEN`, serviceId, userId); + } catch (error) { + logger.error(error.message); + return { success: false, errorMsg: error.message }; + } + + return { success: true }; +} + +module.exports = { + deleteVar, +}; diff --git a/server/lib/oauth2/oauth2.executeQuery.js b/server/lib/oauth2/oauth2.executeQuery.js new file mode 100644 index 0000000000..1ec6ed2e8f --- /dev/null +++ b/server/lib/oauth2/oauth2.executeQuery.js @@ -0,0 +1,136 @@ +const queryString = require('query-string'); +const { ClientCredentials } = require('simple-oauth2'); +const { default: axios } = require('axios'); +const logger = require('../../utils/logger'); +const providers = require('../../config/oauth2/providers.json'); + +/** + * @description Refresh Oauth2 token in case of it expired . + * @param {string} serviceId - Gladys service id call method. + * @param {string} integrationName - Name of oauth2 integration. + * @param {Object} gladys - Current gladys instance. + * @param {string} userId - Gladys userId of current session. + * @returns {Object} Response of oauth2 refresh token query . + * @example + * oauth2.refreshTokenAccess('7fdsf4s68r4gfr68f4r63csd7f6f4c3r85', + * 'withings', {...}, '78v4f3df83g74v1fsd8375f63gvrf5c'); + */ +async function refreshTokenAccess(serviceId, integrationName, gladys, userId) { + const clientId = await gladys.variable.getValue(`${integrationName.toUpperCase()}_CLIENT_ID`, serviceId, userId); + const secretId = await gladys.variable.getValue(`${integrationName.toUpperCase()}_SECRET_ID`, serviceId, userId); + const accessToken = JSON.parse( + await gladys.variable.getValue(`${integrationName.toUpperCase()}_ACCESS_TOKEN`, serviceId, userId), + ); + + logger.trace('accessToken: ', accessToken); + // Find provider configuration + const currentProvider = providers[integrationName]; + const { tokenHost } = currentProvider; + const { tokenPath } = currentProvider; + const { authorizeHost } = currentProvider; + const { authorizePath } = currentProvider; + const { integrationScope } = currentProvider; + + // Init credentials based on integration name + const credentials = { + client: { + id: `${clientId}`, + secret: `${secretId}`, + }, + auth: { + tokenHost, + tokenPath, + authorizeHost, + authorizePath, + }, + http: { + json: true, + }, + }; + + try { + const client = new ClientCredentials(credentials); + let authResult = await client.createToken(accessToken); + + if (authResult.expired()) { + logger.trace('Refresh token is requiered'); + // Refresh token + try { + const refreshParams = { + client_id: clientId, + client_secret: secretId, + scope: integrationScope, + }; + + authResult = await authResult.refresh(refreshParams); + + // Save new accessToken + await gladys.variable.setValue( + `${integrationName.toUpperCase()}_ACCESS_TOKEN`, + JSON.stringify(authResult), + serviceId, + userId, + ); + } catch (error) { + logger.error('Error refreshing access token: ', error); + } + } + + logger.trace('authResult: ', authResult); + return authResult; + } catch (error) { + logger.error(error); + return null; + } +} + +/** + * @description Execute a query to Oauth2 API. + * @param {string} serviceId - Gladys service id call method. + * @param {string} userId - Gladys userId of current session. + * @param {string} integrationName - Oauth2 integration name. + * @param {string} queryType - Method of call ('get' or 'post'). + * @param {string} queryUrl - Url to send query. + * @param {string} queryParams - Array of query params. + * @returns {Promise} Result of query . + * @example + * oauth2.executeQuery('7fdsf4s68r4gfr68f4r63csd7f6f4c3r85', '78v4f3df83g74v1fsd8375f63gvrf5c', 'withings' + * 'Bearer', 'get', 'http://localhost/apiname',[...]); + */ +async function executeQuery(serviceId, userId, integrationName, queryType, queryUrl, queryParams) { + // Refresh token access if needed + const accesToken = await refreshTokenAccess(serviceId, integrationName, this.gladys, userId); + + const headerConfig = { + headers: { + Authorization: `${accesToken.token.token_type} ${accesToken.token.access_token}`, + }, + }; + + try { + let result; + if (queryType === 'get' || queryType === 'GET' || queryType === 'Get') { + // Add param in query + result = await axios.get(`${queryUrl}?${queryParams}`, headerConfig); + } else { + // Add param to body + const data = {}; + const queryParamsExtract = queryString.parse(queryParams); + Object.keys(queryParamsExtract).forEach((key) => { + logger.debug(key, queryParamsExtract[key]); + data[key] = queryParamsExtract[key]; + }); + + result = await axios.post(queryUrl, data, headerConfig); + } + + return result; + } catch (error) { + logger.error('Execute query error: ', error.message); + return null; + } +} + +module.exports = { + executeQuery, +}; diff --git a/server/lib/oauth2/oauth2.saveVar.js b/server/lib/oauth2/oauth2.saveVar.js new file mode 100755 index 0000000000..7df9955408 --- /dev/null +++ b/server/lib/oauth2/oauth2.saveVar.js @@ -0,0 +1,35 @@ +const logger = require('../../utils/logger'); + +/** + * @description Save client_id and secrei_id of current oauth2 integration. + * @param {string} clientId - The client_id of oauth2. + * @param {string} secretId - The secret_id of oauth2. + * @param {string} integrationName - Name of oauth2 integration. + * @param {string} serviceId - Gladys serviceId of current integration. + * @param {string} userId - Gladys userId of current session. + * @returns {Promise} Resolve with current integration service id. + * @example + * oauth2.saveVar( + * 'b2f2c27f0bf3414e0fe3facfba7be9455109409a', + * '9d41fe14fz23414e0fe3facfba7be9455109409a', + * 'withings', + * ffsdvs687f0bf3414e0fe3facfba7be945510fds09a' + * fd81vs687f0bf3414e0fe3facfba7be9455109409a' + * } + * ); + */ +async function saveVar(clientId, secretId, integrationName, serviceId, userId) { + try { + await this.gladys.variable.setValue(`${integrationName.toUpperCase()}_CLIENT_ID`, clientId, serviceId, userId); + await this.gladys.variable.setValue(`${integrationName.toUpperCase()}_SECRET_ID`, secretId, serviceId, userId); + } catch (error) { + logger.error(error.message); + return { success: false, errorMsg: error.message }; + } + + return { success: true }; +} + +module.exports = { + saveVar, +}; diff --git a/server/package.json b/server/package.json index 8bfa3f43c8..35103c8085 100644 --- a/server/package.json +++ b/server/package.json @@ -62,6 +62,7 @@ "nodemon": "^2.0.7", "npm-run-all": "^4.1.5", "nyc": "^15.1.0", + "oauth2-mock-server": "^3.1.0", "prettier": "^1.17.1", "proxyquire": "^2.1.0", "shx": "^0.3.2", @@ -92,11 +93,13 @@ "node-webcrypto-ossl": "^1.0.48", "node-nlp": "^4.19.7", "path-to-regexp": "^3.0.0", + "query-string": "^6.12.1", "queue": "^6.0.0", "semver": "^6.1.1", "sequelize": "^6.5.0", "sequelize-cli": "^6.2.0", "set-value": "^3.0.2", + "simple-oauth2": "^4.2.0", "sqlite3": "^5.0.2", "suncalc": "^1.8.0", "tracer": "^1.1.4", diff --git a/server/seeders/20190226025931-variable.js b/server/seeders/20190226025931-variable.js index 1830b781cd..cd80733dee 100644 --- a/server/seeders/20190226025931-variable.js +++ b/server/seeders/20190226025931-variable.js @@ -37,6 +37,24 @@ module.exports = { created_at: '2019-02-12 07:49:07.556 +00:00', updated_at: '2019-02-12 07:49:07.556 +00:00', }, + { + id: '82acb636-47a1-4445-ab23-55947e38875a', + name: 'TEST_CLIENT_ID', + service_id: 'a810b8db-6d04-4697-bed3-c4b72c996279', + user_id: '0cd30aef-9c4e-4a23-88e3-3547971296e5', + value: 'TEST_CLIENT_ID', + created_at: '2019-02-12 07:49:07.556 +00:00', + updated_at: '2019-02-12 07:49:07.556 +00:00', + }, + { + id: '8371e211-1951-4695-b137-2d0182868f07', + name: 'TEST_SECRET_ID', + service_id: 'a810b8db-6d04-4697-bed3-c4b72c996279', + user_id: '0cd30aef-9c4e-4a23-88e3-3547971296e5', + value: 'TEST_SECRET_ID', + created_at: '2019-02-12 07:49:07.556 +00:00', + updated_at: '2019-02-12 07:49:07.556 +00:00', + }, ], {}, ), diff --git a/server/test/controllers/oauth2/oauth2.controller.test.js b/server/test/controllers/oauth2/oauth2.controller.test.js new file mode 100755 index 0000000000..b95459ba66 --- /dev/null +++ b/server/test/controllers/oauth2/oauth2.controller.test.js @@ -0,0 +1,110 @@ +const { expect } = require('chai'); +const { OAuth2Server } = require('oauth2-mock-server'); + +const { buildOauth2Request } = require('./oauth2.request.test'); +const logger = require('../../../utils/logger'); + +const server = new OAuth2Server(); + +describe('POST /api/v1/service/oauth2/client/authorization-uri', () => { + before(async function testBefore() { + // Generate a new RSA key and add it to the keystore + await server.issuer.keys.generateRSA(); + // Start the server + await server.start(9292, 'localhost'); + logger.debug('Issuer URL:', server.issuer.url); + }); + + after(async function testAfter() { + await server.stop(); + }); + + it('should get authorization uri', async () => { + const req = { + header: { + referer: 'fake-referer', + }, + integrationName: 'test', + serviceId: 'a810b8db-6d04-4697-bed3-c4b72c996279', + user: { + id: '0cd30aef-9c4e-4a23-88e3-3547971296e5', + }, + }; + + await buildOauth2Request + .post('/api/v1/service/oauth2/client/authorization-uri') + .send(req) + .expect('Content-Type', /json/) + .expect(200) + .then((res) => { + expect(res.body).to.have.property('success'); + expect(res.body).to.have.property('authorizationUri'); + }); + }); +}); + +describe('POST /api/v1/service/oauth2/client/token-access-uri', () => { + it('should get token access uri', async () => { + const req = { + integrationName: 'test', + serviceId: 'a810b8db-6d04-4697-bed3-c4b72c996279', + authorizationCode: 'fake-code', + user: { + id: '0cd30aef-9c4e-4a23-88e3-3547971296e5', + }, + }; + + await buildOauth2Request + .post('/api/v1/service/oauth2/client/token-access-uri') + .send(req) + .expect('Content-Type', /json/) + .expect(200) + .then((res) => { + expect(res.body).to.have.property('success'); + expect(res.body).to.have.property('result'); + }); + }); +}); + +// failled call +describe('POST /api/v1/service/oauth2/client/token-access-uri', () => { + it('should get token access uri', async () => { + const req = { + integrationName: 'test', + serviceId: 'a810b8db-6d04-4697-bed3-c4b72c996279', + authorizationCode: 'fake-code', + }; + + await buildOauth2Request + .post('/api/v1/service/oauth2/client/token-access-uri') + .send(req) + .expect('Content-Type', /json/) + .expect(200) + .then((res) => { + expect(res.body).to.have.property('success'); + expect(res.body).to.have.property('result'); + }); + }); +}); + +describe('GET /api/v1/service/oauth2/client/current-config', () => { + it('should get token access uri', async () => { + const req = { + integrationName: 'test', + serviceId: 'a810b8db-6d04-4697-bed3-c4b72c996279', + user: { + id: '0cd30aef-9c4e-4a23-88e3-3547971296e5', + }, + }; + + await buildOauth2Request + .get('/api/v1/service/oauth2/client/current-config') + .query(req) + .expect('Content-Type', /json/) + .expect(200) + .then((res) => { + expect(res.body).to.have.property('success'); + expect(res.body).to.have.property('clientId'); + }); + }); +}); diff --git a/server/test/controllers/oauth2/oauth2.request.test.js b/server/test/controllers/oauth2/oauth2.request.test.js new file mode 100755 index 0000000000..437c99c79f --- /dev/null +++ b/server/test/controllers/oauth2/oauth2.request.test.js @@ -0,0 +1,70 @@ +const request = require('supertest'); +const { generateAccessToken } = require('../../../utils/accessToken'); + +const token = generateAccessToken( + '0cd30aef-9c4e-4a23-88e3-3547971296e5', + ['dashboard:write', 'reset-password:write'], + 'baf1fa89-153b-4f2e-adf3-787e410ec291', + 'secret', +); +const header = `Bearer ${token}`; +const referer = 'http://localhost:9090'; + +const buildOauth2Request = { + // @ts-ignore + get: (url) => + request(TEST_BACKEND_APP) + .get(url) + .set('Accept', 'application/json') + .set('Authorization', header) + .set('referer', referer), + // @ts-ignore + post: (url) => + request(TEST_BACKEND_APP) + .post(url) + .set('Accept', 'application/json') + .set('Authorization', header) + .set('referer', referer), + // @ts-ignore + patch: (url) => + request(TEST_BACKEND_APP) + .patch(url) + .set('Accept', 'application/json') + .set('Authorization', header) + .set('referer', referer), + // @ts-ignore + delete: (url) => + request(TEST_BACKEND_APP) + .delete(url) + .set('Accept', 'application/json') + .set('Authorization', header) + .set('referer', referer), +}; + +const unBuildOauth2RequestRequest = { + // @ts-ignore + get: (url) => + request(TEST_BACKEND_APP) + .get(url) + .set('Accept', 'application/json'), + // @ts-ignore + post: (url) => + request(TEST_BACKEND_APP) + .post(url) + .set('Accept', 'application/json'), + // @ts-ignore + patch: (url) => + request(TEST_BACKEND_APP) + .patch(url) + .set('Accept', 'application/json'), + // @ts-ignore + delete: (url) => + request(TEST_BACKEND_APP) + .delete(url) + .set('Accept', 'application/json'), +}; + +module.exports = { + buildOauth2Request, + request: unBuildOauth2RequestRequest, +}; diff --git a/server/test/lib/oauth2/oauth2manager.test.js b/server/test/lib/oauth2/oauth2manager.test.js new file mode 100755 index 0000000000..199ddf0ae2 --- /dev/null +++ b/server/test/lib/oauth2/oauth2manager.test.js @@ -0,0 +1,125 @@ +const { OAuth2Server } = require('oauth2-mock-server'); +const { assert } = require('chai'); +const { fake } = require('sinon'); + +const OAuth2Manager = require('../../../lib/oauth2'); +const logger = require('../../../utils/logger'); + +const server = new OAuth2Server(); + +const serviceId = 'fdsqfds-f46fdqs5f2-f4d5sqf2sd'; +const userId = 'fsdqf4d-4896fsd-fsdq454454sd-fsd'; +const integrationName = 'test'; +const clientId = 'fsdqf4d-4896fsd-fsdq454454sd-fsd'; +const secretId = 'fsdqf4d-4896fsd-fsdq454454sd-fsd'; + +const gladys = { + variable: { + getValue: fake.returns( + '{"access_token":"b96a86b654acb01c2aeb4d5a39f10ff9c964f8e4","expires_in":10800,' + + '"token_type":"Bearer",' + + '"scope":"user.info,user.metrics,user.activity,user.sleepevents",' + + '"refresh_token":"11757dc7fd8d25889f5edfd373d1f525f53d4942",' + + '"userid":"33669966",' + + '"expires_at":"2020-11-13T20:46:50.042Z"}', + ), + setValue: fake.returns(null), + destroy: fake.returns(null), + }, +}; + +/** + * Verify componant to implement oauth2manager executeQuery + */ +describe('oauth2manager test', () => { + before(async function testBefore() { + // Generate a new RSA key and add it to the keystore + await server.issuer.keys.generateRSA(); + // Start the server + await server.start(9292, 'localhost'); + logger.debug('Issuer URL:', server.issuer.url); + }); + + after(async function testAfter() { + await server.stop(); + }); + + const manager = new OAuth2Manager(gladys); + + it('oauth manager get executeQuery test ', async () => { + const queryType = 'get'; + const queryUrl = 'http://localhost:9292/userinfo'; + const queryParams = 'param1=testParam'; + + const result = await manager.executeQuery(serviceId, userId, integrationName, queryType, queryUrl, queryParams); + + return assert.equal(result.status, '200'); + }); + + it('oauth manager post executeQuery test ', async () => { + const queryType = 'post'; + const queryUrl = 'http://localhost:9292/revoke'; + const queryParams = 'param1=testParam'; + + logger.debug(manager); + const result = await manager.executeQuery(serviceId, userId, integrationName, queryType, queryUrl, queryParams); + + return assert.equal(result.status, '200'); + }); + + it('oauth manager get error executeQuery test ', async () => { + const queryType = 'get'; + const queryUrl = 'http://localhost:9292/revoke'; + const queryParams = 'param1=testParam'; + + const result = await manager.executeQuery(serviceId, userId, integrationName, queryType, queryUrl, queryParams); + + return assert.equal(result, null); + }); + + it('oauth manager get error executeQuery test (bad integration name) ', async () => { + const queryType = 'get'; + const queryUrl = 'http://localhost:9292/revoke'; + const queryParams = 'param1=testParam'; + + const result = await manager.executeQuery( + serviceId, + 'fakeUserId', + integrationName, + queryType, + queryUrl, + queryParams, + ); + + return assert.equal(result, null); + }); + + it('oauth manager get error saveVar test ', async () => { + const result = await manager.saveVar(clientId, secretId, integrationName, serviceId, userId); + logger.debug(result); + return assert.equal(result.success, true); + }); + + it('oauth manager get error deleteVar test ', async () => { + const result = await manager.deleteVar(integrationName, serviceId, userId); + logger.debug(result); + return assert.equal(result.success, true); + }); +}); + +describe('oauth2manager failled test', () => { + // check error + const manager = new OAuth2Manager(null); + + it('oauth manager get error saveVar failled test ', async () => { + const result = await manager.saveVar(clientId, secretId, integrationName, serviceId, userId); + logger.debug(result); + return assert.equal(result.success, false); + }); + + it('oauth manager get error deleteVar failled test ', async () => { + const result = await manager.deleteVar(integrationName, serviceId, userId); + logger.debug(result); + return assert.equal(result.success, false); + }); +}); From ea72f0b6bb832b6141e1fab885d05b5d554d1d64 Mon Sep 17 00:00:00 2001 From: Euguuu Date: Thu, 13 May 2021 20:09:25 +0200 Subject: [PATCH 004/164] init withings service --- .../all/withings/settings-page/actions.js | 2 +- server/api/routes.js | 1 - server/package-lock.json | 309 ++++++++++++++++ server/package.json | 3 +- server/services/index.js | 1 + .../withings/api/withings.controller.js | 83 +++++ server/services/withings/index.js | 34 ++ server/services/withings/lib/index.js | 37 ++ .../withings/lib/withings.deleteDevices.js | 14 + .../withings/lib/withings.deleteVar.js | 23 ++ .../withings/lib/withings.getServiceId.js | 13 + server/services/withings/lib/withings.init.js | 349 ++++++++++++++++++ server/services/withings/lib/withings.poll.js | 206 +++++++++++ .../services/withings/lib/withings.saveVar.js | 31 ++ server/services/withings/package-lock.json | 17 + server/services/withings/package.json | 19 + server/test/lib/device/device.create.test.js | 56 +++ .../device.destroyBySelectorPattern.test.js | 26 ++ .../device/device.saveHistoricalState.test.js | 55 +++ .../test/lib/device/device.setParam.test.js | 20 + .../withings/api/withings.controller.test.js | 70 ++++ server/test/services/withings/index.test.js | 20 + .../lib/withings.deleteDevices.test.js | 16 + .../withings/lib/withings.deleteVar.test.js | 26 ++ .../lib/withings.getServiceId.test.js | 11 + .../withings/lib/withings.init.test.js | 319 ++++++++++++++++ .../withings/lib/withings.poll.test.js | 261 +++++++++++++ .../withings/lib/withings.saveVar.test.js | 26 ++ 28 files changed, 2045 insertions(+), 3 deletions(-) create mode 100755 server/services/withings/api/withings.controller.js create mode 100755 server/services/withings/index.js create mode 100755 server/services/withings/lib/index.js create mode 100755 server/services/withings/lib/withings.deleteDevices.js create mode 100755 server/services/withings/lib/withings.deleteVar.js create mode 100755 server/services/withings/lib/withings.getServiceId.js create mode 100755 server/services/withings/lib/withings.init.js create mode 100755 server/services/withings/lib/withings.poll.js create mode 100755 server/services/withings/lib/withings.saveVar.js create mode 100644 server/services/withings/package-lock.json create mode 100755 server/services/withings/package.json create mode 100644 server/test/lib/device/device.destroyBySelectorPattern.test.js create mode 100644 server/test/lib/device/device.saveHistoricalState.test.js create mode 100644 server/test/lib/device/device.setParam.test.js create mode 100644 server/test/services/withings/api/withings.controller.test.js create mode 100755 server/test/services/withings/index.test.js create mode 100644 server/test/services/withings/lib/withings.deleteDevices.test.js create mode 100644 server/test/services/withings/lib/withings.deleteVar.test.js create mode 100644 server/test/services/withings/lib/withings.getServiceId.test.js create mode 100644 server/test/services/withings/lib/withings.init.test.js create mode 100644 server/test/services/withings/lib/withings.poll.test.js create mode 100644 server/test/services/withings/lib/withings.saveVar.test.js diff --git a/front/src/routes/integration/all/withings/settings-page/actions.js b/front/src/routes/integration/all/withings/settings-page/actions.js index b09070eb27..b0d5f37514 100755 --- a/front/src/routes/integration/all/withings/settings-page/actions.js +++ b/front/src/routes/integration/all/withings/settings-page/actions.js @@ -15,7 +15,7 @@ const actions = store => ({ const returnServiceId = await state.httpClient.get('/api/v1/service/withings/getServiceId'); const serviceId = returnServiceId.result.serviceId; - await state.httpClient.post('/api/v1/service/oauth2/buildTokenAccessUri', { + await state.httpClient.post('/api/v1/service/oauth2/client/token-access-uri', { integrationName: 'withings', authorizationCode: queryParams.code, serviceId diff --git a/server/api/routes.js b/server/api/routes.js index 9eb9c6a993..40ceda7464 100644 --- a/server/api/routes.js +++ b/server/api/routes.js @@ -50,7 +50,6 @@ function getRoutes(gladys) { const weatherController = WeatherController(gladys); const oauth2Controller = OAuth2Controller(gladys); - const routes = {}; // add services routes diff --git a/server/package-lock.json b/server/package-lock.json index 2431fb44f0..b6bb3b6bbf 100644 --- a/server/package-lock.json +++ b/server/package-lock.json @@ -869,6 +869,19 @@ "@hapi/hoek": "^9.0.0" } }, + "@hapi/boom": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-9.1.2.tgz", + "integrity": "sha512-uJEJtiNHzKw80JpngDGBCGAmWjBtzxDCz17A9NO2zCi8LLBlb5Frpq4pXwyN+2JQMod4pKz5BALwyneCgDg89Q==", + "requires": { + "@hapi/hoek": "9.x.x" + } + }, + "@hapi/bourne": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-2.0.0.tgz", + "integrity": "sha512-WEezM1FWztfbzqIUbsDzFRVMxSoLy3HugVcux6KDDtTqzPsLE8NDRHfXvev66aH1i2oOKKar3/XDjbvh/OUBdg==" + }, "@hapi/formula": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@hapi/formula/-/formula-2.0.0.tgz", @@ -912,6 +925,16 @@ "@hapi/hoek": "^9.0.0" } }, + "@hapi/wreck": { + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/@hapi/wreck/-/wreck-17.1.0.tgz", + "integrity": "sha512-nx6sFyfqOpJ+EFrHX+XWwJAxs3ju4iHdbB/bwR8yTNZOiYmuhA8eCe7lYPtYmb4j7vyK/SlbaQsmTtUrMvPEBw==", + "requires": { + "@hapi/boom": "9.x.x", + "@hapi/bourne": "2.x.x", + "@hapi/hoek": "9.x.x" + } + }, "@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -1681,6 +1704,24 @@ "xlsx": "^0.16.2" } }, + "@sideway/address": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.1.tgz", + "integrity": "sha512-+I5aaQr3m0OAmMr7RQ3fR9zx55sejEYR2BFJaxL+zT3VM2611X0SHvPWIbAUBZVTn/YzYKbV8gJ2oT/QELknfQ==", + "requires": { + "@hapi/hoek": "^9.0.0" + } + }, + "@sideway/formula": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", + "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==" + }, + "@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" + }, "@sindresorhus/is": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", @@ -1748,6 +1789,15 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.32.tgz", "integrity": "sha512-/Ctrftx/zp4m8JOujM5ZhwzlWLx22nbQJiVqz8/zE15gOeEW+uly3FSX4fGFpcfEvFzXcMCJwq9lGVWgyARXhg==" }, + "@types/node-jose": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@types/node-jose/-/node-jose-1.1.5.tgz", + "integrity": "sha512-fScnd7GdaHC31PYouWR0xYSOXQLrmxPhLM92CYlVy4UetSwis2u5e6khMazj1Xyidt8zPeRU0PHLmI+mpamhGQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/prop-types": { "version": "15.7.3", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz", @@ -2340,6 +2390,21 @@ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" }, + "base64url": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz", + "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==", + "dev": true + }, + "basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, "bcrypt": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.0.1.tgz", @@ -3033,6 +3098,29 @@ "integrity": "sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw==", "dev": true }, + "connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, "console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", @@ -3083,6 +3171,16 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, "crc-32": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz", @@ -3193,6 +3291,11 @@ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" }, + "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=" + }, "decompress-response": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", @@ -3574,6 +3677,12 @@ "integrity": "sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw=", "dev": true }, + "es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "dev": true + }, "es6-symbol": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", @@ -4377,6 +4486,11 @@ "to-regex-range": "^5.0.1" } }, + "filter-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", + "integrity": "sha1-mzERErxsYSehbgFsbF1/GeCAXFs=" + }, "finalhandler": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", @@ -5904,6 +6018,12 @@ "integrity": "sha512-gKO5uExCXvSm6zbF562EvM+rd1kQDnB9AZBbiQVzf1ZmdDpxUSvpnAaVOP83N/31mRK8Ml8/VE8DMvsAZQ+7wg==", "dev": true }, + "long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", + "dev": true + }, "long-timeout": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/long-timeout/-/long-timeout-0.1.1.tgz", @@ -6442,6 +6562,18 @@ "type-is": "^1.6.15" } }, + "mock-http-server": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/mock-http-server/-/mock-http-server-1.4.2.tgz", + "integrity": "sha512-41bkFnTv2+gOffvfH3kNK9yatHEvKnlTH0aCshQrPvuu67urtI9d0l2hUxK5YrdvDJEI01GR+9Gjn2l90Z5xkA==", + "dev": true, + "requires": { + "body-parser": "^1.18.1", + "connect": "^3.4.0", + "multiparty": "^4.1.2", + "underscore": "^1.8.3" + } + }, "mock-req": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/mock-req/-/mock-req-0.2.0.tgz", @@ -6472,6 +6604,44 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, + "multiparty": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/multiparty/-/multiparty-4.2.2.tgz", + "integrity": "sha512-NtZLjlvsjcoGrzojtwQwn/Tm90aWJ6XXtPppYF4WmOk/6ncdwMMKggFY2NlRRN9yiCEIVxpOfPWahVEG2HAG8Q==", + "dev": true, + "requires": { + "http-errors": "~1.8.0", + "safe-buffer": "5.2.1", + "uid-safe": "2.1.5" + }, + "dependencies": { + "http-errors": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.0.tgz", + "integrity": "sha512-4I8r0C5JDhT5VkvI47QktDW75rNlGVsUf/8hzjCC/wkWI/jdTRmBb9aI7erSG82r1bjKY3F6k28WnsVxB1C73A==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + } + } + }, "nan": { "version": "2.13.2", "resolved": "https://registry.npmjs.org/nan/-/nan-2.13.2.tgz", @@ -6603,6 +6773,12 @@ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" }, + "node-forge": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", + "dev": true + }, "node-gyp": { "version": "3.8.0", "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", @@ -6651,6 +6827,23 @@ } } }, + "node-jose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/node-jose/-/node-jose-2.0.0.tgz", + "integrity": "sha512-j8zoFze1gijl8+DK/dSXXqX7+o2lMYv1XS+ptnXgGV/eloQaqq1YjNtieepbKs9jBS4WTnMOqyKSaQuunJzx0A==", + "dev": true, + "requires": { + "base64url": "^3.0.1", + "buffer": "^5.5.0", + "es6-promise": "^4.2.8", + "lodash": "^4.17.15", + "long": "^4.0.0", + "node-forge": "^0.10.0", + "pako": "^1.0.11", + "process": "^0.11.10", + "uuid": "^3.3.3" + } + }, "node-nlp": { "version": "4.19.7", "resolved": "https://registry.npmjs.org/node-nlp/-/node-nlp-4.19.7.tgz", @@ -7392,6 +7585,31 @@ "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", "optional": true }, + "oauth2-mock-server": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/oauth2-mock-server/-/oauth2-mock-server-3.1.0.tgz", + "integrity": "sha512-UW8x6QzPaklSnnDMDpw+8+636CnbfJTBkHBh0Ndb237DwqWcLaOIPW3lBhpNWZ89hS5EccQJAiH1NT51J3VT0g==", + "dev": true, + "requires": { + "@types/node-jose": "^1.1.5", + "basic-auth": "^2.0.1", + "body-parser": "^1.19.0", + "cors": "^2.8.5", + "express": "^4.17.1", + "jsonwebtoken": "^8.5.1", + "lodash.isplainobject": "^4.0.6", + "node-jose": "^2.0.0", + "uuid": "^8.3.1" + }, + "dependencies": { + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + } + } + }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -7640,6 +7858,12 @@ "resolved": "https://registry.npmjs.org/pad-start/-/pad-start-1.0.2.tgz", "integrity": "sha1-I+W6s+lkRrYoFs/28VCXXwQNGxQ=" }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -7760,6 +7984,12 @@ "resolved": "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz", "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==" }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -7856,6 +8086,17 @@ "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" }, + "query-string": { + "version": "6.14.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.14.1.tgz", + "integrity": "sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==", + "requires": { + "decode-uri-component": "^0.2.0", + "filter-obj": "^1.1.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" + } + }, "queue": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.1.tgz", @@ -7864,6 +8105,12 @@ "inherits": "~2.0.3" } }, + "random-bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", + "integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs=", + "dev": true + }, "randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -8434,6 +8681,49 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" }, + "simple-oauth2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/simple-oauth2/-/simple-oauth2-4.2.0.tgz", + "integrity": "sha512-AV62tGdq9JfLd/uveKpeNtQl+VVm89a35QKlwGuvisYIjCoz2ZmTGRGuSIGiYr+QUhSKJ5kYN1jq2BBa/ac/GQ==", + "requires": { + "@hapi/hoek": "^9.0.4", + "@hapi/wreck": "^17.0.0", + "debug": "^4.1.1", + "joi": "^17.3.0" + }, + "dependencies": { + "@hapi/hoek": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.0.tgz", + "integrity": "sha512-sqKVVVOe5ivCaXDWivIJYVSaEgdQK9ul7a4Kity5Iw7u9+wBAPbX1RMSnLLmp7O4Vzj0WOWwMAJsTL00xwaNug==" + }, + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "requires": { + "ms": "2.1.2" + } + }, + "joi": { + "version": "17.4.0", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.4.0.tgz", + "integrity": "sha512-F4WiW2xaV6wc1jxete70Rw4V/VuMd6IN+a5ilZsxG4uYtUXWu2kq9W5P2dz30e7Gmw8RCbY/u/uk+dMPma9tAg==", + "requires": { + "@hapi/hoek": "^9.0.0", + "@hapi/topo": "^5.0.0", + "@sideway/address": "^4.1.0", + "@sideway/formula": "^3.0.0", + "@sideway/pinpoint": "^2.0.0" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, "simple-swizzle": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", @@ -8598,6 +8888,11 @@ "resolved": "https://registry.npmjs.org/split-ca/-/split-ca-1.0.1.tgz", "integrity": "sha1-bIOv82kvphJW4M0ZfgXp3hV2kaY=" }, + "split-on-first": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", + "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==" + }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -8705,6 +9000,11 @@ "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=" }, + "strict-uri-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", + "integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY=" + }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", @@ -9195,6 +9495,15 @@ "integrity": "sha512-SbMu4D2Vo95LMC/MetNaso1194M1htEA+JrqE9Hk+G2DhI+itfS9TRu9ZKeCahLDNa/J3n4MqUJ/fOHMzQpRWw==", "optional": true }, + "uid-safe": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", + "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==", + "dev": true, + "requires": { + "random-bytes": "~1.0.0" + } + }, "umzug": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/umzug/-/umzug-2.2.0.tgz", diff --git a/server/package.json b/server/package.json index 35103c8085..5248f56915 100644 --- a/server/package.json +++ b/server/package.json @@ -58,6 +58,7 @@ "jsdoc": "^3.5.5", "mocha": "^8.3.2", "mock-express-request": "^0.2.2", + "mock-http-server": "^1.4.2", "nock": "^13.0.11", "nodemon": "^2.0.7", "npm-run-all": "^4.1.5", @@ -89,9 +90,9 @@ "joi": "^14.3.1", "jsonwebtoken": "^8.4.0", "lodash.clonedeep": "^4.5.0", + "node-nlp": "^4.19.7", "node-schedule": "^1.3.2", "node-webcrypto-ossl": "^1.0.48", - "node-nlp": "^4.19.7", "path-to-regexp": "^3.0.0", "query-string": "^6.12.1", "queue": "^6.0.0", diff --git a/server/services/index.js b/server/services/index.js index d3e1c2b41e..e541799b6e 100644 --- a/server/services/index.js +++ b/server/services/index.js @@ -10,6 +10,7 @@ module.exports.xiaomi = require('./xiaomi'); module.exports.zwave = require('./zwave'); module.exports.tasmota = require('./tasmota'); module.exports.bluetooth = require('./bluetooth'); +module.exports.withings = require('./withings'); module.exports.ewelink = require('./ewelink'); module.exports['tp-link'] = require('./tp-link'); module.exports.zigbee2mqtt = require('./zigbee2mqtt'); diff --git a/server/services/withings/api/withings.controller.js b/server/services/withings/api/withings.controller.js new file mode 100755 index 0000000000..e1739aa152 --- /dev/null +++ b/server/services/withings/api/withings.controller.js @@ -0,0 +1,83 @@ +const asyncMiddleware = require('../../../api/middlewares/asyncMiddleware'); + +module.exports = function WithingsController(withingsHandler) { + /** + * @description Init gladys devices with withings devices. + * @api {post} /api/v1/service/withings/init Init gladys devices ith withings devices. + * @apiName init + * @apiGroup Withings + */ + async function init(req, res) { + const resultInit = await withingsHandler.init(req.user.id); + res.json({ + success: true, + result: resultInit, + }); + } + + /** + * @description Save clientId and secretId of withings oauth2 api. + * @api {post} /api/v1/service/withings/saveVar Save clientId and secretId of withings oauth2 api. + * @apiName saveVar + * @apiGroup Withings + */ + async function saveVar(req, res) { + const resultSaveVar = await withingsHandler.saveVar( + req.body.clientId, + req.body.secretId, + req.body.integrationName, + req.user.id, + ); + res.json({ + success: true, + result: resultSaveVar, + }); + } + + /** + * @description Delete clientId and secretId of withings oauth2 api. + * @api {get} /api/v1/service/withings/deleteConfig Delete clientId and secretId of withings oauth2 api. + * @apiName deleteConfig + * @apiGroup Withings + */ + async function deleteConfig(req, res) { + await withingsHandler.deleteVar('withings', req.user.id); + await withingsHandler.deleteDevices(); + res.json({ + success: true, + }); + } + + /** + * @description Return the withings service id. + * @api {get} /api/v1/service/withings/getServiceId Return the withings service id. + * @apiName getServiceId + * @apiGroup Withings + */ + function getServiceId(req, res) { + const resultServiceId = withingsHandler.getServiceId(); + res.json({ + success: true, + result: resultServiceId, + }); + } + + return { + 'post /api/v1/service/withings/init': { + authenticated: true, + controller: asyncMiddleware(init), + }, + 'post /api/v1/service/withings/saveVar': { + authenticated: true, + controller: asyncMiddleware(saveVar), + }, + 'get /api/v1/service/withings/deleteConfig': { + authenticated: true, + controller: asyncMiddleware(deleteConfig), + }, + 'get /api/v1/service/withings/getServiceId': { + authenticated: true, + controller: getServiceId, + }, + }; +}; diff --git a/server/services/withings/index.js b/server/services/withings/index.js new file mode 100755 index 0000000000..e588bae3b0 --- /dev/null +++ b/server/services/withings/index.js @@ -0,0 +1,34 @@ +const logger = require('../../utils/logger'); +const WithingsHandler = require('./lib/index'); +const WithingsController = require('./api/withings.controller'); + +module.exports = function WithingsService(gladys, serviceId) { + const withingsHandler = new WithingsHandler(gladys, serviceId, 'https://wbsapi.withings.net'); + + /** + * @public + * @description This function starts the WithingsService service + * @example + * gladys.services.withings.start(); + */ + async function start() { + logger.log('starting Withings service'); + } + + /** + * @public + * @description This function stops the WithingsService service + * @example + * gladys.services.withings.stop(); + */ + async function stop() { + logger.log('stopping Withings service'); + } + + return Object.freeze({ + start, + stop, + device: withingsHandler, + controllers: WithingsController(withingsHandler), + }); +}; diff --git a/server/services/withings/lib/index.js b/server/services/withings/lib/index.js new file mode 100755 index 0000000000..ec0d5dd4d8 --- /dev/null +++ b/server/services/withings/lib/index.js @@ -0,0 +1,37 @@ +// COMMANDS +const { init } = require('./withings.init'); +const { saveVar } = require('./withings.saveVar'); +const { deleteVar } = require('./withings.deleteVar'); +const { deleteDevices } = require('./withings.deleteDevices'); +const { getServiceId } = require('./withings.getServiceId'); +const { poll } = require('./withings.poll'); + +/** + * @param {Object} gladys - The gladys object. + * @param {string} serviceId - Identification of the service. + * @param {string} withingsServerUrl - Withings server url. + * @param {string} integrationName - [Optional] By default interationName='withings', param used only for test. + * @description Create all device if not exist by listening + * @example + * const withingsHandler = WithingsHandler(gladys, serviceId) + */ +const WithingsHandler = function WithingsHandler(gladys, serviceId, withingsServerUrl, integrationName) { + this.gladys = gladys; + this.serviceId = serviceId; + this.withingsUrl = withingsServerUrl; + if (integrationName) { + this.integrationName = integrationName; + } else { + this.integrationName = 'withings'; + } +}; + +// COMMANDS +WithingsHandler.prototype.init = init; +WithingsHandler.prototype.saveVar = saveVar; +WithingsHandler.prototype.deleteVar = deleteVar; +WithingsHandler.prototype.deleteDevices = deleteDevices; +WithingsHandler.prototype.getServiceId = getServiceId; +WithingsHandler.prototype.poll = poll; + +module.exports = WithingsHandler; diff --git a/server/services/withings/lib/withings.deleteDevices.js b/server/services/withings/lib/withings.deleteDevices.js new file mode 100755 index 0000000000..a44380b62d --- /dev/null +++ b/server/services/withings/lib/withings.deleteDevices.js @@ -0,0 +1,14 @@ +/** + * @description Delete all devices (and variables) of withings integration. + * @returns {Promise} Resolve with succes result. + * @example + * withings.deleteDevices(); + */ +async function deleteDevices() { + await this.gladys.device.destroyBySelectorPattern('withings'); + return { success: true }; +} + +module.exports = { + deleteDevices, +}; diff --git a/server/services/withings/lib/withings.deleteVar.js b/server/services/withings/lib/withings.deleteVar.js new file mode 100755 index 0000000000..b231108505 --- /dev/null +++ b/server/services/withings/lib/withings.deleteVar.js @@ -0,0 +1,23 @@ +const OAuth2Manager = require('../../../lib/oauth2'); + +/** + * @description Delete client_id, secret_id, access_token of current oauth2 integration and all devices. + * @param {string} integrationName - Name of oauth2 integration. + * @param {string} userId - Gladys userId. + * @returns {Promise} Resolve with current integration service id. + * @example + * withings.deleteVar( + * 'withings', + * 'fd81vs687f0bf3414e0fe3facfba7be9455109409a' + * } + * ); + */ +async function deleteVar(integrationName, userId) { + const oauth2Manager = new OAuth2Manager(this.gladys); + const oauth2SaveVarResult = await oauth2Manager.deleteVar(integrationName, this.serviceId, userId); + return oauth2SaveVarResult; +} + +module.exports = { + deleteVar, +}; diff --git a/server/services/withings/lib/withings.getServiceId.js b/server/services/withings/lib/withings.getServiceId.js new file mode 100755 index 0000000000..faa0a83d32 --- /dev/null +++ b/server/services/withings/lib/withings.getServiceId.js @@ -0,0 +1,13 @@ +/** + * @description Send the Withings service id. + * @returns {Object} Resolve with withings service id. + * @example + * withings.getServiceId(); + */ +function getServiceId() { + return { success: true, serviceId: this.serviceId }; +} + +module.exports = { + getServiceId, +}; diff --git a/server/services/withings/lib/withings.init.js b/server/services/withings/lib/withings.init.js new file mode 100755 index 0000000000..ad1267e792 --- /dev/null +++ b/server/services/withings/lib/withings.init.js @@ -0,0 +1,349 @@ +const uuid = require('uuid'); +const OAuth2Manager = require('../../../lib/oauth2'); +const logger = require('../../../utils/logger'); +const { + DEVICE_FEATURE_CATEGORIES, + DEVICE_POLL_FREQUENCIES, + DEVICE_FEATURE_TYPES, + DEVICE_FEATURE_UNITS, +} = require('../../../utils/constants'); + +/** + * @description Build a new gladys device from withings device. + * + * @param {Object} withingsDevice - Withings device to transform. + * @param {string} serviceId - Withings service id. + * @returns {Object} Return a gladys device. + * @example + * withings.buildNewDevice('7fdsf4s68r4gfr68f4r63csd7f6f4c3r85', '78v4f3df83g74v1fsd8375f63gvrf5c'); + */ +function buildNewDevice(withingsDevice, serviceId) { + // Build unique id for the device + const uniqueId = uuid.v4(); + + // Build params for all device + const newParams = [ + { + name: 'withingsDeviceId', + value: withingsDevice.deviceid, + }, + ]; + + // Build features + const newFeatures = []; + // Feature allow in each device = battery + const uniqueBatFeatureId = uuid.v4(); + const currentDate = new Date(); + let currentBatValueString = `${withingsDevice.battery}`; + let currentBatValue = 100; + switch (currentBatValueString) { + case 'low': + currentBatValueString = `${currentBatValueString} (< 30%)`; + currentBatValue = 20; + break; + case 'medium': + currentBatValueString = `${currentBatValueString} (> 30%)`; + currentBatValue = 30; + break; + case 'high': + currentBatValueString = `${currentBatValueString} (> 75%)`; + currentBatValue = 75; + break; + default: + currentBatValueString = `No value`; + currentBatValue = 0; + break; + } + newFeatures.push({ + id: uniqueBatFeatureId, + name: 'Battery', + selector: `withings-battery-${uniqueId}`, + device_id: uniqueId, + external_id: uniqueId, + category: DEVICE_FEATURE_CATEGORIES.BATTERY, + type: DEVICE_FEATURE_TYPES.SENSOR.INTEGER, + read_only: true, + keep_history: false, + has_feedback: false, + min: 0, + max: 0, + unit: DEVICE_FEATURE_UNITS.PERCENT, + last_value_changed: currentDate, + last_value: currentBatValue, + last_value_string: currentBatValueString, + feature_state: [ + { + id: uuid.v4(), + device_feature_id: uniqueBatFeatureId, + value: currentBatValue, + created_at: currentDate, + updated_at: currentDate, + }, + ], + }); + logger.trace('Battery feature: ', newFeatures); + + const newDevice = { + id: uniqueId, + external_id: uniqueId, + selector: `withings-${withingsDevice.model}-${uniqueId}`, + name: `Withings - ${withingsDevice.model}`, + model: withingsDevice.model, + room_id: null, + service_id: serviceId, + should_poll: true, + poll_frequency: DEVICE_POLL_FREQUENCIES.EVERY_DAY, + features: newFeatures, + params: newParams, + }; + + return newDevice; +} + +/** + * @description Build features of gladys device. + * @param {Object} currentGroup - Withings measure groups to transform. + * @param {Object} device - Current device. + * @param {Array} currentFeatures - CurrentFeature array to update if exist. + * @returns {Array} Return array of features. + * @example + * withings.buildFeature({...}, {....}, null); + */ +function buildFeature(currentGroup, device, currentFeatures) { + // Build (or get) feature corresponding to the measure + const features = currentFeatures || []; + + // Consider only real measures (not user objectives) => category = 1 + if (currentGroup.category === 1) { + currentGroup.measures.forEach((element) => { + const gladysDeviceId = device.id; + + // Choose type of feature + // (cf: https://developer.withings.com/oauth2/#tag/measure ) + let featureType; + let featureName; + let featureUnit; + switch (element.type) { + case 1: + featureType = DEVICE_FEATURE_TYPES.HEALTH.WEIGHT; + featureName = 'Weight'; + featureUnit = DEVICE_FEATURE_UNITS.KILOGRAM; + break; + case 4: + featureType = DEVICE_FEATURE_TYPES.HEALTH.HEIGHT; + featureName = 'Height'; + featureUnit = DEVICE_FEATURE_UNITS.CENTIMETER; + break; + case 5: + featureType = DEVICE_FEATURE_TYPES.HEALTH.FAT_FREE_MASS; + featureName = 'Fat Free Mass'; + featureUnit = DEVICE_FEATURE_UNITS.KILOGRAM; + break; + case 6: + featureType = DEVICE_FEATURE_TYPES.HEALTH.FAT_RATIO; + featureName = 'Fat Ratio'; + featureUnit = DEVICE_FEATURE_UNITS.PERCENT; + break; + case 8: + featureType = DEVICE_FEATURE_TYPES.HEALTH.FAT_MASS_WEIGHT; + featureName = 'Fat Mass Weight'; + featureUnit = DEVICE_FEATURE_UNITS.KILOGRAM; + break; + case 9: + featureType = DEVICE_FEATURE_TYPES.HEALTH.DIASTOLIC_BLOOD_PRESSURE; + featureName = 'Diastolic Blood Pressure'; + featureUnit = DEVICE_FEATURE_UNITS.MERCURE_MILIMETER; + break; + case 10: + featureType = DEVICE_FEATURE_TYPES.HEALTH.SYSTOLIC_BLOOD_PRESSURE; + featureName = 'Systolic Blood Pressure'; + featureUnit = DEVICE_FEATURE_UNITS.MERCURE_MILIMETER; + break; + case 11: + featureType = DEVICE_FEATURE_TYPES.HEALTH.HEARTH_PULSE; + featureName = 'Heart Pulse'; + featureUnit = DEVICE_FEATURE_UNITS.BEATS_PER_MINUTE; + break; + case 12: + featureType = DEVICE_FEATURE_TYPES.HEALTH.TEMPERATURE; + featureName = 'Temperature'; + featureUnit = DEVICE_FEATURE_UNITS.CELSIUS; + break; + case 54: + featureType = DEVICE_FEATURE_TYPES.HEALTH.SPO2; + featureName = 'SpO2'; + featureUnit = DEVICE_FEATURE_UNITS.PERCENT; + break; + case 71: + featureType = DEVICE_FEATURE_TYPES.HEALTH.BODY_TEMPERATURE; + featureName = 'Body Temperature'; + featureUnit = DEVICE_FEATURE_UNITS.CELSIUS; + break; + case 73: + featureType = DEVICE_FEATURE_TYPES.HEALTH.SKIN_TEMPERATURE; + featureName = 'Skin Temperature'; + featureUnit = DEVICE_FEATURE_UNITS.CELSIUS; + break; + case 76: + featureType = DEVICE_FEATURE_TYPES.HEALTH.MUSCLE_MASS; + featureName = 'Muscle Mass'; + featureUnit = DEVICE_FEATURE_UNITS.KILOGRAM; + break; + case 77: + featureType = DEVICE_FEATURE_TYPES.HEALTH.HYDRATION; + featureName = 'Hydration'; + featureUnit = DEVICE_FEATURE_UNITS.KILOGRAM; + break; + case 88: + featureType = DEVICE_FEATURE_TYPES.HEALTH.BONE_MASS; + featureName = 'Bone Mass'; + featureUnit = DEVICE_FEATURE_UNITS.KILOGRAM; + break; + case 91: + featureType = DEVICE_FEATURE_TYPES.HEALTH.PULSE_WAVE_VELOCITY; + featureName = 'Pulse Wave Velocity'; + featureUnit = DEVICE_FEATURE_UNITS.METER_PER_SECOND; + break; + default: + featureType = DEVICE_FEATURE_TYPES.HEALTH.UNKNOWN; + featureName = 'Unknown'; + featureUnit = ''; + break; + } + + // Search existing feature + let tmpFeature = features.find((feat) => feat.type === featureType); + let isNewFeature = false; + + // if not exist build new + if (!tmpFeature) { + isNewFeature = true; + const uniqueId = uuid.v4(); + tmpFeature = { + id: uniqueId, + name: featureName, + selector: `withings-${featureName}-${gladysDeviceId}`, + device_id: gladysDeviceId, + external_id: `withings-${featureName}:${gladysDeviceId}:${uniqueId}`, + category: DEVICE_FEATURE_CATEGORIES.HEALTH, + type: featureType, + read_only: true, + keep_history: true, + has_feedback: false, + unit: featureUnit, + min: 0, + max: 100000, + feature_state: [], + }; + } + + // Build a feature state + const uniqueSateId = uuid.v4(); + const createDate = new Date(currentGroup.created * 1000); + const featureState = { + id: uniqueSateId, + device_feature_id: tmpFeature.id, + value: (element.value * 10 ** element.unit).toFixed(2), + created_at: createDate, + updated_at: new Date(), + }; + + tmpFeature.feature_state.push(featureState); + + if (!tmpFeature.last_value || tmpFeature.last_value_changed < createDate) { + tmpFeature.last_value_changed = createDate; + tmpFeature.last_value = featureState.value; + tmpFeature.last_value_string = `${featureState.value}`; + } + + if (isNewFeature) { + features.push(tmpFeature); + } + }); + } + + return features; +} + +/** + * @description Build and save withings device and init feature values. + * @param {string} userId - Gladys userId of current session. + * @returns {Promise} Resolve with withings device added. + * @example + * withings.init('b2f2c27f0bf3414e0fe3facfba7be9455109409a'); + */ +async function init(userId) { + const { serviceId } = this; + const oauth2Manager = new OAuth2Manager(this.gladys); + + const userResult = await oauth2Manager.executeQuery( + serviceId, + userId, + this.integrationName, + 'get', + `${this.withingsUrl}/v2/user`, + 'action=getdevice', + ); + + const devices = []; + const mapOfDeviceByWithingsDeviceId = new Map(); + await userResult.data.body.devices.forEach((element) => { + if (element) { + // Build one gladys device for each withings device found + const newDevice = buildNewDevice(element, serviceId); + devices.push(newDevice); + mapOfDeviceByWithingsDeviceId.set(element.deviceid, newDevice); + } + }); + + const measureResult = await oauth2Manager.executeQuery( + serviceId, + userId, + this.integrationName, + 'get', + `${this.withingsUrl}/measure`, + 'action=getmeas', + ); + + const mapOfMeasuresGrpsByWithingsDeviceId = new Map(); + await measureResult.data.body.measuregrps.forEach((element) => { + if (element) { + // Build map of measuregrps by withings device id + const measureList = mapOfMeasuresGrpsByWithingsDeviceId.get(element.deviceid) || []; + measureList.push(element); + mapOfMeasuresGrpsByWithingsDeviceId.set(element.deviceid, measureList); + } + }); + + const mapOfFeatureByWithingsDeviceId = new Map(); + await mapOfMeasuresGrpsByWithingsDeviceId.forEach((value, key) => { + value.forEach((currentGroup) => { + if (key) { + const currentFeatures = mapOfFeatureByWithingsDeviceId.get(key); + const features = buildFeature(currentGroup, mapOfDeviceByWithingsDeviceId.get(key), currentFeatures); + if (features) { + mapOfFeatureByWithingsDeviceId.delete(key); + mapOfFeatureByWithingsDeviceId.set(key, features); + } + } + }); + }); + + // Save device with feature + const { gladys } = this; + await mapOfDeviceByWithingsDeviceId.forEach((value, key) => { + if (key) { + const arrayOfFeatures = mapOfFeatureByWithingsDeviceId.get(key); + // Assign features to device + value.features = value.features.concat(arrayOfFeatures); + // Save all device (with feature) + gladys.device.create(value); + } + }); + + return mapOfDeviceByWithingsDeviceId.values(); +} + +module.exports = { + init, +}; diff --git a/server/services/withings/lib/withings.poll.js b/server/services/withings/lib/withings.poll.js new file mode 100755 index 0000000000..9074850558 --- /dev/null +++ b/server/services/withings/lib/withings.poll.js @@ -0,0 +1,206 @@ +const Promise = require('bluebird'); +const uuid = require('uuid'); +const { DEVICE_FEATURE_TYPES } = require('../../../utils/constants'); +const OAuth2Manager = require('../../../lib/oauth2'); +const logger = require('../../../utils/logger'); + +/** + * @description Poll value of a withings device. + * @param {Object} device - The device to update value. + * @returns {Promise} Resolve. + * @example + * poll(device); + */ +async function poll(device) { + logger.debug('Device to poll:', device); + + if (device.features) { + logger.debug('Features : ', device.features); + + const oauth2Manager = new OAuth2Manager(this.gladys); + const withingsDeviceId = device.params.find((oneParam) => oneParam.name === 'withingsDeviceId').value; + + // Get all users of gladys + const users = await this.gladys.user.get(); + await Promise.map( + users, + async (user) => { + const withingsClienId = await this.gladys.variable.getValue('WITHINGS_CLIENT_ID', this.serviceId, user.id); + + if (withingsClienId) { + await Promise.each(device.features, async (feature) => { + // Convert type to int wihings + // (cf https://developer.withings.com/oauth2/#tag/measure%2Fpaths%2Fhttps%3A~1~1wbsapi.withings.net~1measure%3Faction%3Dgetmeas%2Fget) + let withingsType; + let featureBattery; + switch (feature.type) { + case DEVICE_FEATURE_TYPES.HEALTH.WEIGHT: + withingsType = 1; + break; + case DEVICE_FEATURE_TYPES.HEALTH.HEIGHT: + withingsType = 4; + break; + case DEVICE_FEATURE_TYPES.HEALTH.FAT_FREE_MASS: + withingsType = 5; + break; + case DEVICE_FEATURE_TYPES.HEALTH.FAT_RATIO: + withingsType = 6; + break; + case DEVICE_FEATURE_TYPES.HEALTH.FAT_MASS_WEIGHT: + withingsType = 8; + break; + case DEVICE_FEATURE_TYPES.HEALTH.DIASTOLIC_BLOOD_PRESSURE: + withingsType = 9; + break; + case DEVICE_FEATURE_TYPES.HEALTH.SYSTOLIC_BLOOD_PRESSURE: + withingsType = 10; + break; + case DEVICE_FEATURE_TYPES.HEALTH.HEARTH_PULSE: + withingsType = 11; + break; + case DEVICE_FEATURE_TYPES.HEALTH.TEMPERATURE: + withingsType = 12; + break; + case DEVICE_FEATURE_TYPES.HEALTH.SPO2: + withingsType = 54; + break; + case DEVICE_FEATURE_TYPES.HEALTH.BODY_TEMPERATURE: + withingsType = 71; + break; + case DEVICE_FEATURE_TYPES.HEALTH.SKIN_TEMPERATURE: + withingsType = 73; + break; + case DEVICE_FEATURE_TYPES.HEALTH.MUSCLE_MASS: + withingsType = 76; + break; + case DEVICE_FEATURE_TYPES.HEALTH.HYDRATION: + withingsType = 77; + break; + case DEVICE_FEATURE_TYPES.HEALTH.BONE_MASS: + withingsType = 88; + break; + case DEVICE_FEATURE_TYPES.HEALTH.PULSE_WAVE_VELOCITY: + withingsType = 91; + break; + case DEVICE_FEATURE_TYPES.SENSOR.INTEGER: + withingsType = -1; + featureBattery = { ...feature }; + break; + default: + withingsType = 0; + break; + } + + if (withingsType > 0) { + logger.debug('Current feature last value changed: ', feature.last_value_changed); + + const measureResult = await oauth2Manager.executeQuery( + this.serviceId, + user.id, + this.integrationName, + 'get', + `${this.withingsUrl}/measure`, + `action=getmeas&meastype=${withingsType}&category=1&lastupdate=${feature.last_value_changed.getTime() / + 1000 + + 1}`, + ); + + if (measureResult.data.body.measuregrps) { + const mapOfMeasuresGrpsByWithingsDeviceId = new Map(); + await Promise.each(measureResult.data.body.measuregrps, async (element) => { + if (element) { + // Build map of measuregrps by withings device id + const measureList = mapOfMeasuresGrpsByWithingsDeviceId.get(element.deviceid) || []; + measureList.push(element); + mapOfMeasuresGrpsByWithingsDeviceId.set(element.deviceid, measureList); + } + }); + await Promise.each(mapOfMeasuresGrpsByWithingsDeviceId, async (value) => { + const key = value[0]; + const valueList = value[1]; + await Promise.each(valueList, async (currentGroup) => { + if (key) { + logger.debug('currentGroup: ', currentGroup); + + await Promise.each(currentGroup.measures, async (measure) => { + // Build a feature state + const featureState = { + id: uuid.v4(), + device_feature_id: feature.id, + value: (measure.value * 10 ** measure.unit).toFixed(2), + created_at: new Date(currentGroup.created * 1000), + updated_at: new Date(), + }; + await this.gladys.device.saveHistoricalState(device, feature, featureState); + }); + } + }); + }); + } + } + + if (withingsType === -1) { + const userResult = await oauth2Manager.executeQuery( + this.serviceId, + user.id, + this.integrationName, + 'get', + `${this.withingsUrl}/v2/user`, + 'action=getdevice', + ); + + if (userResult.data && userResult.data.body && userResult.data.body.devices) { + await Promise.each(userResult.data.body.devices, async (element) => { + logger.debug('withingsDeviceId: ', withingsDeviceId); + logger.debug('featureBattery: ', featureBattery); + + if (element.deviceid === withingsDeviceId) { + const currentDate = new Date(); + let currentBatValueString; + let currentBatValue = 100; + switch (element.battery) { + case 'low': + currentBatValueString = `${element.battery} (< 30%)`; + currentBatValue = 20; + break; + case 'medium': + currentBatValueString = `${element.battery} (> 30%)`; + currentBatValue = 30; + break; + case 'high': + currentBatValueString = `${element.battery} (> 75%)`; + currentBatValue = 75; + break; + default: + currentBatValueString = `No value`; + currentBatValue = 0; + break; + } + + featureBattery.last_value_changed = currentDate; + featureBattery.last_value = currentBatValue; + featureBattery.last_value_string = currentBatValueString; + + const featureState = { + id: uuid.v4(), + device_feature_id: feature.id, + value: currentBatValue, + created_at: currentDate, + updated_at: currentDate, + }; + await this.gladys.device.saveHistoricalState(device, featureBattery, featureState); + } + }); + } + } + }); + } + }, + { concurrency: 2 }, + ); + } +} + +module.exports = { + poll, +}; diff --git a/server/services/withings/lib/withings.saveVar.js b/server/services/withings/lib/withings.saveVar.js new file mode 100755 index 0000000000..b63579c18b --- /dev/null +++ b/server/services/withings/lib/withings.saveVar.js @@ -0,0 +1,31 @@ +const OAuth2Manager = require('../../../lib/oauth2'); + +/** + * @description Build and save withings device with access_token response and init feature values. + * @param {string} clientId - The client_id of oauth2. + * @param {string} secretId - The secret_id of oauth2. + * @param {string} integrationName - Name of oauth2 integration. + * @param {string} userId - Gladys userId of current session. + * @returns {Promise} Resolve with withings service id. + * @example + * withings.saveVar( + * 'b2f2c27f0bf3414e0fe3facfba7be9455109409a', + * '9d41fe14fz23414e0fe3facfba7be9455109409a', + * 'withings' + * 'fsd1fe14fz23414e0fe3facfba7be9455109409a', + * } + * ); + */ +async function saveVar(clientId, secretId, integrationName, userId) { + const oauth2Manager = new OAuth2Manager(this.gladys); + + const oauth2SaveVarResult = await oauth2Manager.saveVar(clientId, secretId, integrationName, this.serviceId, userId); + if (oauth2SaveVarResult.success) { + return { success: true, serviceId: this.serviceId }; + } + return { success: false, errorMsg: oauth2SaveVarResult.errorMsg }; +} + +module.exports = { + saveVar, +}; diff --git a/server/services/withings/package-lock.json b/server/services/withings/package-lock.json new file mode 100644 index 0000000000..1ec060bc7b --- /dev/null +++ b/server/services/withings/package-lock.json @@ -0,0 +1,17 @@ +{ + "name": "gladys-usb", + "requires": true, + "lockfileVersion": 1, + "dependencies": { + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + } + } +} diff --git a/server/services/withings/package.json b/server/services/withings/package.json new file mode 100755 index 0000000000..44b4691299 --- /dev/null +++ b/server/services/withings/package.json @@ -0,0 +1,19 @@ +{ + "name": "gladys-usb", + "main": "index.js", + "os": [ + "darwin", + "linux", + "win32" + ], + "cpu": [ + "x64", + "arm", + "arm64" + ], + "scripts": {}, + "dependencies": { + "bluebird": "^3.7.2", + "uuid": "^3.3.2" + } +} diff --git a/server/test/lib/device/device.create.test.js b/server/test/lib/device/device.create.test.js index 9124cdb107..488c1bba6b 100644 --- a/server/test/lib/device/device.create.test.js +++ b/server/test/lib/device/device.create.test.js @@ -1,5 +1,6 @@ const { expect } = require('chai'); const EventEmitter = require('events'); +const uuid = require('uuid'); const Device = require('../../../lib/device'); const StateManager = require('../../../lib/state'); const ServiceManager = require('../../../lib/service'); @@ -247,4 +248,59 @@ describe('Device', () => { expect(newDevice).to.have.property('features'); expect(newDevice).to.have.property('params'); }); + + it('should update device which already exist, update a feature and a featureState', async () => { + const stateManager = new StateManager(event); + const device = new Device(event, {}, stateManager); + const uniqueId = uuid.v4(); + const newDevice = await device.create({ + id: '7f85c2f8-86cc-4600-84db-6c074dadb4e8', + name: 'RENAMED_DEVICE', + selector: 'test-device', + external_id: 'test-device-external', + service_id: 'a810b8db-6d04-4697-bed3-c4b72c996279', + room_id: '2398c689-8b47-43cc-ad32-e98d9be098b5', + created_at: '2019-02-12 07:49:07.556 +00:00', + updated_at: '2019-02-12 07:49:07.556 +00:00', + features: [ + { + name: 'New device feature', + selector: 'new-device-feature', + external_id: 'philips-hue:1:binary', + category: 'temperature', + type: 'decimal', + read_only: false, + has_feedback: false, + last_value: 0, + last_value_changed: null, + last_value_string: null, + min: 0, + max: 100, + feature_state: [ + { + id: uniqueId, + value: 20.0, + created_at: '2019-02-12 07:49:07.556 +00:00', + updated_at: '2019-02-12 07:49:07.556 +00:00', + }, + ], + }, + ], + params: [ + { + name: 'TEST_PARAM', + value: 'UPDATED_VALUE', + device_id: '7f85c2f8-86cc-4600-84db-6c074dadb4e8', + }, + ], + }); + expect(newDevice).to.have.property('name', 'RENAMED_DEVICE'); + expect(newDevice).to.have.property('selector', 'test-device'); + expect(newDevice).to.have.property('params'); + expect(newDevice).to.have.property('features'); + expect(newDevice.params).to.have.lengthOf(1); + newDevice.params.forEach((param) => { + expect(param).to.have.property('value', 'UPDATED_VALUE'); + }); + }); }); diff --git a/server/test/lib/device/device.destroyBySelectorPattern.test.js b/server/test/lib/device/device.destroyBySelectorPattern.test.js new file mode 100644 index 0000000000..09d457c8e3 --- /dev/null +++ b/server/test/lib/device/device.destroyBySelectorPattern.test.js @@ -0,0 +1,26 @@ +const EventEmitter = require('events'); + +const Device = require('../../../lib/device'); + +const StateManager = require('../../../lib/state'); + +const event = new EventEmitter(); + +describe('Device', () => { + it('save test param', async () => { + const stateManager = new StateManager(event); + stateManager.setState('device', 'test-device', { + id: 'cfsmb47f-4d25-4381-8923-2633b23192sm', + name: 'test', + selector: 'test-delete', + }); + + const device = new Device(event, {}, stateManager); + device.devicesByPollFrequency[60000] = [ + { + selector: 'test-delete', + }, + ]; + await device.destroyBySelectorPattern('test-delete'); + }); +}); diff --git a/server/test/lib/device/device.saveHistoricalState.test.js b/server/test/lib/device/device.saveHistoricalState.test.js new file mode 100644 index 0000000000..48b9d1f22b --- /dev/null +++ b/server/test/lib/device/device.saveHistoricalState.test.js @@ -0,0 +1,55 @@ +const EventEmitter = require('events'); +const uuid = require('uuid'); +const { assert } = require('chai'); +const Device = require('../../../lib/device'); +const StateManager = require('../../../lib/state'); + +const event = new EventEmitter(); + +describe('Device saveHistoricalState', () => { + it('should save historical sate (new state)', async () => { + const stateManager = new StateManager(event); + stateManager.setState('device', 'test-device', { + id: 'fdfmb47f-4d25-4381-8923-2633b23192sm', + name: 'test', + features: [ + { + id: '5smd05fc-1736-4b76-99ca-5812329sm036', + name: 'Test feature test', + selector: 'test-feature', + external_id: 'feature:test', + category: 'feature', + type: 'weight', + unit: null, + read_only: false, + has_feedback: false, + min: 0, + max: 0, + last_value: null, + last_value_string: '10', + last_value_changed: new Date(2019, 2, 11, 5, 23, 59), + device_id: 'fdfmb47f-4d25-4381-8923-2633b23192sm', + created_at: '2019-02-12 07:49:07.556 +00:00', + updated_at: '2019-02-12 07:49:07.556 +00:00', + }, + ], + }); + + const device = new Device(event, {}, stateManager); + const testDevice = await device.getBySelector('test-device'); + + const deviceFeature = testDevice.features[0]; + const updateDate = new Date().toISOString(); + const historicalState = { + id: uuid.v4(), + device_feature_id: deviceFeature.id, + value: 20, + created_at: updateDate, + updated_at: updateDate, + }; + + await device.saveHistoricalState(device, deviceFeature, historicalState); + + return assert.equal(deviceFeature.last_value_changed, updateDate); + }); +}); diff --git a/server/test/lib/device/device.setParam.test.js b/server/test/lib/device/device.setParam.test.js new file mode 100644 index 0000000000..cf53cdff25 --- /dev/null +++ b/server/test/lib/device/device.setParam.test.js @@ -0,0 +1,20 @@ +const EventEmitter = require('events'); +const Device = require('../../../lib/device'); +const StateManager = require('../../../lib/state'); + +const event = new EventEmitter(); + +describe('Device', () => { + it('save test param', async () => { + const stateManager = new StateManager(event); + stateManager.setState('device', 'test-device', { + id: 'cfsmb47f-4d25-4381-8923-2633b23192sm', + name: 'test', + }); + + const device = new Device(event, {}, stateManager); + const testDevice = await device.getBySelector('test-device'); + await device.setParam(testDevice, 'testParamName', 'testParamValue'); + await device.setParam(testDevice, 'testParamName', 'testParamValue2'); + }); +}); diff --git a/server/test/services/withings/api/withings.controller.test.js b/server/test/services/withings/api/withings.controller.test.js new file mode 100644 index 0000000000..3d54a030c4 --- /dev/null +++ b/server/test/services/withings/api/withings.controller.test.js @@ -0,0 +1,70 @@ +const { assert, fake } = require('sinon'); +const WithingsController = require('../../../../services/withings/api/withings.controller'); + +const withingsHandler = { + init: fake.resolves({ device: { name: 'testServiceID' } }), + saveVar: fake.resolves({ success: true, serviceId: 'testServiceID' }), + deleteVar: fake.resolves({ success: true }), + deleteDevices: fake.resolves({ success: true }), + getServiceId: fake.returns({ success: true, serviceId: 'testServiceID' }), +}; + +describe('WithingsController POST /api/v1/service/withings/init', () => { + const controller = WithingsController(withingsHandler); + + it('should init', async () => { + const req = { user: { id: 'fsdfdd452f4181fsdf2sdfhgyrjfdsfsd' } }; + const res = { json: fake.returns(null) }; + + await controller['post /api/v1/service/withings/init'].controller(req, res); + assert.calledOnce(withingsHandler.init); + assert.calledOnce(res.json); + }); +}); + +describe('WithingsController POST /api/v1/service/withings/saveVar', () => { + const controller = WithingsController(withingsHandler); + + it('should save oauth2 var', async () => { + const req = { + body: { + clientId: '78sdfds7fsd7f8d3sf5sd4fds24vfd', + secretId: '45f7sd452f4181fsdf2sdfhgyrjy152', + integrationName: 'withings', + }, + user: { + id: 'fsdfdd452f4181fsdf2sdfhgyrjfdsfsd', + }, + }; + const res = { json: fake.returns(null) }; + + await controller['post /api/v1/service/withings/saveVar'].controller(req, res); + assert.calledOnce(withingsHandler.saveVar); + assert.calledOnce(res.json); + }); +}); + +describe('WithingsController GET /api/v1/service/withings/deleteConfig', () => { + const controller = WithingsController(withingsHandler); + + it('should delete config', async () => { + const req = { user: { id: 'fsdfdd452f4181fsdf2sdfhgyrjfdsfsd' } }; + const res = { json: fake.returns(null) }; + + await controller['get /api/v1/service/withings/deleteConfig'].controller(req, res); + assert.calledOnce(withingsHandler.deleteVar); + assert.calledOnce(withingsHandler.deleteDevices); + }); +}); + +describe('WithingsController GET /api/v1/service/withings/getServiceId', () => { + const controller = WithingsController(withingsHandler); + + it('should return serviceId', () => { + const res = { json: fake.returns(null) }; + + controller['get /api/v1/service/withings/getServiceId'].controller(undefined, res); + assert.calledOnce(withingsHandler.getServiceId); + assert.calledOnce(res.json); + }); +}); diff --git a/server/test/services/withings/index.test.js b/server/test/services/withings/index.test.js new file mode 100755 index 0000000000..0253c441eb --- /dev/null +++ b/server/test/services/withings/index.test.js @@ -0,0 +1,20 @@ +const { fake } = require('sinon'); +const proxyquire = require('proxyquire').noCallThru(); + +class WithingsHandler {} + +WithingsHandler.prototype.listen = fake.returns(null); + +const WithingsService = proxyquire('../../../services/withings', { + './lib': WithingsHandler, +}); + +describe('withingsService', () => { + const withingsService = WithingsService({}, '3ac129d9-a610-42f8-924f-3fe708001b3d'); + it('should start service', async () => { + await withingsService.start(); + }); + it('should stop service', async () => { + await withingsService.stop(); + }); +}); diff --git a/server/test/services/withings/lib/withings.deleteDevices.test.js b/server/test/services/withings/lib/withings.deleteDevices.test.js new file mode 100644 index 0000000000..f567ca107e --- /dev/null +++ b/server/test/services/withings/lib/withings.deleteDevices.test.js @@ -0,0 +1,16 @@ +const { expect } = require('chai'); +const { fake } = require('sinon'); +const WithingsHandler = require('../../../../services/withings/lib'); + +const gladys = { + device: { destroyBySelectorPattern: fake.returns(null) }, +}; + +describe('WithingsHandler deleteDevices', () => { + const withingsHandler = new WithingsHandler(gladys, null, null, null); + + it('delete devices', async () => { + const result = await withingsHandler.deleteDevices(); + expect(result).to.eql({ success: true }); + }); +}); diff --git a/server/test/services/withings/lib/withings.deleteVar.test.js b/server/test/services/withings/lib/withings.deleteVar.test.js new file mode 100644 index 0000000000..b8db3b82c4 --- /dev/null +++ b/server/test/services/withings/lib/withings.deleteVar.test.js @@ -0,0 +1,26 @@ +const { expect } = require('chai'); +const { fake } = require('sinon'); +const WithingsHandler = require('../../../../services/withings/lib'); + +const gladysOk = { + variable: { destroy: fake.resolves(null) }, +}; + +const gladysKo = { + variable: { destroy: fake.rejects('Fail to delete') }, +}; + +describe('WithingsHandler deleteVar', () => { + it('deletes oauth2 vars', async () => { + const withingsHandler = new WithingsHandler(gladysOk, null, null, null); + + const result = await withingsHandler.deleteVar('req', undefined); + expect(result).to.eql({ success: true }); + }); + it('fails to delete oauth2 vars', async () => { + const withingsHandler = new WithingsHandler(gladysKo, null, null, null); + + const result = await withingsHandler.deleteVar('req', undefined); + expect(result).to.eql({ success: false, errorMsg: 'Fail to delete' }); + }); +}); diff --git a/server/test/services/withings/lib/withings.getServiceId.test.js b/server/test/services/withings/lib/withings.getServiceId.test.js new file mode 100644 index 0000000000..bc845af26b --- /dev/null +++ b/server/test/services/withings/lib/withings.getServiceId.test.js @@ -0,0 +1,11 @@ +const { expect } = require('chai'); +const WithingsHandler = require('../../../../services/withings/lib'); + +describe('WithingsHandler getServiceId', () => { + const withingsHandler = new WithingsHandler(null, '55f177d7-bc35-4560-a1f0-4c58b9e9f2c4', null, null); + + it('returns serviceId', () => { + const result = withingsHandler.getServiceId(); + expect(result).to.eql({ success: true, serviceId: '55f177d7-bc35-4560-a1f0-4c58b9e9f2c4' }); + }); +}); diff --git a/server/test/services/withings/lib/withings.init.test.js b/server/test/services/withings/lib/withings.init.test.js new file mode 100644 index 0000000000..8209f4afd1 --- /dev/null +++ b/server/test/services/withings/lib/withings.init.test.js @@ -0,0 +1,319 @@ +const { assert } = require('chai'); +const { OAuth2Server } = require('oauth2-mock-server'); +const { fake } = require('sinon'); +const ServerMock = require('mock-http-server'); +const WithingsHandler = require('../../../../services/withings/lib'); + +const serverOauth2 = new OAuth2Server(); +const server = new ServerMock({ host: 'localhost', port: 9192 }, null); +const gladys = { + device: { + create: fake.returns(null), + destroyBySelectorPattern: fake.returns(null), + saveHistoricalState: function shs(device, featureBattery, featureState) { + device.featureBattery = featureBattery; + device.featureBattery = featureState; + }, + }, + user: { + get: fake.returns([{ id: '0cd30aef-9c4e-4a23-88e3-3547971296e5' }]), + }, + event: { emit: fake.returns(null) }, + variable: { + getValue: fake.returns( + '{' + + '"access_token":"b96a86b654acb01c2aeb4d5a39f10ff9c964f8e4",' + + '"expires_in":10800,' + + '"token_type":"Bearer",' + + '"scope":"user.info,user.metrics,user.activity,user.sleepevents",' + + '"refresh_token":"11757dc7fd8d25889f5edfd373d1f525f53d4942",' + + '"userid":"33669966",' + + '"expires_at":"2020-11-13T20:46:50.042Z"' + + '}', + ), + setValue: fake.returns(null), + destroy: fake.returns(null), + }, +}; + +describe('WithingsHandler init', () => { + before(function testBefore(done) { + server.on({ + method: 'GET', + path: '/v2/user', + reply: { + status: 200, + headers: { 'content-type': 'application/json' }, + body: JSON.stringify({ + status: 0, + body: { + devices: [ + { + type: 'string', + model: 'string', + model_id: 0, + battery: 'low', + deviceid: 'withingsDevideId', + timezone: 'string', + last_session_date: 0, + }, + { + type: 'string', + model: 'string', + model_id: 0, + battery: 'no', + deviceid: 'withingsDevideId2', + timezone: 'string', + last_session_date: 0, + }, + { + type: 'string', + model: 'string', + model_id: 0, + battery: 'medium', + deviceid: 'withingsDevideId3', + timezone: 'string', + last_session_date: 0, + }, + { + type: 'string', + model: 'string', + model_id: 0, + battery: 'high', + deviceid: 'withingsDevideId4', + timezone: 'string', + last_session_date: 0, + }, + ], + }, + }), + }, + }); + + server.on({ + method: 'GET', + path: '/measure', + reply: { + status: 200, + headers: { 'content-type': 'application/json' }, + body: JSON.stringify({ + status: 0, + body: { + updatetime: 'string', + timezone: 'string', + measuregrps: [ + { + grpid: 0, + attrib: 0, + date: 0, + created: 0, + category: 1, + deviceid: 'withingsDevideId', + measures: [ + { + value: 0, + type: 1, + unit: 0, + algo: 0, + fm: 0, + fw: 0, + }, + { + value: 0, + type: 0, + unit: 0, + algo: 0, + fm: 0, + fw: 0, + }, + { + value: 0, + type: 4, + unit: 0, + algo: 0, + fm: 0, + fw: 0, + }, + { + value: 0, + type: 5, + unit: 0, + algo: 0, + fm: 0, + fw: 0, + }, + { + value: 0, + type: 6, + unit: 0, + algo: 0, + fm: 0, + fw: 0, + }, + { + value: 0, + type: 8, + unit: 0, + algo: 0, + fm: 0, + fw: 0, + }, + { + value: 0, + type: 9, + unit: 0, + algo: 0, + fm: 0, + fw: 0, + }, + { + value: 0, + type: 10, + unit: 0, + algo: 0, + fm: 0, + fw: 0, + }, + { + value: 0, + type: 11, + unit: 0, + algo: 0, + fm: 0, + fw: 0, + }, + { + value: 0, + type: 12, + unit: 0, + algo: 0, + fm: 0, + fw: 0, + }, + { + value: 0, + type: 54, + unit: 0, + algo: 0, + fm: 0, + fw: 0, + }, + { + value: 0, + type: 71, + unit: 0, + algo: 0, + fm: 0, + fw: 0, + }, + { + value: 0, + type: 73, + unit: 0, + algo: 0, + fm: 0, + fw: 0, + }, + { + value: 0, + type: 76, + unit: 0, + algo: 0, + fm: 0, + fw: 0, + }, + { + value: 0, + type: 77, + unit: 0, + algo: 0, + fm: 0, + fw: 0, + }, + { + value: 0, + type: 88, + unit: 0, + algo: 0, + fm: 0, + fw: 0, + }, + { + value: 0, + type: 91, + unit: 0, + algo: 0, + fm: 0, + fw: 0, + }, + ], + comment: 'string', + }, + ], + more: true, + offset: 0, + }, + }), + }, + }); + + server.start(done); + + // Start fake oatuh2 server + // Generate a new RSA key and add it to the keystore + serverOauth2.issuer.keys.generateRSA(); + // Start the server + serverOauth2.start(9292, 'localhost'); + }); + + after(function testAfter(done) { + server.stop(done); + serverOauth2.stop(); + }); + it('init devices in Gladys', async () => { + const withingsHandler = new WithingsHandler( + gladys, + '55f177d7-bc35-4560-a1f0-4c58b9e9f2c4', + 'http://localhost:9192', + 'test', + ); + + const result = await withingsHandler.init('0cd30aef-9c4e-4a23-88e3-3547971296e5'); + + const firstResult = result.next(); + const secondResult = result.next(); + const thirdResult = result.next(); + const fourResult = result.next(); + + await assert.equal(firstResult.value.name, 'Withings - string'); + await assert.equal(firstResult.value.service_id, '55f177d7-bc35-4560-a1f0-4c58b9e9f2c4'); + await assert.equal(firstResult.value.should_poll, true); + await assert.equal(firstResult.value.poll_frequency, 86400000); + + const featureCreated = firstResult.value.features; + await assert.equal(featureCreated.length, 18); + + let paramCreated = firstResult.value.params; + await assert.equal(paramCreated.length, 1); + await assert.equal(paramCreated[0].name, 'withingsDeviceId'); + await assert.equal(paramCreated[0].value, 'withingsDevideId'); + + await assert.equal(secondResult.value.name, 'Withings - string'); + paramCreated = secondResult.value.params; + await assert.equal(paramCreated.length, 1); + await assert.equal(paramCreated[0].name, 'withingsDeviceId'); + await assert.equal(paramCreated[0].value, 'withingsDevideId2'); + + await assert.equal(thirdResult.value.name, 'Withings - string'); + paramCreated = thirdResult.value.params; + await assert.equal(paramCreated.length, 1); + await assert.equal(paramCreated[0].name, 'withingsDeviceId'); + await assert.equal(paramCreated[0].value, 'withingsDevideId3'); + + await assert.equal(fourResult.value.name, 'Withings - string'); + paramCreated = fourResult.value.params; + await assert.equal(paramCreated.length, 1); + await assert.equal(paramCreated[0].name, 'withingsDeviceId'); + await assert.equal(paramCreated[0].value, 'withingsDevideId4'); + }); +}); diff --git a/server/test/services/withings/lib/withings.poll.test.js b/server/test/services/withings/lib/withings.poll.test.js new file mode 100644 index 0000000000..3d0b49e9c5 --- /dev/null +++ b/server/test/services/withings/lib/withings.poll.test.js @@ -0,0 +1,261 @@ +const ServerMock = require('mock-http-server'); +const { OAuth2Server } = require('oauth2-mock-server'); +const sinon = require('sinon'); +const WithingsHandler = require('../../../../services/withings/lib'); +const { DEVICE_FEATURE_TYPES } = require('../../../../utils/constants'); + +const { assert, fake } = sinon; + +const serverOauth2 = new OAuth2Server(); + +const server = new ServerMock({ host: 'localhost', port: 9192 }, null); + +const gladys = { + variable: { + getValue: fake.resolves( + '{"access_token":"b96a86b654acb01c2aeb4d5a39f10ff9c964f8e4","expires_in":10800,' + + '"token_type":"Bearer",' + + '"scope":"user.info,user.metrics,user.activity,user.sleepevents",' + + '"refresh_token":"11757dc7fd8d25889f5edfd373d1f525f53d4942",' + + '"userid":"33669966",' + + '"expires_at":"2020-11-13T20:46:50.042Z"}', + ), + setValue: fake.resolves(null), + destroy: fake.returns(null), + }, + device: { + create: fake.resolves(null), + destroyBySelectorPattern: fake.resolves(null), + saveHistoricalState: fake.resolves(null), + }, + user: { + get: fake.resolves([{ id: '0cd30aef-9c4e-4a23-88e3-3547971296e5' }]), + }, + event: { emit: fake.returns(null) }, +}; + +describe('WithingsHandler poll', () => { + const withingsHandler = new WithingsHandler( + gladys, + '55f177d7-bc35-4560-a1f0-4c58b9e9f2c4', + 'http://localhost:9192', + 'test', + ); + + before((done) => { + server.on({ + method: 'GET', + path: '/v2/user', + reply: { + status: 200, + headers: { 'content-type': 'application/json' }, + body: JSON.stringify({ + status: 0, + body: { + devices: [ + { + type: 'string', + model: 'string', + model_id: 0, + battery: 'low', + deviceid: 'withingsDevideId', + timezone: 'string', + last_session_date: 0, + }, + ], + }, + }), + }, + }); + + server.on({ + method: 'GET', + path: '/measure', + reply: { + status: 200, + headers: { 'content-type': 'application/json' }, + body: JSON.stringify({ + status: 0, + body: { + updatetime: 'string', + timezone: 'string', + measuregrps: [ + { + grpid: 0, + attrib: 0, + date: 0, + created: 0, + category: 1, + deviceid: 'withingsDevideId', + measures: [ + { + value: 0, + type: 1, + unit: 0, + algo: 0, + fm: 0, + fw: 0, + }, + ], + comment: 'string', + }, + ], + more: true, + offset: 0, + }, + }), + }, + }); + + server.start(done); + + // Start fake oatuh2 server + // Generate a new RSA key and add it to the keystore + serverOauth2.issuer.keys.generateRSA(); + // Start the server + serverOauth2.start(9292, 'localhost'); + }); + + after((done) => { + server.stop(done); + serverOauth2.stop(); + }); + + it('should poll devices', async () => { + const deviceToPoll = { + id: 'gdfgdfgd-7207-4e55-b893-gfdgdfgkjliu', + name: 'Withings - string', + model: 'string', + poll_frequency: 86400000, + selector: 'withings-string-9f66c962-7207-4e55-b893-712642f5e043', + service_id: '55f177d7-bc35-4560-a1f0-4c58b9e9f2c4', + should_poll: true, + external_id: '9f66c962-7207-4e55-b893-712642f5e043', + params: [ + { + name: 'withingsDeviceId', + value: 'withingsDevideId', + }, + ], + }; + deviceToPoll.features = [ + { + id: '02b64a40-1de8-4e33-a4bc-03d86e1c567e', + type: DEVICE_FEATURE_TYPES.HEALTH.WEIGHT, + last_value_changed: new Date(), + }, + { + id: 'b4d554e0-f0f3-469d-89e2-903464eaa9d9', + type: DEVICE_FEATURE_TYPES.HEALTH.UNKNOWN, + last_value_changed: new Date(), + }, + { + id: '5ee4d59b-5a7f-440f-8225-0493b0a68547', + type: DEVICE_FEATURE_TYPES.HEALTH.TEMPERATURE, + last_value_changed: new Date(), + }, + { + id: '13e6dfbd-3fb1-4754-b4d2-5bc3352df9b1', + type: DEVICE_FEATURE_TYPES.HEALTH.SYSTOLIC_BLOOD_PRESSURE, + last_value_changed: new Date(), + }, + { + id: 'ca17a161-2b93-4b0a-8539-b2e19543a3bb', + type: DEVICE_FEATURE_TYPES.HEALTH.SPO2, + last_value_changed: new Date(), + }, + { + id: '759f03c6-f57f-4bf4-bc21-2aa3df104d8e', + type: DEVICE_FEATURE_TYPES.HEALTH.SKIN_TEMPERATURE, + last_value_changed: new Date(), + }, + { + id: 'ca1f332d-d098-4718-80bc-76ca44689d54', + type: DEVICE_FEATURE_TYPES.HEALTH.PULSE_WAVE_VELOCITY, + last_value_changed: new Date(), + }, + { + id: 'b4029e8d-c836-4599-913f-ce7775c2a79d', + type: DEVICE_FEATURE_TYPES.HEALTH.MUSCLE_MASS, + last_value_changed: new Date(), + }, + { + id: 'c0d48de3-41bb-4ac0-8584-496bf9681a91', + type: DEVICE_FEATURE_TYPES.HEALTH.HYDRATION, + last_value_changed: new Date(), + }, + { + id: '976bea5c-5a48-4602-b521-5b392f08ac1e', + type: DEVICE_FEATURE_TYPES.HEALTH.HEIGHT, + last_value_changed: new Date(), + }, + { + id: '8bcea9af-990b-4a95-bd92-c0410e53a82a', + type: DEVICE_FEATURE_TYPES.HEALTH.HEARTH_PULSE, + last_value_changed: new Date(), + }, + { + id: '74a3193b-eb39-4d69-b56d-d7d92813dddb', + type: DEVICE_FEATURE_TYPES.HEALTH.FAT_RATIO, + last_value_changed: new Date(), + }, + { + id: 'f984aa1f-92bc-4e5e-958b-2ec09aa4c6f3', + type: DEVICE_FEATURE_TYPES.HEALTH.FAT_MASS_WEIGHT, + last_value_changed: new Date(), + }, + { + id: 'f70459f5-6671-4c9f-bc27-3c4da4eb7fa1', + type: DEVICE_FEATURE_TYPES.HEALTH.FAT_FREE_MASS, + last_value_changed: new Date(), + }, + { + id: 'eb7e1015-180d-41a7-a77a-f89b768c3da9', + type: DEVICE_FEATURE_TYPES.HEALTH.DIASTOLIC_BLOOD_PRESSURE, + last_value_changed: new Date(), + }, + { + id: '7143a011-7393-48dd-b819-9b9a93d0a33a', + type: DEVICE_FEATURE_TYPES.HEALTH.BONE_MASS, + last_value_changed: new Date(), + }, + { + id: 'feb624ed-5d88-47ae-aaee-33f8069a78e5', + type: DEVICE_FEATURE_TYPES.HEALTH.BODY_TEMPERATURE, + last_value_changed: new Date(), + }, + { + id: '832fd6ce-9c2b-4806-bd0f-fbc9bb2432a4', + type: DEVICE_FEATURE_TYPES.SENSOR.INTEGER, + last_value_changed: new Date(), + }, + ]; + + await withingsHandler.poll(deviceToPoll); + + assert.callCount(gladys.variable.getValue, 52); + assert.calledWithExactly( + gladys.variable.getValue, + 'WITHINGS_CLIENT_ID', + '55f177d7-bc35-4560-a1f0-4c58b9e9f2c4', + '0cd30aef-9c4e-4a23-88e3-3547971296e5', + ); + + const deviceDef = { + id: 'gdfgdfgd-7207-4e55-b893-gfdgdfgkjliu', + name: 'Withings - string', + model: 'string', + poll_frequency: 86400000, + selector: 'withings-string-9f66c962-7207-4e55-b893-712642f5e043', + service_id: '55f177d7-bc35-4560-a1f0-4c58b9e9f2c4', + should_poll: true, + external_id: '9f66c962-7207-4e55-b893-712642f5e043', + params: [{ name: 'withingsDeviceId', value: 'withingsDevideId' }], + features: deviceToPoll.features, + }; + + // 18 feature - 1 feature unknown = 17 state to save + assert.callCount(gladys.device.saveHistoricalState, 17); + assert.calledWith(gladys.device.saveHistoricalState, deviceDef); + }); +}); diff --git a/server/test/services/withings/lib/withings.saveVar.test.js b/server/test/services/withings/lib/withings.saveVar.test.js new file mode 100644 index 0000000000..5f76db2453 --- /dev/null +++ b/server/test/services/withings/lib/withings.saveVar.test.js @@ -0,0 +1,26 @@ +const { expect } = require('chai'); +const { fake } = require('sinon'); +const WithingsHandler = require('../../../../services/withings/lib'); + +const gladysOk = { + variable: { setValue: fake.resolves(null) }, +}; + +const gladysKo = { + variable: { setValue: fake.rejects('Fail to save') }, +}; + +describe('WithingsHandler saveVar', () => { + it('saves oauth2 vars', async () => { + const withingsHandler = new WithingsHandler(gladysOk, '55f177d7-bc35-4560-a1f0-4c58b9e9f2c4', null, null); + + const result = await withingsHandler.saveVar('789dsfds452fsdq27fze2ds', 'fdsf847f5re3f92d1', 'test', null); + expect(result).to.eql({ success: true, serviceId: '55f177d7-bc35-4560-a1f0-4c58b9e9f2c4' }); + }); + it('fails to save oauth2 vars', async () => { + const withingsHandler = new WithingsHandler(gladysKo, '55f177d7-bc35-4560-a1f0-4c58b9e9f2c4', null, null); + + const result = await withingsHandler.saveVar('789dsfds452fsdq27fze2ds', 'fdsf847f5re3f92d1', 'test', null); + expect(result).to.eql({ success: false, errorMsg: 'Fail to save' }); + }); +}); From 1a243fac693ce753be0f3cdc6096e21bfacd0bcc Mon Sep 17 00:00:00 2001 From: Euguuu Date: Mon, 24 May 2021 20:42:23 +0200 Subject: [PATCH 005/164] fix from review feedback --- front/src/components/oauth2/OAuth2Config.jsx | 4 +- front/src/components/oauth2/actions.js | 28 +++--- front/src/config/i18n/en.json | 14 +-- front/src/config/i18n/fr.json | 10 +-- server/api/controllers/oauth2.controller.js | 85 ++++++++++-------- server/api/routes.js | 15 ++++ server/config/oauth2/providers.json | 11 --- server/lib/oauth2/index.js | 10 +-- ...h2.deleteVar.js => oauth2.deleteClient.js} | 16 ++-- ...ry.js => oauth2.executeOauth2HTTPQuery.js} | 41 ++++----- server/lib/oauth2/oauth2.saveVar.js | 35 -------- server/seeders/20190226025931-variable.js | 71 ++++++++++++++- .../oauth2/oauth2.controller.test.js | 12 +-- .../controllers/oauth2/oauth2.request.test.js | 8 -- server/test/lib/oauth2/oauth2manager.test.js | 86 +++++++++---------- server/utils/constants.js | 17 ++++ 16 files changed, 255 insertions(+), 208 deletions(-) delete mode 100644 server/config/oauth2/providers.json rename server/lib/oauth2/{oauth2.deleteVar.js => oauth2.deleteClient.js} (53%) rename server/lib/oauth2/{oauth2.executeQuery.js => oauth2.executeOauth2HTTPQuery.js} (67%) delete mode 100755 server/lib/oauth2/oauth2.saveVar.js diff --git a/front/src/components/oauth2/OAuth2Config.jsx b/front/src/components/oauth2/OAuth2Config.jsx index 1146eb3d76..98236e0ff8 100755 --- a/front/src/components/oauth2/OAuth2Config.jsx +++ b/front/src/components/oauth2/OAuth2Config.jsx @@ -84,7 +84,7 @@ const OAuth2Config = ({ integrationImg, integrationName, children, ...props }) = - {`${props.clientIdInDb}`} + {props.clientIdInDb}

@@ -99,7 +99,7 @@ const OAuth2Config = ({ integrationImg, integrationName, children, ...props }) =

diff --git a/front/src/components/oauth2/actions.js b/front/src/components/oauth2/actions.js index 167aea1e28..ea370e399b 100755 --- a/front/src/components/oauth2/actions.js +++ b/front/src/components/oauth2/actions.js @@ -1,4 +1,5 @@ import { RequestStatus } from '../../utils/consts'; +import { OAUTH2 } from '../../../server/utils/constants'; const actions = store => ({ updateIntegrationName(state, e) { @@ -21,10 +22,9 @@ const actions = store => ({ oauth2GetStatus: RequestStatus.Getting }); - const returnServiceId = await state.httpClient.get(`/api/v1/service/${state.integrationName}/getServiceId`); + const returnServiceId = (await state.httpClient.get(`/api/v1/service/${state.integrationName}`)).id; - const returnGetConfig = await state.httpClient.get('/api/v1/service/oauth2/client/current-config', { - integrationName: state.integrationName, + const returnGetConfig = await state.httpClient.get('/api/v1/service/oauth2/client', { serviceId: returnServiceId.result.serviceId }); @@ -55,21 +55,17 @@ const actions = store => ({ return; } - const returnSaveVar = await state.httpClient.post(`/api/v1/service/${state.integrationName}/savevar`, { - clientId: state.clientId, - secretId: state.secretId, - integrationName: state.integrationName + const serviceId = (await state.httpClient.get(`/api/v1/service/${state.integrationName}`)).id; + + // Save Oauth2 variables + await state.httpClient.post(`/api/service/${state.integrationName}/variable/${OAUTH2.VARIABLE.CLIENT_ID}`, { + value: state.clientId, + secretId: state.secretId }); - let serviceId; - if (returnSaveVar.success === true) { - serviceId = returnSaveVar.result.serviceId; - } else { - store.setState({ - oauth2GetStatus: RequestStatus.Error, - oauth2ErrorMsg: 'errorServiceId' - }); - } + await state.httpClient.post(`/api/service/${state.integrationName}/variable/${OAUTH2.VARIABLE.CLIENT_SECRET}`, { + value: state.secretId + }); const returnValue = await state.httpClient.post('/api/v1/service/oauth2/client/authorization-uri', { clientId: state.clientId, diff --git a/front/src/config/i18n/en.json b/front/src/config/i18n/en.json index b14b2aa615..97137cc574 100644 --- a/front/src/config/i18n/en.json +++ b/front/src/config/i18n/en.json @@ -793,15 +793,15 @@ }, "oauth2": { "buttonConnect": "Connect now", - "apiKeyLabel": "Then, enter your client_id and secret_id key here:", - "errorEmptyConfig": "Client Id and Secret Id must not be empty !", - "errorServiceId": "Service Id of current integration must not be found !", - "errorAuthorizationUri": "Error in authorization provider !", + "apiKeyLabel": "Then, enter your client id and client secret key here:", + "errorEmptyConfig": "Client id and client secret must not be empty!", + "errorServiceId": "Service Id of current integration must not be found!", + "errorAuthorizationUri": "Error in authorization provider connection configuration!", "clientId": "Account client id", - "secretId": "Account secret id", - "instructions": "In this stage please fill in the given client_id and secret_id key below and click on connect button.", + "secretId": "Account client secret", + "instructions": "In this stage please fill in the given client id and client secret key below and click on connect button.", "delete": "To delete your account configuration clic on 'Unconnect' button (all data will be deleted).", - "buttonUnConnect": "Unconnect" + "unconnectButton": "Unconnect" }, "eWeLink": { "title": "eWeLink", diff --git a/front/src/config/i18n/fr.json b/front/src/config/i18n/fr.json index 69c1dda34b..7658ed4213 100644 --- a/front/src/config/i18n/fr.json +++ b/front/src/config/i18n/fr.json @@ -793,15 +793,15 @@ }, "oauth2": { "buttonConnect": "Connecter maintenant", - "apiKeyLabel": "Saisissez ensuite votre clé client_id et secret_id ici:", - "errorEmptyConfig": "Client Id et Secret Id ne doivent pas être vide !", + "apiKeyLabel": "Saisissez ensuite votre clé client id et client secret ici :", + "errorEmptyConfig": "Client id et client secret ne doivent pas être vide !", "errorServiceId": "Service Id de l'intégration courante n'a pas été trouvé !", "errorAuthorizationUri": "Erreur dans la configuration du provider pour l'autorisation de connexion !", "clientId": "Client id du compte", - "secretId": "Secret id du compte", - "instructions": "À cette étape, veuillez remplir les champs client_id et secret_id ci-dessous et cliquez sur le bouton de connexion.", + "secretId": "Client secret du compte", + "instructions": "À cette étape, veuillez remplir les champs client id et client secret ci-dessous et cliquez sur le bouton de connexion.", "delete": "Pour supprimer vos configuration de compte cliquer sur le bouton 'Déconneter' (toutes les données associées seront supprimées).", - "buttonUnConnect": "Déconnecter" + "unconnectButton": "Déconnecter" }, "eWeLink": { "title": "eWeLink", diff --git a/server/api/controllers/oauth2.controller.js b/server/api/controllers/oauth2.controller.js index 89aa346c66..2c39b80473 100644 --- a/server/api/controllers/oauth2.controller.js +++ b/server/api/controllers/oauth2.controller.js @@ -1,32 +1,43 @@ const { AuthorizationCode } = require('simple-oauth2'); const logger = require('../../utils/logger'); const asyncMiddleware = require('../middlewares/asyncMiddleware'); -const providers = require('../../config/oauth2/providers.json'); +const { OAUTH2 } = require('../../utils/constants'); module.exports = function OAuth2Controller(gladys) { /** - * @description uild an authorization uri (to get authorizationcode). + * @description Build an authorization uri (to get authorizationcode). * @api {post} /api/v1/service/oauth2/client/authorization-uri Build an authorization uri (to get authorizationcode) * @apiName BuildAuthorizationUri * @apiGroup OAuth2 */ async function buildAuthorizationUri(req, res) { // Find provider configuration - const currentProvider = providers[req.body.integrationName]; - const { tokenHost } = currentProvider; - const { authorizeHost } = currentProvider; - const { authorizePath } = currentProvider; - const { integrationScope } = currentProvider; - const { redirectUriSuffix } = currentProvider; - - // Get variale client_id and secret_id - const clientId = await gladys.variable.getValue( - `${req.body.integrationName.toUpperCase()}_CLIENT_ID`, + const tokenHost = await gladys.variable.getValue(`${OAUTH2.VARIABLE.TOKEN_HOST}`, req.body.serviceId, req.user.id); + const authorizeHost = await gladys.variable.getValue( + `${OAUTH2.VARIABLE.AUTHORIZE_HOST}`, + req.body.serviceId, + req.user.id, + ); + const authorizePath = await gladys.variable.getValue( + `${OAUTH2.VARIABLE.AUTHORIZE_PATH}`, req.body.serviceId, req.user.id, ); + const integrationScope = await gladys.variable.getValue( + `${OAUTH2.VARIABLE.INTEGRATION_SCOPE}`, + req.body.serviceId, + req.user.id, + ); + const redirectUriSuffix = await gladys.variable.getValue( + `${OAUTH2.VARIABLE.REDIRECT_URI_SUFFIX}`, + req.body.serviceId, + req.user.id, + ); + + // Get variale client id and client secret + const clientId = await gladys.variable.getValue(`${OAUTH2.VARIABLE.CLIENT_ID}`, req.body.serviceId, req.user.id); const secretId = await gladys.variable.getValue( - `${req.body.integrationName.toUpperCase()}_SECRET_ID`, + `${OAUTH2.VARIABLE.CLIENT_SECRET}`, req.body.serviceId, req.user.id, ); @@ -59,29 +70,40 @@ module.exports = function OAuth2Controller(gladys) { /** * @description Build an authorization uri to get an access token. - * @api {post} /api/v1/service/oauth2/client/token-access-uri Build an getToken uri (to get token access) - * @apiName buildTokenAccessUri + * @api {post} /api/v1/service/oauth2/client/access-token-uri Build an getToken uri (to get token access) + * @apiName buildAccesTokenUri * @apiGroup OAuth2 */ - async function buildTokenAccessUri(req, res) { + async function buildAccesTokenUri(req, res) { // Find provider configuration - const currentProvider = providers[req.body.integrationName]; - const { tokenHost } = currentProvider; - const { tokenPath } = currentProvider; - const { authorizeHost } = currentProvider; - const { authorizePath } = currentProvider; - const { grantType } = currentProvider; - const { redirectUriSuffix } = currentProvider; + const tokenHost = await gladys.variable.getValue(`${OAUTH2.VARIABLE.TOKEN_HOST}`, req.body.serviceId, req.user.id); + const tokenPath = await gladys.variable.getValue(`${OAUTH2.VARIABLE.TOKEN_PATH}`, req.body.serviceId, req.user.id); + const authorizeHost = await gladys.variable.getValue( + `${OAUTH2.VARIABLE.AUTHORIZE_HOST}`, + req.body.serviceId, + req.user.id, + ); + const authorizePath = await gladys.variable.getValue( + `${OAUTH2.VARIABLE.AUTHORIZE_PATH}`, + req.body.serviceId, + req.user.id, + ); + const grantType = await gladys.variable.getValue(`${OAUTH2.VARIABLE.GRANT_TYPE}`, req.body.serviceId, req.user.id); + const redirectUriSuffix = await gladys.variable.getValue( + `${OAUTH2.VARIABLE.REDIRECT_URI_SUFFIX}`, + req.body.serviceId, + req.user.id, + ); const { authorizationCode } = req.body; const clientId = await gladys.variable.getValue( - `${req.body.integrationName.toUpperCase()}_CLIENT_ID`, + `${req.body.integrationName.toUpperCase()}${OAUTH2.VARIABLE.CLIENT_ID}`, req.body.serviceId, req.user.id, ); const secretId = await gladys.variable.getValue( - `${req.body.integrationName.toUpperCase()}_SECRET_ID`, + `${req.body.integrationName.toUpperCase()}${OAUTH2.VARIABLE.CLIENT_SECRET}`, req.body.serviceId, req.user.id, ); @@ -114,7 +136,7 @@ module.exports = function OAuth2Controller(gladys) { // Save accessToken await gladys.variable.setValue( - `${req.body.integrationName.toUpperCase()}_ACCESS_TOKEN`, + `${req.body.integrationName.toUpperCase()}${OAUTH2.VARIABLE.ACCESS_TOKEN}`, JSON.stringify(authResult), req.body.serviceId, req.user.id, @@ -136,19 +158,14 @@ module.exports = function OAuth2Controller(gladys) { /** * @description Return the current integration config. - * @api {get} /api/v1/service/oauth2/client/current-config Return the current integration config. + * @api {get} /api/v1/service/oauth2/client Return the current integration config. * @apiName getCurrentConfig * @apiGroup oauth2 */ async function getCurrentConfig(req, res) { - const { integrationName } = req.query; const { serviceId } = req.query; - const resultClientId = await gladys.variable.getValue( - `${integrationName.toUpperCase()}_CLIENT_ID`, - serviceId, - req.user.id, - ); + const resultClientId = await gladys.variable.getValue(`${OAUTH2.VARIABLE.CLIENT_ID}`, serviceId, req.user.id); res.json({ success: true, @@ -158,7 +175,7 @@ module.exports = function OAuth2Controller(gladys) { return Object.freeze({ buildAuthorizationUri: asyncMiddleware(buildAuthorizationUri), - buildTokenAccessUri: asyncMiddleware(buildTokenAccessUri), + buildAccesTokenUri: asyncMiddleware(buildAccesTokenUri), getCurrentConfig: asyncMiddleware(getCurrentConfig), }); }; diff --git a/server/api/routes.js b/server/api/routes.js index b51a3384ca..a02687eb0f 100644 --- a/server/api/routes.js +++ b/server/api/routes.js @@ -18,6 +18,7 @@ const SceneController = require('./controllers/scene.controller'); const SystemController = require('./controllers/system.controller'); const VariableController = require('./controllers/variable.controller'); const WeatherController = require('./controllers/weather.controller'); +const OAuth2Controller = require('./controllers/oauth2.controller'); /** * @description Return object of routes. @@ -47,6 +48,7 @@ function getRoutes(gladys) { const sceneController = SceneController(gladys); const systemController = SystemController(gladys); const weatherController = WeatherController(gladys); + const oauth2Controller = OAuth2Controller(gladys); const routes = {}; @@ -495,6 +497,19 @@ function getRoutes(gladys) { authenticated: true, controller: weatherController.getByHouse, }, + // oauth2 + 'post /api/v1/service/oauth2/client/authorization-uri': { + authenticated: true, + controller: oauth2Controller.buildAuthorizationUri, + }, + 'post /api/v1/service/oauth2/client/access-token-uri': { + authenticated: true, + controller: oauth2Controller.buildAccesTokenUri, + }, + 'get /api/v1/service/oauth2/client': { + authenticated: true, + controller: oauth2Controller.getCurrentConfig, + }, }; Object.assign(routes, coreRoutes); diff --git a/server/config/oauth2/providers.json b/server/config/oauth2/providers.json deleted file mode 100644 index d4afda1cfe..0000000000 --- a/server/config/oauth2/providers.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "test": { - "tokenHost": "http://localhost:9292", - "tokenPath": "/oauth2/token", - "authorizeHost": "http://localhost:9292", - "authorizePath": "/oauth2_user/authorize2", - "integrationScope": "user.info,user.metrics,user.activity,user.sleepevents", - "grantType": "authorization_code", - "redirectUriSuffix": "dashboard/integration/health/test/settings" - } -} diff --git a/server/lib/oauth2/index.js b/server/lib/oauth2/index.js index fc754c6573..73744be74c 100755 --- a/server/lib/oauth2/index.js +++ b/server/lib/oauth2/index.js @@ -1,13 +1,11 @@ -const { executeQuery } = require('./oauth2.executeQuery'); -const { saveVar } = require('./oauth2.saveVar'); -const { deleteVar } = require('./oauth2.deleteVar'); +const { executeOauth2HTTPQuery } = require('./oauth2.executeOauth2HTTPQuery'); +const { deleteClient } = require('./oauth2.deleteClient'); const OAuth2Manager = function OAuth2Manager(gladys) { this.gladys = gladys; }; -OAuth2Manager.prototype.executeQuery = executeQuery; -OAuth2Manager.prototype.saveVar = saveVar; -OAuth2Manager.prototype.deleteVar = deleteVar; +OAuth2Manager.prototype.executeOauth2HTTPQuery = executeOauth2HTTPQuery; +OAuth2Manager.prototype.deleteClient = deleteClient; module.exports = OAuth2Manager; diff --git a/server/lib/oauth2/oauth2.deleteVar.js b/server/lib/oauth2/oauth2.deleteClient.js similarity index 53% rename from server/lib/oauth2/oauth2.deleteVar.js rename to server/lib/oauth2/oauth2.deleteClient.js index 8770641105..a9f361b409 100755 --- a/server/lib/oauth2/oauth2.deleteVar.js +++ b/server/lib/oauth2/oauth2.deleteClient.js @@ -1,23 +1,23 @@ const logger = require('../../utils/logger'); +const { OAUTH2 } = require('../../utils/constants'); /** * @description Delete client_id and secrei_id of current oauth2 integration. - * @param {string} integrationName - Name of oauth2 integration. * @param {string} serviceId - Gladys serviceId of current integration. * @param {string} userId - Gladys userId of current session. * @returns {Promise} Resolve with current integration service id. * @example - * oauth2.deleteVar( - * integrationName: 'withings', + * oauth2.deleteClient( * userId: fd81vs687f0bf3414e0fe3facfba7be9455109409a' + * serviceId: 'ffsdvs687f0bf3414e0fe3facfba7be945510fds09a' * } * ); */ -async function deleteVar(integrationName, serviceId, userId) { +async function deleteClient(serviceId, userId) { try { - await this.gladys.variable.destroy(`${integrationName.toUpperCase()}_CLIENT_ID`, serviceId, userId); - await this.gladys.variable.destroy(`${integrationName.toUpperCase()}_SECRET_ID`, serviceId, userId); - await this.gladys.variable.destroy(`${integrationName.toUpperCase()}_ACCESS_TOKEN`, serviceId, userId); + await this.gladys.variable.destroy(`${OAUTH2.VARIABLE.CLIENT_ID}`, serviceId, userId); + await this.gladys.variable.destroy(`${OAUTH2.VARIABLE.CLIENT_SECRET}`, serviceId, userId); + await this.gladys.variable.destroy(`${OAUTH2.VARIABLE.ACCESS_TOKEN}`, serviceId, userId); } catch (error) { logger.error(error.message); return { success: false, errorMsg: error.message }; @@ -27,5 +27,5 @@ async function deleteVar(integrationName, serviceId, userId) { } module.exports = { - deleteVar, + deleteClient, }; diff --git a/server/lib/oauth2/oauth2.executeQuery.js b/server/lib/oauth2/oauth2.executeOauth2HTTPQuery.js similarity index 67% rename from server/lib/oauth2/oauth2.executeQuery.js rename to server/lib/oauth2/oauth2.executeOauth2HTTPQuery.js index 1ec6ed2e8f..5f382910a7 100644 --- a/server/lib/oauth2/oauth2.executeQuery.js +++ b/server/lib/oauth2/oauth2.executeOauth2HTTPQuery.js @@ -2,34 +2,30 @@ const queryString = require('query-string'); const { ClientCredentials } = require('simple-oauth2'); const { default: axios } = require('axios'); const logger = require('../../utils/logger'); -const providers = require('../../config/oauth2/providers.json'); +const { OAUTH2 } = require('../../utils/constants'); /** * @description Refresh Oauth2 token in case of it expired . * @param {string} serviceId - Gladys service id call method. - * @param {string} integrationName - Name of oauth2 integration. * @param {Object} gladys - Current gladys instance. * @param {string} userId - Gladys userId of current session. * @returns {Object} Response of oauth2 refresh token query . * @example * oauth2.refreshTokenAccess('7fdsf4s68r4gfr68f4r63csd7f6f4c3r85', - * 'withings', {...}, '78v4f3df83g74v1fsd8375f63gvrf5c'); + * {...}, '78v4f3df83g74v1fsd8375f63gvrf5c'); */ -async function refreshTokenAccess(serviceId, integrationName, gladys, userId) { - const clientId = await gladys.variable.getValue(`${integrationName.toUpperCase()}_CLIENT_ID`, serviceId, userId); - const secretId = await gladys.variable.getValue(`${integrationName.toUpperCase()}_SECRET_ID`, serviceId, userId); - const accessToken = JSON.parse( - await gladys.variable.getValue(`${integrationName.toUpperCase()}_ACCESS_TOKEN`, serviceId, userId), - ); +async function refreshTokenAccess(serviceId, gladys, userId) { + const clientId = await gladys.variable.getValue(`${OAUTH2.VARIABLE.CLIENT_ID}`, serviceId, userId); + const secretId = await gladys.variable.getValue(`${OAUTH2.VARIABLE.CLIENT_SECRET}`, serviceId, userId); + const accessToken = JSON.parse(await gladys.variable.getValue(`${OAUTH2.VARIABLE.ACCESS_TOKEN}`, serviceId, userId)); logger.trace('accessToken: ', accessToken); // Find provider configuration - const currentProvider = providers[integrationName]; - const { tokenHost } = currentProvider; - const { tokenPath } = currentProvider; - const { authorizeHost } = currentProvider; - const { authorizePath } = currentProvider; - const { integrationScope } = currentProvider; + const tokenHost = await gladys.variable.getValue(`${OAUTH2.VARIABLE.TOKEN_HOST}`, serviceId, userId); + const tokenPath = await gladys.variable.getValue(`${OAUTH2.VARIABLE.TOKEN_PATH}`, serviceId, userId); + const authorizeHost = await gladys.variable.getValue(`${OAUTH2.VARIABLE.AUTHORIZE_HOST}`, serviceId, userId); + const authorizePath = await gladys.variable.getValue(`${OAUTH2.VARIABLE.AUTHORIZE_PATH}`, serviceId, userId); + const integrationScope = await gladys.variable.getValue(`${OAUTH2.VARIABLE.INTEGRATION_SCOPE}`, serviceId, userId); // Init credentials based on integration name const credentials = { @@ -47,7 +43,7 @@ async function refreshTokenAccess(serviceId, integrationName, gladys, userId) { json: true, }, }; - + console.log('credentials: ', credentials); try { const client = new ClientCredentials(credentials); let authResult = await client.createToken(accessToken); @@ -66,7 +62,7 @@ async function refreshTokenAccess(serviceId, integrationName, gladys, userId) { // Save new accessToken await gladys.variable.setValue( - `${integrationName.toUpperCase()}_ACCESS_TOKEN`, + `${OAUTH2.VARIABLE.ACCESS_TOKEN}`, JSON.stringify(authResult), serviceId, userId, @@ -88,19 +84,18 @@ async function refreshTokenAccess(serviceId, integrationName, gladys, userId) { * @description Execute a query to Oauth2 API. * @param {string} serviceId - Gladys service id call method. * @param {string} userId - Gladys userId of current session. - * @param {string} integrationName - Oauth2 integration name. * @param {string} queryType - Method of call ('get' or 'post'). * @param {string} queryUrl - Url to send query. * @param {string} queryParams - Array of query params. * @returns {Promise} Result of query . * @example - * oauth2.executeQuery('7fdsf4s68r4gfr68f4r63csd7f6f4c3r85', '78v4f3df83g74v1fsd8375f63gvrf5c', 'withings' + * oauth2.executeOauth2HTTPQuery('7fdsf4s68r4gfr68f4r63csd7f6f4c3r85', '78v4f3df83g74v1fsd8375f63gvrf5c', 'withings' * 'Bearer', 'get', 'http://localhost/apiname',[...]); */ -async function executeQuery(serviceId, userId, integrationName, queryType, queryUrl, queryParams) { +async function executeOauth2HTTPQuery(serviceId, userId, queryType, queryUrl, queryParams) { // Refresh token access if needed - const accesToken = await refreshTokenAccess(serviceId, integrationName, this.gladys, userId); - + const accesToken = await refreshTokenAccess(serviceId, this.gladys, userId); + console.log('accesToken: ', accesToken); const headerConfig = { headers: { Authorization: `${accesToken.token.token_type} ${accesToken.token.access_token}`, @@ -132,5 +127,5 @@ async function executeQuery(serviceId, userId, integrationName, queryType, query } module.exports = { - executeQuery, + executeOauth2HTTPQuery, }; diff --git a/server/lib/oauth2/oauth2.saveVar.js b/server/lib/oauth2/oauth2.saveVar.js deleted file mode 100755 index 7df9955408..0000000000 --- a/server/lib/oauth2/oauth2.saveVar.js +++ /dev/null @@ -1,35 +0,0 @@ -const logger = require('../../utils/logger'); - -/** - * @description Save client_id and secrei_id of current oauth2 integration. - * @param {string} clientId - The client_id of oauth2. - * @param {string} secretId - The secret_id of oauth2. - * @param {string} integrationName - Name of oauth2 integration. - * @param {string} serviceId - Gladys serviceId of current integration. - * @param {string} userId - Gladys userId of current session. - * @returns {Promise} Resolve with current integration service id. - * @example - * oauth2.saveVar( - * 'b2f2c27f0bf3414e0fe3facfba7be9455109409a', - * '9d41fe14fz23414e0fe3facfba7be9455109409a', - * 'withings', - * ffsdvs687f0bf3414e0fe3facfba7be945510fds09a' - * fd81vs687f0bf3414e0fe3facfba7be9455109409a' - * } - * ); - */ -async function saveVar(clientId, secretId, integrationName, serviceId, userId) { - try { - await this.gladys.variable.setValue(`${integrationName.toUpperCase()}_CLIENT_ID`, clientId, serviceId, userId); - await this.gladys.variable.setValue(`${integrationName.toUpperCase()}_SECRET_ID`, secretId, serviceId, userId); - } catch (error) { - logger.error(error.message); - return { success: false, errorMsg: error.message }; - } - - return { success: true }; -} - -module.exports = { - saveVar, -}; diff --git a/server/seeders/20190226025931-variable.js b/server/seeders/20190226025931-variable.js index cd80733dee..8de1e5e587 100644 --- a/server/seeders/20190226025931-variable.js +++ b/server/seeders/20190226025931-variable.js @@ -39,19 +39,82 @@ module.exports = { }, { id: '82acb636-47a1-4445-ab23-55947e38875a', - name: 'TEST_CLIENT_ID', + name: 'OAUTH2_CLIENT_ID', service_id: 'a810b8db-6d04-4697-bed3-c4b72c996279', user_id: '0cd30aef-9c4e-4a23-88e3-3547971296e5', - value: 'TEST_CLIENT_ID', + value: 'OAUTH2_CLIENT_ID', created_at: '2019-02-12 07:49:07.556 +00:00', updated_at: '2019-02-12 07:49:07.556 +00:00', }, { id: '8371e211-1951-4695-b137-2d0182868f07', - name: 'TEST_SECRET_ID', + name: 'OAUTH2_CLIENT_SECRET', service_id: 'a810b8db-6d04-4697-bed3-c4b72c996279', user_id: '0cd30aef-9c4e-4a23-88e3-3547971296e5', - value: 'TEST_SECRET_ID', + value: 'OAUTH2_CLIENT_SECRET', + created_at: '2019-02-12 07:49:07.556 +00:00', + updated_at: '2019-02-12 07:49:07.556 +00:00', + }, + { + id: '837seg11-1611-4695-b137-2d0182868f07', + name: 'OAUTH2_TOKEN_HOST', + service_id: 'a810b8db-6d04-4697-bed3-c4b72c996279', + user_id: '0cd30aef-9c4e-4a23-88e3-3547971296e5', + value: 'http://localhost:9292', + created_at: '2019-02-12 07:49:07.556 +00:00', + updated_at: '2019-02-12 07:49:07.556 +00:00', + }, + { + id: '837seg11-8251-4695-b137-2d0182868f07', + name: 'OAUTH2_TOKEN_PATH', + service_id: 'a810b8db-6d04-4697-bed3-c4b72c996279', + user_id: '0cd30aef-9c4e-4a23-88e3-3547971296e5', + value: '/oauth2/token', + created_at: '2019-02-12 07:49:07.556 +00:00', + updated_at: '2019-02-12 07:49:07.556 +00:00', + }, + { + id: '837seg11-7551-4695-b137-2d0182868f07', + name: 'OAUTH2_AUTHORIZE_HOST', + service_id: 'a810b8db-6d04-4697-bed3-c4b72c996279', + user_id: '0cd30aef-9c4e-4a23-88e3-3547971296e5', + value: 'http://localhost:9292', + created_at: '2019-02-12 07:49:07.556 +00:00', + updated_at: '2019-02-12 07:49:07.556 +00:00', + }, + { + id: '837seg11-1932-4695-b137-2d0182868f07', + name: 'OAUTH2_AUTHORIZE_PATH', + service_id: 'a810b8db-6d04-4697-bed3-c4b72c996279', + user_id: '0cd30aef-9c4e-4a23-88e3-3547971296e5', + value: '/oauth2_user/authorize2', + created_at: '2019-02-12 07:49:07.556 +00:00', + updated_at: '2019-02-12 07:49:07.556 +00:00', + }, + { + id: '837seg11-5951-4695-b137-2d0182868f07', + name: 'OAUTH2_INTEGRATION_SCOPE', + service_id: 'a810b8db-6d04-4697-bed3-c4b72c996279', + user_id: '0cd30aef-9c4e-4a23-88e3-3547971296e5', + value: 'user.info,user.metrics,user.activity,user.sleepevents', + created_at: '2019-02-12 07:49:07.556 +00:00', + updated_at: '2019-02-12 07:49:07.556 +00:00', + }, + { + id: '837seg11-1631-4695-b137-2d0182868f07', + name: 'OAUTH2_GRANT_TYPE', + service_id: 'a810b8db-6d04-4697-bed3-c4b72c996279', + user_id: '0cd30aef-9c4e-4a23-88e3-3547971296e5', + value: 'authorization_code', + created_at: '2019-02-12 07:49:07.556 +00:00', + updated_at: '2019-02-12 07:49:07.556 +00:00', + }, + { + id: '837seg11-1258-4695-b137-2d0182868f07', + name: 'OAUTH2_REDIRECT_URI_SUFFIX', + service_id: 'a810b8db-6d04-4697-bed3-c4b72c996279', + user_id: '0cd30aef-9c4e-4a23-88e3-3547971296e5', + value: 'dashboard/integration/health/test/settings', created_at: '2019-02-12 07:49:07.556 +00:00', updated_at: '2019-02-12 07:49:07.556 +00:00', }, diff --git a/server/test/controllers/oauth2/oauth2.controller.test.js b/server/test/controllers/oauth2/oauth2.controller.test.js index b95459ba66..30ccbe4e79 100755 --- a/server/test/controllers/oauth2/oauth2.controller.test.js +++ b/server/test/controllers/oauth2/oauth2.controller.test.js @@ -43,7 +43,7 @@ describe('POST /api/v1/service/oauth2/client/authorization-uri', () => { }); }); -describe('POST /api/v1/service/oauth2/client/token-access-uri', () => { +describe('POST /api/v1/service/oauth2/client/access-token-uri', () => { it('should get token access uri', async () => { const req = { integrationName: 'test', @@ -55,7 +55,7 @@ describe('POST /api/v1/service/oauth2/client/token-access-uri', () => { }; await buildOauth2Request - .post('/api/v1/service/oauth2/client/token-access-uri') + .post('/api/v1/service/oauth2/client/access-token-uri') .send(req) .expect('Content-Type', /json/) .expect(200) @@ -67,7 +67,7 @@ describe('POST /api/v1/service/oauth2/client/token-access-uri', () => { }); // failled call -describe('POST /api/v1/service/oauth2/client/token-access-uri', () => { +describe('POST /api/v1/service/oauth2/client/access-token-uri', () => { it('should get token access uri', async () => { const req = { integrationName: 'test', @@ -76,7 +76,7 @@ describe('POST /api/v1/service/oauth2/client/token-access-uri', () => { }; await buildOauth2Request - .post('/api/v1/service/oauth2/client/token-access-uri') + .post('/api/v1/service/oauth2/client/access-token-uri') .send(req) .expect('Content-Type', /json/) .expect(200) @@ -87,7 +87,7 @@ describe('POST /api/v1/service/oauth2/client/token-access-uri', () => { }); }); -describe('GET /api/v1/service/oauth2/client/current-config', () => { +describe('GET /api/v1/service/oauth2/client', () => { it('should get token access uri', async () => { const req = { integrationName: 'test', @@ -98,7 +98,7 @@ describe('GET /api/v1/service/oauth2/client/current-config', () => { }; await buildOauth2Request - .get('/api/v1/service/oauth2/client/current-config') + .get('/api/v1/service/oauth2/client') .query(req) .expect('Content-Type', /json/) .expect(200) diff --git a/server/test/controllers/oauth2/oauth2.request.test.js b/server/test/controllers/oauth2/oauth2.request.test.js index 437c99c79f..2459be5139 100755 --- a/server/test/controllers/oauth2/oauth2.request.test.js +++ b/server/test/controllers/oauth2/oauth2.request.test.js @@ -11,28 +11,24 @@ const header = `Bearer ${token}`; const referer = 'http://localhost:9090'; const buildOauth2Request = { - // @ts-ignore get: (url) => request(TEST_BACKEND_APP) .get(url) .set('Accept', 'application/json') .set('Authorization', header) .set('referer', referer), - // @ts-ignore post: (url) => request(TEST_BACKEND_APP) .post(url) .set('Accept', 'application/json') .set('Authorization', header) .set('referer', referer), - // @ts-ignore patch: (url) => request(TEST_BACKEND_APP) .patch(url) .set('Accept', 'application/json') .set('Authorization', header) .set('referer', referer), - // @ts-ignore delete: (url) => request(TEST_BACKEND_APP) .delete(url) @@ -42,22 +38,18 @@ const buildOauth2Request = { }; const unBuildOauth2RequestRequest = { - // @ts-ignore get: (url) => request(TEST_BACKEND_APP) .get(url) .set('Accept', 'application/json'), - // @ts-ignore post: (url) => request(TEST_BACKEND_APP) .post(url) .set('Accept', 'application/json'), - // @ts-ignore patch: (url) => request(TEST_BACKEND_APP) .patch(url) .set('Accept', 'application/json'), - // @ts-ignore delete: (url) => request(TEST_BACKEND_APP) .delete(url) diff --git a/server/test/lib/oauth2/oauth2manager.test.js b/server/test/lib/oauth2/oauth2manager.test.js index 199ddf0ae2..aa52aa3ec4 100755 --- a/server/test/lib/oauth2/oauth2manager.test.js +++ b/server/test/lib/oauth2/oauth2manager.test.js @@ -4,32 +4,51 @@ const { fake } = require('sinon'); const OAuth2Manager = require('../../../lib/oauth2'); const logger = require('../../../utils/logger'); +const { OAUTH2 } = require('../../../utils/constants'); const server = new OAuth2Server(); -const serviceId = 'fdsqfds-f46fdqs5f2-f4d5sqf2sd'; -const userId = 'fsdqf4d-4896fsd-fsdq454454sd-fsd'; -const integrationName = 'test'; -const clientId = 'fsdqf4d-4896fsd-fsdq454454sd-fsd'; -const secretId = 'fsdqf4d-4896fsd-fsdq454454sd-fsd'; +const testServiceId = 'a810b8db-6d04-4697-bed3-c4b72c996279'; +const testUserId = '0cd30aef-9c4e-4a23-88e3-3547971296e5'; const gladys = { variable: { - getValue: fake.returns( - '{"access_token":"b96a86b654acb01c2aeb4d5a39f10ff9c964f8e4","expires_in":10800,' + - '"token_type":"Bearer",' + - '"scope":"user.info,user.metrics,user.activity,user.sleepevents",' + - '"refresh_token":"11757dc7fd8d25889f5edfd373d1f525f53d4942",' + - '"userid":"33669966",' + - '"expires_at":"2020-11-13T20:46:50.042Z"}', - ), + getValue: function getValue(key, serviceId, userId) { + switch (key) { + case `${OAUTH2.VARIABLE.TOKEN_HOST}`: + return 'http://localhost:9292'; + case `${OAUTH2.VARIABLE.TOKEN_PATH}`: + return '/oauth2/token'; + case `${OAUTH2.VARIABLE.AUTHORIZE_HOST}`: + return 'http://localhost:9292'; + case `${OAUTH2.VARIABLE.AUTHORIZE_PATH}`: + return '/oauth2_user/authorize2'; + case `${OAUTH2.VARIABLE.INTEGRATION_SCOPE}`: + return 'user.info,user.metrics,user.activity,user.sleepevents'; + case `${OAUTH2.VARIABLE.GRANT_TYPE}`: + return 'authorization_code'; + case `${OAUTH2.VARIABLE.REDIRECT_URI_SUFFIX}`: + return 'dashboard/integration/health/test/settings'; + case `${OAUTH2.VARIABLE.ACCESS_TOKEN}`: + return ( + '{"access_token":"b96a86b654acb01c2aeb4d5a39f10ff9c964f8e4","expires_in":10800,' + + '"token_type":"Bearer",' + + '"scope":"user.info,user.metrics,user.activity,user.sleepevents",' + + '"refresh_token":"11757dc7fd8d25889f5edfd373d1f525f53d4942",' + + '"userid":"33669966",' + + '"expires_at":"2020-11-13T20:46:50.042Z"}' + ); + default: + return ''; + } + }, setValue: fake.returns(null), destroy: fake.returns(null), }, }; /** - * Verify componant to implement oauth2manager executeQuery + * Verify componant to implement oauth2manager executeOauth2HTTPQuery */ describe('oauth2manager test', () => { before(async function testBefore() { @@ -46,62 +65,49 @@ describe('oauth2manager test', () => { const manager = new OAuth2Manager(gladys); - it('oauth manager get executeQuery test ', async () => { + it('oauth manager get executeOauth2HTTPQuery test ', async () => { const queryType = 'get'; const queryUrl = 'http://localhost:9292/userinfo'; const queryParams = 'param1=testParam'; - const result = await manager.executeQuery(serviceId, userId, integrationName, queryType, queryUrl, queryParams); + const result = await manager.executeOauth2HTTPQuery(testServiceId, testUserId, queryType, queryUrl, queryParams); return assert.equal(result.status, '200'); }); - it('oauth manager post executeQuery test ', async () => { + it('oauth manager post executeOauth2HTTPQuery test ', async () => { const queryType = 'post'; const queryUrl = 'http://localhost:9292/revoke'; const queryParams = 'param1=testParam'; logger.debug(manager); - const result = await manager.executeQuery(serviceId, userId, integrationName, queryType, queryUrl, queryParams); + const result = await manager.executeOauth2HTTPQuery(testServiceId, testUserId, queryType, queryUrl, queryParams); return assert.equal(result.status, '200'); }); - it('oauth manager get error executeQuery test ', async () => { + it('oauth manager get error executeOauth2HTTPQuery test ', async () => { const queryType = 'get'; const queryUrl = 'http://localhost:9292/revoke'; const queryParams = 'param1=testParam'; - const result = await manager.executeQuery(serviceId, userId, integrationName, queryType, queryUrl, queryParams); + const result = await manager.executeOauth2HTTPQuery(testServiceId, testUserId, queryType, queryUrl, queryParams); return assert.equal(result, null); }); - it('oauth manager get error executeQuery test (bad integration name) ', async () => { + it('oauth manager get error executeOauth2HTTPQuery test (bad integration name) ', async () => { const queryType = 'get'; const queryUrl = 'http://localhost:9292/revoke'; const queryParams = 'param1=testParam'; - const result = await manager.executeQuery( - serviceId, - 'fakeUserId', - integrationName, - queryType, - queryUrl, - queryParams, - ); + const result = await manager.executeOauth2HTTPQuery(testServiceId, 'fakeUserId', queryType, queryUrl, queryParams); return assert.equal(result, null); }); - it('oauth manager get error saveVar test ', async () => { - const result = await manager.saveVar(clientId, secretId, integrationName, serviceId, userId); - logger.debug(result); - return assert.equal(result.success, true); - }); - it('oauth manager get error deleteVar test ', async () => { - const result = await manager.deleteVar(integrationName, serviceId, userId); + const result = await manager.deleteClient(testServiceId, testUserId); logger.debug(result); return assert.equal(result.success, true); }); @@ -111,14 +117,8 @@ describe('oauth2manager failled test', () => { // check error const manager = new OAuth2Manager(null); - it('oauth manager get error saveVar failled test ', async () => { - const result = await manager.saveVar(clientId, secretId, integrationName, serviceId, userId); - logger.debug(result); - return assert.equal(result.success, false); - }); - it('oauth manager get error deleteVar failled test ', async () => { - const result = await manager.deleteVar(integrationName, serviceId, userId); + const result = await manager.deleteClient(testServiceId, testUserId); logger.debug(result); return assert.equal(result.success, false); }); diff --git a/server/utils/constants.js b/server/utils/constants.js index 4964f64def..90be2084b8 100644 --- a/server/utils/constants.js +++ b/server/utils/constants.js @@ -492,6 +492,21 @@ const ERROR_MESSAGES = { NO_CONNECTED_TO_THE_INTERNET: 'NO_CONNECTED_TO_THE_INTERNET', }; +const OAUTH2 = { + VARIABLE: { + CLIENT_ID: 'OAUTH2_CLIENT_ID', + CLIENT_SECRET: 'OAUTH2_CLIENT_SECRET', + ACCESS_TOKEN: 'OAUTH2_ACCESS_TOKEN', + TOKEN_HOST: 'OAUTH2_TOKEN_HOST', + TOKEN_PATH: 'OAUTH2_TOKEN_PATH', + AUTHORIZE_HOST: 'OAUTH2_AUTHORIZE_HOST', + AUTHORIZE_PATH: 'OAUTH2_AUTHORIZE_PATH', + INTEGRATION_SCOPE: 'OAUTH2_INTEGRATION_SCOPE', + GRANT_TYPE: 'OAUTH2_GRANT_TYPE', + REDIRECT_URI_SUFFIX: 'OAUTH2_REDIRECT_URI_SUFFIX', + }, +}; + const createList = (obj) => { const list = []; Object.keys(obj).forEach((key) => { @@ -567,4 +582,6 @@ module.exports.DASHBOARD_BOX_TYPE_LIST = DASHBOARD_BOX_TYPE_LIST; module.exports.ERROR_MESSAGES = ERROR_MESSAGES; +module.exports.OAUTH2 = OAUTH2; + module.exports.WEATHER_UNITS = WEATHER_UNITS; From 2578d58ef9ec7586ed7df07e2c0dd3d3c11a62fc Mon Sep 17 00:00:00 2001 From: Euguuu Date: Sun, 21 Nov 2021 17:40:36 +0100 Subject: [PATCH 006/164] fix synch package-lock.json --- server/package-lock.json | 221 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 221 insertions(+) diff --git a/server/package-lock.json b/server/package-lock.json index 30ab0cd9c6..5a7125b074 100644 --- a/server/package-lock.json +++ b/server/package-lock.json @@ -869,6 +869,19 @@ "@hapi/hoek": "^9.0.0" } }, + "@hapi/boom": { + "version": "9.1.4", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-9.1.4.tgz", + "integrity": "sha512-Ls1oH8jaN1vNsqcaHVYJrKmgMcKsC1wcp8bujvXrHaAqD2iDYq3HoOwsxwo09Cuda5R5nC0o0IxlrlTuvPuzSw==", + "requires": { + "@hapi/hoek": "9.x.x" + } + }, + "@hapi/bourne": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-2.0.0.tgz", + "integrity": "sha512-WEezM1FWztfbzqIUbsDzFRVMxSoLy3HugVcux6KDDtTqzPsLE8NDRHfXvev66aH1i2oOKKar3/XDjbvh/OUBdg==" + }, "@hapi/formula": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@hapi/formula/-/formula-2.0.0.tgz", @@ -912,6 +925,16 @@ "@hapi/hoek": "^9.0.0" } }, + "@hapi/wreck": { + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/@hapi/wreck/-/wreck-17.1.0.tgz", + "integrity": "sha512-nx6sFyfqOpJ+EFrHX+XWwJAxs3ju4iHdbB/bwR8yTNZOiYmuhA8eCe7lYPtYmb4j7vyK/SlbaQsmTtUrMvPEBw==", + "requires": { + "@hapi/boom": "9.x.x", + "@hapi/bourne": "2.x.x", + "@hapi/hoek": "9.x.x" + } + }, "@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -1681,6 +1704,24 @@ "xlsx": "^0.16.2" } }, + "@sideway/address": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.2.tgz", + "integrity": "sha512-idTz8ibqWFrPU8kMirL0CoPH/A29XOzzAzpyN3zQ4kAWnzmNfFmRaoMNN6VI8ske5M73HZyhIaW4OuSFIdM4oA==", + "requires": { + "@hapi/hoek": "^9.0.0" + } + }, + "@sideway/formula": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", + "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==" + }, + "@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" + }, "@sindresorhus/is": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", @@ -1748,6 +1789,15 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.32.tgz", "integrity": "sha512-/Ctrftx/zp4m8JOujM5ZhwzlWLx22nbQJiVqz8/zE15gOeEW+uly3FSX4fGFpcfEvFzXcMCJwq9lGVWgyARXhg==" }, + "@types/node-jose": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/@types/node-jose/-/node-jose-1.1.8.tgz", + "integrity": "sha512-AFcArbplUaO+DqGVEPaiz/guw3uUA+dRHjaj26EEDF0DmTEPUd3dEdfdJMUx4kD65EAR3TnI1iHIcb31+Ko87Q==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/prop-types": { "version": "15.7.3", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz", @@ -2340,6 +2390,21 @@ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" }, + "base64url": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz", + "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==", + "dev": true + }, + "basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, "bcrypt": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.0.1.tgz", @@ -3083,6 +3148,16 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, "crc-32": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz", @@ -3193,6 +3268,11 @@ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" }, + "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=" + }, "decompress-response": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", @@ -3579,6 +3659,12 @@ "integrity": "sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw=", "dev": true }, + "es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "dev": true + }, "es6-symbol": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", @@ -4382,6 +4468,11 @@ "to-regex-range": "^5.0.1" } }, + "filter-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", + "integrity": "sha1-mzERErxsYSehbgFsbF1/GeCAXFs=" + }, "finalhandler": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", @@ -5940,6 +6031,12 @@ "integrity": "sha512-gKO5uExCXvSm6zbF562EvM+rd1kQDnB9AZBbiQVzf1ZmdDpxUSvpnAaVOP83N/31mRK8Ml8/VE8DMvsAZQ+7wg==", "dev": true }, + "long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", + "dev": true + }, "long-timeout": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/long-timeout/-/long-timeout-0.1.1.tgz", @@ -6639,6 +6736,12 @@ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" }, + "node-forge": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", + "dev": true + }, "node-gyp": { "version": "3.8.0", "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", @@ -6687,6 +6790,23 @@ } } }, + "node-jose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/node-jose/-/node-jose-2.0.0.tgz", + "integrity": "sha512-j8zoFze1gijl8+DK/dSXXqX7+o2lMYv1XS+ptnXgGV/eloQaqq1YjNtieepbKs9jBS4WTnMOqyKSaQuunJzx0A==", + "dev": true, + "requires": { + "base64url": "^3.0.1", + "buffer": "^5.5.0", + "es6-promise": "^4.2.8", + "lodash": "^4.17.15", + "long": "^4.0.0", + "node-forge": "^0.10.0", + "pako": "^1.0.11", + "process": "^0.11.10", + "uuid": "^3.3.3" + } + }, "node-nlp": { "version": "4.19.7", "resolved": "https://registry.npmjs.org/node-nlp/-/node-nlp-4.19.7.tgz", @@ -7428,6 +7548,31 @@ "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", "optional": true }, + "oauth2-mock-server": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/oauth2-mock-server/-/oauth2-mock-server-3.2.0.tgz", + "integrity": "sha512-L0GPEqsri4uW6pZSTS2CE4/T0dOvUkmoxpQCGhStqrGUs0VzgzLAqT5qGmMrDWsI0CzC+GK9dSaJsWh8kCEqxw==", + "dev": true, + "requires": { + "@types/node-jose": "^1.1.5", + "basic-auth": "^2.0.1", + "body-parser": "^1.19.0", + "cors": "^2.8.5", + "express": "^4.17.1", + "jsonwebtoken": "^8.5.1", + "lodash.isplainobject": "^4.0.6", + "node-jose": "^2.0.0", + "uuid": "^8.3.2" + }, + "dependencies": { + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + } + } + }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -7676,6 +7821,12 @@ "resolved": "https://registry.npmjs.org/pad-start/-/pad-start-1.0.2.tgz", "integrity": "sha1-I+W6s+lkRrYoFs/28VCXXwQNGxQ=" }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -7796,6 +7947,12 @@ "resolved": "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz", "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==" }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -7892,6 +8049,17 @@ "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" }, + "query-string": { + "version": "6.14.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.14.1.tgz", + "integrity": "sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==", + "requires": { + "decode-uri-component": "^0.2.0", + "filter-obj": "^1.1.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" + } + }, "queue": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.1.tgz", @@ -8470,6 +8638,49 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" }, + "simple-oauth2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/simple-oauth2/-/simple-oauth2-4.2.0.tgz", + "integrity": "sha512-AV62tGdq9JfLd/uveKpeNtQl+VVm89a35QKlwGuvisYIjCoz2ZmTGRGuSIGiYr+QUhSKJ5kYN1jq2BBa/ac/GQ==", + "requires": { + "@hapi/hoek": "^9.0.4", + "@hapi/wreck": "^17.0.0", + "debug": "^4.1.1", + "joi": "^17.3.0" + }, + "dependencies": { + "@hapi/hoek": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.1.tgz", + "integrity": "sha512-gfta+H8aziZsm8pZa0vj04KO6biEiisppNgA1kbJvFrrWu9Vm7eaUEy76DIxsuTaWvti5fkJVhllWc6ZTE+Mdw==" + }, + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "requires": { + "ms": "2.1.2" + } + }, + "joi": { + "version": "17.4.2", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.4.2.tgz", + "integrity": "sha512-Lm56PP+n0+Z2A2rfRvsfWVDXGEWjXxatPopkQ8qQ5mxCEhwHG+Ettgg5o98FFaxilOxozoa14cFhrE/hOzh/Nw==", + "requires": { + "@hapi/hoek": "^9.0.0", + "@hapi/topo": "^5.0.0", + "@sideway/address": "^4.1.0", + "@sideway/formula": "^3.0.0", + "@sideway/pinpoint": "^2.0.0" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, "simple-swizzle": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", @@ -8634,6 +8845,11 @@ "resolved": "https://registry.npmjs.org/split-ca/-/split-ca-1.0.1.tgz", "integrity": "sha1-bIOv82kvphJW4M0ZfgXp3hV2kaY=" }, + "split-on-first": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", + "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==" + }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -8741,6 +8957,11 @@ "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=" }, + "strict-uri-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", + "integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY=" + }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", From ab7810a77a8171c051571ecb05446ea65a15b9bd Mon Sep 17 00:00:00 2001 From: Euguuu Date: Sun, 28 Nov 2021 17:29:54 +0100 Subject: [PATCH 007/164] fix dep --- front/package-lock.json | 25 +++++++++++++++++++------ front/package.json | 1 + 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/front/package-lock.json b/front/package-lock.json index 1aae69921e..797a1adb4d 100644 --- a/front/package-lock.json +++ b/front/package-lock.json @@ -7875,8 +7875,7 @@ "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=", - "dev": true + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" }, "decompress-response": { "version": "3.3.0", @@ -9422,8 +9421,7 @@ "filter-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", - "integrity": "sha1-mzERErxsYSehbgFsbF1/GeCAXFs=", - "dev": true + "integrity": "sha1-mzERErxsYSehbgFsbF1/GeCAXFs=" }, "finalhandler": { "version": "1.1.2", @@ -18220,6 +18218,17 @@ "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", "dev": true }, + "query-string": { + "version": "6.14.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.14.1.tgz", + "integrity": "sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==", + "requires": { + "decode-uri-component": "^0.2.0", + "filter-obj": "^1.1.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" + } + }, "querystring": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", @@ -20325,8 +20334,7 @@ "split-on-first": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", - "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", - "dev": true + "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==" }, "split-string": { "version": "3.1.0", @@ -20461,6 +20469,11 @@ "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", "dev": true }, + "strict-uri-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", + "integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY=" + }, "string-length": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", diff --git a/front/package.json b/front/package.json index 8da6b8858e..33aaf6fc75 100644 --- a/front/package.json +++ b/front/package.json @@ -64,6 +64,7 @@ "preact-i18n": "^2.4.0-preactx", "preact-router": "^3.2.1", "qrcode": "^1.4.2", + "query-string": "^6.12.1", "react-big-calendar": "^0.22.1", "react-datepicker": "^3.8.0", "react-select": "^4.3.1", From 1ef11b603683cb249153ffddb3e5b64b21ecd55d Mon Sep 17 00:00:00 2001 From: Euguuu Date: Mon, 6 Dec 2021 21:53:10 +0100 Subject: [PATCH 008/164] add cypress test --- .../withings/devices/WithingsDeviceList.js | 561 ++++++++++++++++++ .../devices/WithingsDeviceListNoDevice.js | 29 + .../withings/settings/WithingsSettings.js | 77 +++ front/src/assets/images/withings/Aura_2.jpg | Bin 8342 -> 8870 bytes .../src/assets/images/withings/KidScale.jpeg | Bin 10744 -> 0 bytes front/src/assets/images/withings/KidScale.jpg | Bin 0 -> 6345 bytes .../images/withings/SmartBabyMonitor.jpg | Bin 10727 -> 11271 bytes .../assets/images/withings/body-black-kg.jpg | Bin 10169 -> 9913 bytes .../images/withings/body-plus-black-kg.jpg | Bin 15956 -> 12915 bytes .../images/withings/body-plus-white-kg.jpg | Bin 10102 -> 8399 bytes front/src/assets/images/withings/go.jpg | Bin 12795 -> 8114 bytes front/src/assets/images/withings/home.jpg | Bin 10430 -> 12363 bytes .../images/withings/sleep-analyzer-single.png | Bin 289297 -> 64957 bytes front/src/assets/images/withings/thermo-c.jpg | Bin 10341 -> 4680 bytes .../all/withings/device-page/actions.js | 2 +- server/services/withings/lib/withings.init.js | 2 +- 16 files changed, 669 insertions(+), 2 deletions(-) create mode 100644 front/cypress/integration/routes/integration/withings/devices/WithingsDeviceList.js create mode 100644 front/cypress/integration/routes/integration/withings/devices/WithingsDeviceListNoDevice.js create mode 100644 front/cypress/integration/routes/integration/withings/settings/WithingsSettings.js delete mode 100644 front/src/assets/images/withings/KidScale.jpeg create mode 100644 front/src/assets/images/withings/KidScale.jpg diff --git a/front/cypress/integration/routes/integration/withings/devices/WithingsDeviceList.js b/front/cypress/integration/routes/integration/withings/devices/WithingsDeviceList.js new file mode 100644 index 0000000000..3805075acb --- /dev/null +++ b/front/cypress/integration/routes/integration/withings/devices/WithingsDeviceList.js @@ -0,0 +1,561 @@ +describe('Withings device list', () => { + const deviceBody = { + name: 'Withings - Body', + external_id: 'c43dbbbd-1091-44e7-b122-68911483d28b', + selector: 'withings-body-c43dbbbd-1091-44e7-b122-68911483d28b', + should_poll: 1, + poll_frequency: 86400000, + features: [ + { + name: 'Battery', + category: 'battery', + type: 'integer', + external_id: 'c43dbbbd-1091-44e7-b122-68911483d28b', + selector: 'withings-battery-c43dbbbd-1091-44e7-b122-68911483d28b', + read_only: true, + keep_history: false, + has_feedback: false, + unit: 'percent', + min: 0, + max: 0 + }, + { + name: 'Weight', + category: 'health', + type: 'weight', + external_id: 'withings-Weight:c43dbbbd-1091-44e7-b122-68911483d28b:0d9226e1-e794-4d46-9d0e-ed91725a8c9e', + selector: 'withings-weight-c43dbbbd-1091-44e7-b122-68911483d28b', + read_only: true, + keep_history: true, + has_feedback: false, + unit: 'kg', + min: 0, + max: 100000 + } + ] + }; + + const deviceBodyPlus = { + name: 'Withings - Body+', + external_id: 'c43dbbbd-1091-44e7-b144-68911483d28b', + selector: 'withings-body+-c43dbbbd-1091-44e7-b144-68911483d28b', + should_poll: 1, + poll_frequency: 86400000, + features: [ + { + name: 'Battery', + category: 'battery', + type: 'integer', + external_id: 'c43dbbbd-1091-44e7-b144-68911483d28b', + selector: 'withings-battery-c43dbbbd-1091-44e7-b144-68911483d28b', + read_only: true, + keep_history: false, + has_feedback: false, + unit: 'percent', + min: 0, + max: 100 + }, + { + name: 'Weight', + category: 'health', + type: 'weight', + external_id: 'withings-Weight:c43dbbbd-1091-44e7-b144-68911483d28b:0d9226e1-e794-4d46-9d0e-ed91725a8c9e', + selector: 'withings-weight-c43dbbbd-1091-44e7-b144-68911483d28b', + read_only: true, + keep_history: true, + has_feedback: false, + unit: 'kg', + min: 0, + max: 100000 + }, + { + name: 'Fat Free Mass', + category: 'health', + type: 'fat-free-mass', + external_id: 'withings-Fat Free Mass:c43dbbbd-1091-44e7-b144-68911483d28b:0d9226e1-e794-4d46-9d0e-ed91725a8c9e', + selector: 'withings-Fat Free Mass-c43dbbbd-1091-44e7-b144-68911483d28b', + read_only: true, + keep_history: true, + has_feedback: false, + unit: 'kg', + min: 0, + max: 100000 + }, + { + name: 'Fat Ratio', + category: 'health', + type: 'fat-ratio', + external_id: 'withings-Fat Ratio:c43dbbbd-1091-44e7-b144-68911483d28b:0d9226e1-e794-4d46-9d0e-ed91725a8c9e', + selector: 'withings-Fat Ratio-c43dbbbd-1091-44e7-b144-68911483d28b', + read_only: true, + keep_history: true, + has_feedback: false, + unit: '%', + min: 0, + max: 100000 + }, + { + name: 'Fat Mass Weight', + category: 'health', + type: 'fat-mass-weight', + external_id: 'withings-Fat Mass Weight:c43dbbbd-1091-44e7-b144-68911483d28b:0d9226e1-e794-4d46-9d0e-ed91725a8c9e', + selector: 'withings-Fat Mass Weight-c43dbbbd-1091-44e7-b144-68911483d28b', + read_only: true, + keep_history: true, + has_feedback: false, + unit: 'kg', + min: 0, + max: 100000 + }, + { + name: 'Muscle Mass', + category: 'health', + type: 'muscle-mass', + external_id: 'withings-Muscle Mass:c43dbbbd-1091-44e7-b144-68911483d28b:0d9226e1-e794-4d46-9d0e-ed91725a8c9e', + selector: 'withings-Muscle Mass-c43dbbbd-1091-44e7-b144-68911483d28b', + read_only: true, + keep_history: true, + has_feedback: false, + unit: 'kg', + min: 0, + max: 100000 + }, + { + name: 'Bone Mass', + category: 'health', + type: 'bone-mass', + external_id: 'withings-Bone Mass:c43dbbbd-1091-44e7-b144-68911483d28b:0d9226e1-e794-4d46-9d0e-ed91725a8c9e', + selector: 'withings-Bone Mass-c43dbbbd-1091-44e7-b144-68911483d28b', + read_only: true, + keep_history: true, + has_feedback: false, + unit: 'kg', + min: 0, + max: 100000 + } + ] + }; + + const deviceBodyCardio = { + name: 'Withings - Body Cardio', + external_id: 'c43dbbbd-1091-44e7-b166-68911483d28b', + selector: 'withings-body+-c43dbbbd-1091-44e7-b166-68911483d28b', + should_poll: 1, + poll_frequency: 86400000, + features: [ + { + name: 'Battery', + category: 'battery', + type: 'integer', + external_id: 'c43dbbbd-1091-44e7-b166-68911483d28b', + selector: 'withings-battery-c43dbbbd-1091-44e7-b166-68911483d28b', + read_only: true, + keep_history: false, + has_feedback: false, + unit: 'percent', + min: 0, + max: 100 + }, + { + name: 'Weight', + category: 'health', + type: 'weight', + external_id: 'withings-Weight:c43dbbbd-1091-44e7-b166-68911483d28b:0d9226e1-e794-4d46-9d0e-ed91725a8c9e', + selector: 'withings-weight-c43dbbbd-1091-44e7-b166-68911483d28b', + read_only: true, + keep_history: true, + has_feedback: false, + unit: 'kg', + min: 0, + max: 100000 + }, + { + name: 'Fat Free Mass', + category: 'health', + type: 'fat-free-mass', + external_id: 'withings-Fat Free Mass:c43dbbbd-1091-44e7-b166-68911483d28b:0d9226e1-e794-4d46-9d0e-ed91725a8c9e', + selector: 'withings-Fat Free Mass-c43dbbbd-1091-44e7-b166-68911483d28b', + read_only: true, + keep_history: true, + has_feedback: false, + unit: 'kg', + min: 0, + max: 100000 + }, + { + name: 'Fat Ratio', + category: 'health', + type: 'fat-ratio', + external_id: 'withings-Fat Ratio:c43dbbbd-1091-44e7-b166-68911483d28b:0d9226e1-e794-4d46-9d0e-ed91725a8c9e', + selector: 'withings-Fat Ratio-c43dbbbd-1091-44e7-b166-68911483d28b', + read_only: true, + keep_history: true, + has_feedback: false, + unit: '%', + min: 0, + max: 100000 + }, + { + name: 'Fat Mass Weight', + category: 'health', + type: 'fat-mass-weight', + external_id: 'withings-Fat Mass Weight:c43dbbbd-1091-44e7-b166-68911483d28b:0d9226e1-e794-4d46-9d0e-ed91725a8c9e', + selector: 'withings-Fat Mass Weight-c43dbbbd-1091-44e7-b166-68911483d28b', + read_only: true, + keep_history: true, + has_feedback: false, + unit: 'kg', + min: 0, + max: 100000 + }, + { + name: 'Muscle Mass', + category: 'health', + type: 'muscle-mass', + external_id: 'withings-Muscle Mass:c43dbbbd-1091-44e7-b166-68911483d28b:0d9226e1-e794-4d46-9d0e-ed91725a8c9e', + selector: 'withings-Muscle Mass-c43dbbbd-1091-44e7-b166-68911483d28b', + read_only: true, + keep_history: true, + has_feedback: false, + unit: 'kg', + min: 0, + max: 100000 + }, + { + name: 'Bone Mass', + category: 'health', + type: 'bone-mass', + external_id: 'withings-Bone Mass:c43dbbbd-1091-44e7-b166-68911483d28b:0d9226e1-e794-4d46-9d0e-ed91725a8c9e', + selector: 'withings-Bone Mass-c43dbbbd-1091-44e7-b166-68911483d28b', + read_only: true, + keep_history: true, + has_feedback: false, + unit: 'kg', + min: 0, + max: 100000 + }, + { + name: 'Heart Pulse', + category: 'health', + type: 'heart-pulse', + external_id: 'withings-Heart Pulse:c43dbbbd-1091-44e7-b166-68911483d28b:0d9226e1-e794-4d46-9d0e-ed91725a8c9e', + selector: 'withings-Heart Pulse-c43dbbbd-1091-44e7-b166-68911483d28b', + read_only: true, + keep_history: true, + has_feedback: false, + unit: 'bpm', + min: 0, + max: 100000 + } + ] + }; + + const deviceSleep1 = { + name: 'Withings - Withings WBS01', + external_id: 'c43dbbbd-1091-44e7-b177-68911483d28b', + selector: 'withings-body-c43dbbbd-1091-44e7-b177-68911483d28b', + should_poll: 1, + poll_frequency: 86400000, + features: [ + { + name: 'Heart Pulse', + category: 'health', + type: 'heart-pulse', + external_id: 'withings-Heart Pulse:c43dbbbd-1091-44e7-b177-68911483d28b:0d9226e1-e794-4d46-9d0e-ed91725a8c9e', + selector: 'withings-Heart Pulse-c43dbbbd-1091-44e7-b177-68911483d28b', + read_only: true, + keep_history: true, + has_feedback: false, + unit: 'bpm', + min: 0, + max: 100000 + } + ] + }; + + const deviceBPM1 = { + name: 'Withings - BPM Core', + external_id: 'c43dbbbd-1091-44e7-b199-68911483d28b', + selector: 'withings-bpm-c43dbbbd-1091-44e7-b199-68911483d28b', + should_poll: 1, + poll_frequency: 86400000, + features: [ + { + name: 'Heart Pulse', + category: 'health', + type: 'heart-pulse', + external_id: 'withings-Heart Pulse:c43dbbbd-1091-44e7-b199-68911483d28b:0d9226e1-e794-4d46-9d0e-ed91725a8c9e', + selector: 'withings-Heart Pulse-c43dbbbd-1091-44e7-b199-68911483d28b', + read_only: true, + keep_history: true, + has_feedback: false, + unit: 'bpm', + min: 0, + max: 100000 + }, + { + name: 'Pulse Wave Velocity', + category: 'health', + type: 'pulse-wave-velocity', + external_id: 'withings-Pulse Wave Velocity:c43dbbbd-1091-44e7-b199-68911483d28b:0d9226e1-e794-4d46-9d0e-ed91725a8c9e', + selector: 'withings-Pulse Wave Velocity-c43dbbbd-1091-44e7-b199-68911483d28b', + read_only: true, + keep_history: true, + has_feedback: false, + unit: 'm/s', + min: 0, + max: 100000 + } + ] + }; + + const deviceBPM2 = { + name: 'Withings - BPM Connect', + external_id: 'c43dbbbd-1091-44e7-b120-68911483d28b', + selector: 'withings-bpm-c43dbbbd-1091-44e7-b120-68911483d28b', + should_poll: 1, + poll_frequency: 86400000, + features: [ + { + name: 'Heart Pulse', + category: 'health', + type: 'heart-pulse', + external_id: 'withings-Heart Pulse:c43dbbbd-1091-44e7-b120-68911483d28b:0d9226e1-e794-4d46-9d0e-ed91725a8c9e', + selector: 'withings-Heart Pulse-c43dbbbd-1091-44e7-b120-68911483d28b', + read_only: true, + keep_history: true, + has_feedback: false, + unit: 'bpm', + min: 0, + max: 100000 + }, + { + name: 'Pulse Wave Velocity', + category: 'health', + type: 'pulse-wave-velocity', + external_id: 'withings-Pulse Wave Velocity:c43dbbbd-1091-44e7-b120-68911483d28b:0d9226e1-e794-4d46-9d0e-ed91725a8c9e', + selector: 'withings-Pulse Wave Velocity-c43dbbbd-1091-44e7-b120-68911483d28b', + read_only: true, + keep_history: true, + has_feedback: false, + unit: 'm/s', + min: 0, + max: 100000 + }, + { + name: 'Systolic Blood Pressure', + category: 'health', + type: 'systolic-blood-pressure', + external_id: 'withings-Systolic Blood Pressure:c43dbbbd-1091-44e7-b120-68911483d28b:0d9226e1-e794-4d46-9d0e-ed91725a8c9e', + selector: 'withings-Systolic Blood Pressure-c43dbbbd-1091-44e7-b120-68911483d28b', + read_only: true, + keep_history: true, + has_feedback: false, + unit: 'mmHg', + min: 0, + max: 100000 + }, + { + name: 'Diastolic Blood Pressure', + category: 'health', + type: 'diastolic-blood-pressure', + external_id: 'withings-Diastolic Blood Pressure:c43dbbbd-1091-44e7-b120-68911483d28b:0d9226e1-e794-4d46-9d0e-ed91725a8c9e', + selector: 'withings-Diastolic Blood Pressure-c43dbbbd-1091-44e7-b120-68911483d28b', + read_only: true, + keep_history: true, + has_feedback: false, + unit: 'm/s', + min: 0, + max: 100000 + } + ] + }; + + const deviceThermo = { + name: 'Withings - Thermo', + external_id: 'c43dbbbd-1091-44e7-b121-68911483d28b', + selector: 'withings-thermo-c43dbbbd-1091-44e7-b121-68911483d28b', + should_poll: 1, + poll_frequency: 86400000, + features: [ + { + name: 'Temperature', + category: 'health', + type: 'temperature', + external_id: 'withings-Temperature:c43dbbbd-1091-44e7-b121-68911483d28b:0d9226e1-e794-4d46-9d0e-ed91725a8c9e', + selector: 'withings-Temperature-c43dbbbd-1091-44e7-b121-68911483d28b', + read_only: true, + keep_history: true, + has_feedback: false, + unit: 'celsius', + min: 0, + max: 100000 + }, + { + name: 'Body Temperature', + category: 'health', + type: 'body-temperature', + external_id: 'withings-Body Temperature:c43dbbbd-1091-44e7-b121-68911483d28b:0d9226e1-e794-4d46-9d0e-ed91725a8c9e', + selector: 'withings-Body Temperature-c43dbbbd-1091-44e7-b121-68911483d28b', + read_only: true, + keep_history: true, + has_feedback: false, + unit: 'celsius', + min: 0, + max: 100000 + }, + { + name: 'Skin Temperature', + category: 'health', + type: 'skin-temperature', + external_id: 'withings-Skin Temperature:c43dbbbd-1091-44e7-b121-68911483d28b:0d9226e1-e794-4d46-9d0e-ed91725a8c9e', + selector: 'withings-Skin Temperature-c43dbbbd-1091-44e7-b121-68911483d28b', + read_only: true, + keep_history: true, + has_feedback: false, + unit: 'celsius', + min: 0, + max: 100000 + } + ] + }; + + before(() => { + cy.login(); + + // Create a new peripheral + cy.createDevice(deviceBody, 'withings'); + cy.createDevice(deviceBodyPlus, 'withings'); + cy.createDevice(deviceBodyCardio, 'withings'); + + cy.createDevice(deviceSleep1, 'withings'); + + cy.createDevice(deviceBPM1, 'withings'); + cy.createDevice(deviceBPM2, 'withings'); + + cy.createDevice(deviceThermo, 'withings'); + + cy.visit('/dashboard/integration/health/withings/device'); + }); + + after(() => { + // Delete all withings devices + cy.deleteDevices('withings'); + }); + + it('Check Withings - Body device', () => { + cy.contains('.card-header', deviceBody.name) + .should('exist') + .parent('.card') + .within(() => { + cy.get('img').should('have.attr', 'src', '/assets/images/withings/body-black-kg.jpg'); + cy.get('select').should('have.value', ''); + cy.get('span').should('exist'); + cy.get('.fe-battery').should('exist'); + cy.get('.fe-grid').should('exist'); + }); + }); + + it('Check Withings - Body+ device', () => { + cy.contains('.card-header', deviceBodyPlus.name) + .should('exist') + .parent('.card') + .within(() => { + cy.get('img').should('have.attr', 'src', '/assets/images/withings/body-plus-black-kg.jpg'); + cy.get('select').should('have.value', ''); + cy.get('span').should('exist'); + cy.get('.fe-battery').should('exist'); + cy.get('.fe-grid').should('exist'); + cy.get('.fe-percent').should('exist'); + }); + }); + + it('Check Withings - Body Cardio device', () => { + cy.contains('.card-header', deviceBodyCardio.name) + .should('exist') + .parent('.card') + .within(() => { + cy.get('img').should('have.attr', 'src', '/assets/images/withings/body-cardio-black-kg.jpg'); + cy.get('select').should('have.value', ''); + cy.get('span').should('exist'); + cy.get('.fe-battery').should('exist'); + cy.get('.fe-grid').should('exist'); + cy.get('.fe-percent').should('exist'); + cy.get('.fe-activity').should('exist'); + }); + }); + + it('Check Withings - Sleep device', () => { + cy.contains('.card-header', deviceSleep1.name) + .should('exist') + .parent('.card') + .within(() => { + cy.get('img').should('have.attr', 'src', '/assets/images/withings/sleep-analyzer-single.png'); + cy.get('select').should('have.value', ''); + cy.get('span').should('exist'); + cy.get('.fe-activity').should('exist'); + }); + }); + + it('Check Withings - Thermo device', () => { + cy.contains('.card-header', deviceThermo.name) + .should('exist') + .parent('.card') + .within(() => { + cy.get('img').should('have.attr', 'src', '/assets/images/withings/thermo-c.jpg'); + cy.get('select').should('have.value', ''); + cy.get('span').should('exist'); + cy.get('.fe-thermometer').should('exist'); + }); + }); + + it('Check Withings - BPM Core device', () => { + cy.contains('.card-header', deviceBPM1.name) + .should('exist') + .parent('.card') + .within(() => { + cy.get('img').should('have.attr', 'src', '/assets/images/withings/bpm-core.jpg'); + cy.get('select').should('have.value', ''); + cy.get('span').should('exist'); + cy.get('.fe-activity').should('exist'); + }); + }); + + it('Check Withings - BPM Connect device', () => { + cy.contains('.card-header', deviceBPM2.name) + .should('exist') + .parent('.card') + .within(() => { + cy.get('img').should('have.attr', 'src', '/assets/images/withings/bpm-connect.jpg'); + cy.get('select').should('have.value', ''); + cy.get('span').should('exist'); + cy.get('.fe-activity').should('exist'); + cy.get('.fe-droplet').should('exist'); + }); + }); + + it('Update device', () => { + const { rooms } = Cypress.env('house'); + cy.contains('.card-header', deviceBody.name) + .should('exist') + .parent('.card') + .within(() => { + cy.get('select').select(rooms[0].name); + + cy.contains('button', 'integration.withings.device.saveButton').click(); + }); + // Check redirected to edit page + cy.location('pathname').should('eq', '/dashboard/integration/health/withings/device'); + }); + + it('Check updated device', () => { + const { rooms } = Cypress.env('house'); + cy.contains('.card-header', deviceBody.name) + .should('exist') + .parent('.card') + .within(() => { + cy.get('select option:selected').should('have.text', rooms[0].name); + }); + }); + +}); diff --git a/front/cypress/integration/routes/integration/withings/devices/WithingsDeviceListNoDevice.js b/front/cypress/integration/routes/integration/withings/devices/WithingsDeviceListNoDevice.js new file mode 100644 index 0000000000..672dd75830 --- /dev/null +++ b/front/cypress/integration/routes/integration/withings/devices/WithingsDeviceListNoDevice.js @@ -0,0 +1,29 @@ +describe('Withings Empty device list', () => { + + before(() => { + cy.login(); + + cy.visit('/dashboard/integration/health/withings/device'); + }); + + it('Check Empty device page', () => { + cy.get('.alert-info') + .i18n('integration.withings.device.noDevices'); + }); + + + it('Check right menu page', () => { + + cy.contains('a', 'integration.withings.device.menu') + .should('have.attr', 'href', '/dashboard/integration/health/withings/device'); + + cy.get('.list-group-item-action').i18n( 'integration.withings.settings.menu'); + + cy.contains('a', 'integration.withings.documentation') + .should('exist'); + cy.contains('a', 'integration.withings.officialWebSite') + .should('have.attr', 'href', 'https://www.withings.com/'); + + }); + +}); diff --git a/front/cypress/integration/routes/integration/withings/settings/WithingsSettings.js b/front/cypress/integration/routes/integration/withings/settings/WithingsSettings.js new file mode 100644 index 0000000000..1b87cb9228 --- /dev/null +++ b/front/cypress/integration/routes/integration/withings/settings/WithingsSettings.js @@ -0,0 +1,77 @@ +describe('Withings settings page', () => { + + before(() => { + cy.login(); + + cy.visit('/dashboard/integration/health/withings/settings'); + }); + + it('Check setting page and connect', () => { + + cy.get('.markup') + .i18n('integration.oauth2.instructions'); + + cy.get('.form-label') + .i18n('integration.oauth2.apiKeyLabel'); + + cy.get('input') + .first() + .clear() + .type('FakeClientId'); + + cy.get('input') + .last() + .clear() + .type('FakeSecret'); + + const serverUrl = Cypress.env('serverUrl'); + cy.intercept( + { + method: 'POST', + url: `${serverUrl}/api/v1/service/oauth2/client/authorization-uri` + }, + req => { + req.reply(res => { + res.body.authorizationUri = `/dashboard/integration/health/withings/settings`; + }); + } + ); + + cy.contains('button', 'integration.oauth2.buttonConnect').click(); + + // Check redirected to settings page + cy.location('pathname').should('eq', '/dashboard/integration/health/withings/settings'); + + + cy.get('.alert-info') + .i18n('integration.withings.settings.complete'); + + cy.get('.alert-info') + .i18n('integration.withings.settings.clientId'); + + cy.get('.alert-info').contains('FakeClientId'); + + cy.get('.alert-info') + .i18n('integration.withings.settings.afterIntegration'); + + cy.get('.alert-info') + .i18n('integration.withings.settings.instructionsToUse'); + + cy.contains('p', 'integration.oauth2.delete') + .should('exist'); + + }); + + it('Check unconnect', () => { + + cy.contains('button', 'integration.oauth2.buttonUnConnect').click(); + + cy.get('.markup') + .i18n('integration.oauth2.instructions'); + + cy.get('.form-label') + .i18n('integration.oauth2.apiKeyLabel'); + + }); + +}); \ No newline at end of file diff --git a/front/src/assets/images/withings/Aura_2.jpg b/front/src/assets/images/withings/Aura_2.jpg index 4120d9e1ad91a247b9bb55821d90410f5be68bd2..fd533fe2ba61e660f377e46232462f02557af193 100644 GIT binary patch literal 8870 zcmc(EcQ{^!2t5sioS4p>p{0j1F*8G%piq``oab3!9IQ|%+eJ1G zE-oG(9+vZb0({&8oZLLze|`i+t_q=sFw)R4a>Jl7?th$48vrN`C>|6K2JrzDP!Jdj zI&B7c$nB&8{VM_gNgxU^CApO}v~*|4FI1fcC_rE^1-boX0OYp=$>jhgl#2PHq$)Lw z@qGxNJ4`AxA(Mt*t)h_?)weDnZR7ETmhRknHg=9nfo?RjG_|yK zOm3Q*ncuo?VQXja;OOM+g7Nh7_VM-e4|^K^EF$uG)QiNINy#axuW(t}Ik|cH1%*ZL zD&JRqsQy^<>1$JSODmzRy`z7CI5;#sGCKBshBP}jzwl#mX=8J1duMlV|KRXXTp$4a zZ&>8>zk&TQ*M)k|R$gX&WOvZ93lV^T^^e?7(gZ}xwS|JfDar;4Zi^V_*Oxm9!D&C_v)Llc!tFee&?G-gGI}*gG^|wmjhCj7@eQjEP8u7}W~BejdE` zy(nZLgoInVW#L5f9V<=A8kFGYKTkhpl5jW_TlT^CJam<35_=?e#%T>__3;NMiYnnITn^l?pNphMcsfX1=E@2(Q`s&@KzexUziocVG?^6dZ!HiXaWgQWD zR1_ebMYb+h*Z_fE;&SXe8LC%U6^My?nP7+iP%-r@2Zxl)KfSXUOD2=ra+}{xRP9Xl zcpORW+1yj-uG>Mao>*BNm)p@-6pB4!|5-nIh(nDcARFbj3{Q>BlNX*xx60Ms`l(xs z;pB9D5ik$}xEnJ74TEy0TUgI3Gk_+)MlhN~Wcd58a?~$C<~y zw(u07i$Ou-TtrPwVqcYt_UB&`u!!1^-{_F-h+t+~QY!lPX1^`=HP5#a2CrA*<|xBg z(_bwEG8H8cIdZDUUtZzB>Ph{5%Vb zcYP~$@B6vu8yLQND0V}8Ev)gV;%?}mK_Hoz?c05;PKk~{tjn^@uNgMG;gp=Gfa;uI&lfKXuhnf0aU$J!CFudr z+Bq+}E*y~(nqbMD^!WM}2CqZ=wq)^~m|grCqOm#v`&}D|87Pw8t7o}BVyJH*G1GDo ztyMh$eY^KAWMsL*57}RnYA}M5ByfqGAU|E3yyj}Ht*bS3Rf%?%s1x+aTJoN8X!g(b zje0A?q(8*uQ=i|l&vcRQc5&)qHDxe}fLChrJ$M^YswIDu#zkGxOrJwg_fuM3)j8k% z!kNtE=bAc3?)}-6Jh=$30&zYSXY*x!>Nn%1y5fwBmi5g)e4IJFdVlp=y|+6QD+|UA z8{SG+HWqrCujrtVdMn`Z$VpXulzCqFPnIfEw|v^Oi>qRH4C0@Tr$4K-x%ZM=-n8~{ z84Y|keRRNi7(sv!JEc5*IJ;rVkdw-f`?3A{2~8uON%MJgB%4pZ+1+T&Jg=G`e-!a= z4_J!7*71MW$+it^m15Aox#L&Ym2YL3_8@$G6Lz~+Ktw^%_tV6gHRzK0sDM&)4ATd+ zmZ+otCt?v**w$jxm!o~%9R+T=kv){2AJvt8Q%7W)XuX{uX4F@7Jwj$f&jJl+;1G~A zgeQ`$nV!O#O70y>y598cc9m$ow<$7NzK4UJ0@$!)u|(#2AO1>Oo=L*IyJS8%>TO8T zFBIRpD5|~|PO2Qeb530Uq4TD7oGasSoTSAEJBQFWWzRjXi}`abg|<<8!W*4gJiEMi znf;OrFum5jl-s{K5Lv@Xg^J~LE)r=$v)CTiT1!GRVRU-@Bxv3AsOw<_7JjQ-#@=dk zAaOG|VeS+2O2rT*M2VwFZ#j$Xi!ULSL2i{59V zNZ2x}+|a*OqmWr#$=@cMOVoJiox{eBuquSf&4JJYhhle9DT0&3Nyd@Og#)e?Xtz&1 z1zN5yep}7tDMa>HVQx*rtvv%gd!|0$>(f4|B1HEmDqIb2(L~^9Z{`I3>=)iHyl{NS zJkEdjtqP#zsy19|9BJB#=>psqA3hQL(3|tk&3phi{eCOVD&^V4+IV_a$Tg=we;&VK zVu|}DTI*hf&yh%rWwH4E@}BV9fsTgDRtWgx8|QIy?)42B*$6SJmbAb)S^~+8h*>nc z!!)6xWLAQosjI53&ESro5g5FIaFxE4CM+d1n^BFZVehpj|{?Zf>6(h@^+`2k zD{fv)RzprcW;&++D7iLKF&;XUiOWv2jTy)|zJn@Q)x7K6Pp_fxCsZVG9ajS}Hsxn^ z;{XQUA^1L(GuB-(NzZ3(A4^yF^ygnmm)*Xv!W9mCk{m)Oob}IbR#_~#?JeY3QD~>E zt_B%J$J2Df-=Kcz6WU-T5-EeRg=Zo)(D9s_Y}>|1MPE&wR5u5X`^->vZx7DgO7bUW zWtw#9$q#wRMDDB^=7}rGb9B8HQ1r?#|CSfpBIj@RV33JRM4fk0NAz}fP zt`CK_aUghT>CxCk^zhGhb*7^;RM@T3T{JUO&5vS{<5?h zhYTEFjvu~nHlcjAv0HL1_b#Ig1{5O&eNq~xH{!ZXGS;@@;X%EQc4Db0)U=2JB`l&Y z2_iCQa_%OvEuzF7x{P`AC3LKpQ9?RhxQnVY$?^UDPJ>ied~>pSDVnDl^>w|)FQzc| zH7aHoX_y92xj|;Ham<$UjegyTOB%MkxXFCk`V=TZ2O6sGGc8!I7IOFdmV==tV>ch{ z{xF$+a>ILVUage4jkI{2;Zf`yqm{s9i+g_xc)XRRsWpuxz$tx;C5@qIQVcg9+@)UTBOwu*F9ZV>>w<@t&_~S2c`yV*ldGVP3H(LI^g6_(^6`OEv z#DU#Gi>)qWQyRzWW7UVdk!K42Nbpc1_|LnEZ#`QX`;x|Z2_ak;5gXeC7t7|%+|D&N z%Z)76VEG_MG|_z3ZgZ7(CLNJWr>=N~N;g3p$j_%pFds^%y6zBlQ8x-;%Xc66qU-RS zf#MA_t-yt6wyIwu_A2^D-rW*?D`k}XU6JLqozQXbra}F?iK~Mb+@og?<6Vy4 zAYcG5+(tee!m8*Avbn;>I9O=oNAZrdY+>d|&j9#*a{p#edkR>aMiu9BF0KdHm=*jM zi#aXgFc50xsD`xoj18XX<5VcvT~RL_$dv26luaSMW*qyXWv-3ZqdA%K_lMyR^qjM^Vrg&M2l&zlONZFs59^t@r@FR`vZbRI zbu^*|t>K;*x4qGn!$=Q>!)Z3N0iAJ~EgvTGJp6obj$A`u3 z7}&RrodTalx9fd2@SuR3ZB#dsqHsdoAzYSh0db-@crT7ty?QC7K8PJB6~$wGc17Wmv+JpQq@KQ104L-E;H&}tUdfc zoFNdL_nL9b85NgbNtdc)D~ANP?-S-lOOhWRUAi!ZE>)Y}h;n7!WSLfJW4_z$8xes}W_9ylJQ5XDSneFu2F~Gf01kLMh}#HNkYLd;JtR3Ns48_5D6& z@{P^fCp(U*Q8=UpkU;HjhF=mb+ABtT!9e5t!6&NiCmW?4f2@D+ zPD4(@^Hr$G@#*gv3?7=wa(sx-X0>f5oYPTl6<~ext}Csitgc}`L{>H5n)_(zvd?)s zL~2F>Eb!Bc#&wOLVwDRw-1U_tqgpwtI%3`%Gb=^nU7s=wguAC_7JzT=6ik&mD%U$? z&ogA)$2kvQW>kJ`=d-NB0f~wkWGNY0ICkW&Y0(%P4B_`o?a7326S#g*Y*{bB*;~xy zt0LGwf)zn;H=U91FI!Sv$tDc*bcYDZ^>7IX4Fa_v+?eO7PXTY0;3R|=BMt9DCZ1m6 zY?+|Rni1l=%R*%DYRrxRsZ^~m*;LUB2DBYI+VL|cQ2<#9MKz5 z{t*3xKi9EzC)s^BwS5<^C?B5ZT@oG_KnJWnhMxl5kkKv|GoG+j^_H{{F`z{LSj^*} z`y&7GU!*?kVk;z&o4w}p&2bTkvWVuXjcKN18J>=s$q70@FAX!9N|*<>_D!ZJvVtP2 zs{lTn>ZgQc07nhCL`ZOp=`|f75ZTx8qQ*s4|poZ3~n3Le1T)@$gsz^++ zi&HzSW&%y+*y)#zo*GLoj6)7>$}@FWxjmdo`hI(Ub7l*0;8#$c&S)bBY%hE?hWS69 z>o*(c6ISJa4(MGosUlDJi_2Pc?QAcYWV?T8Ll>aBH3m$0q#ik9*XkQtvy4G^_%r!G zoO-4R-)(;3)qh1+=4)>)>`s#p#vf0%Pk}_U$LM0N z3Fif_kZDkNF!$6+**8}Uyuul=0Q%X4i9|K1i*U+XLc%~o)E7#Zj}74U0`m*+{+O%i z#m<@CUkqzp);p8@{kpyD9Yf>KoOJDBLNDqqhAY_aFRO4zPfJF#V~eqKR+lj8l;rq{ z{S;WnpP2Ub{zta>uYB>huhjRRBS}ps)MBrdl!|jVgpPcf4u6Q@c1Yxv#C4~kRaB0q zRl&QE3wu{oXhAXU&>K&aGu{RkVzqkf{@FULXDHt`PO`ng5)EcX2g>1T>^tcbV>q5% zCsF_eQ&t<5iJiuxRSmRCt9&mda{(QQFwAL_`M}fKp9IM)%)p=U82|-#OAU#kJzSVY zm9t${?=D>Ox85mPyv%3gqZYeXUFvk6GWlX9wmaKK>w@n>s0usAX_ql}{tj>3PXo*` z@{kzs+^6)1&v}$md#HDFt+z0!I^!j}xmpgM)t78pZE!Sz;JNHb$7tYu%Tb&pee#Os zUa(`D^;p|oHc0;^EWM0BK`@Ks;ZPTn2rkvM9$Q-JnIV1b(bNEkr9lH+O8 zUrLr}W*5r)i+B-W%EA-w665U8frwtk(gQM8k0_E*!q!}MH46-@V^!s zO#1rh@CP!<)3nF;!innUDKKofXvOf`T8aHWmdASG*G$b<_jJQKE1v&$9ZwQ)b+tP< zS5wFkW1u*X8xbmJ!_#EoTSaTbo*3}eHa2aj4 z|0y6Jr-GOD-CH}@EA(|kH-U$%G$uT>7pj08-`fSy@?@`B;uNsbFn1bDV`)Up=QR?P z{2j7+la&ypk$_(5q>YsGXzr)<{zS9s7pXm*8-%TsB%zp!-2yc2o=h94*;-bvBQEU} zu%PTTPWXtaI>ro@3Tm?(VTOtb>EV!iRyPKG$Wv@7VELg=lX&m; z>H7i1Rp8R6n465CCgCGt3R+;im5of4J=Jqc#sfJ2G<|-VzQ%##?lzvLG6s;1%ZCkw zo3sM0&fm~#vyPM|_cD99^A&@43MgbbsBffkq#y3V0`#@@~-9cg|Hdo7y9vuU_`4wsXq_XAmB;XR#WM`pLQW=C75eyaNau7qo@hX$5TY2DPF$3YodeAh z?P5qT0Y1&BpG1_UF`;ZPmUV-y*Fe_WO) z@s5S_@ibQfc;JYMOn3e%Q1&O^B~0K`piPAQizqx%tNy+4lDsPc=5K+VbI;g41#&T% zbKs~SMm^jPDnfOOG5w^9p>q{#F#Cu<#fIj7njO{!C>odFUEC+?$NMRHNRPdDJWGw*$d-HE80BX+pg> z4Zqv>sZwMMGfM!+H6b369*ZzE)QvaoDoGIs;H0!D(>3q<6W8A*w|clDBzdK|(@6a# zUzfCaw{XDd2irLLp&{HfiM4yQj?)WXlXtC0g}ZXv;Z+JH|{>$o1Vh`IIp$ zmiha0<`L^bhF!Fc^wH4@JAt)bUuw096FQP+o;B@%6E!xjBY7E$98?GVD)ngSZvBKP zXsQGyUFdw118r=B90ZEh)vT{#k>YkyfksKlTnEd21;cnK{T>v&$`}K4p6xudOUxrcKYV-W+rbr zYs|a1fJ6s`Ur1=tY-Qo#nSn4ksNWhz=Ya;= zdwPA2gu&x=-0_}LnnydxHgj#uo~Dtqi@oMO)ydR;x1Y3y-(lmN-W1FG?IG~r{Q)q{ zhAb#G6f8VpALvYHn=@Sf^o*yJyzgr>>1*CJEVm^SZJf^7JbF}d`&uxQCv6yw{$R~d zlpbk|b;LMSh5M1udfQW^&ERa0Jx-a4NY?DnZGB&RZq5I5^Y%p8F!RGxpts^~OO&Jv zHJ$*sUOvsVaKx<>XU5miqBPuc{zK5*1oU>>m1$!U}0|uk!AUbJ}{8SsvfoIvlEk0k6&F2r}<~FVOv+;Q0S%9iG$C{{a|bSwR2* literal 8342 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 diff --git a/front/src/assets/images/withings/KidScale.jpg b/front/src/assets/images/withings/KidScale.jpg new file mode 100644 index 0000000000000000000000000000000000000000..dd84649b7d2a34236905e52c9f1db84b656927a6 GIT binary patch literal 6345 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 Zz0o|-Iseb8;{W-7O`ZSMc%WF{{sS`DUa0^8 literal 0 HcmV?d00001 diff --git a/front/src/assets/images/withings/SmartBabyMonitor.jpg b/front/src/assets/images/withings/SmartBabyMonitor.jpg index 982f91fe675534eec162deb419d9fba396be3431..93b610a14d9ecf8895441c578a0c971e45b33681 100644 GIT binary patch literal 11271 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 wf*7jgS5yABGKa+_BB`^fb|2UZbYD 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 diff --git a/front/src/assets/images/withings/body-black-kg.jpg b/front/src/assets/images/withings/body-black-kg.jpg index f7b40a3ce679d47a8c1682c063f5d47478cb68f0..88b15e2f17b6ec5bdef50fa0c4d4725c3c197839 100644 GIT binary patch literal 9913 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 Dq9X`! literal 10169 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 diff --git a/front/src/assets/images/withings/body-plus-black-kg.jpg b/front/src/assets/images/withings/body-plus-black-kg.jpg index a11c690575a561399d27261156d0b83ef00e0eae..94b2bebad5de961196b153987f663b4a6db43d20 100644 GIT binary patch literal 12915 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 literal 10102 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 diff --git a/front/src/assets/images/withings/go.jpg b/front/src/assets/images/withings/go.jpg index f7e13df3ca48a17af801d1110790053520b3531c..7aff64181ef6f60f556fe921c021ea7563f10717 100644 GIT binary patch literal 8114 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 diff --git a/front/src/assets/images/withings/home.jpg b/front/src/assets/images/withings/home.jpg index f549112640de8f6cfafb150bef1f92509a3c1694..f34c3db31731d16d9fda56ddae1a2b8f1d07db58 100644 GIT binary patch literal 12363 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 L_QIVo3AS4t)X+erg1QI#{0g)o0 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 diff --git a/front/src/assets/images/withings/sleep-analyzer-single.png b/front/src/assets/images/withings/sleep-analyzer-single.png index affe3024d72d779c2485fd2b691d0d39fcc96fbd..17ac81b8bbf9506d41bfd933f61287b6a8a9c703 100644 GIT binary patch literal 64957 zcmW(+by!pH+aD=i0>WsJ?v(Cwk^>P&NQf|D(gMTKo60l=@-F?^fk3qG6}k8f00@%eoDAP`{4Uu_7KQFe@T|$NSumK z8*AGt{Uv%4+U*#B-C6Q)L%8>3neaGj?^cvW)a=d4SFKCn zI^kmJruX9F_lL&0{Kt{!98rIlf8otdW8Sl zMr+;Y-{#GR`SsAhim0Q^gL~Jx*P}OQJS89+72NgmRcDlkfAROr%TDO~nI)2Fqe(l* z#`#5s^uMYViK~>Ly_4^a)951qI6Wl)U)=kbTUqE@)Dv_=FpGc%#BxxkPbCSO0?R`$ zLg&Je7J3f{ecx+q&pR@MHjoc-m~kTCh)e{|I!(UtSLH=d9Co-eXQlhmI<6*Yodsm; zC7VH@;H$|2)uUC5%$h(c*zvGNZXTX2EGH+`dQhf|R!AI}DP zu4QhndT&lAGNb;jA1sIVUvFn#8{eFbYDvMo{#D%NsSGtHQ@H!{tIuw6m z=(6d4SaHhN6v;wVbTC!|;PVC`%e9+HQbc`%4pIMa9(_vdYEpv|sVCafSYx%c0Erx3Sp;M}E6!gJwlox| zCf(vf2Gy`YMAH%WmXO559rz$eab($q7z%1*-s@`q6joo#&?Q-{{R{)W1>De65S~smKiXx7q%X zbRX+UyW_#qi;PD$Qe;>*wu)v6YAq9xk58lTl3q-2Q!w|0Tp2>mTI7k!E8ybZk{hS6 zG9lYF8Vkm%)J;&KVtTa7;HqisT&TN9bNYfU#-)2rll<|ftP9RyA9Wpzknr$pP3`CO%7tRgU+Tm{d1ptH_} zRdlu!vc)^M>Wov08XR3k_Yn3!JicbacdQ=x#^k;ueUF7bINw{1GZl5iVe!2ek8X}{ zem%Z<7j^YmT}x}(3i4QO>#x?;j`_USbm5H=lW6a#qd;Ac(>Dp zy7YGykI60hjs`u0;q&kjb;;REdBUnWQ^6p@G1h62N+^@^p;5UGMK$`M$pm`Ht=)rh*eXCXO@ z_N+p|h+3->D7t~Le|=5vq45hov=eSf!GT=Q2wp0CqK&_zr2$c4-4lGk@rc2}S^37H zpqP(zDjub*b1+$?bX!kvIUL;n?bZg;xh_VQ+!4nYAC07j+#e;t>kT06lWJ11&2l>r z*>nMjWDTkuA2!5b3CSB4V;g0>njU;seBthB3F((R1b3@z@@_dWr(9pmPE1`-+~Bls zmeGhyAOFc4x;|;(luWj7zVj(0kJbVjSp(YUBkF+1^sp|^y;ke2KXdN1_eSv9XWM+1 zLxq5Q!@xO=h60*MxC|EglgUK&~RV!8{#ATNj}Hm5uOd1IaLuh_LtT z?BPqKRWVW~IHx5-$(O=FEE5U>TgmQrzP-z3)&>-eEG#$-e|{|flH-}E1t>4bu%6w1 zp)_4*!6t;T8WDGRP6YGHftKa=E0`LKx>9r0Dcb&eOMw5kJev|)%;2U@CFsFhqI<6K?t?|P9>JMs@u?xgoqORhMV&>cC@-m|^^B%lj-YazGJ zPjjGJ@6npyVVwxve?4ZP(*N(CBB|&M zo^17gVDb>cN_X5h@cik${|Lcf4&#|`Uo<2^`!G@k)r^a5bFj=eTklwFSVnB;sBH0B z0Ru_&Jge_m2Yq9)iNZqqt@V0olqhSF`by6|naMI6ZP5f6^&&=ZHl!7iim(rrYt^aO z7A4~&m3scLhQ%nRr9mDWlxRbB_~l+3Hf6Nh!_zGq<_8qeoFUVE`8;>s1=gFzyfARQ^0Y&abww%`tZrY;kDtgz#+fRS1#i5RV~32uKp5k zl3@5KbJ1fx)SQvmt_8#|>MSX$<^*SPlNz-z%?#@5>b{c320bJYeA?kKk$OuP3xDz) zT@y+cDl`Z;Vz6=5VCkh}U{FhD0Y=-LRVCQetzi(unEC=kslS+d8N&*K+Rzatev&AgCwP4k^}{b{32aFOhNltv``JS6nI zuv+DLo4Pu;q<%e%p?GCZR)B6AB`7N(@6*c|EY%2`#6)Zlfyi2UOGbLu&(Vons*c$0 z$tr0nB1~Ofy&SIUiSX@F=O+7ldCAc#`^@oCkYUV+~y9GJW8K>)|aL0Ehqui773I$Ls2qEtL6TE0qK)S67q_-?0|i>qgCyLu^(p-|K_x zzefiVJ^BfXo;OKhN8ot3NKwpSf=imta)}I$u!Ge9Hgo0_PYhM7DTzoaUd`5v2$c=h zum6v91csctb5@nBWLSoOY3r2*jfbZA6v=I0(6v7i*_$hw@>pVB8f1%nT-*{1@8I*W zDVva6zdBAg2d&gK_gZ;f*?L8g`;t#eeR@hKN;br{5+N|ZM1_(N?}a+2Cn~X0ftT(Xzsj|Azw-*=$mkY*NL!eg`zV7Q z-@+T8`_9D?=$5WjG9%@L^HnxC=d^@o7^`0433GFuJmjg1B}8|g7R21Dw18oe^(O)l z1_l8Vb6s#Q8f^I@v#70iIQY&mo`FFiH5+KgQ2i93cS3WT77ZkA^Vn59LVOtAh7^`$ zGlJt8nh@eSP}_MHpcymUY>j{`b7IC*f{TUgCQ>kX{7!g`;t6A)fmg%~j9$g#X86wI zh5yIbMl<{7H#=HfRq$)y&Y!@sJUo;~`fTWIy@EpAl#6^d9|OPH2CQwc96VYMf9O&_ zB6AcH5~97X0TcZYkm5VZHyjNU?`SZXMNb=+%~4e-b~G5xwt9BbL5LjZ_Z32WBn3To zQWer{fJ*>yHQS=@Xh;a)#;Xd%Q!IxlZ>^$u!e72rU;4s)uicO(2TI`=7sM*+fuV3Q zSbtZMl_AT>zE5}6XVvqZC?aZPCr~$qNJUUR>MR)+P;!u7J$gdr(%tTe=X#Zg7$gBw*VI%py+nTiI>cGD$9W0o4puMDW`8At`QPBch0Hg-?4EY*rWE!VbBtr){y6SlHP}#rX61 zwKWkGgMdp7?ELu#@_e6tvU^Io6t|RyD?fyu+qk0}joH)xK#7Xwb&jP}8<(MYkx@td_ z7xT$VioK?b@>l2xMzUaw9nDHo&jCWze-9%dW)&`^Zw{mtLGDD(IHk>v@mjQN;hj?d z{<>phmHnd6lVO&q-_tBe2LwDTcvly-V&0WkuC%LGBLn9&fl3f9j36;Yj z1lBD2V+}<0-!vuA#_?D@GniGd{lo!H0nUlz`~XanEJJtJj}b(+^~aC;%b`bW0-=z+ zbzr(=nx5p25fN4;WS(~@9^nMqn-ZxnYmEtFRdEN(4TuE`?&|I?$I_vRMGaa_lTwHY z8m&-^5f}SMOJaq&n=NTw%GT~tti;UBX=vg%a1qmgo!IwY^^0s30h71*QK4NWb`EVe zBVaoV53(&zzoysOt_#`TLj_p@IuwkiILNEUO1Wn)bqQD)LlSB9qw)YcS+ek}?~O9% zx6?2(BhGAQGKt?&(C9lGI5vQW_7G+;@h=u2)<|i3;BXF{A4ONKzLWoYdjPX~yh$ee z{D5dR#EO|&Ob#0~&@yTJl$G>QPDebU3gN3t>t7`3JrN7zeZ*B6W9FMt{hl@NhJ|J6 z-u7kj_X^8t@VCydqq(*ZHp3o%0QGS&FPJfWBQDLs!al%0EGCWok7Vpl`7E?Z0I)ot zre0wYGssF@hy@^e~r$+%Sz1_Mu`FT63%JjjQ%@ zkg>{uE%ma(0+x1CQDy{`(i<&%BBK2Fl;h$$?9X!I?FIq?cxJ~(A}B^;BKOB!9hjtM z*7VcpZ^`?K%(u(Er9hsY+>XKg$_)I_$)*t(T*v@;xfE`H?NFQ^$y)a@C$-D%U5G-s1p3RP|U z2A%|1m(Zi=L`7B>@&?uaFdS*tS~X;|3itUeRwClu9ZB75C~#D6$iQ>T9=J<-oDX=e ze!y0oA&-Qa!7Vz-O#5MRRs)YOc=DU~vpL8UKE|s=G&#!mmKUn&i#+tRMan(>+1BkO zqRrX)rV-+Xay+@jVOkZ!GDTO?+uncNqMnG^+$=5rjlbF6WW}$va>el3K~H{RQQ=w& z#X4-V=pc+=Qaj;39iO+v^Nn~E^XABY?6*DGviR!qk)ZVBq>)eCo!leaBrN9exEb#(VM}Yp-UNUB7;C@BvS>ltHrPkWvfSgmiD*!O?SZY!I1+CF$qqIJyyr zpn_^j^td|QJyR*;o(L^lMP;C7KU*B)C+R*t5)=>e&;S!GAsXZ1e_u!%m<%0Xv8WKb znSIFJ6mmw0^bB+sxzxLSUcDTmaN`=eq@9G>5;7yHS44yoLEq80=+5^R+_(vH7``mC za7BT57K@amp>qYF%$ZvxIy{k6t}l^(@FuQP=p}1F||i`FzNU`J!`IX4`UO z4XAa^gho#GX~Isads|JbAq^ws)=*BCdlDK!FOp!E7+c3AnWl1ou&xX};0p#i>+Z{h z8EQ<^>iJ;)b_c8Dy;3|=N5infSD6u)VnVdT2u!>V9}5TXJ4>boc@~;Av`70PeN~H^ z>OLwgu{h#fm5Z_uG-;QogCrq4tH?Lv^PkE8n-0<_A*zV}y%8qtS#RORVBK44Q>>XV zK75ZA4HET#W9!wEi*q4bX(#DX0_!xCA^D%5g1l%i8U~MFCfKOciay=wY9S^`jf0)9 zR6&z(La8_6UsL-(CD;TQex^h#v$^?c7Ri`S$mY@&o`z0RqL?eKEgl%o?tP`?<3+_* z?M?@CRZl`lctyUv>F{U8`o6~_M-?)B8vwHEx+yI3N)~+B)dx;R-p+IH?|8259>eIS zJHDfRZrOe&DtNt=Zj?qD;q!#KLS{-{6<0n->}aP`JqD1}*eW~#bI=^XX*5#Bi7~$t zOaAiy#L5Oz3&Z!eJNI@u>_OFb1Yl+M96Z5MyyVj!%ew3}epb z_fMq+$_I*$)BrE`0V$62*EeBxMB^^6GGOETha&aO_0;|;1yy6e=lowjPaBj$W_)!{ zVpZ>>HGv=f2 zLccU``T17C*}`)`(GqucpzM88nimaifA^r)6SjnZMmA>B0szo;zZn z9G!n0m9VvyIV2G;;|hJ z)OCs^)3JXV3p^s9nyzOubraM!m{FdqzxH}^gF_P($tUfGngIQ!-*h)dO$;RlN?WIJ z`?56>YR6g|%ZdCLtN#coE!^ZbCtF!ejgjXSDKdwlhYO1R>hDa zMn_r*VL8x+(g{8L4@f7FAqkdlJBj;HK^IP9%;Uk;Xr*geGRixlDli-vz7113x}v0~ zzcWRDZEmdKaGl!oJJCxQ7` zHey$bY123awXTPNE|GN(RSnAm)|UZMw|NE-uhsCFJkcXx)v}!KM<#Mtbe`{65jX)g zGfMwoithr5pXK>c-s$EcSDx56!O>4c2G5gUQ@c_E?X~YJ5@0{xE+kLpUVlu4f+zP| zZM~*3muj44rOlhkO=Q*}duPFyosPj-XY*1v^Fb_XdD~ZdlAB_I4Ji|Y3BiBlCN9^W zxKcYb-UB2*KtJS~;?d$KoeVumQr(L8d(zzWMv|z>=ylQ$l_WT4HZ=26nI9E+#CQ41 z1MLZ*bYGPczs}_uCCL%^UFSN53zz5_@Z*SM#apiq(=dp=g9F9U6Hx$xx^1fs>3<=- z=mZpo!}Hk7E4mf(EpRy4NL}5bNkY8!n{ttPo0HGp()!hIQ9&)bE5_BZz7LNV4w+}D zc3?fH;fH9t**)^c$4dA7<5p#_`zufyWY;8dyHp_u>1%C`)>>IU7{2|Y^F2(wR1A_L zGeWdN?^(CnRkhoMAOgtoS!(ZDK&8GzcGK-KItb-R>jwYtSz>hP`_7V@FANdjldjI#FYj7Vo|@4MW&8#_(>40zKePEHJin)$H3 zy}e|=F0OwgS048Bv?$O-i_2R;b4>+m0~|badeyuG2x~3OY;MhU)R51~V!T5l$YFox z$9#tD|4z=%_DQPXn;Z6R?@VU_RKd!I9(XCdcW1utZ~Atly-ZYSO~LcA_CDJrgrn`1 zXDW;d`O&kGPFh-;vzaaRra$V2uy#x9Oj9Lc(y!`vMH<9Ln@ESX91G~&fHL)wu6p*q z8RV9S;;+!#P!pZm){uxRQZI?c=Shj2VjvH$hIx*~hT-*fcKS^78bLQF)({=oWWM}G zaRoh-`lBPg%%?tiqaphnyTDs?qc*Hhsw&;6xK-==)?GD2bFwgWcmqiRhASfg2 zUH|S20|?P%=tBCt&up|?5?xuzOG^!Eo1A!6H~UA>lK8Ub{69VLF|Q~6r}foei2HU= z#B&D>J%v1m+9;dl%i*vMPL#gH1QlNSn)k+hb#*_R zz?I{xCkByf`+B<&6K6@@;FZO1`Kp1y=&Fwk8bg(CkczDMxA&=pX)A|WmbDW5YY4T= zlG(cKimen>sGKHOZN5ToQEnY>iYW7v7({=KtbM|H_-kb&498#h9as+mpiZwBDa`-V z9>ln8hviTq&7V|X9aU=?q%k^14Jep`78VsulickXT%(m(4ZWZwy#{xHZW^|H>6Ffq zO1Z_=(c`iCOQVs5FFOBMU+z6`kvah6#rX_y@bRQQXAn1G>^ws$K1iiL581cSS)oPLU^CWH2G3cSsPvfX#Dgtgje!1zCDKuF~%hH0pik?>5O);6mQmdN`MsD=^qyz%ANg_Y|tk- zraM!;J*qFDNidf%9KsA55%*HzBMWk!BtnoWUq+^GS@ZP8s4{qa!j}k#%@{8fs@- z&FIa*m%!Rq3-~SR!P>PF-MP9fe=E=&{${q1%#fW+V^bl5Tsj;khcwaa^jqih9`K`2 zl7BQ^m(fsh|6grORIg{~;~c{N7Q~6h zRQU6~bgduUJm_0}zp9l_#Vlg7&IQyvV<_tDp$Nf$0E1{-UTUuYU_!%+5fshd7JCmq zvE;^rX$GSwHov47Fg@cl`_Wporz`d=fh^&ad-CA$88{Q;Rc6gn_0|wVhE=W1aiOVR zgNOojwoW-TF8tmZ4%4U3_`Eh(p{crBcmqmd_Ed9dBxGY~#&|*Lt+J1&YpT1QpJqu` zKtHDbk4I~AY$dlvirY(R^<%ib%1=cw{MW7OR$UxJm0v@@vYEwuS4SJq3d<)I$^@CI z(WXq{=l1(&XVGk*^N&nP5INz-$iJ-Zlqahd`JYU_Q;DPpy)8A>g=|!2c~aH5i9K)X z%^&f!qY)%LBJrZe)I(++WS0m?lXt3T@Cu2KC z$_;EpI*hNxcf=hkn+nvecYW~;_;ch~KOlY>PtVgcba^b6`@~>5U~d245z(S;8Iz~T z!zTPVh?h#U=7{d&!&XEb97%~gw~0@10&mcYiURU9%^=84;_s<=Vbv`$Wsf(%{n^Yy zqQVAQ@WqzgSw$AB(6waJ=H8J~=vypE08#j;%tLS?S|W2Fx6@9~c;@aBr~z zeI)i9)so_S!#GD$8r2wBe}5Fw;asOY-h3qu__UKGBF`+;a%;LZa7N|P|3Op z!z#bpg#q0iuZ1kMj)A7v2f(Q0rGPLrCnV763~?wcUtDsgdxkMxoC+*r z`qkff9`2nb<96w`I57;)`T?x#LQIwL-i!EOeNG5mtcl{6M#q}o7H7anLy#@*J*T&i zMw37U`F+ykPB-3HbIu%VaF>)++6g%fmq*8QFqtk)n$MDo_ipr8zGh50rL}7sAbTa+ zALJBrB%ICA{YK4F4wP|S|IxpQxo*N($6(SITM;|g-eaEg{$&!B2D%26GurCIxAVdE zfVw)-(GS+sOe$yX+^3zazOA&nrG}Tu5MXAW^muKKCjT4Ef30%I8=r_fPK1LqpN5wl zBlxuSnALeDs!y}c$m+fu``u{V{LYuHy8h##bxCtgtldB+=rIS`h;U?8KnN7f1KNdd z8UO*<$TMi5>ee~q_i9wiw2HEEQkgK zKq3Q)tE*LgI-iD#j{O0F<1mkR6NstOy)W(@`WhLBW%Vj# zoF_~D21@a);?I$*5s@j>Sm=<_-aO^2&W21@?JE~ehJ;v2)NVG|8~hD+qJrT~mPS#tJoOfGM?_!IOQMx;Mrpkl5x%0*J!m-4OT ztr%dDCiiK}r~UMBL9zKTKtiV*Pk(-kiXx$-DM$XB@v1;*3SgUlSCH&F?1c{;oI?~w zYC>t+elE>mxN#SZSlhsEn#FHIcTGq<$v!Bg{1EP=TCz7;54V`rrP#i-IdU|!$e{6} zv7iPoXDt&E4;fO_Osc4`x0=}Ac~;`{N!)*2#zs%=y)wRKufxyGSKlmXD>RQ!)Zzgv zc9+!atL1(0*6?dSN{{&MuRs3$8@yY@-+SU0N%PK^OGQnsMEbuP?7*dsQok;XS^eD0 zWuNT}B0T2v>G&GK#YN)Ik{Z=L*EE00n~~#-a6y=tvwq05g40VOYA@sP9~iP(W6fAE zH4#hu{|NVxQ%~*`nR`@n(qr~C?`Oyks^l%Z*oUN3`S{|Lj!2C5vvfpuoWLWhj0^4| zodM#%D)!OXQUvU^qragRO>(mu_`By>R*BgiP~YVxAdC(wGZN{#6dH+y3!STLM6ASa zroev7l2}1p9ObYGK}j=XgIV>})m27W!!NV(Rf4f=t*V|2oghs?*Q5xomB=uy0_a?_ zQO@fgzKpB9+rPRSVc8Wf^|wRCUrC{D($>=%=&0%x7cjJI7&Y*jZkgK&QA!R5K)@fh%Y$476xIUx#0xPo0TQuoDq}*ki=`W}?oOn2O1{PKoWunS@4XKZOYZrjx)qmHKG)wV zT(igJd9}WN>Xml??=&eMJommP<3FWubto65k(I!X(!3Nle#vBgT`yY3*c>L;N(&%; zQG*7=e>YB}_YbMW8{OYBlH5UTOK&e;2Rv?R@QffKAd~+n)dAwLeAP|{2JYNyAnxt% zCLu*n4`eoC^SSYXnuDI{Iky+FepX9MfWv*64*d^M0^*xu#&QhT)qlZ9TI&4Q-uNmW z#GDQzZpV7A9(OhPN8EB)ULGbD638{lD90Whg9KY7x@cy~*~*?7P;fw{EPj1*zV7Mi z(bePH$VCz(PqioL-H}3TAt={kp9RU3#92xz1La`$L%Em@woLc8GnmTJVePQ8qHQMr zhsi(%|MEENS@$?@137qnkxife1aPU)*h zr+^orDeEnl#P2>KQ&s{Daq0o%@~)W?3Q8r)@9%OwSbOWLc;eOZvKQIWZ8I{%Oq4{) ztT8N4@6T1g+9Gjf@^vYqXjG(K#0+;x4NUw?f5<;^!E?RG9;M{yerwjSY!}wm+iRsQ z>_)d7a+JWda2cWgOXV)s0uF`dk@17O5l9~2f6D?w<-hnyW89zmb@i83q-2wFqQ1K* z+lVLJUJ4##Pv+x$9^RW5q&FXwoJ~4k1kZ&sl?(r{w>Y@265)`U2v0+v7hUB*qoIb0 z&ESYA-T8eIROGv_=M9o1HK&kQ1EZHANyIY9$yP5hb}7Gd3!*abM~qSjfrQzRcY9V+o*pY%BWA?zckf3Fut(TwbW8dENno=bowRmi4?bL#QYZuTYM)rlKzh#6nIeB&3aMCk{&r*8y#xOnp zP$0MD zG_IrEW+hM)aAnqf7RR*TJbk=GsCl71UlRW|X9mN(Avqz2(YG8Er^UJtc3AY^Ut~+= zF-uWt?ds|6PZ@a&aKvpuq6xn^QbeK{iaMIoiRrdvrx9px#Dm1!IOh& zGkc~7F^af58Vjo-1(KKeF}|VfI5*e5=Cmd@TdqVsHanDVzZlUo*yJ zzr`+UU@)%xk7En(BO*gY@ymmOEO*6?Q1j}w92;!?WyJ7Rb_E3V!*IJ(e#jmp_COm8*SsPuwML(tzsW+_4Z#rK2S%*UX((GPh;2uDQ zp&Dt}0;I~C3^EMEKM;JKL%B-gOh`K_lr0N6-9Brl3r zf+2r)MI6^mEOcgB%8qqU_#~Z+g(^8qB>`gA^-j<30`Xel{iEWN{fmPPNm6xK9Fo5a zk7BNVJO?I*Fg-hJS=l^hVL_r2nyBbApM8OTpkTocvef5LDZX*2I2Hzb9CKPrO}w;d zlg>|bFD61YBgp6REL(@{v&#KpNpPp>kXr}|Rn;s&#hT%A{`Kb>3v>$uczc{X1n*y` zpY8$Rbu}besCQT2_U{qcBz+j;P6ZX#P`!*Yt_dRXK7 z$I4btSTx4x6UX(M^fmFUzRsuSE__k*+Qf_=wV=11kjZRvP!V9i|Dj^{0#M?cBN2^7 zOp?!b#zzTe{yMxrg8{mHw$E2}-9I!-{Dlhl%bsjXphK>%Qkvq*;bC7U^fyh&AY_GA z0)?*kg{vDMiYKt@#6dOH%B3dKUd#L6PqtUzyH7t6FEB zH$;&~6+F(I!ha?aqRrXJe0E5nefu=tjitF5OP-%}>p!1+t&;3khbF2zwc7J9&W;XP z>io7Z=?=TbtlzappMC5}=ClN_u&Z2TPo?cwp z-;e#tE0`GH7(uOe3DwNxZ2^qDIBy%EVO@oz<^fgB)L=sLv8Pzrj-Gn6Df2xRwe=^mB(4k(QREp2lYcEsI`)+ND&*_MWAdaOEmW z7N|qGhA%6p6GiXTO(e3deR}^C1##Hh^X->Gt~kV1?IxJK_3Ly3oaLE+698}PBuC&l z9nQG4Hq@-k(qm`H5f3g76ikg&{&o*4{Iqg$oAm~20Nf@1b8V{JLR z$tWk;j$h1+my#(%sPD_X#Yo9bdM=*u)-gA$@;hq3amw@K1*4gt=mp)F8JEQt&;1Ir zAB)L)e*nr$n10KW^(}*YgCzIUvr%G6T?;k<@T%U%La9c;8=R|k3EwJ5XQnLp1lN%3 zyBR5B^I-eeT+ctCbj2eWVBOS7UNIkSgxJX^)G4Kh%QmQXUnxF&Al<;m-|*=JTPot# zV1c|ceNEsQoz?VBy~ya}h`|?u1K`(?7a`=JFbZ~=XREWrZ8$b&OM6uyxfJTOjkKzb z_oJ=f9UGiK`Y9sULisN3gsbCkJm&c9Xva$-eLc4;Oo2bu-;YR)f!MB9P3gYAfw4T_ z%GEB5-ZIx_GkQb%FU@1rZ;#Hqe&P=;MtAIOpue|`o#88Q`4d-Zr0c}j-q%@MQoF*k z|IXc2#xqiBpkEklYED_zmfyBCC={sYPs@w(i;-K_e5?ZYPzp9Itzf}Jz(39db!(sK zDDva2y-`0h)iqZ)XN7ZK?_HZopF*h>n2USQxQhbBK9u~Nh~*e??d+z`Gkoum_TSHl zWtZ&HcYoEgof~OPbIF&SjF40GGF9OXo-9oiuZ%h3aEMc8q0ld|IDF7rm+7OlQ%Xmi zuFICpYoE0)LEUeGYhS1Kub;8TBZga^`(`XXnpDfl0er_YMI%|jZ;s|Di!iq(%b10^ z*s&h4xGy#x3I$W0-V>gL)b`57V3yB#jCC+4GDa^ZKi7%y8-Q&QuQD$$kFQF75w2-1 z3AE;!nZ~s`8I_Ww1u`@m&mJCCYO{o?Hy_lp5D52LBGMBNi!qwn|7hJf#f~i3wveS% z)4{DDQK=jc1!ZR+=MOzPe*3^u4)XJ}N~Qm(ByV+cfif6Y%~4#UrR_zA5@~D7Aj5*= zJA?xi30y!{Hz?3`yxnUs-#za@ef%MAAS^}YMP&7+Kp)MO5l-j0Clq zHELCE8ZD99&LQN9SXHmLeeC44@kFD1Bb;KawzP5?F{w`;KJoVZRpiz?0f(MYyDWaA zKeBaurnlTRgnSVzAgt#X@0`KH zj$Vi>h#NQf@>csar1!IaxS-4T12DCV0glcyJhhIcZW{eSs@!kMV3!ET>ZeL8hrD|U zSNFWFu*pe|r8-m}9E(<>Y<}e?l%mnIi?^K|Q7hj?Wjz-XuG^Ok>W&ev;xU^BkGWnL z_Y+OH^sxN(-7~rWXF6R|GrAl12}?2V%g6CaEbWv7fLYs=SBwv8b?vfT%Etm)v17W5 zD|60K_U^?(4W%1{vpY}eb$!=fXa`S|3L45>)|S>P(0vWACu?V}Qs~RH_GW!&EEa zh!ypCxoLoS@OyLAq4M7Ex8A&v>!FwJXBT!?O3zN80jQoGjUj*+R~3*Tk)hVr3$tE> zieY`IU**gTu3B=mGuxzcQGD~=7X~&_zkbY;Wkglq-`N{kekB?9_rYw4_lNvtQ=WHn zq)xezH|h^USr8c~uMRbf%v8#rvmj-t|M=c?f_d`Ss ztaauz2#*@D7xq&N9{C0a{UM@vwG!Vx$*)4tRW8~mRiO@H^Rz(1nT6pYpQ&uB?_ulp zpQ*6kpJcT@eyT+?ry9>cakTQ^>zPY=zMXk98D>Ta)K&%4F=}_UFk+Ig4#aQKBLJ%T zAFwgM>z*T5fv^?S)YNp)L+Wela=JC;l=mu$5BCkI7{Q z5zZsCZlqY=+$A&U|CLjD-!?lRBe~_w+#EoqkrDi5g4jC2z3A0Qv=4rLRzB@>4a13* zWDU!IO)Bd)KE|T6`L^C7Ic)A?(UZQhG%iu*3B&e~)vs@qQN^dr=-!nV5&7l%3RJpY zKohf6ai2z9-jgmMPsZM2EY(3e0UOd0fdBPEzJsq7M=EXDJeM8zi#vCezlh(n^0ff z+ywF`mcmXVQ-yTOsjl>a92;) z%K4!D3-?X#!zbxF=xgV%*jSPxUTb;Y;pEvJo%mf^vO`F}+O6*)GaumbP31h3$s8Z8 z>J$g0rwV>u_Is3U6gP?#xW~^JKYSaHcc~l1NGyCDhSU~}ScdRwo3Yzde5+yxa%X%a z$%mW#>a-a-SV`RvRAenh8J`C>Y38mJ*#5jgXSJqac2_m-^x64qRK1-MNZWE%3kVI# zN%2qkR_GA6+{Z33V8n|$z?mTLY%tHM{{(InHzd5<(Ew$GSbfMV6L=#a)Eu51(@EI9 zqQ#BR0p_KR4xh+&6&@~1i4ASt)!wq`7kTixhRm~r+rS&2w(05NBovu^6^*dZVmiMX z0gFm(i&+`)fDA|)f0~ZkW)ls^&%(7OwPiPo>+p#f#7wIsRBWPEIU~{aLJ0bur(_-5O$VG?=PKW{IJTA`I=qRw;jNb_rK=po_#Y>ziH#s8azA~ujyE_ z!9|lEY6m-7d^w!nZ&Zr7Ein?cwSbDrwEe`tX8W#zy`4xn3t{hb;y1n09P9O zG{DP+OyR@hP=~**K$4JxB2|L;7K)hBvL^VC)jCEOFMJZ!Dsyo{X3t9T(TK!=tFS8K z>GxJzMsK&7R!)*3ZF?23^p!w5EK|amEM?bVlIBQAn~PV3;dlZR#V}+{wonTX!;Ehp zB*Qz#w|{-K;2nxa!VhOpxPZ}wP;Qsu$nTzUv*&4u3SK=?D7yQuX5cQUo>jzj=qA#w zl0SOTM#dxYF7u4g<%qxo4u*l0fWv5az}P40i0s2pP%k!Qzf#2I@(E#)ne5K8&Y?V;_~G)9ugtKF%l zu(~abQ}}n0f0YQ4b?y*@%-1((R94FdQjvzsr$z?0DOH7*q7Y-jPXFr9*$e{T1fr`X z)pSc=^mE>Ier^aMee-#mHt?$@?C3kgyi#gt8IjOE)_Ym3aE37PgirH#W_WC6omVfP z7wO?zjp1vC8~5^NJ5Hy(MYAEl$lE9v(CH{qer{yQ`lR#b+bU0s*X@I%0d|E#t3YJ}(`~Va`47hV z+cYcT)NaadYDKDL856P31G$2s2~&r$Z1Mw2ACoTszB(k{Dq7o)dE_b;Z|*w2rcREW zB60O@`tq80quasizl88aHYp28LNGFH2WpWE1g?FB_@1(gpqT6637HvnqIw5{?7e~e z&%yL=oRfn)+FU@~eSy{Ah}^|N)EQU9v}s{I5d@Plzb7GIG^Z;2j?>Ho)R*G#`TeZn zt=p494mb1S^ig@h5fOcZjs>nH%j9 zy=W8lQc*AD*$n;N8j!oOok%}6&QMK0c*8(GH$npIME&NA`=Ju|&{E|p1Nge%JCH`aCf z=vp~hBf%EPx03i+41D^S1jsid#k}8*h1djMMOUG;R%Z`y`Rgf!p;0ZC^NCN8RdD^} zg4J-n$;u5&arUzCkZX!9jRt~GW$An@G6uKHC9ChiEwzB5sE=8`>RuiO#E|cdksfXX zaOKsP5rf=#U@qzbu3{fy^rt|16j6_6mDO?y51&^Q`M&z1^P|HQC4DCS!a!p0<*lek z60~gk(J=iv*5Pev+Y!VCY!v=)je6X`(%}6d@7qu(V5SY#NPGJn8^n~s&lnH8|Ma+L z_&Mt6W670Z&yCvhU{{?djt79Z)UTIZ*i=CqcrA5x|JUjn%8rw4iGcW!35c1aU2MSg zr5n97sxtYoN8{65%RYdLmcifFeIl7aJ^8n1)JsifobW*V0>B`MS!Xt>WYOfu$@vWP zxz9}C2DVQ?Tk>27J^PVYi*6_Bp#?Ti&MNglpKj|Ep_{7EGmE%o=773QT(AB8< zkP+xca%dsFbd4Y9{lQ`(r1YK7x}vQnjoS71L)fWFG_3fFq=2g)UA;Yf8eSy2Cdx(J zB9DM1d!wG0YWwa$=j_`AO7o}L{3%C3{!~hn{YgZTnFl;&R(9aC=&RSSb%Vg}4NMD; z?!f%wR0!kblUOBko0{K~GjV5E!0JTOHC05Yxv4{{rhl>xI?q9)4kOy6ZADQRBW`Sy zo}ENJh*FFGKs8n-eJZBspK#eZw^sW8bon$%$wR(cjB{?v`e~*jP`-_Dj*Tx`R`}Qv zV1U-mPAKq-a!GN_5b1YUR}7W58opX9dE{7m%BL?#%y^m2e4GD!Mi2aMjGJ(uMaY)w z#Uq^>+D^S1EDh!3d9wPZ;)Mq+4$FPGEGh)_mYJHO!3?EClcQ4psOo0*2|N?@Slpo>b+R55U9N-JBe zE{|=*Uq9WhhK7+!3CLoa%CaezR|9p)WTx(cgiY2-Bm6`Jr%5VVy=AGcI-CoQ;+tIU z?lAe@MLvC$obv?)Uf%0=RnBA*i29uw>;lx*O03^Tg-8aF#&}c0ND_L!ZcFdjhp~Ly zf?$M*D>THQ3m2vAwyQ^l{TYk&%svf%?Snk95)=3sl6%tf>fVn(n|sJb^FMzNQDxct zKSn%#kcuFhXAeO+=ck_gAAA)hJktMJXIAmiGCpINd-8s5uu z*Zh~ChLOt(R4$Uc=t=jR9-i&;O~0#?1Q}jqv#yND*O5{oNZ0Et;sdnwkO-R zZELE@nruxvb>d`AHYVHs-~E2?L)X6c*=wz5J@@_Ffu+9(oz6P9sUvUUTzOYtpapuAcI zd<=2=apVM&7*RnfU1-O8j_Z4@Bg35AH=mDj3jiw$4Ym*)KCJ`x_?#TBy=VTKDZ?#J zNKb;Ni{2I;#Hz zbphh~{$A5ws+>r1m@}CYgWR@%k@B8xY?GO$gYMRZn;ifQ8w)HC(d7m-7V{ld{2m1+ zlbGg1v|~{ry|`rEME5v6y|P@gT9kVUxQ=22)wUP#u`(}p?u24r@I(LVhcZ8&fH69G z%V&fMw!V8#CJVG5(!6eHGfSyht?4b%A?~0UHG#O)P4;HJ(?zV87a} z)#e4fF{#g#wgY2(7_`5lM&oz2B!WH) z47)q7n=ui4_u_{47yat$|I}$|k*D;!Fa8DlR>LfC&00e8aw%QZHqx6Y%P)^55o!E| zZ)RZ8w_>Q@_5=c>B!&W~&9=|BC_#Y705|>#;6nP7>0#ORG1nItWhylfsCi_PaNRe`4wT= zHGO$?x!U5{DO~|DcU?9jM}bkTXAT{s!LnuX17=1Md=H1h2izrXf*yUDB>I+Z@2=PH zU9a_U*)P3)eI~|u5iDk@y00va$;j)pSuMs#@^aiJ1QNkkJi2R=b8=s&>uqVDT!2ec zB}q@Q8s+%SxivjHXuWRFnT0Vib0k>?gk4YZ1WXkbvg_yf-6DA#B{fQx2fkG$^^J2! zG|_C=qXx`vjWyDYsH+U3hrncg`SJ_MQL-%#U7V7b22NJda@^q&8&OwN@uHe7f#@_U zc`Hbh1gQm0pBZ||HPlS1uVeUrt4|>E?H>~Jec$BR#-#5(1oi{^#tL`=F8kcEeV!&+kk}TMYHJ@)qt65@=Y((x2VQ@B$Wt^aF@%s1$4Y9K? z_^zL1JJf+3`-YVBQ@F-h(?|@fUTDippeWfj^<%XpnHG7+U0%Ls?|nzy!c*};ZG?2} z%|7wWD*bW&xT@j$~Uu4?t|7~ zu-VGQ`s(JmKJ=ZzaM%>okK!24X5_Fb~-p()jR~_0nYK>Se8t2y> zHIp1$`=qV{jgfz@HNB>vu5P@e{v03?c7Dus#xyDp& z-V3MT350m_8YKCh!Bt|UeS%nlWM!#a8Q$K$0be~SXUl3)A7EsxJ))+5<>%5HO#Cn@ zS60*v+X;bdlcbj+4-=PlQVv5hiP9r%k`y6W@0QJ(X11B~HjD)>^8})b#8*v>sD@x4 zQIv;WLd4YrFzrnn_IpQ0gsy|JYuDMG7QKm9aqPdNbf? zx9C49(hS}(=|5F~7FT11H7MG!)FVJz;JI*hC?I}QV(zW99rEel4Y{pkE|{N{Svw8XJt?)`4wV_-RU+YBZ3{HA3!3-R8`5L@jp5aCbQ1sdXFFX!Fl8a8yC zx?oq1=F(J$#=z#88bRci1R|=+F#VwT=Ad;R%aNn{Whg3q-Gz4DBLdtIR@g4h=crGG znzZ4WS~C_h##wIRs5^q?6#CPGkW+()ajv)^E3Y>(>SMlAS-0+WQhAhn#LT}^s)@D^g<#xKnW&M6 z?6b1-@PG|E73Z6GsC>(GCD$jr7*XaI{677By{jN3EW8gIO=i}X?CVDUFRvo~XEx^+ z1{Dzdx@`sicNH_VxCZqHTw*x5Oo&MIAIdWnk{pje1Fmz!PnVwGX zr+n~f&SkA)OkVC{LtizJVnU-B?s|(HiFPSC%{ZdSTiuT=^{nOUaR@g^u?_8oabn+y z#&JrK^C|#*Al-#NVHk@mM({Y`UI!*)CVFVZKT_4U(;YO;NxvD1(ehfs_W#mpqc zXTfcnXNDPSYip~~k%(|xyqeU%d$+qjzyE6;kSl<*Qkq&!aS<2|>>KM8W15%E8n%m_a3> z-lPm^(wjW_`2H&O@oBvE8BlCvGlf~j5Zo-hr`_zNowkICxO;lf`^Ukh^D0(M-h9lUB`cyTAza%G#}rPADdV z`B%(-S#evRSR5p#mz z=pI3Y&+-XckBh#nkdLoY%m>rnbTste3_ zG11ZRWjW~K(T3v^C(%yxUjJyD|;q)>#pc;vKxX6MRJ3+oQz z@1E)mOCH}aQ_pAc+E(SVJn~=u6U1XKuUb{P>AQL@oGKNEnciL~B$5SYOi`u-mjeY@o6Xf3m=T*arbY}+p$IX>GI0b*kPE|@ z(e7xzk%q;1N@tku2<5uJS?;J89L-Xu1*YyiR_8Cx%k)Za?c}OlfMzzOD7DG@6Ntj; z>J?IzaPl^Ds;Nd5yBUSXlGcX8@B`3r965@Ri|n7z9dmX!fBExxL;ShcP^y3&efk?S zzL=U=G;TkGXDn9)Yi4F9qy{T>j41n$Q^x40;?Iq~Q74<`(tD--IZx<1(qY&nVsysu zRX_KXE1z80u5c5zk&u=X&52%JB)JpAzZ&+|pPBr|c1DwGQ8-pbayM%2^<4IKV3OF$ zSk^sCz3ONJauJ%2J4IprvM2KdOoj#U-dRHsLwm^2CEhl?)Un&`rrm8xc+rg%oKR2b@BWzxnrYN8gW3$$)u@*+qMlo(Mp(uozh&KOB$P21ge1m)vg8g$x^|nZ z=zc4R+GkXsD8h+yn<-Hzj^Y|>FS&rbIn-5yCh>^5x%fK{=*a*9hIPVIYI9LWahUKiMicUl$P@s^F6NpF7`x<`?uRBU#H`^inYC6C!2^R!SIdvu4!f~X@G_r`G zyK~mizjx5%j43scZ8nUjoeS;dvTTMLs^LxWxMqfV8^!ozlQ4#V)p_^p!)rIAV*+K` zpPN`uytes7f$`R5UEsVO<*R@FP^nUd>!NLn6>e_s6Pd+`Sd-av?DxC)=F^432%Vu%o{QL(~MVCuL0mR%;jnLe8Fh zVDP9)@TeNro2bj^Wx0WXGe= zr8SIkLL$ohO6N<_T>I}B1d?S>Y=7!J<@qKnEZpM+%iP9ku8;)J!c$`t7Cl2sKfte% zoUD=`!^X`wCr?)WMcy7$d*k2S?UvPnA)2`wUrC$&D5E@gp67Sbpjh;nJu&t^|R6j|FRn+Z~xyaXgI)`)*pp*Z0eW zKG;NpZX(|S35Bt-NHKrjbeLlS4NG$38EBs>&g1^+4Og1z{r&ix;2wN9{oD8N->aeR z{SBS3e0(~|598`9x1POvb^}CWb6q2}7mGPAY_KNv6YGgW^j&-*0JwqX$opqIHmkgD z2W~hGnm{XE5zcwByGOO03t9{%mUkg5tnzzt{R;0vS`l)=A?eRTsSu8Mq;%Q27r>E) z8T|PrIEk^7qVfujDMz%S?0I#2%J~;YGVI&!B-_nHgYm!iI!QhpNfxZtcZNu65k;l- zfew}|Tgeq{go>c9ILBe}?iQ{+)qT9ijI~ZsBV!H@cWS_cGh$KRT#wg*W4>K5HElUAR75mywVBnW@Ka&h-K(rdx<2<) zlk+Hq($6d*$}wb<5Rcv`Fi@CUa=Ce^d%J$rQ&5Eq_%BV3PWah&ze;RVfkWyYzhzIC z1oRqjuV&lAI&y2$R!8&E$Vs2!rEoz9=R>zL#p( zk<_)OIN~D7nlY9aIr2*&Q>3(<5`&^RHEcR8KbfMw_PY)~m!B0j%(rfuV&V)%HP)R_ zC)wt95t$+6P)Q+Aa|{Sv?k-2BYDh`{$FD;X%34J;^a^<=q`mJQx zi6b&!c_kErFT$4cw7$(=H5^2En%jY#NCXqpi^y7?RaN09>A?{{@*{-%Y}cVGZlujW zJ*DWtG)fCDG83#5fSM!Nh0G4Nx8wSgI$YW95+rS1K(5^+5j;ftu+Ci<0@AWseIvSs z*!EG}kN9-k^(_4w#T5=)Tkc{SpIW1;)l^HQY8~)=4VyEmxJCUH!Xs!hlA6Y{>h@qs zabH2RVzk3C8o!$9S}8nEDSyAJRa13!xZOM5y5!7nry~{?E(fo53Om74ADsecA|Rm& zU-`F*CDK#^wW%bssa1cle`u?E()A}*-T6K0GQDUAyFS@CD)H~eNgaBZBrC=RzLNX= z%!^Q$HY+gpPyF73;g8w_V2AXI#1C&nus}b%=y38TL130Z(Lc|}w`&xXv=ZZ!La@sH zk%ruX;U-W3hfj0qO#Wh13A<6RBkqzrzX1@&p3tvB1E(HfG|^$%R|BSLp9S56O`dB@ z>)_O_>x(1*Z68oxd$m->pE6S#hcnvW(SzL+B$u6{{MJ(oB-0&$PUE=6B!PqK_>g^m zO&jrxaDl3VC>84lhqQjMb1e=RqdMhrsaXn-$>58J*t%DaLgqvo0fXZL@tn2+N~5%S zp$>Q9?+xxm7jY!{v@IDp)>4T_Nki#XZwP#iesuLG@@~f^U3swt0&sK2_aj(oH`5cj z!y7>Mhqe3~e(M6PN6lC;JmA<->f+wb@6SQW2o!+T0%o@>7=(W(sGKvW&roi9P|voP zA&f#IvA%~CA|ZL@wagfu)Km3?SV&;WrvaZ@12<3mmOb*$geAQ0*b=Y&+Z-B`;&)?? zfB-r9;x<*f7SH zNpy)mqXI-o4ZbsWlY+GD?vHUC0L~`90uHC3Qy zJT90#SPRxyPfVnwq>c4^e>#s9vNqQXs*ho+Ph~aiaYyKx8hnk}QS^s>F&SLI9s&hL z5Ws0&8hh3$!X!go`q6^|TxXJwFqc zN}x2^s9rbB$Ue_?=AyCmN`7vENgPy3A6RHzyAIwMua{YG-J4NnH7f*%?>N_%@-Q|* z{)v6>6RvaCE6tBWQxkKrNJKccncVNK^lvxpP_2DeS1Vy{DtVZ<>EVh;v<Bi1_L9@?cvSKC}<6sYZ4)7fi;t1v#5PlN`jXK0bz=Rmyjc04by_{&4BBg6Dqdm~UZAJ*u z_go^wBDEAJkv*lSn>uEIzTG~?uWqM-43XGZn*7^YsNInt%GK*pD?zdY@ONDJm8J$G zV39-1{WI5gUufsvcuJCM&u#bB0~2IN)7d~8_tb;#?%?&e55ru0cV9o@%DKxWGtq^R zt1$&VlaB!Syd8iG<_eZeKFqe4(5YJsqp*$oHBy!%ak<9ZqRO;Kf-k#wa}>{aQ5;ux z1AH+)R-!zqq*yBg_;yp1F6SO1x)YjI^~K(U0gNY|uO=C{Y6+jECP*ZS7?ph<^d@aq zN{GKwvW#Hm{oCD)@k5&7)Fq7r44~p51%w|QK*@C8+_)3KBy~2fIzU^!cssy3?&=j3 zl$BJ#GO=aiB#5tQ9(;we*7t=8fv2g@6<%q>|5bwj%*8+Wi#g{Oy)ld*#Wi$6CFTO3 z8(w=_eAQPp88X6pYS(DtYLj}qnG<0%bE4QT+Ao*dr3s-d*^!=hC!7eU7zCI!DsNIDcFbXn3~&y@d_bMp{>gm%$9mo{G+x|Lq& zN0xgl5M$T8F`<5Ri1wAVa5qz*a>w;e7URv&bboR&RNzoTU1ton23*3Qlo8k_26``As)=e$fwg8CpYnzhPaA2>!nzppJTOuO%5)t2x2m(z zmKeD@)qboN|j2 zd7eNoCnnb2vDEZ($mM&i)u-okek%S#xK_)Yni6_76=4WLH}(P8MWazFnJk9&vvs8}J==46TF`>Jxx0Z|wSYX}c zR>Q+zLm$r$h&dxNJDCf76F5+GYz+Rjj-aJbxYf4yEB!8k{QoH{YFQhH`XJZdeAXw~ z6rUZXtZxpxddI_0bp4TDYAiz@&@swwtl>8SLc%#O4%f2uw$Z~|*`Crom{(VEg;|?5 zW95T5$8x#gg?SHqV!9w*WEix5{DQ7t&H0h(_% zrTbZb7PrZxV*iJo7zYBjGL$35alO=D&Y zT&Gk$A5U{P;Jtzknf*aIb{%C=xovN}dWh^vDV}>KCKjvY_hA099JLT3zgC%KbFdUH z4GKjLG!D-&lE!qW@ph8k&BJF@#VH!${lY%Hh3QxtgK^m)twwgBq1oP$w6n>h52ld} z0gDO|(OrcthjM8|p!Fd0M`(mg%WPoJ8CPw3MZayM(_#rK^c%lJOiLCR{Nzq)+K+<`|G+fe6xJVz<2E}Eb#fdczS;ZFiXqSCvz(1! zy_DMA&$|HXj42k=XuD}<9)K@Kp@TTVyFqV+$CFZf+&JPft68v{8qu~}Ic5F=rt7zu zLfzr*fx&xx+sz2{U1PGeW{Aj=Uo_G+{W#^5LfuK8GP)nmPmMOvj6hS2V)L4A8GYnQuTz9>D9{-Z}B26BRh+(Rp z+1lKY3MNfmDvH==sG@cg^10M4EPJqJdiv-F>bTnnyvl|UeUuKsFVeIqgio$zB3J9j z*~|h_kS<^lA=OeY7FJS4V}m_MzVhq@1bspeFLiRQx{+IqOs%UyY1N^e&;xMvM+Yo) z$$b^FQp1fuybo}mDHOdIp$4%TOssco2YcDWo?jp3m*SVqy1$wlSx00vM&eEi#UXl- zd)85(tHt@l(OCytAn8E(L)EtFt3&;*tsMLBF`#=uK!4`70`p+lt*U2gjAlQmC$4Cd z(xKNhuRil833t~l^6qH1{=$v=iny>)00PNp^Vzy8W%&NbaEw6mA9UuNs|L}F0Y#H%QtJ7c!ico4}r8@}Y z%{^{ry&aH3$?g3@0X)x~Y~0^&NdDgqu?BkXK7M{t9HR# zU|J=GUEhUA_GNcJ^7{wh!c;eY9#$5LF)@^NunXLXW*K=b_8DOWpWTSI3nnQ%>_6jt zpRKL$3_UD8LFa-E!*YJ?Zg)JcJ#&8Ew!70YCD{J`TQ|3-u+v1$$cg!CXB2WJKV>XT zXFZ=s*n*Ng3xHkxved>VkN)4t#tB3gN%M}{ z7+1-40g5JRAko%%U2I#;$`th+*Zoom;U~Iv^S(>9W&GW=RygL@uY(}imwv~UJukXU zgC*c&nz16#CsWSpnc~dCLVDRjl%ejU5t51W)vQY1aMMRLE&_V)(pggOrsv|RB6dOR ziX>qdVwR8P-7ksP>;T=hU*$RbzklCL9Q6bKd+QG$m7)6PQM}#`#DhfQMZU}2bMe*o zf)K3`S8qvGy-%veZs+LXo|_>x7BO;>L5i3LG5E)b{BvfRxXe_II3Z6@L=AhQJWZZx z^0v%OzBd3)@B#-8D3oQM49lT3-Zm~CWRI->W=inkA#3av3aRCrk%WRCw)r<0s zs^U0gtGkMz^Ziu$zw#(Ll&l-7@A(!v7mf|6U;xX%JxXQzH7OPNW}5L2?=ujA+NJ9NEKOs{(`ha*ioU8plQOJ zMV*s3?AK5miE&toZ$+sYPs&>(*(&{e%u@@ot?5@J*c|e6YnjPlCQ_e(mB(|Zq| zgX?do=-KcNSWkuSR8jAk(@+#nE+xGd^Qof`eu6bE_4Z9p2R1&xFiW9uU-qqLQQOt#-7Gis)M);Sw6Az4$N&qsg^&rG|RQ0;x)Izcl27-bbD2SDw zDR*waL_xuF-~q%qTF~AWXn6vq)syzO)Ay-uyTRqi{cuks46}$isi>4tLUY%)C_poe zU0YiJOA{kW4pExRqR2L<#5y0_ay$y?kn$g=D1_8G@YtgvnC>p6q$Pa1YO3bT=-Cvg z7Gb8ZPDX{`V||NBBzM_vlj#ylYJrJn)y4B$IaZ&Iq0>T{f6CN@Ie=u+*0j+rMS}=6 ztt5E_)UjQdZPZ^f)usM6lXiF8cANEXU*GSB?-WK{0y*B_Fj)leEFl8@Yrg|Sw2Tvj zFAgajqAP8!tU0to!od-^J~Ul$fS_MMy@ddAiRxG_4~)tWi_<8SoO;My?JV@jfcUno z->F~R8mWextU@+iO^fu9_>zfoG&c)2%cDzOX*atS-*EZK=15fMq`?|9IicxU{Edq$ zuZS(MOyIm)Tw>i6xmD|St5o)U>Cgk~*)cj>B%b?-GY-Z_G$FQFWD;t-H3$4lb5ef5 z?X$o?ivF)PGBWP5s#%Elr+cyWc?VQ~@L`0WL{5JejJ+^oYRSaLu=tE_Vm?oVF2lQa z?@@gRQNE?|QM-LOjk#p-mW+C5D-a^Ow%zxUo2%&^epG^(a4T6_+*$OZs;UsAurTB7SDx_Ly)7m;fr7U3k;w$GI#X5bn%j{3z_3Kf85d6Yy zRY4trGkg(=_G41~gEKXXpmGu#{1)Mx$De!QS3?LX%D{2No3nx`O>`dXBX3J@p28K6 z%HoB#?2A$vD#%Ks%S#@~JT2hyrHTeb5FW%AJ3uMU;I4=r01C)hzW^JLcSK`(tXSz_ zI3k#0OJ`wu5CfjLHtI6*zS2y_^xUOKpC1L4c=}?+R|bllS7+UL`#v(OQ0Lvm>O1Pc zAXf7`%3I%Fv;~f0j}b;lh`-z3>8RuY9Pjb|cT(u7ApD&I(Cp8MZ)&QHBer#A9J9lz z{k6{YI6F9PMMTPgfMJ+DKXpDTkn_CkHVn#cx+-(`~6j@|a*>`VpV%XkgpfxEYD4G}-liI+m02qpPdn zI2EWy$zEYo+1Lvw%mPwwpbrTcP}%cY^ZUoIMiDzA=h2kb%})H!AKR#FSf@aEp^=}C zvwkKi`EqNhhd2=S^dJu7_x-h1mp z#UYuK^mfc+(B)(`4VtcZoni*AVAiW4f%*7k-d6LeltBa(FdLWN0XK(N#I5%BZMs}8 z^!zB+zLsR#LlqYal5Yn&ty0$6^Ht9-C0)eFO00Nw8aba#=i`q?E!x$QsD8;;rYqhvO2y(OFz+qVMVSBa*uFr098 zY<9B>nsQ3N|I^U#N&}VtOwUq_8!RW3OIcwvJ(a>Z|+I&^ybT>8K=BI?_{b)CiyqeAh0q>wA?f=B;f72@fIDW)uW zmQXy+Cp6@!uY9%v*j=u+kgt*0FK_Tbd?sm=7&{WT6>pwpVWEprkoU$pzp-~)DUI3srin6YkYKz6O*FalZf2J)N*cSKlW!x2 z7Ui+qdS^hQ30rjiep5R2!$z-6GIsl+00tSK`3`ujdwgY-DeJ`q@J~w zexu*35Fb(Is_}WfTymT~aCkKO4>ca{_C}-RN}IvL{3}c3nd7?pNHcD(d`fVddlohl zeO=_eBux48_D~r?4or#O9BNjl9xD!AE9%h-fzrMyNi}p^?X4)M4rfFR4mMbjM4)a7 z{@YJ6c5h7!O*N|nNfFa(SO)lcL`GFL6Jny3T@Sn$G`%L=kS)}LQGyvV8wdVGDrGuk zdm`;bEO%$_OirbBatGvQ^4DqzeMBol%2xHxZ5hP{z~r;Mq<+Idd2icGCjJyS)-&dF zz@5*h6R#+cmz`-$;TCCSYweY$8i{p=f0cNYN}9)pD{P0> z&zSn2uhroC`XjN?L_Pf0p)xpT+ONyxiy!9GL($Lw9;4FqQ7r&kmf^Umq<(r{AypdH;(+y zDY!8-H+91?c(bl3H3SOSa=hbzOULi^mn_576+{fr4M^E4J%w8yEtp*J+IR@(%>!7U zuNkHPiYNQBn$CrkWU-h^YKJ%d2%Z@o13_JC(GGJdQ;!q*N>IU#QQt$>1#_=4Fn_Eitkz+o(lyMP z@CL_J&QZ#=duA{z67ARegx-q8x3NFX7z*5YpxE)&r?&#bw~stQH+J8W?S_@`R~bK1 zX#`?zuRu2H%6muk(ivo)FllnoEESC(*uc6P`&S%u@xa`0_v}~4-iFTPj(yEVB&a6b z&h1h2(8M`$CUdpD{4#PIT7KrUus&-tn3OnSW$c8lxsR~P7fLT#H2H+r({J0wWN_f9 zF;8)x`mjxFy||h{wxOqm(*$9igngXYU$=PEUw!;PXq2rB>y4@aW9J`vy#GjmB$$-! z8@U5^QCSXV)wx$sT-PMx(>f}L{Bu$p{wwK%&_2)*l6uitZTvM@GfZ<;w&`rth`3Y# zoi_u?gG6Gw*~CoW9vBaiCh@nZmPnhUOw&$UUUH{xE{#w!9D7Looy!9IDXirpKZ>!5 zj1*|#X25<$(XrPTIX~-G)z(B}{{?tHDW}2*WQ}+mSJXA54V`&~?81F>F~oB&$niTx!J!a~#Mo$`?E88?q8VoNG(VLmp4ULPT_pwD0d0 zf9ri31$6^P*g7ef1^SO;XVco-rT#bhfOo!%3X>nVi|wB9Ei1fe9cKm8P;MWh z2=8}7X1R18AF$PuqGI>@4`bv1q6>8mSO2K5E^4?dGH%u%00Xz!r?4B1(3$27v=*7B zK5Hl&sZIj=H+P7V%lJNT5=VP$UFs<-hH{uEN$v7vguVra@W62-sm7HIa4NA@6bf2*H z%DIXrkV(s+M)KN}4Pz)FdcJq`$!2SF>=`h49H`$sRDMB0o_nu2e6KY-=1+lF!Q6le z(KB7gQw2t|u+C>_$ZIlnB_bg)SoZe)F0wZ`knec_WJgnXF_VXwKno+FxNZ}47?zLQ z&LU=;!Z@3nNOTz2yWP;4Pj+C3)L4%>O%c3I7(2@j^TY2X0~_os`2)%A&rp?JW4%t0 z4cKMM>;%5c5p&ud`{VZ4_o9m!vUa0z&jR#a${+s#yB=y6Mt2^yw%a;hUTUn&VaLzL zhJ&>f@epYS<0`#eG%lrZK(=I?2V5ivN{v{R|8@Dro$MwNfq;<~Q< z-*fnq;@N|2n^EX1Sc`@Ph6}lo*!>!My0hc-Rxfg;0XkL%d$!a4rrKgRB>N)CDc`TXL%1i{<(Gu z0SrJo0(HH2zBDy=C8SmpsZT&BaqGjGSNe|#x!?Ze;@hsPuO!n_KT%o#`_uo~(aKzt z7G&}g&6bTk)GkLHP&OvIV9wxxT;VD(;abjJJ!kfrse!AY?M6z+x?yKmVUXn!Nu8*9Tu-JJr{9JL*}yMl!EdQ!u+> zlA`U^sc8ca^(xE$&8eQB7^6b|Fm!rCiva`_hk9u~7Ky@JAE?`*l{^jd^faJCS!p9u zya;yQcrxQ}BplERAj+Um5YFm_|wR8nq)Srw)YV>t?ma*>scTTvl@|)_DpN z^yw94Q?*Rx17__RDC1To)!bwdh@G75MJFPgRJvkvi0Ma4ZW1Ne)5R3=+=iV7wCVQSCt~Oc+e>xfG>jA6^%7Hpa)yeLx0#IDz(o)Uhk-hCkgA&A{o5u9nCwq* z<)Qkr|8&5z`Dx-<`=dF{?53!|wfj|_V*Dwd22x9FmSshavF6J>l^tjId|zfR|a! zh>v%j|ARW7R&jrLC&JM6_f`%eQ+w00^ctreWpNu`$9g97E>h|-)^|g|RNGrrVrFov zMh2uT+U2lh>17$3zx9UT`ZO{=Y0REuuNgypiEj>{`Z6j~?kLSsSu|uE zqH$?UD3`dpOyx8Y^Vf4<7(O?8D~b0DYLTsJ>(qib*q3-eGsA0!nu-;84RNJY-_t0m zaNR4~W@)z+r~P|>2S6)eBG7(5_E$BI7uWMC>SsKkfof}Q)%LYtUq!cVb+aBQ+r(EmQfHW?{%JifONdS!4(u&H zv-vWZq9yOZ_5q8VP$a%7+}4ShxNJj+M}6KQOVZI@v>0|1wC|66sJ2zx0JACCRjCP-bhvzgwBQ1{L^_P_BWb@AYk=?W;RCUPuMuslhSQ_WE!6)2da# zIx7lkOFHK*jEC9()iK&KSJi&-W4a2w>j8|3TfLhcQ@kC;r#__L!aL(&WZ(yVB?a0V zUSxBvs9!q7`GD!EA$Y#}rS|Ypn+&mbKYKwHmi@RxQ2^*63se{i_Ry-ra-ghoQ&gxb zhwIt@jK{8{syCYnaUa;;i@13$@ya#-r!JN5P)CjR zAX`lyK_m`*87i`sK#-J-rO}hzvG6rTaiXgJyR}AmR>C-1)2gQ5(a9QpUEyKrG*eDLzFUx z(Y7cy;{Lm=h^AVECXR*ZvLuGOmNZuCoKI)8Oz-j4rhne=jtBd{`U>G!Gv^{t37t>! z<@;carm-k% zY6chf{pbG6ybc=K ze$ads&^LPFCxu~>qn;1`f~w>;{YQ1|VAHHv^G}>c>TT|!wx6Ifl=3lG0=c1ts_q9A zue-Q&E%;)&)KT6+^k+uKd3{Lpvvj_OZf=lqW(5*xNshUW}IYoM8LV^v2Mc|jmr=nJ+MN)B!-(3CodN_& z8T^^WBB2>o92(XYpQ1F8?_S>6am>M%ww!0MP^oRl3;B z+cTtNI?W}>KyL}H72w8l?_`v4Y9Z!L$2mnk1S)e}-Zp>QTA9|0Re;w(Qx6L{-g&G! zHN-F^dl)wr2AB=)nb_^*+j~e5Wh$w)%q+_NpD%)(Brm3(@y%*FvTb6hirQ8>X^`hw z3)D9iZM~JRu4A8x$UF%D$udw;u-96g*e_q(?`XHnPF?E@W8gB(50=*2slC}Sb5ZTq zwZ+&E%zi`k?G~S?*3KK)2^;b4G&(L)wJ?mU=TP@|f}m<8IJU~8MtQ!gQ%k_LTS>Oa zYUD8IiVzTGl1;IT?j1X@+L3GYNruAwJvR3P1SzGx<04dQ3(UIs!tf^iGlV&u2aY0T zsR_<1lVlBVf5%%xGFM9$vGakuXho|FJ%-mQh&Df+Z@6GVEekfQeDC2MTx?VKkxS+F zlcsQnPSY~BnLZ?gJrVm>2=tHOL^~^U77nMT1c#0qex&sUVhesXA*`U8yb+DB5J2BdWJC$kfT@(VlM3y5)uN1 z94(UrFUl9c>*pZkggsA~wy$u#BpbRc3%E zT?vYf`exn~iITA2NQauV(0MhNwnLVXW&e<9ecli_gkKBpm19v{gF&`ro~Q}aCRB2d za0il!p$k8;_4YlO8+Jg~oognqlt^( zg6L{a3;qIbvSy|i1q>-k&bE2^RSKq13;lf`z6;dquW%hq6lR_aW`r_e!Ukb+-8pV} zy%)&?f(sx@S>50y@FJwSTA+lYZzi6z%AxetTfUw|2Hgm9G z8-Km!QaY7qc#Wsh(5U7;er(0N=;A=4(6x{XwKDj_77y`GP>8pTyAe7sAvI@}Ws@7z1Km#@nb4OM_R#N{X#?S#TbN_*=Rb9p2PEb>mg~WC-1!^8k z5iL$O$N>iItedr4RMpI7w1&!saoiR}mqox0rxaiaF=|k@XnQ=@6Z9|^NBk?fna*wm>DONuBAT%%6bAOBIYJhY8jBhTMaN*6)nEzt2FX4}&{YbB zbicKz8oRX^R7&P_OKpE|)So@JY(ZZGU=+*|8bfT8X+O;H2r~XMl<#B_Aaa9bM)5`GgMtZ(f$A)Jq7UfyWB_E;R&zd%j#Q(0{HkEKf(W{>50i{MsmJ zQB4%sI1G;_kPy7UX`E5XxI^hjzv>XTS#7ex7M^-`}*+>V?J?eGVT!}q0hTMcisBJrBYla0ad5toU9jcUdT=gq2VRuPk zta?`|AExJeC4d{E*Kw#T4PHbFAu!K5981yn}&w?ys6Oaz|1P2p8X=A;w5p2}LUH;}q+~$zuW|HV%xb z0B>))C30^&c`n2+vFa_9Y+e5_+q4U_$6CU?+iebWt(?lq%ypBriEJX*g2aEXCisur zFmUEQ#q|PnFo_39XGPWMsf2W0HKLm2$Iyp)YBR&U@22Zk$mY^6IXnIbo zQk5m=iHf*%EzX!}nsB{bq?-Keuh?GJE3HwL9FLsNXO_RW8<-YExmhOaqGjm-NnzLm z;PRrxGz|!WoqbBcyv%TZMxNzZmKo!iVUeRw$x{(lI!J7uQ#P$Q-&4k*%rXvNg*r3z ze8((;3}3y&JTEw(Pw+lK>x3BCF7*9~>-8D&c;?RfC5f!lx(hnrllY=hyshf6IVDP26F2&!@n!f zaXz1S-_{ljSsYK|1K?T)i9Os7pjHr9irJBb(>%&#pEug^c*5;^;TBq+481r+B&5J$ zuJaCuwnbc5R8=DaQ46Gi5R>6&-d!LTSBT|Ae=M|K;SXT!H z4b2p8$TmVSa~-vY38K%~vW!8h%}hwkvMi`ds-|M3qh+f&wXta0M$}UgF|tqbe#JaH zSnGFFU!GUUvK&mXFaqqF5JM8HtGwi6z~y=op$jjVHZ-n}(}cUSKv<%1HZ<1gVQdC# zGPuNvyU_;2&>_nhk?iIfMP1_Q>4CjzbD)Gyf_{eEm92!)faCOKaSmBz#tNZd5q^!B z#bKi~ov1_K$@^S1%D8>@BtmEd*kWVgj@R-akIztFOL-u{pe(kU;5~ z0tDty#Zy(*n5Kc;DaEBHFQQ~f<^@8eHspG_qCK>nVo2k<3Ll@;0B#0`u}4)>ovZ*P zlXku1_40`JaQpy{ghp6NV!K?P(Y7u6t`ma=l}|=nKpAKxEb}Nj4VKqwS#WuN=FJ2k zDIzSEfvBYIy;IdSoY3d$y8gzKxyWL&!7|OzM)WT0D(reXUA0ok%W{_m82uS=u(oYc zRgIVl4DzCYbF75urIH<41pFFsx!!nQrxis>`SlvOk)EEf?6(@`F&B9bAi}vpByF?= zc^^;|x!6Y+Bn3?40)>F8rtJB2JkwHC7Vy5?A(z82;CMX2+MFANX~8rvNa%69-f;iw z6>c{UUzdf(zIDCf^873tWi4pH9GB}~lG$4~7{|-5mhvkpJCvwVeYGr$bOnm$J7{2> zaO*l~&G*zePJ3>3(i}p({noef{QQ7nn8lBsNw3E}r1u_+Uxl%+ccju^d%=28YNa&G z(A9gSsKt56GBXB6@6$XZ1dqS-cm9sZu@nx67RxeYo>wf(00oYVj96TUzK35OLv#{A z?o!yLb4}CYaA*kyYibl_jTngC8-{*AqLLyo^Wpsi-oAY+8}55pn+vv<&FtOX8RIx` zxf+48oX{SRxVt+MBpHF@;fVIo@N`fLhr^MRjMXE7Pi|dP_Sbbc6nTktrJ}h#9Cj&! zUuBS;al=ihW{qJO(KIc-{q45^6o$UXE%fNFSH8rym+HOeBODhr7(W(@t}X0$EyDKo2} zz-4JwH{w+r#BoDES>04jJd#9-s-&S~o+mVI3p0)|TH}0o2e&LZonF(>j)bbJFpQ%h z&F`sQnPzl7MYu)-hvQ)<4=`wGC23r9I8D~nCsk9}MUBjxREPmP&3X+{=!Rd4s@=b)30%CD1 z8}k^Dl7_JvS{Zb=4Z&$i`ohszKyk-4^c@AKDeV&M>+OPZnq;u<;C$c_yD$JYLM7*0OlDY|!x}uHW_ckkL_(JF=Aw%EilOfb zMkxx6(~Ppn_x$L2qG)vW+>YlNpMEB%vl-?VgX^T#6ViETk7(PLGh6_lY@7k?y@~T4 z&(F^|pU-FyE#D!QKob64gr9Ub0=M!!-$zMou5*f800h}QS9Qy6txz{(itv6B)B6ml z3We5)0)*UHx^3Gc-L`-ps)$2~&|+&b z+7SvG7ypcLobdKr-`+($#_+hyv`qZLnBPtDq!e$i6q6i13DfLgj6zw}sOtt*#gSWH zlrrFk{QTp-TDC$X9^t%0OaXaLr=>L%?HC#7^nC~KJj${_meFuvtwDP@psEUfX_E3< zl!dezk^0G^+!=&fp7UKM;RlT5F!I!Dfjc{?>b9-8-KYFXlKJRU^RStfC@c%N@X6e$ z-y4c(!w%=mqOKV44Q3!OQA^ zBA5`PaG2;y(TXs}Y3#AO1xl0gw~?-sjG#hXWgW4lOE7wOOa8GkBg~6ZQiVwSEDENX z#|RnT^0;|=dW7?&*K8H3F`9*fXFyJt=bVF{&T`WjoK7c%zXJ3b>DiVT^}P?q%9P17ud z@gz#(k^4fML5n8;vy{Jw!vS5>VM`lIDPk3pTb^^3uC-xWki-UFo}ZxO5d*`!p(tO|8g#jYv=ire^RAf25voyGSH62G zL8q3nEGuL=PneW64u`}3&JDq%Zffctos;RvAnqV96D0;HY?;;JbNpdl*NJYAs}m?K z5MeSWVr1DHW5UpNNYFCbpy*PEC~13w@Ua#_kPCd`xPhkHi7(<+;-MC|Aj`Q!Duvfu z*EJNP=twj&n<2{!9F8Yko*%dd(H6#%7m^aQGpmXa&ebijHpBURMgr6D@;qm$-*++^ zGtziFSbZ(xYf*^N%e=)XW?7E1tO2Bt6^S37u-mP}I1XZnqd3HD8|94T8@G_pzOGcr=E9i| zF%YJr0PkmbPbX&GG?*3#BjPVh{jK9<$H|%Bm6_JB|p#=OuZXtPWv zGFrI#6{?b1mP{oiHQS1)XA}R_bt7^;BV_Izna!c~#GffS83JT-yj#rkhaM9jF|cR= z__F&FX^klJ5?NlLsA|E&MJe~$Oy)&{W$|>gtn_A0(*!_6=}b1s6^z!XYHq2$cc>fs z!D31~oq%E3va(M}3~lQ-c4S&K=rkJCO@rg{h`K)D)vH%H9uM-~E8rHcfTFlE6M$9H zn8@>B;K2s?Pm!@&!!TkI$B5AyhxWjd9o#llRf{)ozm3!B1Zyn34s;pqL3|Xd8*DYd5n5F?S5RN65ryXw=LIP- zZDC!h#bDB%-tp{OablBMMt{(7S3`jf?z)nPb@dfcheoDWo04lfEY zU6ZOEBX$GdZpj)(@r}t7C=>U(sxgc+qFSMl1ZCu8148Spa|@cLM%%X7$l@RS?5{U# z3vo$u_!wirGEb=M7HxX~1JyXKc5Y^Qyezw;e@jGX#)=lnHjlVz{*aJojYUzGs4KyW z3(qM^+V~n)#1!`G%&kP?8AJF>S=FekdWV*kRfPm*czNgHgj}<)C=}j?iT9SVW{4F-maF;ZR|o#yyWD&lvaX*MK~qLEz@PE1hE6 z-eLU0mt|(+gmWSVCtp#!8S6?Xj@=^XQ-U@Y))-h@i2h{6`Fw|UWzlpv-qFT16ZBP< zCFW(zE6Xv3S)P^#S{XRa+|U@w-``_ABA@h__?|Vg*mMhJb8%fis+!UO@U3rsE5+c& zv64{L6`J;ld19=fQgmppt4E6DkHr|IFCm>&sSTUQqlHW!T>;P>d=d_K#B>|IH0a-D5FJd!Nj_G?)UId zCD@kkc9AJNP*ydDd8D($YC$T@%rTKw165NB+5mZ0^1Zpx73tSibbd4rWOlC@utv<~{S8n|65Kr83Dj?7R$*}yvaCgx5v}grjA`U+L2HGkX|S#VUEg6|CKP$e zqg0F%A*_fYe!33>XwNCj8hy`jm?F>NSC8RB?cf@iuo}aPq3d{VE5m<)5_K(zl#A_w z7#mb*k%bq9k^BetLw~3dUwQw8tIa2L+kHDBNV)-yRMqiW29$dv2-23g^}jRktFB zf{G}GY37uMgNle0m=>?JqSnN(aDIVKT5MCCBT^tlhYZaSfBnV!nF|(H4l;|T!s&Px zcs_7Aw){c@$5Z#O-(n33x9bJtFzk!N?lvLIjNs}#(XZ<_JiN}KZ4c->hJ=3j#R3>H7{EBbkwae01Z^%*%21qfaaA)u}g zaDK%!_2`FTA6gGX2c;F7rslC#l*qFTUC-Dp1;~3j6R3=rL9qWBV(Z=AofHw|ccd8j zdzKYKSTRiGeINb zIHB)uJa&qL$6jR9O9&YIHrkdLhf!9wU?mvO*fx#0C&B4`2=I$TQC6_Vzy+=wic+Gl zEDaFakd~@VhH0F4`JK@kTV9wFu}@gzK1)oAT8eS(Va$;s05PIz4x-yHWY`-KgNIkZ zG7n-1>I5`lVzgyUxm!W&Hf%X z^r;2r7hl|9%%(k*sj)S%nS`>5Cn}``tyy~BZdXyNGJv3IIF4BZQ(D`)!7%i@NnrI0 z=4lkfUnVB>h+N2>#u&bnvmEV#D;Y17j%j4T0G*u{!yuz56VUZH9FHxZN|l&&8%dYb zGP5ho0=HWyL8mi9;L#0GBRNgO&m=r#StkFy746{&Be^jf6-XP6+z^-RoyXJTdtr68 zSY{d?wc&S`P|{m9!mU%RIxcoa4Ef!joy9iBCuo37n|U^9ZFh4u_K%^$KjkZHL2g@4+_s zR-R=5_;k_pWl>cPkQ4waySA|xW#xfiXii9H3;}&N$l4^KX)2u0#Nka+4HiW%)PN{Y z!^A=>kTK$&$L-o7%X7gwaAA78U68;h-n*5kzM0-KYv~bKy+>F{y&eM!R62-N#$TF&hwslFc7G>4qd3=QT0cBaBA4VZpQXK3FO zUwgin095DM=lOsl=iIUg1)8=+-*;HoRh<6=S2>yGMqOJBmzx~v3#T}1gceS(a{=Rc z!92~-8p48HaJyb%t;HZ=I$55}J2^*wzDIjF%0*(!(MvG7k@UgEIoWP}qT<*t*ztJ8 zaGR0himI-;gR({#P6EE8ro28v@A2`Wkd)Y zh$~?lM=naC_puJ~vm@qdK$aEw`s;TX`i}3H_CTYZG3fdMA+qvxZh?8Gp)Sh{48slm zFu_`laTw8cIp$?X+qS!UtLq0`FHf=sS9rcW3HFW^rcxYcH%*JDrzbM*jltz|VGii( z@$UUQ91h35?4NHpIPWCJe&v2n1V&10-1-i`^1bivBG{xL5x^^M9T9|EhPBrE^Qy$d z;edDco%|wNUb5s>tT7<09+|Zmha29%dxz`wiog4Je+@RHwEEAgch#2?| zN(tz?n|v8;oHu5C*hg9`+O`p&mW4YV;XMC;rxSy~xlPV+y*{HTUL!`@WUIOqBRdPG zSNCrufr7CA=jTUk8D>>g;dDIUdb{9!cS2EC=xqL#`xs?xGe$G&4Jq*HBe6qFkmcfv zusT%jK_t!`A8Cy}`StbdH#nWoJZc0sNqq!;(J?ZuK`TafFw~5i`(;_EbzHexArgrf zyC`zpZdYVkfh^OAU5~0N@#@uUWOqK5>p3KM7gdw99n^*5Ol_<57Nfh;G{Cu6eBHUjoh8j==u&-RiUa& zgf*aTkC^5O$72ic1Kz)XkG|_L44sg|8SSw+56Js}5>)ypMv2=j5kT5PG8I;NscuRp zAnp}XRhG!#zJYUYmyI!^J>YzI#+C&=%`>i-o2<_{0OjAVrG)*k*bLr_k67)q%VnO$ z6zK8z_zrD*#O-#aP{ld)J(sPkr$_B}z2a~Z0l!lCdb<&!u|-`K zITLXmxTs{<8ENbzU?{7e9dW$@?ed`6ZR z2!4S#p2+j0#8MgnL}ao~H`-uXCd{)#Oe>bz%LO4BK*@HN(3K3+C|Ga^Qr%4Zdj`^z z8LhD@jSzuxv=^C30g7oFwb)&&;HOz zF7r6h;bJV)EvAWSw40c=C~2LYXYT2SVW31{91&AMUAI^qZ`7?S)yAM{8l3LV(B1HP z@35}x5Y{!sup+COTe5mDIm#NdcbMl1Z{EHk@?ctEG_9W8p)sj-*N+hHCQ7CZvv|nX zO@>ysSl6pqg$xmOF>+15jyRuA3?C4QSwccT4CL{O#$=v39p7v}(>y~d{w~~tx3Z%m zkKblYgJ{Zjf9DI7@48TJeVu2u~3MZ9j7%3N`3~$cQHjb zKx$Z&z58;cz^lln}Mc<%(6JbE)#B z$i*!)>Y52eWkn}{Raf#tH#>7<4Xi@FU!Wu3GnqUAliU>R%5>Syz_Bcj^G|U=La|bW zB3^F;f;qwI0y2uy8q?4trHH0IqPul6k@2E5E_V4fumFmNd7EV--r>Z^T8nWYxpcy` zi)dG=9O=r8pT<7$NR)TcyvU-G2nN4QSQd_I0IsvgkUS=eXANDPl5g-t8cJC~Vv zJ87g8wHV3OnwObiE%8Tpw;Nu+ehr|+I1M{xAkV2uM51FehKTc-InziA(>(0k?4j>r z&1Mg>7>6E(Yyec>b6#pRTLW#-b(dYlvw_MsT!Ry#=jspQhDW|u zz~y?~#k6(ZfH^clC_9<#y2yu25z<47#9a^*^oxH+m3X_|;GBrBq`p6at1}lpr3B+*EZo8Ij}}!7$+PKT$9XWkMsEs*DFCKex+iIDkaW2yIThU2$2K=X0)u(nm8sdV_B_j zF&oBM#7OQiBR!aN#=aCtX~j59pwEl%oh-|7fBy<}ni^wqOA*Lt4L*z*@>t ztUwX0(iZbP(f5{RSo#UxvAD{!9CMf`c*?l$$!w1HaAG87`pk_ptD+p+bcFc29Jd<{ z*O}N$-7-p_WrS$Mbpw!)7YxOo=N@IrUlK90!401M&I&fMG3=3tM)0mNlGN>&8Ot)` zcse4hTS>AlFwah=6I|uAhk7?h5IIz0^#hNU#0EAFgCL4X@eV^k+qQCyu5xo))OCrX zsBpbJ!Da-%T%IqIvYYL$o@L=iA}_3D(D3w`X70Y+;-H<|xl?=(l7fT8{&p4m`08mY z%q6FD6TyD+NW5OJIJRf@3xND!3!vg2cc|s5YuX0GxQHYx!MPci%SC7bO5pzrT5-Px zX%(8b!932;MkBL1ydS8PN*dERAv^NUEy@~A+u(Y=!7X%p7;VrGJ(g*~@z?^0IG&C& zY%P#mGC?Xa;4RC7RYI^&#{-6O=54 z)xx_KF|B}NueFAVb?Dg-PBZedM3xm;y+c)2NRg?3#xTNuSr`?SX9nI!3_~ZI?||d+ z4xy?zWKOg>Y0a<7XoJJ?h;byfU>rx3#^P{1NkC6TS(I{mSX4y`w>)73wOlVx#A2i< zfupo*9ohp9N3K#bODocCo}tzti%|pTCTL}#5`{d}vTO}_`*{?BU;Wh+-haKsls5Py zkXgMi2E!UKbXO640z-eL%_spyX4$*tT&=I`N*qv%@P1@ey%E63vS68KBsudL2tay` zu^LTN@979-T?t;+AgpTlP;VxBSK2aBJtpPq(lOa zkVP5g@qsg(*<7-kXU1yj$RRY$E(cuKu#0a}!ag}7y96Q_`iu)Uj-#^HY9+p~PB`#E z;9DsH#sYc498AA>78ug>Wf^rH8$-%w7A!&vIh`T+s4d#V*spIhk zW1f+c+ACSo1}uhg+#QqKG{t)YDZO{NT%KuDT9^sOeI7*HPXYn6J-M_b*I1%OLZGb8 z7?fp+E$aAFqbUsl$K$Wad&Y~U)X73pi<*_qZ6*M%_IQMqmnS#NE20coAyPBvX=ERU z3F9#AGP9IqA)0X~mRSv(X-s3!skW5yMOhO2D)_sNq|FFLB@K7P7V@UGL0OkHh)V(< z8IKIV$qRZ1s#-jhMy}!#JX@8$cyms>F+3*MvmR z(=7UtC~=EC0@u|Gk1_5W4`U1pftMv&6n`v=>KhkqTl^)c6a}LPK#92lT$x-h7m;_Z zB6?whgSFW%CurIhclWQ*)CZX?C=^8@N??mDFOe7Ju3t(h%f#$kR2e=9wKcs-$^#Zq$9Bw6Q-WZG9twWSp z#k?pPmQYZ!%u!j6x~{RsBvQp?a5yj*(-@2Q@84k@dZZY!CHDeq7u0U%i6{nmZk<2F zZUg{L-6or5l91|A6eVK;%MuApFIodFqeYQZ0fbeSm-7xTrkOp#yIG>#HKut&S(UP; z;A&=>CvI@10k4}z93}jD7>LH19+QCRwkJk`(Suo*qsWO>UnKCGs3mGC@9xg1>ju*} zb2UHDJQ_#dh)v4?pj8B~G-YVP%W@*m;(;o$urkluEgR?1Ae<;Xy1<3Tm}$Xo}q4z7{>XdP4oVQ{pd$e$*nFSCD^>c>2&6CCkApYm{yjp zC#)f29B)__(nMpRbtcaWRy)S*(~+_)a6F#TwnujU*1+aD>gE8ZvC~LLKB5e51LGRC z;;^@EkK|xz4W+RQHK%ce4=aq3M2NgVSsw(~$1xj6Lu?(KD5EHPabSe;f(>Q9u4F9+ zDNyLdp={3>gJ~v5D#QqDH1fRM4Ubz{5Ojo_9FE5` zl-3+-CD7eC^xwE3E0%ep>oNosc_AW83GWn49~AZ_;Ma_anS3 zF^)5)nZ~~Dcr?a9A;I|xTjuAMsmz}%qRJKA!tMF_e1?KX(;UDchhi^Y+`8!}XPnM= zB3t)VL`nGgJk#h`m-=oM&91aK6O-<{pfQ_NJ*`1~V{V<@rU6B%?4IA2GgJQ;rGTRoK#IHUG zlW-rTZrt8H$21L+Wx}%EL`yidR%i}Ki7L)z>cR_FFmfLGsWZ_6z<0j$o%EwW`}33{{awp4ONE!g z`%(1uOy}wQ4t+P^@$m@>O3V{I=7~RGKMZIa5~;~eWYX&SbPuJ0hldAfqcQXY!b)R8 zN~|PfiU@0ulr-`p!#s|7e0tuqUsxVH60~Iw_xyZC-wk{(c`yDg;C5x~#?#XSn(?p~ zBmVLXfV0l0r$>>-O>7sG!uxj*&~gJZCQAy0EZa8&F|L@VCm3xoOwP@6uCBaBjVY(-gu2C{*@heFz)h7=>-ym<@n9h#Q* zo-EHL*2?Z0NhOo?JY(|DW|E@`E?^k0xW7L`sl*1`P@k@q#;ezFc2MQ%#1NnMaKiJ` z6SPr?iSN#)Z7_}#PNy@2tO!TqaOdl=6u+}`_FuhI86lx2-^?1|G= z!0H?hM|ubD@9*%%7hj0qo7lm16#{uiFMwYud)xTMpS)l=0mDNlqLKwx6R9)L3yPxR ztZtfd_v#IJiYzBTaDx;Z zZTAqFvdnQholukorg4IE4)?EKksDkT6nhpW`hlyP7|BLFolda!gHFC_Xm;oSMv2=} z<9fZ}aA>GJwni={g8-&+fYzjYd++h;{vL~4(Defpm{wto#<6Xnj742n7>0?y0}Uu` zaeseDG=|nP1Q%iK^~#I2($|eth<&R>-*s3$QR$p?M9vyNb;17j-~QX_zxpr#tK^)g zP&4>F-GJOFp^n9byZd`Ib&VhW=tr=Yu9m(ZB&ECnlqO1bAYJo%y@)hG!4lB?((DV{XJfu;IN6|$~Mbk`1HUD0l_M^Vok+#bLW`k$4ZTj@47mC`Q%{uz@6CP;eG9QQcq(Y6YQ;{o1z>G%~+=Nc&nJUu;Ak(+1( za&Do*$#0DywSjCx6HMTr(@LZ7I}~|AXTPyfaAG}O_9;ABz!HBI(>`Mhfd+!iGU{=j zCuDhvqU2oicDtf1GqN)PXp9WjuQyLi&39C2Da;#xR z0U$3*!mb8oduv&|J!PVHjkJ6kJ-5Cfu% zBF(E2od4itO$qZn(ki8iBaCv?8*O$J#5Nh();XJ$;G-Ap-Mb~V%_*JEcR1hOBeNFs z#1;B7b1GnM2ETeFAwdJcJWp6x+GWbJfHB0x&d#A1i>fvnMsif3a+FnpG>l^M<}VVY zqKtv#oT8|9w$sqvkm-C+V_+bgMR!|~Hx<$vB(TQfc)EkNIhwjbSy!0H3B%xaJ;wQb zC#vIeKWeF~j41K~(=@`lAh9D5)o(6xKG7#mBeKk5L)t1ukQl28?17)BXueS)g}_U&8MUv6p|Cun`eG%u*i0=^%_h<%{@QKsrc z-$R=W))w%7z|;?W&`W~GI81UJSa|2KY6EKxnTjc37&ui&q7kC1Yo77Wi7+Q|O)?E| zj_Y;r812z@H*8_1%sD%960Q{9zyBI}ZpEdtU|t;75Xm1YD#>AHy6f?H#Pv#@WZN8> zqLdk2FRW(gc@zMQ6SPp1=Z7lsYAZM&Np%BqC-2HtsLA~8uWri7}nSOb5+6nRYX9h1qw zGUUuy+0u&Wq%12g5A&RC3b1d|+Ay%RC=kPds%|iiJ<5{A(^a{>g&?1>kV(lb^tV>n zzwBq|a1Tgvg^EUgv3ociesq{UCm^jF=>qKDraL0N{O-HqoPZ4#Us^D(5EF5;CS|zZZc_4V4!H$`UX}%xx!@94Em)RC@VO-K_{FiQ z*92EP$y(WrCYjA8OdOv+63=JgCqG)m3%tD`X~U@n|FbL(&XF@{twKuVpCIJvz-=W zGm98jvHYAR*-s&XtBt4Ur=7Udwp`^9XF-!-N)bMI6p08xQY~2(&hxxaTD*6ttAbXf z7;$%Z4{I~rZWk=`L>WY0B7}&3=s7?znHSLS zQzu#gxLkmutkd1y9c*R@uF?jFw*4?96+ol&vzXKubRFM0R#H^6j3k#3B34JY%k_Fi zU6mxRg}@(jnW2Y4G=%eRbSTRTN-Lzq)b;Lm73EeCoP&{O{EExvg12wqGUNaWMWN+q z<-4nGTcl*5xZe?NJNXzJWF@y5H|mO`F$IX5rIyN#x{`4m_9L4RGb>z?xcde2JV!3Y z$mQ}Z$?FjjPIhupyk?nf5j0X_6lvRngJz^Y)*-^@% zC=61f>S^e1u$G4OyeM#azDR^Fo5{s3y91vMw1sm66bRr?DKgXKaKP<)r4w>lcBcsK zK{bg6J9k$M@8G+D{HK78>)1BbSEK|i3zKL2?t=Dk+{a&=HW3P9cReA`E#+_`BhW^R zHlF(`1&!4QGEBgUc$?CZZb>J;7#_8Z0wM zYQ|*D(M)orxfyw0lBU)+G}6oDobrSf)4ZTaH$uTaL|biNZ=y#90_1`xrMVn9rs z5{!M%UpT2fLvEng)loQYVl=O^I2;bR+%9q_|K@pz`Ly~vQ~)9(2yawfqB>FIdvS!q;(_HZQlWg<<0glp2aufs)zuo0Ot zd)Pu%u|RTehI1>1zS}Xd)aSF|_p78q#BFc3?5~a>W4rtNlZ>^}r>jH&SjI{9!-#Kv z`@0As!5CrG29FptrkOvORt9BNldP>3ykB-%z_L&pKt>^17}LlGbXk^NSHYY|>i&X| zr7xE!+}+(v;5A1#h!mr4#=&jQ=Y7B$R}>Wsm}%@$RSgb@1Ey&pEYq-n*zBz-uE>f? zM5|_(mt~S0qm_nRXUx-pX=*5=^D|ZnR(0b3@A_^ZBGWU+QElBcdj+dB?MnU7bLwGp z%=5@8ec(2H90wUFvlSpW(a0446Hl16|2w{%0{FV(n+&RX znlLZi$VQo}=S3+~YD(C))xNQXs9PiI`hcoxu*w=|75Uh@dT7H@(ilAItl1%y$I}rp zP|G*nMxqvq97x33IqxYFT0NGT466{%fUZQG);|-2AU$RJ60@Po)gT;Tgom7ntYUCzZdvV4x7cC`wcn z$1&~UZtq{L%`preY*ql@_yU%B7PFkDIw{VuCd29}x7Lb1)%koPuvjU?CDMDG-$7}G zVVqFpf$}rwP!@*oKvBt#kJ{T z*z%}{p+{T;<}@RV7GdSAklkVD~d! zuNO?ygyZRqJTExU6W1YG_R`%;c1f1!I3ACrj;^b$9umA)$V?9B#ApYOiH^que7K-0!^Soj-3QBK=O#3DEv!cx(w&$Kz30(O3EheXRB{zL$=?85i8uu^ zq4umXgYMP|a+b&EI1I4X;&?oxs`xXdl+gDBsS8CW1r8GiAG`Nh7QdJIZdnMo3Gwru zu=nqMLbxOr0bz%PR26AurL5Ou;Bhcbv&aMZOJoI0Zwg^7rg`3Hhy)uOX-!FC zNQCg`?8D~SA<0aSM^B{rde-8o>x^3Cy^jB zN`Mh}$TH6;$_h#WwatZ5wTjr3;-bRSS3QoD5X6))^rA>s?7xGUzb z?1u|>#utC_CHn4$FTVH!_xE>XCW2eoSrY8DQnEsbczS%|g$vv)D@h7pmIYdUcn5L0 z$BL^c3Q+1n`82&(eCn!-?~g3w`=+urhT)1lWr%?|hbUZLR-SY&E+TK!#-i_uSsMBg z$MXr!uQ(X9yFar`i*U8s!JS#gr^|}(S!)aDM2M;rf+SNga>R<?fBBd2Yrye%!uyAJsH+C;;efvHppx3-5{>=_45*uSFU_Bx zo{>_*p=|-BFiq3mzs>UuBw!i_tRbQ(%Wq6YwlISQ&IR1A@5G0E#XQfbs~PX#ze7%{-=c3jwdtb%y(*jzP9rg6|h`#U8 zwk@QV7aX|Fh#b9ORq8F%b$LQSFc`Uo=1G=JKqt1mS!MYRqgLAF8VS&JwM}cII zS~{H@nbHiz(}svV;~J@LTPS0&%rn}y#_e{)@pJ|f&<{P1hr>SDKAlb&C%zN?>LpaQ z#`StZURM}~0d3pvNB-Myy}`OJ@=l(x%pb(4)>ycOPu!NW^jT8vD@cykq9Q7#`?gtz z{&w5NG26WGSAONY__bgAb+qjPUe*&E$DN2HMouZ=R@p4W{oN~Eu20f$Onct(vMlnX zK=x4!=IJ%GCgeFONPFR-l*RM&6VB%|(<=(jHf@%}>NoJ~itm2+J1{1LHEO3CSWA=N z?RtY!cTAcH5mi;~T&lWhh@Z$T-n@B(EvbDP38GetF46XI!1a2=#uu3vho-Ke^>1+a z4Pct)522<-j-o2%{gk9K)lg8-R>MXLUcFl|FUyXI`uGLAUZFH?r`|JGuqsQmhZCSR z#&MR?+Q4X9f^J=hahkBqL?-}>9lOn-MGc$h1+Ld891chP`Hz2y#q&K#cxBEgMz8{8 zK*1IfMNsnf`ULQLfic5$cueDn%_3TrC5m#JQEC); z91j_$c|ui|@&wF8@+nSCPNx&5X~eS3GUa#T8Z88Q5t$q>dqB!8nq8aniY=h;uJs2Sga^b4Ppop&reTSLqbtjSZ0oaFwGiJyc3+nge)&`SxJa1$^s7$@8Bfc#kmP(Q6MTdwSD&_$$KRpA0F`Z^n@(S zBtj~Fpn}f}R!=$KT9$Zxc%)-T%=)F|cN%TT?AVGFNo{(3e3Vo{kFZ9#bwNl8Lw`ez zNjB3=svpN*B8Weu=!h#NU&rHl_Zp`}X#YBsbJ#WwoSS!q(DizuRmBOS+yp?%9g zPEoeGij8;_1yW{9DaQv?6}iEbMHk{`p?=+3Zh}di37Dr5ZPViU`B}VNE6(RTax~n6 zp=YSTcfa>t89+0{&e{y^;f!gT@b29^*)&r)Ypg+@mpGlzczpj3tEYmgu3I!M^^V37 zD|@~>!)7_Ap(igfv(Q>`MYDQ&LR*aEC`#xR3FIeh&AFtTCbaDl-t!$CM6bDN6+bH( zB7uxQGUDwXW6OVV6p67#N*Z_fXAXlCXNT?KD3KTw-xoqM3xR`H0Q-wxsl*>lRxlK@ zaFLiy zjQn|??<(LZ%CVxX_>NQfG`i?~KI7{zzm_{eBc=eO^se`N>N_ZCjO&WS@x(75KvmWf zlrxDlo?Kh4w5(tj@jLM%tfIwZloVgSF##zi3D@EBjsdCkGH-!t)>v7xMwuuCvD~r; zVzZs^`6ZX;w8cl~=B9Z}cIG#`z1%|OlQii!=%0OpS zTaClWxui_`0qg>sbt~V+JG}_}dP`|X;yX6U40rV_R{!x>`~8Cb_{Tqn6PYm)1a1#q ziz%WiS)w{O3tOI&xUy;8s;N&F9Mktqq#C!RqPkFG_MW zDA?qUzyKW1^cX10UuK>s#F$VNr8K6A|C_u(ccX2}drlsx7Ut+^nkL-38|u16S#cem zWmFu?7KQQPE`xip!QI{6Ex1c?ch@0Ea0nJGxVyW%26qBU@Zj+JK7O&7S>02tsp_h8 z_Wt%0IjpzlA{P?7plpoOY^rg$q)~Hb@lmGDan5I?6F7a&%r3A3N#X~~bkKM00y6{6 zwWa%}caF#I=oJb%B`hjPbh195(4LD%Btuky)JVmJ&a^&g2T@gSqjF{Gz4BUqf6HgsOy%(;~iK%jH6U z3;CYO=7wu1`Dm!!3QoFt8NqguM@rexZ8 zn>>P{ZJGT%Eg=U|M%MX)6>{VWfmU|!W4k?lMh}r#ZsG$m+aZ6lnEE<+5j*wp2eQf!ST(MIU1AO;9`iX($9L#lDS={ z)%e{J=8iW6X8x=d7eRGoWzW1aqsdH^@}JBo6LC0q%t4m;JVh&Bqc|FV-SDmYVoc!p z(JLPbR5C#4E?hncmNQOHy0oqSV0+`rxf9e6WtvB#f$X*^H3dXy#?E22p9YnP(TT@f zuu;r1zf7p(XN&`+OyI1FVC^saGi!5RRW(tK5s4)L@I{ZhsH^HVdgqn_rX%0%qaV|D zQ<|3Ojq)eBz4T04VTu@(1yw_+Ch2X)c?<{X2>DZqI<`)U5jO0$3foO*AsGY(q4i?Rx#HPRwYkt$ z+$B@Uw{*;lO^x4M){SDDFbq$8L)^(c14F!drxuSLr*@z6zPzN;OmR(w=za$~sKcnz zHz?g+P>$oUhihCmhJa^Y!Vhp=6& zgwtGwb%b5l2A@@R+-6;Ak9vrMy@^>t=b3RnH0{_M1M-gb~I#t=cygb)Vc4ee| z*bf^bhT0xN`A1IrYTA%-s{oCJRloz~Bcw2VGQY)A^y45I-(mc4fhm<7AZ!kCrY*3SG)H3M>g2|(BK!}IvOG{`rHK#X=|f7 zaB_Ke+h{o*&`$haTjiz-*piV{_^Qj@sb8Uj4%cEi0Ai?IGtFEaGP~uN1w{6R7lMyF zRc)RCBzhpU-kT%42-cl5%!Qsr#Fxfi#MDMA^c&Ea^&o{b+h(VukHnq|F^lRUYV8sM z_wO79Bn*q~2>cB&dE`5bD;*HMV|k5!yYZ`S=!P^j_JRum{R{%pLC1xCmhl^yNXW#% z85Zx1w6R+=rP&AHnavXre-KQFE2vJ1x}#>0FU1)1`&ff`O1Xxk>DC0&43{$K37Y-m zN0>M;>o8QW-xLaKQPfY~AuIh*$}PA!U)3IMYfjL2HGEpnTPs@CnshSuq6*?vZD#ki z*&o=!FBT7;;^{}%WJO7$LvYp1fB*U(v&2g(A-6Ko9gf~)Y1&Ntpg0AG+MV5h9iv4Qs+pZ2^sv0lB^0kggLJuxWOt8vAsvs01zOJKwNc?r-Pnp~o+a z=wA}_5FHZ$9F}c1EWn{z+u40Vws=taZ1tX@&mbI86vWUr{R*IJ0kVv zBg4W0a5$&>>0^@FuY73wtJ8L%-K{X7$NAW=4_}%JkZWB8whF5l=d0aa{P^<3VE!=* zQf-e@)@ilsNA+~7Z%`7ZS7Kz+P-u&rEk(^6WKSHyQGKe`j!CZkT10OO&S#6nAUiA- z4)MrAyZsSSFTUSb-3h}axo2HJ{#PojBjjE<-73l?yh`78K~I!{tRT1a*(peS{4olvi8nV_Ru(&vso zM6+YEoVTd+qp$|BS}LB-35{&LH&3Er!tXx0UC+BQG?d6xs#4efUjbBc5=A*@EnCmR z*)Qc>GdD09lX#%uYzlsJ5)TT@1*c>dU-E77sB&Q zf*RuzPmRuUHA#Q1d)i6tq+vQ#uC|O;wI{+56;jkxj3U>((gaftXPMx%2ajd;nNk7| zt@=j36 zyY&b_zSoI#fu_Q3jnP4)Wky$35mWdU17{iE8u83GN3BRu-A`H=Dj#m$vTyYhIDrlu z^mytwb<_dw>jTv-y%x^g)Zk5 zQUfDxM_L$JJ>*Zbj(wX_akZB!);~ulY>W z*1s*}!3GS3&!0bGw|*EGKNZZMGUf-s9XYUM)6}F9{NG(xF+;^jANf$}D*?a^5M7la zJkgRdBiQ>t^_Y9rYnBFz-} zq!xpmsyNl9X@|y)OX(G0lwqKRH;1Q(I zZ#8_9Yr}7jWd^QpQNK2<%h}Rb!}1-P&(Qd%IrxNeQK#=iVBjuY-xeumWl`t`Rnd1Q z{PY&(YuxUYd@LY7C@BA${P{2VL>P+iBFW}(P%~Z@dNN9EM=ZrRPn_X6QSW@Odvxy3 zB~LR1gj3P6=j5cn3pb6N1gkWs5MFAhzRZn4`4^1R4q|{$QN&@JMYqyFSgu@MY87m~ zIUvwyBK=YpsE8%e*9C6t?3C0Sr(=mjRZNEdLhGMy;|A7%mnq;1&167`pqSJ{Vk)D9 zc^7X$6v0arL_(~ z4D2QzL*)0d59Y;LRI~1}>Dg8TKo@@))nV~a`j@yZ0y zZ(-@DQ?tGysL;hpr9up!Y6huBQ=5_1N>1_0yKR1umtY)_E|aO2=NKR(rT;wda6>f2 zEuTr?+WyW*B7WGx=HBfc^Fu;CbyJk`4~MfHXO0d3M2e_lo(*8ky&&I?U)3wLGbB-w z{gju#_xjQJn>QndhQuOQE=pA0ozFPlJc2ib}3f2eQ1kt!MT$q{YVI| zuSIkc=6Be|H?HcWWOn1!Okyr&;3ykol~s)YAVuya@U5>)CT~(sT|#g@lu6nva#{!6 zILP;}yn^U}D{k*g>8%he(uqCMC)U|dP7`sF{F$lbj?@LwqxbY~$3o6{jJQ%8N&gg3 zVmHj~&tmrt@uP)U*=7!$0I~^EZAEb$liMB<%iom9)BDh6x`g|Q7jw^_1U>+OE27!+&S zB?qm)&XAUc4(i8F$T1Yw{B|;AJR>q7zI~-yjG!Q6#VA2DFYv7eI}DvB+t8v%%k2%XW0ar2-`hB(GXX2N9xo4|0sXWJ* zRyQMQ&*mMuL_vqm(fGjwkRkO;*;T12_;jsMk0V3N4G;xZ79R6Y_%{dm7(?3rr2;*} z5x~t(4U9MuW_ClZr0d>u!4Hzk@OcpB+tcco1Jp%A)bBW+Yi;{Ynof6W0?q& zv2mrIP7(bP(@;K#p+)694+OgLeN#aV`8x7K%zSO)**^wJ)M#;7-&R=+6KWi5(4pt} zFYY;k9D}aPEC+QelR$y$o! z+TX6xRS6JjFkheab5Pc3AhTIH!eW5;Af+8nt!4negJ$}APsXgXofBm>l}7MVhSe$B z$}DdG z&mWupQutZu*e2D`T@;m%wnf5S{GzF`A@vdDX|X;0L23y{@|%|F~FX$nV?wa+7< zKsdA-o(@FR!@jzF^E!J~lYM9af;cpPbxlD%hfYop?#0x(MM$l^Azx&PaLqP81cvsU zufY;BYq}?ZndqmGLf3l0qg>)%DpC_(t;7Y`Bd#OA);QR@#tOCIIcJ`2Kf}5+JITbY z#i!joMljcEAbnWSYwXRq24~oPi2qi2q5enCle$D0zRc4I>u(Aa-2OtV)<8oQAUUVm zERcQ5{f!5uW>5&gG+^2r(i3vM14K^RB@thux19)nEy+g{mLb6@s$@n%Q$lAQRTP62 z>6;l6xq!{>0?+x^AjZkZo(jfTpL~Kt{^%i|NqIaq=@@b}JIBK^GpU@p*m`Rj!vh%IF^Zlq(xJ68&vFsRL~ z)mORCI>h1V9xK&CuDg=JQ$!yp`TrW`J`f;gZU=0F$53lB=-6!oqU_@?*jVO)X5Z^b z4vsr<(9B}kaxEX(tht-!CDRQ_v(7+p*$-3BI9AR`A*)9-H}XOt#RGj-HBpaLTg!9n zno3WhfZwc6&strYA-&rwkCH(Qsh4dw-iSDvfOeHF!$!}6p${tYcDd!@TDWlnycTJN&id(XTQz{9ypQizZ&>?;RpQ(v?S=!7DEddf(Y0 z!g0-OiG-v&Q;TC&HJFy1zrDL87!X7)=!sdcNkmN4aS5YBO_Bh2lK*a#2m(EyPU{Wi zAawd-@dg$+k94mw>GuWEawO$gg|}4yQ@+{r!L$|~E}B%TrcMl;5o+~4<51nii1Ngc z^>m7Qk|IkZiM83RA&6+3Xs@!=%PxMdwG`t=G50(ywm5vY2Qg5t35^fV9n7^%ePCir zzYL@sP<`{3gIs!X)j%ujC+u7QeJgu6H*5!x}-hCu(_g)bL#fKhf6k9Z7>$EiwfL!bXrOrODurlV%8w9z5KHVOA6}6|q(B&P>-rp*dM7Hg*tCgEhsK&_tiAe7 zL}n_(nNN{^cf&y~9W;M(!&Fr%>)lzDq~NYE^wcA1Lw6JgC_Np20_9HVbc zRYNvM^wXLz??Mg#u}8@0SlX{BEroAT!JR3hiDj2GvZ{4M+RLZ8*a(d15KANQFpWMm zj>LV-!x_T@$WpPP$?}tIvRo=+maJMDlMj@R;}7cGsgT|#*p;aa8emx5nQ&83Gwz(4 z5Q_q#Q>AcoRBy1M(Ya522d?C>y(j}Sn(>Vnr;BLzxF_9gKf8$h3Pk0+B@NVS*dU5B zur7*a2g`$ZO%v*%ahC4x(4eu#W}z!41^k;&Xt zro4Xr3yFa+7NKE^x)HnbH(vWtak&rY0vDCJQ$#|dCa!!<#67}+DUT?o@6f5%U}sGN z4JEZHeh4fVZVDnDzc7XI7r}<=&1p6k6$*W=pXsz^2u@j8=D4@2Q9b8-q|#i0s)(8R zM7)Exa=Ttd&Aa~NF=nu9wtV&$-AoCoZ7|~;@io+YV$d)O^TiXfzage45&EYNfvbv7 zSe`VCeApYsO%(S|Y6I&(g)DD`#t*}DETNVJ>^tOs*j2S@AVF82per#YjI)MCP1H{? zKvgf%wcnlGIPZGAnP15Bd>AQ3YFYs>W4r+7VtIjR-c#4-g8d85b#5D3b@QoMo~tbe zs0^UR!23Fxq2l}C;+|10vRL5qX(grLZ>dvF< z+NyMqlGZ@+JF04Y*w>fgX^HIEwrv(RgYQ3>mbiZuL`dpT2~kQw^K9hIf*Xqx=&)y> z;cq069)wiG?kpDaxn)j^J3=+3yKI@=dXa4aj z_kIWu%c4g@sGtDb%EZjaATeQ?-kC*fL9mZOZNvNb{2sGNOtVdT<{CSw%`AK58&h*T zwgoD9wGrm-D&pjX&Jju0*Lc@MpzvbcE4vJ7gzfc$-oZa?Y;DQe(6FRQu7bLkOPTxn zkC(I&cR*GdO^5%?1*oif|7}?~)dWlT!)Io)?cUL?M|62;{XDZgYgB4}ZORzoe;%9p zxK2oVLPEkKzX>WBt@4ivlK-k31o4ru&o-)gf>PL68^Mvm|0=4_E8OCUd)Wsw+=s^e?CH}#igDVPVa>l~l_Je>x>wp|Z-t0G5?tIC(W|YZ<+GKr zq4LHy+6?QaOEo$n9{{z!Axv-dpuCeznM9xq2UKa^-q0r9hC}8-+)VY$l%ia1y}{DD zQ%aq4Y;w1<1;M5y{-Elix|0H4&46M6+{Pq!^E&3u>pKSEM>9ua=Mw|zcw?+W1!JEuliQR-g#bt364#i88bTmU_p0a?Bca4~K6QwX=qRYuZ*S0~l5_EJAJ zZrc}^ZR)6)!NQ}SA5|{x#)QFZ-upY%uH7PTcX=V}&)w@J(a;P>QwYH+k5}KF`QW7{6$~-O);OF`Fd*q?z|O1ZD&k! z{`^N@Nf22o49HN-vt^L7saw*`094KAk8G@0QXk}{xFnJ_)#@4=vLlUp!Hx7adQ4(H ztvxnrul1U)t;9$CMz{>LN{ca*cZ5!bZ_hv<^6q@KE%*-M9xydF$*NSY;z_HEGudM_ zf81YM@i@x#^5Uq%Q@-y2ushf%QSp|-S=Nr_ zhC>Z(b(Yn=C^osV&9<&ZO{=Jro}-q2z+{`oIqQhjKzeoAxR>`d8k~t2lL8$pTYtDZ zWydm_c~##`mYebCS=W#1?9}yn|LZVA!GxaBZA1N&3w3+lI{W-gO_!EY-g*M=EAS)* z3I|113JiJnGcT4u2P3-G_rrKckvOe^9c>N4N9cx6_jOsrY!E&&J4VX0^bii}g)p;I zaWNwaB@Z()^bY~|ojb#OK7Fch`?I13^g)>`@lWHnelaJ$GFwY?XEA0ZZKUbHYo4EB zpL%3h*@e9ti4&;*6zV6BWA(>jtI=DsDV|qI>ZQSb(sipbT!Toep{J6js@R_4&(!}g z+JyMTtC@eyEF}!0MYrRGF=m+!2t~n8vcCHC7Wi|%j)nk}SBvK3hDHE2Z(_Y(dT88U z0}$lJrw``E9Si}rZ|7%3N@!k)hx>+jpTAv{*%eDDEbj7tq5gEKM}+R7Taz*S#P^QqG*#=X4tpfudJbO{>ZO0dPCQ>b3W(^u(D z*MU1Bc4$|1*dQfqpun$~EP)BRgF+n6t8}hJ#U& zl6k_~H$WpZ{D41Z*QE`oAKm{)sng}zvY}gyv?Z>^&@T@e?N*n`2s@Hk_F0g9_Q|Jn zOa4)Hb_5c1X8hK_Sh3y2ZS6D2BVJWG!OY`!hf*V^a7Kdh4maQF_M@riLGTtxKMn;b zDT<+ZHSYtvg<#nNPJ9wSo#<_L5l?YSTH!!h^2qADJr#J0DIr@8XV@byqRa7}vAg`EZ{nEVJ>4#2WicQJMfV zEd0}7#!R8mZ@BF==<4x4=U}G{8yYEFE3XLO)vdlUhP(?;B}%RqC;@Kxr;*GSUw zq?0g#qNxxBqy?MJeRgG74FzBgAd(dQjgvM!ud>9mc{Du<0epz#JdGgPw^wQPg3c|k z)9aC~pCa1Yl(QT{qTZcDVkkbS(Ig%efy;O~a)|Y~p=L+KICr~WV z6}~)h+at(_V2DibXT?QNUZ0D?K5r;it*GT%y^&-bfcv%B;^HK2O$e)zPCEj&0iB(x z12`}$0_c*RLFimVQ{|TT-A~AF%?Gbkoh(cUXsn^GUp6<3#9(+A42#HUeO|&KJYjaG ztm9evb4`*G8+q!u@nE8Gw!|OS_6AgpP_f2SU?uClLFCRF(5O6%WkSul-lz3XM81h- zWj0QzFtErR4s0su+wG(cE1tURPQm+OS8`3|#7+?>zUG6EXK0%Z04U*h3(Z%5pjJKi z61>>VskbSSuf3(_y}H#lfJnx0H6Vcu(34Dc!hvPgQ@fuiyhFsySjJXg7aSy`^!VjE zrxZF`GS;q$93`er$V9CbEq%S;_MhD#+kowKlbF6Y95lqYSIi0?KZ{!jFMk(PK~Ist z|Kq1=_s-hrrj_y>9Y*Qo%vJ8v7}eXqc%`&>MHX=bn#WBXIj*GHPgJH_Y%S*CFsh=AwVE>DGZ(gCE z;AkuT|6DRD#>(S)pR?$m+H~ce;_OUpVb)rSxIQg?%KTVUon0C=JtZ5-x8$)KR@3<> zt{{~n;w%L4@D-j5@|~2R&R%}I2*^14-KC6OPWuUeRIClx^0l^}ok>EDk2G7-KN~qRqmEy>s&;jppg}nRs?G(dv-#pq>ae0x_ZD>Xr1O!9Z zdZVg8dif*Ja!F>A3Al@8_huQBkzbD>UmbI-{IeXCWO`SXYM86chfDz;arjyxc#^#` zmdpm2ApF^-BV6vrr(HHeOGI;AX!yJbUVqe9aUL=xoZQcCo|A6o%l{uu+9p*)uY1%!t1?ADUb{{K$@Shg64R^CYOzI4txZG- zfFcE0V5FJlu3c&d{Q-InDkuJjSymT#d=D&f*ivA-uJl(mJVQ zZtk8HXP_Vo|1;pAo| zCS=Nm`C7ukoY>-NTeRMqPv%i*uyRv*F3){|@qS!RGO?WNfgF4g85P7gQEIByJ2 z!}*8YFLa@@Gja?RAA2~T3QwNLnSKcQc1>Taz=qiUW+-D}BD_p5KhJ()nlGh`r3~=% zJB~NZRGyh;`&nRzvH2~QbJ0K1H51UFLgp=9eWHUvrxeLKU(l!ZIV@5zf6}9XXhT9m zz0nt!lJSc}qNBYXmj)*y?Y6{1;c@a$L%1)su`LGnT*AVN34JL9VQdlT#W(H{C@^iEcwjfsc=3(wn@b3o+!T9P>%qn219fyB@fOzAwqk&_dFwJTbbMr$ z`~Bfjkd;jafSD(D52nJ0SU?ztlj6F>bPmm7r<0{%`WEsW?$3`D1X|{HoK}&nwBySd zVn^fCbGawYQ18Maq*Hn;$QuL9DtYKcTjq$4wBRhVb0QZ$5;*9lf+{Wz#=1DkkB99b zbUH11JuNx=VTMjg{{oSqQ^D&-heVjK0>InxXS5g)!?DvEv#2&{a{m#T&az>NXcYSH>w3o)rNH%FIqo`h81z+x zF_0513)=@M;<-3yASekIylVep^|=jD~dUqnN%o^v{_RytXg!_WzwmzjQ|FZ zJ)rByHnQv0U2tAgHBpLmu^pHYJu15ZpZfFhmOciRLl0Sb8qxE}v?S0=Fy?B2U9nImbO*+C4ek3p% zduH8tewj8IWn)7)-+5|%XNKxae1D+>6x8q9FSnDdh1i!bFEI@i>w-f-1QJzwG{UyK zF_HPuA3vN>OxmBm$vC>n6djXpyfIpy@U3mH3}A&kWTYy$6FVu$xzk<)wm6=Il-_D_ z>KBHRB#k(Ob4$oNYwi%thG*VMJtNc9Vs1x|rt?mZnM(bGE^#{?Hi}%Ffmw$gYf-m-7CAoN3Z-z)LY^^OHtwuWBs;(~|Vy0`QQ>(-w=-agb zs?A-PWgI=Hy|%(Wn~W-a7cyRNl?-IZd}gY~El3^2ckU&`d^=QqlhV^fro?VqzlVi1 z!HB+|IoOr}N37uvgqL6WZwwNbK0!T&^x&T7?h9bf&fmiV_zi9#!qWI~VLhU|$pOsT*3Bcl5+(0U$dm|o z4-aHFQy*PP5J1v9pG9v^qjSc}2_I8qnZ8a?B4{QqQp~X#i19*Ya#Ky{>pIF@XqV?p z_oJ-c>tfxW2L7ql8qhWA4!>t2%Lfqw^DQDX1W0PQS%fzr1PY;muAOFoReePYJuxv6 z^o$k!A{!jnLw-3Z`bydH1&kgS2u1P7i?%qVsC@38wCZ;oj~0OGhfE$J@h~MJ4N5wM zpV(M`4i1*ZH76T6YmQG&lRI>$W-X;)_{U{;^1zO(k zom-b>qA!#ym`U>21vraaR58)Md51AG1*uq0#lw3pNps{d-Dee{I+g^p7OD=H`})`6 zyVJ@erP|nza0J~9AN$8r9A#@{V>kY!17bm4lfXM%37^_jKU7MgQP4Ax3<;dw@`j;q zo!|dCkM2BG?<~9@iayZ=djxyGoBX$M=wzIfxtu!zeDl6llfc;gmqWUTvoe!01xYde zB6_OUq&5DNZYjOHR4&;k-)}|8`{I z?)lkx0+GL^eowC~zl1?j9|ActP=HG)qFEM@)<8A?DPv>r?bhRWhkwxbb?^1LmR*^X zEI;pGM7;FFi@Ylk7Zv^2E7F@2wb|>rYjHAPcVhSPT8ga^mn_0lr+#Xf1$T^@c+BDaqHQZ44r()DRHWZfS0C3RopNlRcyORh-pSO> zEsC}ty99J6QB_j@e9ZL(D|)3j#~)KHtbJtINJNSn$ksyC(+~(dAX5%0W9c#YKKSxt zZ)4{T|JWA@yqN{4E&Ft$xm&k%(&{fI_iyo_gYV5=Tq6%VuRx|nS^V?<(euuG&tpGE z5a!$B`)%+I`LfkruYXWb9OaNl@cTqk$h3FHJyTSk`d-*-%BgA997Gm&-GOf z1_=>U(-eQ|%4pbfXm?oWI{b=<>Sx$IZ0!|#e49E*e@kcLQ~M^cLvZYfPy<;5r{hYU zK*1$?40u}z0cP3 z-dk@Rp4*f)p(h?&rX+rkN08q$^c{Ob>eQ3J@V=ujm}bkAKH7y_Wn~61nP>KtQEMS7 z_Kb1f4#8H~WmD)g{ivu6gLAfJFCDEfJg}G z#x+moP&%}z9BSxQ9vYF9bA?J8A9b+rWyY06%5l(hHXUoQFic|ANd6uBc=P^r9$ovE#eRIAy08irlx?*x3Ar-RUcMFVy%8i6ZFPLC^qN0w4LWa~`fuf_ z{g0tkeenJ}_(}Agyt(Y)osaMSK7rf0+q-#wMU2*}3SL5Mkwcu}Yt=L^VLXi+p#|Q$ z3R7HIp|!r#oHw;y*}&VDg7pc>fo}$(ugq9+3;wL??A(Y#u5+IdYxxQghv z5#N_myEC75^Z`)C}p*v_|#&ML%Lcf82IEg%PaODCr}fkw>?j#-bb9tcF=uJT`7 z0n;FOGAeaJ+Tj(~qKjpc15l5!1}_gkodaLqUGlfVU|VRhnc3gG!8g3Bz{0fiu(Hv5 z!s{-&dUuty<21`NVhb5pUyXE|`7zzSw+ROe`^`?8Ib7kqgR#UM+bC*ZOMt$bd!<~1 z!6M%*2?^1y%1%2%_qa}{1k+YHWC!2xUA&9oo(Z37#uf?eb+3q;*Y0s$(04f`Rgz*O6 zE$gB{z5Dmx`}^8KONjFct1^ilVhDMx)Ew!EI%KAjAIVq@l?&F@2d8wfU@f|sPJJKXUhysiE3ZF)nKfzE+9z;B?$A%Zub zJ$NHFxf48-hpY$SMYw#9@5WQLx4J>bQ_f}e(OO-nv+?bws#SN1xbYLN6opV_A>GKHG0)y!o;d zIEL#7F_NAVy#9A<>X2nwLIT#k|2`0I;wmfgiAhr8m*S@GTeM@~epp!K;r89Bv+<8; z+#$?5_q6{FBRu_O%;cY0FJFGDNV>r_hX`=-qp##r;-5RUC(Ti0qfEG zz(wYy=wJVP?N)y0p_ldUzgs~bpaO&X^9kJhFR#5bpp56>zfUQ@x`jTX+{ynpKvxkC z8Lod;_ZGmVul#5W{d+h68$OY#!a2&SLvJPug5x7|FIXUmU4$qfwK@ptze~Nnn|dSd z!W-2YkzP)Eud$8+($!sJ%({#RVASBSQ1{;4mG^-FF4teZB+9R00W`ONBAs=Cd&6oe zup0k(4P(h%h}Ha(5jbu<11}ly3r{$Nz@wjwOY=Ht{MW(w zN9M-^qk<+v`X&7;6TEyP{py!Ju|x1m`^TLVa*kDV%4uazSs5ne6ml3*&dqsAteoc9!6Anx5|Ji^K1Ag(LL;YD zXc#8au$*!j<~)br{rx@svAMC`?)%#HeqGPk>z!g}V}63~G#?uq+X;)SCicMNC>tB6 zG%pYEEFSyg7x2L4Z)9!6#`YsSd@t*L)!v$oElP=v?Lh(?+a7S}!8{vVm9N0D(t?namz_n$fInul zFfqCwIkt50{ll_zI4vc1>u_@!eV3L0L^3n;yTbFcrbs9u4|>Hu)A5np`LEATNZN%I z@mxY^$U1(Pa)X>nI!b(Go}|pPl%l^4KOU)Y^SrbE_ulzG%@Yf8v90B z(^!9Q9C~{9?$XAONHL6PnnU~uV~RyPBJNUR3R_vttv$@`)dNO+p}}lm-W+51pmqPx zHj%X5dK61MjM!ow(TT|hEB=pV~I7@GcTWokacWUQ{@gC`m=8;)z;n51c zmGx0(HZcCsIQb7XZI#SglRPwRjo|!p^qCy*M5a<@j<%03#qN*q-9Nxyj$7(Dklb1G z4!*;%)hK0$2@%3UL&)&OVf{M+xz@3U6UdCn;L&q z8xzbZOgK`q?QH#)VX$%kly|oMk5TFjnWYtTV7C{{On%5@Ka8%*4ZM(+$* z8^`VobKw?s_ok*$Ekxp)Q{_e6TwW1FpLTx^!bdMdlL%+N*K~eq8O^7$zQk9(SO+gd z=(kJfd@n6-nw^_bV;$JoIs}7B!=@M*vG5%RywH@SAutTLsb)mi+P`xoIwf~V8&-`3 zUKG%GCLnK6U47Fp7}F{VLFseY3Wjp_1(>z>kLfqlaLqJLzveI3gB;G2w;hE|{J_Ty zPmu-`EPlYZes&ymOgG}f!N~;lLetOV?QJH=ioI&z_|eK-bx+Er&FN#A&CuF)gp9Y6 znp$-^<-az}&@{{F)40K9Xip8x|7fXj>0c9m4m(1ylPDeX3a&Zz@`ZgG9nSv|c>>Sma&8!rZF9ytrXlN!DMJ_g%`P={HYf|ViMJzhKeOj`^%x3V&Dk603P z`qH>n4Zc&O_qglb?C+euP83rONuvc3 zipJxmBM-isLnQEcL6b~du<}rtg?odWySu&9iP#%-_+{WVz!~Nh6$(A~rr|RS3wTKC zcV;@-;HUuW@r0g$^@xmWnR{ihN$GVUBgk%U9)m+Cdb~p1j+u8%g(&b|L6A|-ZQD|9 zMM17PzU@r#BiS;j6=7T@OQ8rIxYev&4Dkc;xKXDoXe2ziEj6CTZ#WR4 z%0_`rvot$K>7Vmq?hcOJ$sJ;#)%|A}@T!|+=|v-9P27ZN*LMf%mO=XSog)Xw;UkvJ zK}r0MkZsqeV-krjcGn2sly2Eu_O)^JcE8-+y;Q56ziV;#lfmYRt@<3hbEQM-2YRhb zhyT=%#v&G*4s7?T_m;~^6KR-v=PLjFvRUA?uyPin{V*v<$4?U;!e*B#aCUxle(fK( zdk92vy%%1&>F%2#*IDe;`oAnvvU$6PoP}4m%S*ow_|v+er}nEGb(|7}@e@YE7u2<4 zU8e$`YHGzA+{cKBB#2O8B3ze!b?%Ka49}^ljil2%5w-%xw)tg^)mF3!uDGipo=!}A zT&sV*3p;<%IAvS)gJ-KBC@O~Li;wXjMxF4RK0FkmhK0B%6T;?M5~KlGP{-kdbm?SB zNdFk8-^k(#jOhB-#B1>e`rt`LTU*;Z4QJ}MAU4X=@TpM51zY{F2~jTB6&dNgZb35B zSz^992MxYTx#;U`PgU$TEKt~Rw?Y% z+Zr&)%(IzO%sPz?PEv}cD@Skvxw(#1n zH%Lp7qCn@j?>iivWv83bW4qs8N@;3H1Bza4846Pik3pO9v7BiY0AV>w% z;*vD)vChv3n`+|dA|w$cXdp}qKi3~7pO(k=ctns6e?F(}~-O_xG*x z2}KOOe-&N@W|v-Bt*kIWq&%$j0_$PZd5v#m{`?|_on=XOnkK(x^Iz#M+_f|nAX_UlZoH|uI`6D>^eAT z7F^YA1i7_ozSQ!2Qy~Pc-lJui zqmrZ9_^q9g2nTIdM@M9V%~H56sMd~p(b@q?RkeJ$_#>@IP zcfV6!0$rTLTcF45Dka-D4@6@37RP|6;A&y+-swO;E*fr!^}%so&H~+6Sp+B>KfO_y zOBz|AVJ%OGqteaJfy(n>t|F##%$7;)<*gXrp)1TD}8_O z!{IDVC3X79r9e<-DC{eY96;*YcCQORmnM&wsey_yVGb8njcKA>>`3wTz0Ks7sLlKv zAO3_Oq<8)VA1YC`)fbxap1bv)^sclUP(L{PPHB` zwwi$yulx4+)lNSaGWdIVn4<7~=O_6P95x&Rm)-@Q2^hWX-Uy-sJ)P5yS?iK~@1(LmoTOlbWo_Y>!+~-u4mtw}rkfHvjhFXVjk6T!hlf>lPQOyC z7bCY zq`f78_w4%&2@duQ!D3V9b~`QF`}(Z@H7W6O{E68RF-6`-tn9wlA|nt=`%qhz;=XYV)?goS=xk>PuSg z;->h#oJ+}QT|4eKaHqi)q5h^iaAoDsV7(NjMMF@&LEU5QtYg6P08B9>BV!}h90|^w zJ4Ft|?*2Pz(Uj%2;pPu6FO1*(w;3Tw>M)QY8OeJ;e{9rBtNxBBmuEK`j47bB^>Ga;IkIJcH-Kf9YhnuZF`F<-5;w??STIlt#J{XP*^$pcp zzNkA0n^~KBh?=*v{Nxf0RLW%J@3r-rKzz7zH)>MPfOTKo^eg=5dnX-rk2u5epw6ym$|@E!?{i&?KK^uh~hYpajmdCP5^^+a1H zwmsJ~=6g@B`h3$v4S}D>y81RxSmZxfI%gp&mc(vp!OBxOgwMT#KD|LEVQ#XK zFSEv`ljkJXJ`;!@KJnL!bmHwX2g|Jo5gY3J`<}ZW;&(b^4sEk9Bp?$;1Stq4^`bA< z2V{16XVp8kc=`-&M~Q*}Btk5Wxf~q-$XOx@m7Vu>^U3p<73VFUzXZB*Qw}Cyqr0D= zil3u5sRgolbZ}>JVotC4V`$2}SHL8rbEZh}YOGLi2A@98yBPiz^mwr`GS1Ms;AMHH ztiVfuG&Xy1?w3FK7`iWA$wqV~tjJ&5OEgwzfhF z7VR}x_2hZ;$bPj`X=H<$kMSmfxg=6_c!p5AH+cn};jAQ>EPpF9Ceq4L!j0DQ2EM$z zM3DiyJCe$sks-8oACh0DXl=ZQdc)uWA1lMWeSdzh$RDqqTKqBS#Y{Cx9fFBh&`%jw?BDj^KcNc) zO;alE&5)H^uhD5(hp!awe^BT|o0{;?rb{%1RFwx4AIU;Yf z4vw~_rZStG_5L+wip7G~_JPVGD&eRx^ye8m(lVc0et&eCNhr#Y+4;MhbZ~gE_CwbPY+43fDd&1`Vxveh#L51@F0`GbfyO}V`9p0G2hikXYBb-<_K z!d&e5@(^&w;;X=D&O~5k%7V%Ba?OXh3sD^ds*aaDse#VaZ~Km1x5RrI@TN?I$eR|m z>9Frez8C`qYcV&f9(kULcwVN10!=sNm;Gmvl|ZN>tGvMC?f4FdTlaDwOwnzLrsLs_ z_@0{HaC|7z@_CsEIzN~h^938($PyJKJ{u5 z85mtl7A#$#0;}=(aNM{M+T;6V8BpHLuDL=nE;)=Sz+_?#E?A2>=X^`c@`dA+zpQak z5YK&2p|dmv_$2&-TkGK@Cm_1_+kC-hVDrcKG_{JYjIdtiQqq|6(o2Hw8Mbi5@e-BrNg(ccdo9dXfbe z%n*ppSkwhX+;}#;+6qh}ymNbGDA)qWSy0kp){Tv$_Bq^iI0rukHV9MYlV5JI=OSj% zA=z6uKa5PBj;QUPS6+4hQSP{`#9C#&W!oXzX1)Epn?HQp*gg06@84sW#AdO7rw(yV zYP(&Y`-=HxB@FKW!oYc($wl%h&u>_MGQi`8Gx)Btci*~c2PL%SY=h3ur7bL)ZYA?A z?QZQY#?xu{5!(ClziD4sjptSNJcvbTQP^Bb2GNLe-Obap*e<|abAz)R3Konm!z%G2 z2166+kbg~PdV*aGCX}JSyQ!n?z0Nsw7Q3Tkk@)`<3dSuL+S5q<>|5`mh12Rz-ytS1 zVoi{S7~M?YCOw?LdYCz!Q0Z4)F>mqc0c**4d-5amyIrw(2yepfNL!aThf=i_YFbXOL~X+z?4 z*VZ6&_{Japnga{k_A=8M%@Q74KbJ>q9xQ%uLggvva1$hRLA4Jwhk{fXpYq3(IG+Sfrap3zNR;w{!L?pBmMeGq&P5iY{wsY ziY1BAcK*871@%SUw;mTaL8aewE5pP9T<_p8db!X@qCZWw=9GrZ;`TWw@@B~&^%{eU zwvG6GgFTs}WYWQ!3_xAxqO*Ow0Q_WeFK%V-h_9T22PAe||8_6M5IJ)1bR&Bg+T1la z0cq)Y@`C^7<5)uhNy%IV3xzY0&5~;e4?0j8jAIDI9P z|Kxc&Y)n%Y0|4l?czQ6jtECsDbsrnnx4Eg>(fARnk16;*=P|SK8X-W3BPGnI6}}2_ zto(_!pq&UX7vs{5rD@@$@RHBwbnwbTAvB?-?dWOvSBy9X24Deg>W#)~(%tPy9{(g_ z!+k+e?WmKZEQUHTRR0@diN5seqA&86-3~r^j-THfuWToc1Zj}9y4z-EM*ghxk%qbA z6!gl7CDkg?darNhq{PiXDdr{fhq&iz2!N7O&|sg#F#Ro-zC}KgYTho3!u#{X5*n*z z^MGb@uyXvFj+y}Hc+;tF%-`v0(W;BFwDDgfb`r`gT^oszl$W_(9AJ)Neoh4i3x_>o z(PDHCmS^VbLtC-xGnR5&C-95<5!!1V9kF`W4yYb4qj!$v)Jbq_AI7RtAhR;$Si7XU$46)Xdoz0ZiO{BRge?eoUl8V=~}LmOvGF57jo1UzEFb zFe)i&rZU85ax^Lc7MOfw;WIxKF@lnF#gfQKXl>&M^@<5#oPO`Y~BFT z&Gu@gO+~T080Y&1EMFk6KlpL^6VSA0v1M@S0o+;7D(=WUfSb7TBwA6!KqWpv56Lmr z6!_A67i~u6bBWT`*TfB?*-VhVa6$2|OodE|s*3X~D=P!1SqvNSmU)(f67Q9CP z6Q3K|AMf|CscTzbP5r~STCP&}EQPL@iCCA>WjrWJkc5HQnC}&N=SkX>%e$mJh-ipE zyBZsAn-RnEkK;)n!ZDJ2nI`#Va9nd-WXsWh%zX=_b=y0;T15f!mPE9Y(2-ml-R%~+ zO76{J&(V78-isQ@k;=mlaw!gbag%#{sj!~NwdowJL|ONRp0LXTQVk92P)3zs?RRH^ z1S3NbcRKx=JHNbq-@PQ_T&S)Fxwcg1R5PzM+rsz_tPOrn;@J~&fW3P|I^9s%?5)KW zZ&!JCO99)A44}i;xCHa=^OBHm9`4WmRrD0L-~LyS5azD=loN|z+k2dGGe@MK%ji~` z=QE2^SsSh^IXU-d_x54gQP#B4R9 zVthHL_?_MDBAK_=f{*MDqe&=dAK39n&xWI{!B(zta!t%7-Zx4QuJ(*KcwP|Tw8#?X zk|Q!)|Js`aV?#!X#`C%DIP126_`(e3#x!AfjaWpgD z5Yf8-tK496ZSAX??1|hP4e!^*$wH(0`Zd4)ra%9>4K}1Vs`a#dtD46Cb^h5wmwzZD zYO0B!V@rjk=FO#G3Vy~i7eYDG>mHza+F;h#n81WfPg5t}YK<;lJeKb=InfvOSd*U) zw_@)+=Zgh&D^P{jsx8eED-X-intrH;XoXatyQ%HZh>YXy4>YcUNDm1M^JAyUVQUB( znovN#1VGH)GSK-L_hVHTk>cZL?kVxc6hpe037vbZtAex_pVvc1>ALyotgX8RJ~#Jq zX-Emwi*^?YBcGm%w)^gYtUhM2qd$xN8m7MvmFK-;X!r=$b5p_?KL^qhDGvn3HlQiM z<(#)l4u;|3J4R2O@~fZ!ipBfq`~vtHrKwsr-xLW9*?f;RwdkWI^&Nh-Kw&19cAuL? zdx6aVHTi&a%g|;jpz@Rs6xnP0lcVDW!N;XHU)+0UIyg%RdOUY~*0%_H9zlLCHARw{ z!m^`tDD{J=&(+BzKd>=Tku`}Ii8pSRT(P$NZ{Uv?GrEhLA(!fz_w|2#?Xa7+6GYwq zeMAw8U+vhB1dtGa4~I4|p%{~9hEEvNO0tU=b(;u95EcHZ+u^oCu&}3dyWwQHq1=wC zlp3gJPkJ~Eryn$}peP`pcJ0T4mTgi6;zHlxzrVYu&Hu-z0MwKP?O?vO29r`K3%r)d zf`na-r<`M$&tGDVsKcEY++tH>bvFhPY@&GV~PA3rGj@6NbnR+-NBb_DP#EtviN+f5UvMTckl0v0L9>8g`)vV3d?PnO2c z*3`*+XAVCphSxyH2&DQ@_Mpe%Fl&kfRnhWu0_v(Tmv}j+JB{;-x=N3I+p~&dhU;Fn zT;GTS`X?e|>nQEXbC9~199 zKMILIibJt?M7Nqj`Dqu{$jnhDcs3^XaBn=G)p}Hm5kL4)M<1UeDB`p#D*nlsoC z+yVpcyItSTbW5$#l?*l5037g_-HEci1AGV?Y1<7L?@|HH)Sy6>@bHT<4cQDkOO`9vXSs4+zZB>?IZ0F)p_U7N?8f-?8IGl zd~uELQ+oa+AQ7;5#enTbyg69e1ew0rBw$Rg0U>C|v|Jx3m<0ltt9#RUk60SyI_8u! zL4IxL=-6ptCT`wKzZE<*a8KqUiJs{R08`)A`1Wo6V#wP?m%5QdU@(=Ds7+^_ym91q zi|=AfMA{eiK%I!hpDbpsz2(u*;3L-2z}?m(SAaAvl(*W_A^;b?@99!YHn4W#M#O!; z$Hlh^`AE)0Ndr`I{a-%%GD#ZZ2PRQTtF$HW~0eb(Qi`AyeDIrRqu9e`M(0 zQi0?STy@~u!4uevhc|6txxShN?)!hA-qpjA9>@0Eig%@;^H&i!WG5}8^Wmvb70=nX z3N}B}?`zy?kaY9#7&R>?Z*JDt3A@`mo&?E5O8VdNOhdZ2_4CWRnFxa94GB3{&5d?@ zpv)fGLz!3dyLXIC#FHAU)r0z5CZn%NB*mNKY@0S|6-;w5=~F4vhL&j!#C&qj}V+*J%qVvsOC z(U?SgOPA}VtFa`tu9LWMt_6K5NKY#43!&jOMLK7s|3VeplIC{X@(YGrNfwqdYqm;dLUQ-otf$ue;eZofHo?p5mH zm?sP1jT^O|V+?5>Fm5QUE9#44`jzSrAMDytt;!an;N@p;bz+s3lRqAhiSe{qL4&{7 zyd1vmJHxGmdI^kUfWLzhUZ!e<<&;82W~8f$}@&02I>KnckSc`07lv zZQji)fDXv&eS%Ey&8BM0#9hs*zB!|#-O#{=3UIAY$BGJiBeNw!M{A);tmbI+r|hYz zL&2(xZ?KK6C5usIXx%iP#l22=Ixr;-Z0m#MsvR9I#_IxtKs-gq(N(Ii+HZbw?eKb2 zeLkmak|mAK*Rs(M(iYw!2Ia|{xF3X;A@l}F0n$(A%kE1Bi-8}L zk?edOFdV@33DTrbdoB;_=dL&mo*z5QN;e0b0uyw78KuHL0;GdPZ+eUvsq zIh03hC+M$L1;?h9Wn$0w-OEzYQ8yrAl=?(#pvtLNl2Bf?&TBi6zxT;Ty5G zRKn7>?b5dStnU?e+YHi)@KNz*J`n-2d79n^j3 zg=aBUl~bn@S*&QM%9EADd{z4G{pNvv8UnZ4w)M-fMx5miMvjg-`f>_$6twwxoxo#g zUcZ)rG?`dTPl=3MZ#-bTSY9`HxWC++!wsSi6ejuSp(IIo1B8< zgPtl6!ag;_A8V4=Me=-;;|v3J{`uluwQ%~ZgQ;tnEW&_3jYxrM_0`74@%*cJi$2ev z{}kbx4@^ik(B9gQwi4c;q=y>mi3PY2v!|xAubQr?>}=V_CleU}t_7@G$6;W_43{on z3*djxih6kN`iJb(@6ShJg{)zKm3-=FL@UcZ+Oi~mWiHOa1xH#w+!9&;gO%0PE<>-uZEaA4nris%b8^&)pNi)#FP(YGuKq-cj+-+ z#-5&O6gW^=P0I^-W%C9*UZ@vNo@r7WBRn#ioMsWf%o@kgN-J*TNc6nc(fW%#rugsI z2p|*~pfp`wiru|HbVnm;__lnZwt%KtKe4j%%ruN!9x@j7<*b0W9wlKXoL&8|{jas5 zus)6S1eBqua(0eU2x27><9XaW{)>kQmvk5f`9e7fWfG|R=*OpqN1f@fUP*Rhx)DO} zm~#wXV*vH`t%dr4_3E~sOs^sWb#c$KDbNOR_e;3Q*yw1)#z7lQwJyliIVXHeBx^-0 zB->A=83$ywL^SSP3T%hWt{vjg9(EuJd2QqII`Z4IdqnR7r5tCFTt~l))0bpMbTR8n zD9R!Wh_(1RKbhWnughrqTBG@v^Ie4~jXComLTVPP!&u9{Kyc4#9~$#@HXC`xUxxN+ zHAp@G1`Xxucj5W*WNsHEKHhiI6hNP%*_TXEy>YF8Q#smt<5tzdFx%7D9Xz+9%)|;s zy0nA;OcI0hw*Cz-zB%913q6~n-jiA_HuimHSh4cO>QHw0x0>HIN;c`n*5eyn5@`ct zrI7Hq=yr{3zrP$5G@*}oaFt5!HBCh#Lc;2O>zm%7Pp6{WF`~2RTX~5m1jU$jlT9Ko zQ=qLrARc~!Itg|G4KpGQiwCkf2+zz?IggOO<_3n{?N32=2@LGt%7TtVLt!oj^lg6E z{!gf9BY;b%JHB_Bft>vXq(90XObbjpKaC#GPV@rt0O&So{MQ%D^VuJvMR!fARIYTT zK=^LvaFfNx!;etf~gJb&r>)3tZ#8t{F7orMYEQ}joll1N8?H-`1(Riz@=0qI!|HqyOF+scEXh`Ikxp~Bwxu&8R zbi+{^BgOblix5CY;+`^+yWX|1ZOf8=1R|7jvFDA1-vhfS81q?;bXoK z+Pd$UCU7IOi-+&s{Zd`6ew?$g44nYeODno2&R_C}i2#yfaGOq;klUSx$hbC*Zvxn` zFw@CnAg!zqYEQhU1V^m9fSC*9t zZO%bh7nGkeB$m*QPbmh`&bLxviWV2r^T@Y;-mXV|@t}m=b07mSKNq-rHPE+V{G8Rn zcdO2iEAk=$KgK3Y>+~GXF#nDWv0_tn(YfUM!NpB3?shM-ttDIfR4-?AMVQ>9~32>!eqxH!D#}YYawZJV(t(kCnA!VyqA= ztNY)gZW~gDa=au&dF%t6bEe^VHmRORG70aUP9X~}kh`<8%$vghXX)>(wjnZdxE~D% zFEEQn!c@cDU4E97NzS|eSuFFxOIE7Qe{Lcw@`~yy_d#axb6dTH9SG_(g3{>|Cm#41 zB5*T(r@Fvq=9iwyIZ{*sY$LV@_7v`dK}ccTQ8AEaVQsUi`7T1|J<3x`-I7pqN3^OJ z=XJ(O=f}nINsG(s0Kl&$U)EwszTA6F+ue2`haIJ%3L;rsszI*zF_^C5O{*MiC&=hw zev<-U>>#vgQCE;<{zzkL+Uv1>66z)TUlw6`0H@Ml&nR@3WGW~O3`eP`gYW4kA-!1l z<(e*qmwy5oJ7|Li&BJYN!M1wcsJ9h?0BvAvy!+(q$6hTI=pHcbHH;v#{7#Kwd{5jm zIBJ1zxc9X{-&4=jg+qGmiGQF;2zTZ1V-y9ZoaN+i-#p$DE`gj=>be9i#!n%Pdv0Hp zqEN-bFMah}n*7y^uH_I;I5^{26M>!6B^rR}GCOw&XY?rFipRoy=aj@NQs9CiZZfp{ zogaqv<+-52d}kJ`M42 zJ|$fUa((?Z1IW<@xKUAH^Pepk z0!~DBHp$|&>g<65eJw_)7WzM?z=!@?p`Kq>^k3!7b#U5;2{#7qR+W84w2(y%AzBL% zK6x1Yrl;k(1MR~vw4bxz_veCJW1=rRo1Ry5`wGFGOXDbQ!@z)4=}=flc&!{SCtkX6 z>CUb9CMcfLNLH6*y0^bA-zmR(`q-ILuX$6Vroi)ht3_vtUyp%!i^wJC3Y+Ip1qxKY zr_1##Mr!2!ek2*bpR0m*vn$ zdBS@s33IILzNpNKQ>2G*n>*y{D$xC>^rq0)!uh5@$T^?aUFI!?@*BUC%gsF zSp%?(tO;BVyl9Dfn)I;G&pQ7&n@AEnUE}6;O`rNd8UkWS@DvMQ?=Bpb+Y%oVzn#-m zag~yQ&VToBw)dVk&%dTJhF(*({3@pkM;II|m~*z&IcI=FPt^hn*_>MSInWe_Pgvg1 zeuODd^}mP$Ma^R0LM(Ft`;oIV$0lc+yc|jm1A^5+62jiCegB!plli73bpGr_+>MrG z*~^knyKVt|!@ndjb*j@|>6$?5QFDcPiw7`ywznB}KZLnz8t;tfq@}6+`NAp~j_UKP z^)2A3sFCCKstz8J5D<}@t-PVW_Ba9PVHciqQhXXe#~L9EK%^9+n1@V24mR`H*!H)Y z^q6|T?TrL_BNwX8ueq3!2v%vxUkXe3BlhUtd-k$OGoaV@Z|lG6h3Cr6O~9JXO-=){MMTD0Y(_D>sD9P(v20z9=;yx2c5E+TeVB>v>gz7+h}?LY z&K=^5UWMbyU%nkw1?D^c6mrrp3USL#OS5v0uTyo-(M*?r)tBRdEYALlLEuQol2DUC z?t{e|Is5iz_P}HmyY)D4s7x0?y%s{J0lRa1XGEL!5oGMX%mriaZ_~5I4eWK}54L3_ zZx`c@1gq*tS~sj(3vT#sZoe{{T*A&DHMc8PS z(~o;gjEtYa63fmD0r``~SCZ-UtDr;)N6J>+t14EIX`p0QnEPve)$Bq4J~CWz#Ki1Q z^9q9je{JLRPi`qSZCRoeJo~xf>{lS0fx`R6kO7-z8ZI%yy72t%Ir=EQ$!p~t^X64# zb`EmN+2CtR$J&#xlhJC`lE+QIF-PxE14y}rBwnLSsaF7d9>O=WcoG8^RX%0yo}y@! zW3T=6BZ4qqn=uKqe(5Xs{hny0p-0t)?2&Zi;E2cVjqfV5D$XzHigf&B8aiI|A2y_> zV6TmbZ5c&aP@Zh=Wnq?7wfn1Wvf1=aol~MtiR5k_d~0c22=&QRZincq2z2IZehs^r z#w`dY$=ir>1e!EKlQcF~Tl!B=K>a1IQ8!=umO*flc$M_0Ox>=MMPL0%mI(QBhNEN8 zdmUaVKz4@#xI8N5M~f)HnNP!O{L04&Kc(sYlx=;A!uu=&dS|O4zWe8>mb>~$ECr#q zEfk^5e-A;f|9sPJy;_piuE%7sh)yu!cM~4r>o+`$Bd>0zK2*&Z0UevyEqrm2* zFIFK{3v5o=)E5%Ucz;6&O{l@g$yaWkL}sHxM)fDgwGC&}%1OsmM8yqwkzb=azw?z! zerBbJTjJVJS34wEkpYMI}_~M24zx0Y9$N@0DpcnmQdEcI>tl;Q9tGor*#65bn z7uSh6V<^TmEx%qeJ&4eM9a7geXe2Dm^$52c_pLvI5c>iZRV(qP1KNYl5jQXiGL6-z zAT*xpby3!VB9bWAbJpV(O58!*9EdFT zg#$UHZs@(MKt^c!M{&%N)83xyX0rWb;^9;a$@qFaGx)I21a-)4y1VT0jy^rjM;aIz z*HH4DAt>s8^NXu3t+3%Ds;|ChT(A-ATIjqWRA6(lB+*#vU`b_eI-n0`4OGe?)c?!R z?>9L3>THbT|HF_iFwG)*z$oQU!%bk5CIW+ov>b^UFKdj=tBp2cGx*i>B}blds1 z`ty_7sVFP=8#Tek$YDhwv)qp}1}i!>etv)i#L17EZl-%Wazvm$_eG-pQiLsF5EKtx z$(eI%J6EQU5qG87ieP_$8w#kB^#0m$h8+}v_&u=A32^XUEu;e2);Cy_%)HaAdjF>I zlj@&L&gixsCoApm6~LTX`w7vNfIY4GL^JalpTwg!<#hXY4TT>2UXIi}3~2O@HmC%| zv!*G)!CnQXnzGY(5RBcqPD@hQ)vTR;A|gU}#4Q^xfte3*uS(Z!#4G!FvUGBseKhWM z=yYOkNe%pMbM8gxU)D#EZ;>a>eEmPpoq1ocJ<8G=<(M4fvShocp2h(Lh7aOw#Y=&+ zuKjZdJM#MYzUp!|dl~lYHb>xZ^${}8$!k()yEiRu5hPKvFqRK!?mOziRm==OP5v;) zU&p*Y-U|ytTFHwmsb870Yj}Zpv{>|+xi7B9D5$*69IbM?=#9w!oZwY*S z1A{URg_8gSNz0{ZQUhv|nK73PP-FjJE4YzHiP!6~45;gIVyEmfR(&%4a^Dr z2r_+QJi=)uE6XpiDO}b%F$y;H^hAT5SMW1`@p3Us3k)>vY^r>cx5{-$6<}1tQ`R2a z&3jl|J5qbKxV~P&Z2$aW>NXAeL`={sIjIqaSB_K0+KdZk&sZpI^;|l~~GHPhc@4Fg%E10lH z_A$FNxjw&AG2mq*)x|4@0b}r=^1mVD9fB% z2vu11u7Lvk*NkN9jkQKX-BqVVs$c%OLm1c6jKoW3Da?fYj@7@txJ%v(%pJ~n+H&BM z2B#1>9i98b+6f`Vfu$8hpc_vv6o4c;|JAS}BO#l4#bm z)B;z{H>DEK075|2-WW&v`BNaN!)Py%D&orKtprvL9)msgasJW2{rk@!jXtrj3O&YD z$C2l5Z{=MAf2?1nZ3k2#Z+%(iDMpvcnAL6d2nUWeL=#%J1`)Xx?>$QsLf}bB*tU4en1?mw(?z0}zQKYp-WwLg-(#xO3 zGtN0$IMwRPl;Z24O~Qc#v?XRU|2v;}S78S*W9Im(^De-icWP3goW^R~SIX>9FRzy>Mo zLA;mlfY!I7Z2LWGJY9RR8hsS!I6SgjKK<`sY8M1?qeTV?BBOKZsNk-o6MUKqVQv|f zmHfa~Mj2pX`WrbamY|6g2P`&8=0O{W1m%~{5VP}BWWL1o&13DMYcAB$9ep%W3+nUc#Db*l+TlFTJ z9-h2WQ7b=K^9@>0W02V;?(vcR2j6{MR9W23O?z;`W`6wV$_K80aWOF;3!0xyNB&)# zV!sK+xV+iHWKXzc@l61zBZ=4*rvIZx_{6I-qlD1O(BGOi6dkBB40F!KNL=wwLtql} z0f5s0Bg!Q-B$3g4jnWw&Z8RRZNR2vngndFK)yVw&HSmvCUjHIb1TB*s9x@lthw%&R&(~+e00g1S9 zvZolz885M-begvPzP`{8^!Jz83&Q=oYhA0PkT9%qem6liw{&OfV`19*MqJuXT=dPe z8V4-ZX;zF0^TkfF1}})tMy4zYdF{o=AAL*9l^N}=y2x_>+QR!|Yl(VdTJ=T&PFy(| zEqZ$Z;K4l?vbWHuoe@F@fN(c0I+e5r{itFURJtpTS#mud(-Rf_(D_Zp?bMpKFt;-F zY>)aM0Qb`|whq)coqlgb_YX z+{u$T9^#qv{dWG9K`6>YO-EYjmH-OWPmt<{jx5?jf2M0*hzA){3D-tEeuufwa`T4^ z)Oh}WkI~0Ie|}xq7^5vHB0YI0IAH-=AkN5mA}dgJK4$89@FB20aPCwo_s9Q!*t@;I zf~IvCN_<9wMz`+IPEARvd$`s9d7|@Pb9y9u?%YBDz=&d;aP7-H_)m0xK2*%1pnCDw zoew+vwFZ+5pK7`kOlJIl{DL?6M^w%k4`ULugK`G)Wl!)P|1Bc@uh`BqE@^;po4j;@ z&Drk4xC46;0|(^?96I{PA73950Ne!uZWPGDG4aLxTY`1=YiFeRbkRaa?{i*_7h6^H z*T=$X5xd@ZKN_sjRk*iy>L_@6Y}eWl6ISV%^aOYDgF&P`aXGAGE##y2z#ZDo17HyI zf(211VVoJZdILHqzDzh=Wx>d)aK44)0W*pEwshxgsheFaH9qh5t9KfItS2yz<-h>2 z_H1rZYwY4^JG&gsZ+A>03luA%yoTtl<*K5BN^YiibZv2vGW91laDOXL0zpOh3&Lrc zHtsi^I_GO#KCH#+#LBG5_&hwL7_cm=P&{Mr^5AvF-AG_JNOX6hS7QIAlVOU4$XMz# zB~2jfpY8h7(0ocqLAYJL3_j9pItyG@QUZ-3+p3M;_FEHwNGkjl&Izh{2UN5&ws%7Bf-#eud8 zXtkbs*%~FI|KsSa5_?b zk5CX05Jre2q+6f+_x$f4`ue#0zRx-D>pJMnhQ{Vho77Er{|;6p%iOwOa{Y#e&h*bq zIb-uQN2V}|w@r=h#>OR?&Urk7AGi=;+H(-9WWe$czrpjU=Dy`K{IMI8G?kFsfD*sR z8^}l+G;OREaas6$xgGLg-T)!VJiH1J>XJQad|KI^(4q>@INZyi_efb}Pgsmb!zf1* zN~{uQg>BkZpYLb;rkzdzrY*OM<$L~YRysW^$2Tjb!@N@ z@Z5$LLP9%YDo`~cd#+nhd#m7}AV1YUkS6?g8rq1%LCHH-qs*P_L$zp!l1*l*Ra=&< zO14K&502gY?Yh{5+o1>M<{uO@7>@`P20{d`jnGpLtaqLM zxq6wtPM9!I{6kR3h?+o9vt#C!4J~+ffUcaw-LRv%EU$(+3pp3}Ekw5f-N3KR!I#bk zE)KMeJzIgj6rm#%47#QMYi${2x_jnCr!T!yi?AdAeyimH-jF#^-A2jjxl`GjAC8Ychovh-%H$}wmLD6nURX{Wa)urUlAyKAb zFO|fWsKEI6(9uYW2tYJOQ{oQbS`NyCVgFd2N|pV^+CJ;3EX1{us~CKb{%BPSQUr}U zI*ffaibcY-XCaI(_}Is(tqDQ?X6yXFRkOZy6n=VhKlBgPKu=1Q=Uj~#8f|;>u@wIWU!zo?R0GHIFSTkoI|N$)7ty)EN8DP#eCW)nv~h;1#3X zK4T2J=NdoaL$Pw=c?%3e>pJR+F?E&qxl#|u@*fxIMnib;B;IkHSW&&(lKHhBT552W zj1lp>Gepbf9?VovRP9Mq;R(%o&I$5>WQE9(5f7Fsv-QPDTD8hq=Cvjv>J31no zK}e1gWw$Jx-2MFzZ2vIlA&6=KR-=AY{9Amp2UgLvmUVX*qs*^ETY2*E#5F&Sm%1Up z;{A5g^4x^{oqo_8M1o}F*uGhj&TCKGPpg4HN;6!K`;lLe|89B-&mL;e`toXNfE)5# zaL;0gO!tIC)6%e9iPvPxs}JJ%v6)B8YW0X$hNQ9AG#YuLI$|R=X9uKGOj97b{%EN) zjMS|z={SK`lS#GCiu_jgH#ZONpBq;%nHd=Jou;+1sMhO;ot!fdXvCa^zS>N9FmpUcY7(SsFjJtbR-xf9s_?TYI};QW$5bUwyNhJ8=rMkM{nyp9BaUkej_`i zWx2P}!nAIw1n91cCJXTPRcC()3~a4@uX1FPr6x?OV({~l!^3FxTn>#l57|ly$}*cq z*AAJwC#B}U^$JPa-hE#+e6og>W9r7(Byre!Y@_);(*O4=XZ?(GvCH)WlQC$t17=Vj zrA(F4u#wyfwrKl$Nhc2@1=@o@f7ECF3J!kUtJCf_aF;Q`lcvP-;0M1>HVYsjA~3AY zQAwg0sKV1XnNpaiBz*z{(F0JOPeF(A9?0m-M{CSmQP~|b~%XM8ON~O zmR6>5A3Tf_$a?({C$p2zVwYU;ltn-S5cno``t5|9bMDH;1zpFY?DSVsu@~E0lwO+U zENu68?^sgI?#Gq%KCFq$P(P~_QJ63^PELNe1NziR*FV=8L2Tm?Qsj+8kM^=+G*7z; zOC`vX`$oc+Zz@9M*+}t{+;R|28SV6_9*V5T-~A-l%NbBO=m|hw_ggoapi^!^CY+^B zu{dcfo5kVbzSm%YLBS+2J>VzX-rVii=egUU_d=aAPQ_|EF6}cuI7#FJukq*vrw74& zpfy`)dX#dLJht>$C5~5@XdeBAF}wZm)P`L2QP{w~FRhb1B~qF`X}UWxTZmX`Kb=9{ zS3zX;oWpau*iW6MQgZtJ%IZNRl94!)sWv&8F3)u#0e&y{;oLRo`UBK^`a4ZDM-MMO zf|YvSw1E69;`>V-ocglgr@$aSqFBR>nNE1;($99b)6>^azr`nx@W)`dQyfMr%<2Fu z%GKyW;k>b;+x;se4bse&YWX|_sgXxg+VNhC`G>$oHFVNt=CdZJJ5gmBd+d$b!#h;B ziu&&b?w$fvqnlmRp5vQl*DJFinbGG@($M2ykSP2_G!<$ykuEyP z&gIKZD>K7=&r@Y<2}Ro~P5dzb)pRrSxc?ez6Z~HykLD!q5z8~p67BHqWF*N|DP|>V zNQy!xm<5Uf^KsmJVU2ph#|+7nm( zld{)$x})GMap^z$e~Z(TlSA2344+;{<%YoIpXH^#Au=^wJq%S@P^WC$geyeM-?sIk zoftNAcYz$Mvp?fF3?7}4v4302s|u*y!>FQPA%ZC8B8^_`(kti5GYmzX?WJ2&9faDU zhh0^-k`)l%BO|1ZxcOV<4>UwWvBhwUs;XW;Ye7LF?ys0AHJ=a^2zRP{}r5G>6xii0C>|p-3#*w>W&hvloqqj{Zyt?3+ujTn0dGZXr z8Xk_cd4>qu^(OCsq1jp^ye}m4%|B4nAq;*zB6=3~#@3 zhSb#C*mU_+nkzj#}Z6SiW3(*dcgRqc{>10iq(z;60oYO{z-C8epTlB z77M3VwBBOl)E+;)A-nJ69fz3kkBH}Yq|CBx3KB%fuH*1hF4JEjBQ>MT#SmR9YtOA< zjplepSn4j)%w+Thh4G;M2QWdu$caheNb%BcE=BuL#d4ZhumQw^NQ#1NPr5DMlngTk0kl9 zzHvvoUfdzC^6>2=T6Wt6-+Nu!N1d-X;~i=gvij{9)7JR`_3WN&*AI`ywH}2fmU6pD z=}`Y}|GBjl51pYeP&apWz=d(Wv;W1ze~&gM3WWARXc^+(E&S8_jd#l?y4R1T8=}JZ zx9~a6Y?qFiEv5{b8F!dDFfVOcm=|VQgnu#~Y>Ur^v z?qDQarZIed&8pc(J8)}g7JTx~{AR)@!3`1}Nv%_n1}2u!*~ zQqrD(>TE54q|!|lB{Iz`&{6ZKS9beA(d-{aURdYmK!=i=K~~B0YWF&z!qUGfNL+U+ zwOZwj;&HcrlDQRg;6=~<8(_s{e|yJo<@QmR51yTtFdq959L zFkVE6TNYXlLlb_*#v^~lKag=tx-|_moQ?iZ$KdQi`yzBc;93vzQC=nSYIg@L=XjVcK~&2QlML^K%_{QVmK+hK zI>SU^J%qOH=P17q&Q?{`+(+?qEuuHqt0|z{MF>$fKv4!RDWVeD4fK1zY@`i|hBDqW z!QY(}29cx@#1oDiTcu{qPmRZRc9NTjjJPxcQ%D}^5?x+MT3IbkNDv;{N0n|~b|1ZS zXCXQW73fPtU?ufztUMjO)jXB%>umS1CsDlA40#Zx-R zXmgliG;Ht+Z*2FIsN@`Ghgr_Yysl~GufFU7Gu+r#;7?FYU;iDtf+uc)Z)N(yR=2Xp zK=(ha1GMlvLT~~IdfdD9gHOH%kBF1cSl}fVc4F#b6PD>Y?8IOi4^J0TzPW#Nq@J}d z?iW1;{Ci8z`zc_AjQq@#WUo)I6GkgF0G(5xDINQlfV}}EH+J;&pDeQUwmaORKEV^4<~=w83x z8~;L#q@{^r^IBd4$#Gy;Dal~Zuw#6t|0(d?g3~YIL65MyYMn?DE~V*mzJCM=+CwS668r)$`ML7Q&JYaF?6}*ww7DY zugmm8r(4CTI~>wC_vp}&*rW0u+$x(9xy0Kk-5AK> zYFp=V*<|}K`RU5lwacyXf!Khq?!<-JA6B;WPh?XmkE~-21)X#EtzxUt@ZYzKdk41y zU?^p3;S^=$uy_g=+`d#(=>4NqCLrm<@zzBg%32Mi+TQ@A4fZi4k@$r6Z6nWZ(P?eQ zN_&Y3Nhmo126~1G3E=5yP)U>P4Su5gv$B%a&v1q#LiEi0fz}A9=G7Vbjm+fsMd))Myj%=V4R6 zDztqd&t1^)`jzn7nA&m|l92C5jZp8?fk~5OfrmooC_8$-oO-DF{tB--qUR+}+C>6b zQ^NbV0=pnIDY()M1v~ZWQC0DH(_+XhVbjP|MxVOLq4)_x2#sVh*RC{IU1$d22aO7c zYxeP@2PqCIYQ=tcm0oXN2BIB?2;X;}N8?)=Uzu}N2iws1D<~dwIo5qS4b5wpmhl}M z8TIdwvXnjxk1`~khD|r$#UIbOo%R}W>r!{K1I;qFCsju-WF)R64*9EACiPb@ZA=i`Q2mdXwdklitaHd%_^E3;EuE&rCT(_IcI?>U zgB2A{FBC42_Zg$pebCu+ntL|tNEl91I~G)DGaJ$^O#iuOktQ)>Y@?e^w12$XN2vq- z;Ih(*L(`$xrF(O0KLQ*XxFB@0^l!*38~-ODnx$l(=qnIJKRI7iT%}p?QQ#{KJ zI^8WCT{Q~yPYK`KxDZo{x8)OFK235czg=m>k>#u~xS|j6Y6lINul4IH2w;t$nG-l^ zi`|)*9GP>F9r0P}yxye#J9B(;Pp+O3v05%nH(U=4lPI>mzE8at?#3Vlqmp&N`8R=a zG9IMGmmf>+aH-h2cA%Q!=1EZv@z2r4@JIRRwuwf8L(vuZK>JvNXv=mK-_ofpx)l5| zxW#vb38GmDx*Y&uy`dsANkvDEcQLc~KUGv&0!ItHIKM3gsO>h4`usZpia1TFd`AI}6lB{P3JH`3^Os$sN2PBAH@5v*-G4 z9{!HfgD7?WQvP6K@8X7pZujO>i|)Z%^UeBEz-@*9bF~gE_Y;F`*UWb85w&_gNlP%c zn!S7SGFLq(vT}9C60<)Lz%5CD1S3I(sJ!uo|H`)%)%Vds zGc&%2Qp&YWhBxEKMG}jv+^(K1x%Q>9YlEydbRG!BhU~?4!nz?eVJ_cyP6#5jj3s7D zEVLEWn2CP|sRnxcd34G-U!b{1#PS*Iy`|;qI$Mk1YgHKJ2!&Ic85Gyu3hCKuY`JRw zveYbSM~iC{RN*ktbvo~IZlG$@voxAz1vf3){k#04(c@(3x8M{gNkI2)sxMUz0oKDy zHa;ONuX);aLxFCpo@IDR@W?X39=qPx^sVZcxL)Ar_%x0+R>|xB1aXpG9{s`hO5WgV zPj7FQ`whM>WRe>5B@>ZGOU;Q(2(n=)tP(Gb8Q^3IU~EUOq#1E4mp0 zFP=Xt+}7jz9H1jlyjHl$gxcE&_N-6DVism!1$hIHe>a^?O9+Jjv}`b3IrsBOoVhs} zZ1cpJRo_j4Um+ER^X~icbR)sZ=DUr}lsM}G={|+{6Ij_Z)s%rq_N4b!nqQ}J>XZ)~ zb(D<1?d8tJIa>3@HuDV~(0Ry!qb9X+bb`YE*bfSu_{!>Wn$B;hr|ICr`r-x0r)l2S?df@Q`3M3byvp&rI+NNIjyewXgoXY6RMO~|Maw6pTJ&#}K z;&V@#4V*49YSzZR@!OwHE_pis%YFs=sd?*VaNX%fD=XDA%;={ccI{I*3x{S-f7XGv z6(g_*fdHr76z`Cr%yxh>(#<->#r>jv@F2Y4eKkPTayOz&c-Q@&ih4rPO7cgL>B#$M zP>b(}^&`I9E1|0w7co5Cx1Ut|jZaSlgYMrN>y`V~&nk^p5GJ`{BC;^A3SQDBOxQ@D zL*3bQne!g z7?k`>f!JBDV^_6U$aaKSsfUrVf0LjmqS<|`_Ddo@7`W$j8;w#%*4M?I(`s znPxrAY9(D=xKfNVPWtjX-orbxxHQzKQl|HP{hu7bil+Bp-Z%UA8t&ZuWrbR<(gRvJ zfWy&HP@Ik)K5NpKg146dHfy}M75&zA1oj-tV!qzyN0&u;=9Cpw)zV*mdCfL}9KQo> z0F&Z{5`PV9W{=2EnS$r8C8WIqtnb6lB#y<;2*-zlD-r2ax*y?uz*J8^3@Da==n(mTBgoo9VY8X z&HEX`8^2k9$h0|;jM-c7sy8Q8_z7lZjw<5(7j_@n9@?ItX=-m5z3)onGVjHsi#=pe zs9kP~M}PJ|P0V|q!{nCgmJqov9La3tA}v5!@twPos%psX!6xS>Bxk>Amo{43a9Z%pMlUQd1N$Oz&&zL` zY!yMCe>&gHey|Z1GGiJ8a$S8l4o#y~DDD_f0b!uPcQcFVNK}8@Aj6F)3DVy=6s@!I z;tm`?t=&-9AU7?bia`nV&&8lSB(q%Y@(AZm)$tazsN+XSpnQ&G`cM8^j~bqKwPwSpHKDaX?+AxQRU(KoT{Jx{5Tlp#wj7oo3YIL_?j_)jAZRpimRA#6s zOvl}E25%g5MS}w3$iaJ!(3#&gKsw=G!DM#CFWo>B$-d?t*hug2K6wUdUTbSmpxL}2 zf#V%-zR7JHm+D+l%m~lRvdbAf%m{5Ney=CFqT*9^fq6)bo=EBTQ>Msvwx`g~;>kFe zLm1}YH?eg1`lg+}xH6|#oz0h41%y!2pgj~18b#@y>6x^CN_`zeWd7(RFp1)@t~6gi z&vj)PkOFF?%D~XpbfRU_KcDVeTjJUy)-+n^Fne{2p00T$wRF{?w|G50(H{DRfoJZu zajUfDvIrqEn zjvI%sHkH}{DfF*fXn*+%_hK|L`?0G)$m`7?>o_}?TeP9=7^ebyFm?b99MHzKH{Nb_ zeatmdyI^?qpwNi%w&VHj0jlAV<1r9$Dp;Wxr?>h|>mTWOChrm|Xkti^h4*g|W9L7J)A@K? zKYk|uE*iJOh469cJynz;u+vOS81u&rGsdXIeNfP4C;26KMVMp|+G#Tm zBO2yvK)-MJm+Tv70{)c+cfmICu(q(sYZ=6^iKBzSX{BFVb z++`Ywzy3=#OV`w7`2H;7ZCg9F^O&d*mqyYIo2I)nK6IU^M3LS(CM$n8P?2v;JUL7D zGjY&L;Im%hsfd!HRlZboemO9}6N+sjFoNSMgx~J1nS|MROQ&d|KA6|eZoa*Zz00-T<;SENySV!W_5HgU zigIAfyte#TRaG~nzgdu)ZN*U#NgLOZ=_Bmy*lF`zI&+hycHmMbi_>qKPZGl!Yuvu{9b0WMg<@|l_dJj8tB2g)X$7w`oNI!j zXC*wZwY|M$kB6CHvQS{0RiJnysQEUn(y}4_Dod^Xib{%-*GiZ{9z_^dc-+KDl4@Y? zHMw+oj&t!s?Tlr+E@x;%sLt};uR7f0LmJ)t-s~wxV2u4okw?Vhf|UOwFIlpymr4D( zJZoHOR5;_G>$n~}HCmUoYVFWtQ7Rg?l#mPbKvVG|n8ot0uPhYHrr3v?HpsJp6#(L6 zznKU-rTkR$!sSidq4vtuf`+!!J`;TN1)*9Q6t-q+3ZtwcEUb~ z=aD3F60c`jC$$P@uP;%vJ%r(vA-OlA{RB_GBhdP8-Oqr*)TPiot)^yq6=8Xt)?A2< zUXLs3u`lDhMIs`JeyRgZwdXT8#YcGU-F!YD@FUw5WaaMFtQvJT_cGKCF4 zzxbMUP6S%p56UU1>N*3`q`G?RAzD<447Z$e_u$Dojo86^Rs1^G4^2 z3RzqUH7XT2`g$la@*MmLL^oBXC%qS^-qKol+KSSnjRBKF;RIe?dzJ@2Y_kb;AxTX8 zR&`LW^yiCEpPMi564^#BVO2;?>!2vyzwJ79{EZIB6*slwUG~0j-2E33D0DkIc<3EkTU$SpH_IA- zTW!bgS5cetpUfmUiDWnp*?o3tm;+I%{Np|;4(0iH8&{RNgdP78iWg_M4qz=WBV!FW zJ`I@FiULhPM5ezuv-yJ;UqY$%ZBknUOiR2G@O5fg%{FNHP|O+#W5IMn6stWQ>EC-T zsVTYvoHX5mvono8EJVS~)$@LIIB{wf`w7l&1**V@sRQEDzSdrrB6!wfIw$i~r}xAU zvI)!k;O^$m9TS-<2+9}`8t%L>a!+{l_z7@iXM?yT=zSpHygY^39)4e>ikh7J+KAR_ zC*PR!hS9I;K(+Q`i<2mvbHDHPz4|jE^!d%&bp68wn#Md~Xycd+%fQO-i!3f{^N>$z zIN{Xt_huM)Y&(1cJ>b@qd6fA~YMOgyL2I~#J*7{(a!=X{+mO4M;8Y-0sC$N*DA@?A zOR=Y3`cq(Nks1B&LFm3SqV^xy&LW=tlGB1OQlC60aYQS0x!r{SaPy`VM)4$Uf7N)m z?P9OVT5nlGI~`<1L(_S)P|Js~w5MEq$O7sCQT)-Ow+X?XzaBxv(SZS%GoOV!OlVCi zX;*57C*h`*p8ZQ0mLo;U)6>=x?zys&6O;#(Q7~-K@x`sGs%DGE0*Kx(X{p+N zxV=b!vjtY!+Ah8HNGixkMi9lH3Y-3(>Xe)OaA)88wYXMWTi6gR@qFvKGJHYuq&Zo{ zzd2;4Shfi5XRPrRz33&oXVfU_FIBbuceFrY33Uog$qglEf0^2wA0%)e?V8UB(bh#* zpnqK~VJHNh_?Tw<$K@2C(toM(XStL!bC>029X>R?@P+-CaxCQwN!ze+jvvkF{+#i{ zG3cKdzlSCv_g$rqW@4o54Of;~hg>z-vaAf18gkJ2dA#9pFcUdKl0h2>=8pdVc$N~= zzCM2ow}1&f>$DIVDlFT!Hqv-J7zr z++>7ISx-WW+T{#pk9{BM63Pz~g)B>7VpUJ9YfY-E2*wL5=Tu!uUOnqrOz8aRbLYY7 zrz@6$h;MEq;Q?L-AI8l4C;e`P3GJ69Mu;c(zI{lk+7$T8^6S99$Vm5s&}Rb5p2Frj z0tbj{`j$F@gpV`YtzPB$A?~$44h0PO87rq ze_G6x+}-E0^i4%SNTodNo;a2@f7HhsBR9<@dR-5lqF6;s=uFLrpxmFYNo(*+hGYW>~?hVhtJz`$~EDg1_}fpN*GDFlk1*h?~~IgoHNULCxd4yR?P8c@?%NqyP1 zRX}%56CTPmfgu_a-b3cNeom&o+PzKy-{olN9d%S>_Gbdx`NP zAfD$&-4`YIA(8OYV!7m+5#71C$YW31PFa0+BX-FtV7QA;?fH zHn0#ml6~AFv|iXEpT0@B7Q|^_ID%k;VXT)(Z-Mao3c>BwYp<*b==kJ4{|?!CK{3th3!>7 zZ-0%C9-UT)r|!9kn;0UvD1}ov$$qw(xRp1R#~VxX6mJS$U)dHzS1%ma4zjp%2D%R>YWg+g>iPB8(Tv zL=<~Q{r=j>`d7S&i4@E8n&3aiG_I~=mTFuYnR7I)731|kv&#=oT3HZThD#W%G0*M& z=#Q$ZYW90kH&kW%`EPQKspqAB>Z)d0rQ0W_{SP@|-K63yC}QloMFlp(I5&y@^qocL zOX7cb$~>=S68kZ5_HQq7XVpTpEafEU7RA7vsNRF&70FfqCNfdo%7*omv7dylY8Cp^ z;$U-#rU&uWOWeK+HNV}<`cmXpgNpw%4(+}GlV1OpmRv<->K)S;JzKuL$Ks!_clLf= zPKxSF((d_$H*PH-d_2`R(X*Ry;`IOaCaV)<+>=m#5yZ?kQ*?roTuJ3`d~t{ zZeF~|{@-kcviqqsZQ*7>BwE`=VHd4qG%0=yYm50PVDO_pu>g-oyCf zJFQJ=EjhVN{n7ZQGBk(^u#<&d67qDs6V^p$r1fID$t%_bYOIzYhLaf-d@S)C9jrgg zT{=~1tUTTsZgAD1?LYX#$*~4m@DBJlX#Y?U+{K&4KE%T;D zq?Z;lN_RiO*ez#|Y2+Evn{KFBs&*z#$zDFxTBRK@SDzB-fBI4>@8MK%lXfiTzQz=- znBJ&!x!nEQuLA2nQdBV*rr3=?)=MBbdGO zt8*U9Wv1vKUjx>dmCOs?<)f-TB{=m_+)<>;lz(v@y|b%eZ)Bi69ryIp&h7Ku_o;q` z0)|3qLUaW3sB$SYHB-ifYv&f4Y8To&_xF9;rUE29s`tYdgo!S~xl(}CzD^C6EOHQU z0VyOisW4!hfZIg%%INqE7$rF6A}M`4>b>3piQUB?0k03X=LhEu5v*`iE3bS3w12A= zcrNu`FM^E}M@kX+YdFWX?Y|fQa)B6g>ueY%Y`u z|NIB+UQAgHZsxtQ0*foOK0G^mrj<%+$E6Pz=13L2UdsoJ0qJE}ZeUOlSPRnJkt`cI zl&X)2yMYlRUk{*P^6V&u-%A+)b@hT5_l>{U=_Et`<D~&xT|f5tmR6fCe4_YDDU_RxX5)R!Co(Xd zDZny>er`Ig%*3xNFOL{}Hz3)8=ld0|?;X4$$?wS=pTF)QYRuwFBttZ^K6PbdV*`r- zD$uP~LTQx0EqC`o=idLnK>u!jqwlHWL(mh}BDpZ7$L- zT&WxPG3-@+%|Xw~-`gdS#3{kT^|4$ozK%tc-)nwj28CT{wmUJXQu zR;g3%gMb;KB9)~jt!*ut;gmJ&RrQq8VKnEAU(;`^FVAEw#K@;`nrXccmw^qo+hBr1 zc7Boz*_Gh@c{!Dfs-y5Mxn)5Xi!IuURd`lGpZSvd-;8*2pbb}MxO-0$E~g6EE;4zk z6?%cj!JK}+IocSbzlLqsbkuS8mJqW2EIdYClz_`=raFI1%p;o5AWr80@@Ftc;JyC| z@BOLM+Tmdp1`%sg)RSBOE`py%y-niw6SDkLqQ9ddRe4XJ}BHM}*pgliAm~>bnX}Q=>z2NR>rhDPw=b;+|E3Oa4p)`DM^B9) z!%S4Q?kEa2y4B&E$hCnkcrEKrfkN8L?9*T;^^agXy7Y=F;eQ=2yBc_8Jio!e6s6dD;|}fs31~ zVfhgf`6MCIuHZS0ExzOpbZkp{ZnCQz*YkihA*kRFS&A*&Z-4N9sVNnGm4?AofF#v7Pf)( zLPTa#zKZ$Mrz^3vACw!R<|bfmkz_vE^a(x1GqX`Lk}A!InaBdlD2~g{M)DX1-yS3v zABBT+UUS2{gXrmVGQ8%3zm?$TLYEVx^oX7KQ)3rD%v8?qB^zOs!IN2yjw|0#jv+}h zATzI2Hb5+E?s06--83wJB!PWk(P21K;2eIj^%|N2`Yb#)HlP2Rdwu*Yp>idEb^o8< z)&#{rtX&=``3FyXx_Ww8fln2v<)C8-$u>V@DVUt>T#eo9&0zZ5<|`p=n}-I0ehTUZ zgG53a>qNF$bRjZ+!7imC=vW`xjztvmS72CJgCUY=KN@}#8{!_yVs2Wzmu1`o6VOio z*`=R$^H12A_>iOaZ>sJ;e{R{f1|cKy=h_a~Ss~k;iqtuERxVw`@yb%=*tDdI_f9NJ zgOA%OJ->{KsURN`bB5{_v%D6vm75k%bCfS!f?_&FENCPCQwEJKZVe;J1%XOjZk3?< zDCYqY_t7fv&|m}YPEhFiL1y#&o$qFhjH_K2=_#{}56tCc(5U`N>iA7&1W$^JGZagj zU(4b}M?4T7jox#*Xw~(%eeW5*1{t{%n$4axbodoR2pe}{`ilr)Hh4N0_H)a(G5zy5 zkdp(-oF?+UIf%HQpV9<({C}y9{suL@8tSx_&C-rki~I*a%?0C2*_XGsedNpbWJsSD zZUs~2HK3cJe4qdECYUD`?^w(@rFxnzr#o8$WBg~JPj>jAk}ic>3NPd!3d83|{m@}9gbh!~ z<1`MHwBDm@*Xkb$?Vsiw+upfEvcIvN;HpT&;K3|OJbBXMH=}bFqG0epf`P?mRUh9m zhLG*~pV04@<8EO+92#j<1R_C#FEz{QpIn&W8vh&|j4m$T!ra%V&yvU=OX;!m;*cgafRul2X-WT?%b-L{m_;H%oHZH| zp7Sd{X<`qhifq8@iHA>}l1pXqL;gsXMDq`iD$J!F_LdxH zk85RBmJo{Pec|S0jHTvTnP?AzBVM|p9ugWF&Dzn!IFYn}WIZp({0Hh8clWFnTupCg z3nVB)S)KcjLlf|HYBC5(so9ZZ|4;u;7Q6($!uivZF;0xJwqAq9O>xyio9WyK^j9OF zuS}mh^(}VBkq_6ec>^_y-~i5`-dj>;_UlbqjRuy6xc)(;NyXNne}0|dZMCto_l(*p zm5&>7Z)vF;kX)P22+fYVGOKdhn%mgdkQ8?{BU?hN`oT4Ah%gnr*}>eTLZcBtH|H&< zAsMtgp%<7;s`_ek20-}KLsx?3Q1{a+=4VXq>gg4M@*Z8it!^m?Qwdt>iPeL>xE{54 zCJzXZG+3>Jh~!Kj^GZkSX zNul3Fa`>w4)TvSrZk|AChODRDbq`pu&Z0n`=iHHb1M4>SShM!Wviw9qA-6ELrrLq$ zO|j16D?|SOImnaWVm@T&=RHbs7~f0`d*>0lvqALO>Vr$Zp@w7AN;`qVsOJkc>r57M zITd8{ns8YD*AylGt-n6bek@wb^mO~{K2DMcGMC@jKEm^UZAV*k>gEOIA^5N>JI9%D zwmFZ-v^rqss$BdVh#|qFEsd+mDvqx9%c&BKVzj=5H8x1{>e%*QW;w;s^;W2ymYu## zj#G1@&aL4u6!uS6V)>?l@HB<^G<12!HffB_Z58?~PgO4b>dEXiJoe$2g=pb~ns^K@ zRGOymPB4#x|AMY1 zn|{*P*hCqGAPNMu{mSZCWgQzHj|g2H-tLR@k+C0gbc5i6f)MHMW1Uf3)uyn$ZI5CPIaH>wyjpi!c!V^4!|$aWB$j2HkV4Gzyz1{P%@q zTrHQ^=0h{<9?n%~;p>SU!yNL;@iT;r5OC`xl|(6g%#zn^@1S+T=3AG2!lRd3m=|P)rzyuIQaAx1y>lV5x&(=MWUG`9HkBnyzwfj%3>ghJJEkN%q(mEQ1dVlVxSE zTDIb&V+ZuI4h5&jT4q0-DcDP;M-o7bmTLk-`wnmFlPgdbTW9Y`))#)JD(9T?eRV%j zTWLUe+@GC8;@&KUCmnU})zD_id#zC025CWaO!3YVjkJl_+U2KDm>WJUM+m4w?~5r4 zn*H{b{T0;6ae^Yj!E)F?RvfS#G7DzYEbK(Ee>DELZ@t0pWMwMz*vp)Shw%Zt7)iU= z@QfM8??eG#IO)Hci*WvS2m^O0g!J+n)&Bl(&EuTEyB&Mm4dn&@7Qo)r)TExH`$eC_ z*GICk;7k5*$Cl~nVejH%p=-cJ%0wQaix|j4*II*hkJwX_ptb$QfaTJcT=A~+DEzwO zY;)-0j#_hvT1MpcB5M$)?+|82XAN$6~+`4Q0{%gargYyAMgOXd->L#854Tm4fU7o;^zZ7jGUm=ot?XcW{O1D|NZy!KMiGtr#}{12M+~E zVn^1MQJY*Rk&BWyGd0qcRr|sOI%~z973x8SEfOtnYPl+!mRgZsX3SiWOcCpeG5^u&bNaY==c@m7|J8rXG_2`{DFQZ-xZB?Wy?V z?&IK%z)+`qM8oyn27p;vye&V%IlYG2i>`fdU7~)q>}Ra`r4gUIgV`^-Zg`=wVA6|J zHn$czys4?#)2VA4FL+nQZYF4VABTd&ZE&HEeR;Pm8;meZ0Qb1kA^&62|ABE(XY$YT z8%fDKt}Hu4E$#*0(w%jJ)jE%__&nJ4hu%OnnPO7l7Js&_Cl6uhSMKb`U(z1jH;<-I1peqhy4t3}pBaGT^=Y$-+kR}zNRqg^vOjsSNb|d*@wy_q3kBMPXF9oQ zoo0{c5RY94zU-_E$mDC#U%%2XEi*jqt{;_T+zrEkunoQwe5Vo)YAoZWCysY66Fx&D+bTZ8o}TWxs%(?=A1J zB~ySkw-3F_9h6YOBQa+4-`Ua0fyQfX+wM*N0E=mviqAVdSI*m5%Lk=@!|~*pHcr_* zQ@b<_xANASclZJu@+$1#^=ZrF@1L(*{w@4?zW8tMQ1&AHE!?dixw3qf|Kct$dNz{x z#KUeZT^^A(ahl%A5Dk8TmPk`k!(*$3uSwFkNH^!EiPB<1iim|%YN`k2i5xy*EQik9bu50Y z0mi`ZhyY%-ly%OJLh-mHXgtF5*|U3UC{CU_{%TK!XAPCGELgD+ zM(oiGXBx3{g&R zS2xLpq*aT9;}I9InDq67j0Va+Dr?KR(n$M`g~@;>I^)waWYiu!lD*91-bpO$bR*>e zn=R%F(iGQS>yY|o->CC=a^^7;v*Kg+TWl0~IpZPZ}^U%fV4f$Tbz z1xxrIX&u1I?@NoyZyx?1MQ0fmRog~kQIU|4kdPD*2I&w`M-b^QiJ_zh7*asG6lsuV zNQZ`(8l-#Z9FS6m5Rnpb=#u7pz90O81+25qoO3_>-g{p{Z;G6uWFTc^W=QvIvX-A> z*ezp}W1%>&2w{>B`4X&!YpJs6kYJ7LbV@3o7BvzRTI@U+|s+HP^_+tWlbl6hUY*I1P zvJ@@(t|!0QuOn09usA@q(mC%iHsf} zB)FWMuIC{B&Ta3}I`iF12})-eNIW=ox@HwgzO3~}y&G7yV>2d+@F4_w%7498_XbEv z6>yC|SU}}L0z5HOcS<~W`t;qiD{K1EU_7}OlbnQec@o#}EY}VK`QI!GB51%Ti&*!Q zcT-R5<*2t_!>+%X+3F4bj~3kSkt^AdXrF-LiD!kSViQlj^n{ycw5ouT0M2JOi# z6C6nQJz?dZ5?bR1zd@#51)*Mx=E@AV@wb=Ulz58%#{z?JD+>m?luSgX=7TawKO(`J zaQvHSv=G{mx7vrm*#yQNXyJ|cI6CE~wu7z1PFm7G6yKusexE{=n$+NR?<9My#$Tk| zv>^?ik6vTi-@ZbL&+ZP$TutPErJg79FanLSV^ASlTu4n57}z>aNB>P$|MicB-6j|x zZYkX1nGZ*Ly@REU*yimpJ$KIHjp0MBkJr6`#COs+8o)53V>DAz!2gtM6A5?+_?j8@ zq7>^0%Um?mHXADgk*_uRN+|wWx^Jgj;QZq+17pVAp7CtbB8N22^U4ue&qvu`1OZ%L zFYV9_>qJLa8|gF_1NLn_OPw|9>dDm7v} z-d@x*tpbu;zZ*wf(JN`PaIvFcy29ezSL|fXJlk95 zPhMu3Ef0wU$|kKd@1x3RHjk6ya2&x|+;TXU<_?+MEuF_?;?{qtcz9Kk22<|Zcme#2Zkui?wv8PtenGYTeUZz4dHhudbiV+_XT`=R@Cp`( zv5#}DvN;XMRQd)6a%+m#O_RxKnWciedBlnL<4>`mr5U6gDYai( z0(ux>xF~Sy@_JHLRh9G||LiwnHQ-rNF{pSWi{_s<8nlbV`>y(`%iKP^R5ml5RNM`i zJLZ^1y7e(oJ>Uipuf~Eh(&p=})vf1a)Gvh(A~T3u&;)dNQwrjqZw(I>hs%Dy{ih5w zINtex#5NaAT23MAgX&o(l8RGKZR$o7Km_=S* zQCP1EKBwSxHgS`JY8w(Nz><1JEbpmSH#+JJrzWe-)ciX>{*SE|E%2%DMX%ckAgbic zxHI&#f_m<3jf2I8a(SIi$eL~{M?Vu!GZX_2Ub_m?!VSM3C={JE#}O{3MQZC9j1-6m z90c?n;Oqi~KoVG6O3}U+p{akr*Xd9grXt=P(6 zKW7V)GfM^6<(E{ij+6JZ=OWeo3AWY5ry-pZ9xr~Ea;jL(%Oof6x-<@?D-3qkLhsET z>BMo5DbQYB{*!qN#mxSy0PM1Ssow!DUlv{A%+eIyWy;ii=jQyF)*iRI?<`>qx14bx z#xUq`km@`&6JQ#TrN#j%l4$W@V+YXK|O#sko{9GaA;=mHy$_Cn@~PP64;h@y|ZSKwKpC@WSrd zS*kCPMtTl7n2Uhwg=S+=it13%iCnq8|0RV`C5c9XfHJ~ zx!j^2F7?xRTKYBtESt;rX(g07PBBgGLpyW@Gh1G!UwLMq zOH3lHo=ALOa=YGT#~N&Dr#xb>T*c(L5aJLIc!#?=m>v2je);Nt%PvN>AOJ)SjSq`q z<0fm*y*F1}xE0P+v-DQ#S2HVuIuQ=4N2)oV{rnfUEnN3a<70y`t87q7orK0}GfJO| z{C$f;Z@}34)>c?ClA}Dpt&Trt=|D&ZwBK*B=)EjFUtnDud{BrEEC1umYD@Lq+3J1| zdU|!9B}-%YvYlP<4Dmd_41o*eDKGe^WLcO&(ofX z{)WFipk~^THs9ZV?bJ$CaJPCiZ+sa-WjTRsA@^Gd+Bjfw?cK9w$iQThO)_R-LC;jk zUf}ytr^`Ztc)d(Ys4r_|KCP0!xF@1$Id8PTK2(Q-*z9q%hwc^t=B*#xANb(rw5FWG z#ZXHsC~LgjS#!w!M& zxnUf39?vw_{$-v8zzOw97Q8aau{F^a4=FO%Q^6a|OU&Ebf3Bgr%cjS{Hbi*fzzmhs zp}KFgU5f9b@PDRa+{A%r>i^I}{k4#b0g7D9D8{%y1NumS4KsIV$ZIS z-Nb(kMX?&~p%vxwl}S=XO{{(8(Bobe^-PlDE|B9J_@>|IWV8Cy>q+tlv~#oR*9xpU z^ZM-%NT{8TYS<$ZlAc)n5s0%v*7D6LD-%~%#HYN0#E^$~u*6f+Xv}}%U;a0@LkX#O zZ>9|)O|NP~V-K)m#za0SZWS@X^{LAAXIeBke4l2h9-Y{PxNZzAjby8(<0s4JJLrZ6 zvRa1uaR&g*1hCs@nOFyQ)9vTor$zByJ-tHAUuk4H@}Nqp&D3n<-3m!E9y{4Bby zZ6IJKY4Wqps*a|2@pAj0Y1RGpgK{7L7i{UoasY8Hub0Im@5T{Ws57XlLQRmwalN}o zvSt6b1~Vs)so3_1yJiM=!>CdYU%_a}0>`d$ ziEq6*a{=wo+}L~X7{fWyUNfuUXe6f5URdQnv)$WS`uV=KmsH%hxvZ8XlG&N5dh)DF zNW=(-TnIa{c3f|6g9!{lhE;W@;YHyS*1#ggx}#&@I|qUHi$vunwBzUDq?^9$a-^z$ zwzVp=+uMC-QeI&8(m}?y+XqaFw>IN4i`xPbn{_pTXvTX4N(?IXz5fUYNptH5Hnvh5 z*brIBJXe=lg`!_suF^1fq}si~_m5C^bzaI-KN`r~k$p48AF(Z}-Iy)3O%_Wau6BNF z?Fvn<(y-+2#~Dpi{)Ac~aorc}&^)Abnp;~79-CxQld6cpUcC`i>Q~`Tq_!EiuWZiN zf~?=sp6r;rb-cF{0kaZ|+3k{KVlJA%6qh}x6H6}kw}~=Rc_k~50!PFq6P=-a5YvM?jZ zsi{n*G+wt`Urvr5*wr1|&(BF%E2OZ7QlVKg8N?2DPi&HB-IYAd(k_=?F4lk3|LDa+ zn>n@j$t}eSvDgUu`KG3bUfy|pDLg50f6mSA#nP?(T*UeO+^fyc?vmPZYRp)|wlXeB zMkOj^{}C@O24l%gcX1WbnnhO_REoCzI|cu_3O0^ajbx_=knSq{jyXs z0@TtM>;Ohnllfh**6d=cRasiqY|=I1St|c|FNWIO1eyWyPmMEaD-h)UtPsYb8UZsy zP8w|hj42!fB?I&A$+wfuaNvcdEvQmcA1I9@RTv?66{e_>nKCA}g($6tmhWzB@g&BW zR+X4YPgVUjIhW;)3K~tGF%QohpbQAlD{?MsJ)w}^hknej=A-DTVPMUX{=$DZ5T`S} zw#edsQ9z!CKbJ{apM6GA!2Yon*{~(W`o=flLSCOP;7l={5RnNBz;&19HkljIL9ijN zm{Wi(oL@jfzD6$3P8KJ5krEzm>!+h7nhPb-vy zgAZ#c6iBh9pT@YZ$BIx6KX>9rP&I7x%OXl z2sEXu&0o0T%pB5bB$=UJ+iS80BeolX3i$-R%l0jqv&35C{BYDDapxV#_ND1rF3220Waem5?%6xTtsvGUn8=cp&J?~+3fb0XW z6Y`4Sx)wR;6!)rIP%pM=-(6wraQ6-#^VborlcQSVQtVXCbOC_(Vwf%F^4LFaz%H}+ zUW3A8QIhF3gK}8xDpg}EOU2!THUiqXV>g({!7Irpb(J$O3&u+j&x=*^b+Wbq62dvt zyv!o^#gjdMU(A(ONCm7^ilhB*MdQEe6()CHl_i4ZTq~Uj)EU?eEwmSdV`&Q&(Yd(Y{mgDRC-GgtnMyXmlw3CzVtQn&Ydbg~M zXotV#ITQUfUldln{d>yE$Z+%Hm;XyM+R^wm^&}AM=(eo|V#oARXNx+hoNDX-R=`i6 z+0gaR`po?2ZcWdbJkHApRdYdI{a@@#=R*p{aHKG4b89f5+NJ1%<2KghE$yg|nW4Kn zN-^L~!RH%eK;QV(K$*L);Dh2I*6S9&&(*@1Zl~oHt6{AW^GRH!pH=&{rv^%`bI#2o zv*_+0-(X{Oyut3eeIWjFC|4!!@Vw_%xhELL<#F{uZAKfIR?(kcdn7f@pMR}qd)8mm zS-WfU&<~!XKiZ-mE2oBw_d%WGS*YNpeC;T%s6L@o=b3FU$iV$K$blc2AWq11-mcOgoi8redT%K ze2k)DqyZCCadJwFY5^*PdYR&*Td$RS9aJ&_Dgpm&C{ZBAd;(wo-=`2^3kI8%ZDXBz z%MR<-;4hz>Lb3Jt7A9(TmsT1pu!GUmRT%}51qmyABWnTjjw&JFJZ10Qwy&iQmzKG{ zQ0mW9YJKR7`sGi>CKDL({{eCL2p@Ctia$V{7#hO9baf>g#}_CEL#roSJ}`kUe*CU% zY?H7U_EL&7hR_HxpV^3`_ZKpO8SXh&VMi7&Z^<&`*URbO-|x#~F|sqDtrBvDD5(t2 zy8VgJzrBH1&s0d!w%d*qV^enK%8E-^HxprKl z%BVf{kVPqQ0=x}R7md)^8{iMk)R#BkJ}1Dif$TDbNK7l2Rv-4Zole}DbL5I02r59g zfl1GrWwTHB2siw}Fm_6m*wJwkdvCS$l7OYng`ZqpL`3VFU-Rx%yo^V{^ND)$^#eYg zRZx)!bTkYbiCkKr51IAYTPFybz8k`^SeODQXBerev2xn6>;6vQ%=t{4iaJFysC`FC zcko-cG4ZQrT7OJ@h5_>aZf-3)Wj#}BX_tuhL`34HuG3&x( zVAr}#1nldnhrXf^rNv_{7{(gK-S5Ut270nWzrRm<^%sw|`>i7Hs!H=F2U0OS(KKM&v43&I zXUT=Gl2X}&=8Sci7Ro{erXNh{7#L<2Kg1q`4@fM>8M<1@5|)^)MIY0NyvUI+5|@*q zQcQHdqyV5ovnR{Lw)H0xX}uc&g77>>~f0HmlZ;OFeCHEVxqbSN?QG_JDG>aLq(KAZ~8;r*IWbJ3cv5ckXL?#H^%-+F>m{vX}drB z%uw=SR=G)ZO!sfG((`hs&a^PV1H2VqLdj;N^BT_g+qZnEv>ec%1|_|d1P*VGd^0wR zF%m9Dgy<*0`;|RSE@0uFW~KN^O>buCBGu{qxLa^=L_vzMD6JQGm)47o|rir;_8;c*` zbWp%&>;#_(lrv7CwY2r~^YrtP?q;KF?kS72`Ayl2%2Sc-$`GvBuP^*Je<2(QZj8p< z?tJscJe07RpSBMi_duvwEL>Q%$y_tI2C+Ot6OI)>mU4KcY6I{3Tgy%f?B-E$)@JiD zaj>u-x-@l6^F^IrV1)qEH@mm3y`5?%WuOIJ_t}DU-;_JO#w5AsHvTw9J-{+iF` zPw;u96qEGzewZ+E(EwcO^RU~0WzoWsK*?3f6i_diQANs^x?N3H9n(3=V<&DFFS z`DXFAO&d7NQ@=SP~|%7L#H7Fjh<;dWX-+Ze0EjD znJEb_V!K_5eOin*(R3B^L17mzIn8j(5QPQOM735{(v6R!2g=#2;AjIZUbJ_ooSaCW z6uZb5h%=qG+ixZJK3vCUuwkx0u&eLhN<-KaA`Cz=ylc~g3w91NvlLY~=02&>X@Z4u z&&j(qFhvqgEL1hQou72Bxc*-$=)G`I2G&)R?m;_d0By!hd~Rs1G~%7wEUq&%tMv>A`$u+w!2UfNmsTY|&7M)r>$&hn5UiT0 z!wJ$3Qp;Qz!s9$Mc(L6N7MA>8(A<``{H2>ltbJFAt1_DEYt@`>y(m20(r zTjqxO?5a088NX8@nlQt@0jl3&@6YZXyUVS4NR&t8F? zgOshmzu58FKK~=EO~#oQw4mPc9G3JKP`3WxrVzU9mx6##Ek{JHa-~{{a`bta5ot@@ zYBFjLV7ebUL{(O?VVb3E$m$Cx&n_%U?8# zHP-XnUZ5`6pE<#H8#GI3m{IYV;FF$V0UAd*`5Wuc(-`M@m}1o17sLuFX>i_<>H`MF zkJG3lofzW=h$=vWM#1w-n1?ptFtE&xEzr_Q2{lj@{LvjI6;&F2SEa!+^UhgNi>%gs z0}!p^kgu;?8tYx}RcAwrqFy2Hbu4Q1SFdet0lPL?-T)RGbDyAJ%E3~iylzg&j>=R@ z5Vc-2&k~vczOj)8#it&K^AregE8$m@$P$Q~=C`Fv9??HD3S7MF5S-eDJ#w#x9J6lm zi!S{d5#`j2l&p*a$; zohg^Ovk1S`GRWNvH}HME(xUp9UKT9l<~EXuh6{Ecj6kVMfK!fekzTOp@{)4}LenFq z;_Dlfcs5*PWou37rf8*(f2CvUH0EH1(v*C6w6v}H^BOtp6F;_@<*q}&F>IGVn--Zeis?9ojL z&7F`#{hPhWr!d-^hlhbV?1zQqKO3MO(Bxjmxm4FbZih22|6aW`H`pJ&Q{<3UxEpCL zizURw;GdbI0WtWYh8|NCeoMQgWXEvCYWD>~_UN)#n0ECv9DaWi+06FyFEC@WZI5gUW&I8>hZ)mSMmU-p3{r7AX?Mwuh$m?G8WjH-3XZr*&1K-POnxa zUIo`$m+m`GQmkW0*(OUE7rc@=O_=oQkA*$M>#g8K%6X|3f1(YlPgY3E0)~OVa5Jr1 z!MlNPU=07geib5|_qgh{z6x^*!vU*Z;%8Il0VfF}ATKdIC`JHKrk7l76&^sj>b1~WLuP|`mnCXmWw^bg5O}v-pZEwVvkbJOa_ZnTM{8Bo zI*fE{q^Adn?bah1T%$8P4Weh}bkm-9n34MP!kc_q8ehHmyoXxQMsz(rE0T2@3e;F4 zc9lYo6fP00sA$|iH+gqLCuJ!fC7f`0CQjm4S@BpRE1T<6RPt?WxjM_;uTr56u&svOL)Z=bY2F>wns@a*JY4vULi%^};Bfqr(=_QE0gYslbF>fiJZqZTT zQf)@S5~4m@!@mc8GsA}CgZRo3$-dt?{pI`W$+YO;#MzGJ{MCd?T*uM-(Su%>oJ6)Y z;+ok_AD@6<+uL!7zq~O?;`gT)qCM2w>|mtj%V0;b;IjAeeHkr5SB>Dv!3f*cE{oh0FW{%~C`L$mSBUeShYD0$Q$(X^tM2OhxXdKK<@5&U^#? zhzEl;JekHfgm!i{w;-VU=-soScXT+x@PFznv219hQWCLAZz^XynVI~KzcgEs=<4b6 z9V7DOM3R#A^R}QX!YwH&)g?a)9G0=@wvgmuH@Km1SHcTr;@XKvb2^q=FqdsYbk=z@ zI~0*zudHLMc^RrrTa2mhP&OQ0%!$R)LmK< z`r?IKb4tL)Vdd@=ZWa><7)|Wah1xiY`<8ze6Gp(!qTy2GnYZ^p_FJTlwhW3O889EH zDuBXT{+VZL;ftn5-oH8-kjd@rHs+wZ69?9>6XG0ebWeW`TNz{)SFbFGFL?DxRlfUt z7*@9Lr}l;`>OZ#v$nw@v7>4cXXY(!bX&z09@v8QC)I;9Xz&o$|Jp2IVve#Sl!2OzuElF>{d}MQ}{z$7{eJK zpv%Ccj(DpMFD=sgN%Ub8N3QBq-4%-6FCS~mErPv$95Sb4C6Z)-^5(J>aP~f&UYR1w z5FL=NUD7h@C~X{}2hLTDB?A`-!R!wAS8W4r4xI+LykcZ8)hf{itZkFD0z0?*9$bw&rhg_Mjrs{~tW- zIT9^?|1=+tc{NEIL@g#ny(fx%!FGp0hyM*Nw(W})8op)n;S@R~@|4s_=bf1r?ISu? zPWkx>#q9lnc$k4#Yx^fzfx}DwA5<~WyhDV*F);8xdrIM__Sk-My65;fIECgyzd5IGI z+=3a(IuOYYo(A+E@LxHjCgS8|n4VY0MRg~D^XvsU@s^g6E*@;8b-i+Vq#*7kfaV#P zsDbQW-gw_}60_(b-A>I@T6qTfx;`bd)^|kN(G?5I4pd;K!X9HavEUTq)kr_l$seti zF{9w*{WNef*;Rrg#9sAx=>WfxgYM|sMK}1<3_aqSuRR0R3UbEi=Zb#?@B*W4qoD?7 z_UE9y#zNxSQ#aaN=F$22D6Jf6ZDjpx%i&>zjxa8LLyr2d2P_BBN$;LY)5cn>8+)o+ z(>AJmdcVQaBk9VpWxrLUtu; zg`drtz!hh6lEGnV^Pjgp&N?&pg&#S;Ej*JbV63G2Ty<>9-TP1pN`JwwNXfb6!lQBw z&)YFR!xTN{11V&WHHr<0(=SObGV2L`!bzh=CyGt4e`Fuuz6d&5k_@=I$nbptV|I!A z<4Z@?W`W@msSK}qb+UhSH%3IVsZ_q~_dmq?`TUWBgyMMhDah3uT&io5%a=5(H2%8`10Pyk!WM}DpSS$+MOR;X)YJy~A|))gQ*Bbb z$dONwKJmM!bA(r_@)h@xfFO2cOy<&Njby(#iRjffJqJY^Nv=hA%l!6l_h!{(-#;7Y z4;Cp0YqCN0#oku$uvPLp=Z76#0|7L?de(`!I}*DVn(;}4uI?nrKI4IxQ~TnC*RmvE z^kmSK((BY;-N3Yl=KI^ya%r|K_1mZIS97$ZPEsM`9J%X0p>;1!p!8j(jy7|JX*=#S z>0JDsZsqZ*5L`K;^#cY^T#z88nZeWZ=K6au90f|IY?%GPuiH}mjd=8si8JpEEE1BrXUoD^p$$1*PsUW0Qkkv99L6p z!nh-4F)F)%pU2-*MDYAAUg`mk!-s>f8qlN-tpXr%5xLNJK$zv(j#QuObV-|P5HQ1i z==SPJ2^&>s-rf!+aY;07y`&hsoADdg{W;7&lDVkphU6&7Jw89&P1lHgRU9$rX5(ED zI9J^7X5a?BA0kK`(0s2$DHH7I&PJ5y>raB-)_NcIuxl=P64;j2Jq`ZHD?? zdp=xo9)H1{FLms)Hrx1C4i|M2hdYp~Y~#x)2Xagrce z*NZWstux~^uYyu-TYV?C`TlRnx!jmnAyZ}7JM#`EKp>-^LQJd4#lo{HlS}2lvVFyk zXzNz&>*p!DPL0peY4l%tM7C^T+)@&fFRS0q>`1X{ouD>vbGC+hGe1-`i^<&B`n0h9 za_TiL94jRbJ}$4nkM+8Bvt94va+#C36s$bLTcnpA6p-t&1!Sn7ZX_{9a_z|x$lyVO&n^%}0BGbrtx+52opf=8S9_v~LQ{NIpuA_(ok%4u;O zV>k+tnNduz)#TLh{A-D15*L+G%zE|gCcz%PtAu|Dd)+yoh>f6aA^N=I!-?*3<$v~> zKe@Z?U_4|mmWQ+f#7wq8!@VMoGhSGgfTY5~aNDOFxucR~dV6^`yoUca0gGa+zxKzaMI5Lv= z^s=t6dOsPx+r^=B+1M!AJ#LrD?U)+s_BZ1}MzjMkTD{1xSAz}rY&i6-2j!NjE-5^g zornASwbHa0uk?vbL4US*TXHoZ#iJf2iXH-5wb}P~3vUaax1xmJyuP#u-s!$fV_EI2 zPbjJzRFXgOZZ?HrAB?3ozq)tAO!4o~Oz6}AmztvfYu*yMw9zAZaWZht{bAj$?oGh& zOY&nrW-6)~E0{T07+~;u^wP~Mk=c}A_Ms6CEHhhN?%x_jN#?f2FNR|}SBC~dl z;MgB0>lqYh>>hlCmEbRr4R1wT*A5ZiFX`ySJr)sISL#*ea8_kmjZJ8 znj9reJmGFuFmX(k%ZDF`Bx`ehx|@fLeqA*7hPQV#Zb@;eaQ~h01PiXR7S1sbUYoe^ z8d~Wh-MM`kTCn{*L1D!oAd9NoYrgx-S=MN z!KZ20+3RU{h2F@loIjMg`2BB0PiYZ5RtE7yde+O7yvMFV4u#i#d}|6m>bRh1CdYEP z`aG@i3O?97IbanoT3w_8UQfJHTwliZzia$8)-~v)^PkKGA)kBvtc!QUqV<2}nNmo~ zE9^lG;p<~l!J-8PWhrkFF`0{96U^x`_&Q94o4K@C79%2)Lov>8>-ZJ`%WB=PQQ<&X zQ<7#CDwI9Olj6=#q6)Qrg9%8y`A4?Dzho+7!3FER7*sAya7r!g3IAL2tyM>l zYC!At_f+=XLU~3auBb1=L?i02lDfAU~;8YFOaVW4WA$k=8NL0DFn)Ye#*!4 z&n9iojidIP^f~J)7Xuzo@MVKFgWY;^(T?)-M-l{igQBw9LNSSV{5|Ved8!9}KB&_! zia306ZwF2u###~Zju942O8;UM206_5eH0E?o+7Jc0o`x>!Nw#EOt-Q~*Oc@E*|`-{^+nU}4=Oq7P#cYvHuW8BuT zZYXj~TABfZd5t)Camzn@18i9x=OY(W$;>wyR6v!==dYd-&?^YT% zBc3gX!Ea+u8KL#oI880e3w{`rv?9M4^Y?Y@O~!>Scj*8hu2Czrp^8cTiWN4fTi(dv z=|}9JXSSI{HoFY@=v-8YtHi*PqJ%N-AV( z^-iYLqb&h9gV}wjhHe%rmTlE-n>uHWd2!}#R&9qh@c8l4eOy60<^eN+Ke{JIN$Fkp zdG#8pKlIwgjO3j2>L##pRaF)>Z*mS33(!2ICOz+=}2!!|P8|&2_t3s)M%WH!N`a z)eL|E&Ky6+wQ)x&YQXr<=>NMl&CP@I(0riwa?GP!_~Piyf_?E%|H#G3N<7^gq^QQn z*LRmg;R{rKA_I~cH@P>$^LCzMSk@j+g1-hjA`2Z!i+OK|%O>n@OnEQo>e87xN06#K zSn)+|=7c05=lyv_LHMNSQjKLaG-X-1GV9@+IwzYBbx# zw@2{rb8CC{$&8})Wn~WrCUn0m*{cNI15pbs2O`4Fd}w8GU({H$B*!^l`WJ9dLl#qv ztw&U04K-iP>7ZJ#8i3cJzNiz<-3L~^8hXF{SjWcR%@Zr4kl~!i=(R?y##amas zB-ushN2lwOAOsiD%ESD^L;CYBG^a+YdfvI2&hYsB#heb9`QUJd(8MLFN#VCIK9;{Y zv$TCc-d_PW12Hqaaw`4|*2=Zab|R)#-LGTw0nzIbQ`2IM^E=odqH(XtoBQiH^id_^ zpFut}2fSCNx3gY_uopvADZDAOwOmbOsK>sa1Pw~XNwSY#UM}?yJ7so-?b2z~QwYnW-pWbt}H^X~3$XaSi{(n`ymL^=)7(blWp?A@9e;&M~hOQqHC z5kF3cTP3>+ybG?6#k|L!+Cg6?8tl$`L`G?ug+s3!y3 z*7G_8N!BP`z5}j}L&WB$y>XIQ>%tY1ktKp|%oA8@TU$SSc9GZxo7tV;sG#$TesMq6 zOAB(YJ+VqE;mUj`gq@w3qv8C8CFGl3W#2-DS=xe^S~eHIZOy$*)Pl>vd2~-TM+X-P zXcqp7asKpKm#=6K8o{o-`N|{`be;Ze_8tZVzb2GW@;Id1BXIvyLUX@mE@J-F{e|Jn z`1eXoSGQR!Pa?Vsu#agy@4Ny-1)FbZIhH1;K*P@MLQmg(l`*Y!syvF>&vDc%zC#04*rVI95XQr|; zP%_K)a2`;S zMdQ3qD!CpV8p8S&h*Rb z{l8}pX0A~37gHX@ob}b!jd?SRciFvp@Pz{JoZ`i_^L#BDtFgrtN)R&yL(1wh@>i7q zC|bQ*G3E{LXRv(E8c*+-Nb=`=TjKN}uq&cb!&zzf)eY$!%|o++%bs=xn|R2;(z^gz zm6ASV`M!8B={F*Z#f2EQyl<~?UN>72{w5k3TyLIv)_wkCH_GwcT*=ltSWC@9`5jE7CZo!jMa z^n&IeMg8wsACnKqw_;(uXhVSXRj9tXBK%(WMD~4#|K0D2`wK3Oa*hPS6dyyM)0A_8_&`Pcfb^~qW4fP2*uZBoaV|HEE>;Bu@gg66Q zLXg%S^}@E0z4jby8Ki{9QrB5C^xrppZokMGeX~DL_Bomhvy#3gvG%U!5-sn;sFF0( z=_@MOG66MWa1#~_Oh}!YH+(>hbsuf#Fks*x)AjwX4&{P*|Ff!-c+*Zi@U>` zj-wj^bQT&o;n9ABEy>j^aHrMC46+FAS{raZ)k8jVo=;j&C{Bd0wKlnoSdm4vf;=gY zimv&a!r|mzDp`i*a{_%|aPS5?pbqT~RzL%8rVX_WcmF0ZN)t+@;C3^By@*YkbL+;8 zlO$QyM`hu<1}CkJPouS)JK>f#WOiom}s#K^EM|HYQ;R;gL zH$X-`-9J79!iQ1p`-o7ZhF`P6E(-bHz?ialbu83m9xtxpxR~EDd8?ssV_w)VjLf`xRvs?N;fyS|b6c(1O65izRqt ziu3kwTb}mxm>=?F(ToolpE7V_N72smFC6aJ*4E7W9N(1%rBUlEG2($QD5t|3$lulv zINk1Bs29LnF@*OC+UCr?0jo zAnnrz_?y2Ket9+-WO7SF5JkC`P=^;x@64V0a` z`e$+&ie34o0NHS>|4U;$@HO0d=*%N)Igl!y;V$m%Z;7(i=95jxP57GS&TMf0&mj{u zo%sY^b&vnEIh9ROueHo1TbZF!AaSF$`W8B!P(15TTbmie7ObKz5a@=08ql<}dKgHp%hTO;F*BL~sCnOi}?3bx`Cz=@?P zp0$+Vixc$$BGEgtK&7Nr2EAq9on39GOcNR<(FWECib}IsM!2b~(1w|b`%^ZR+8+jI z{*ta~Z6chQoS96u zFcH$RscbEGX8)idxCr0moDtX{bE#-ey$c!j5ND_9oF&frc?A4&UDX#|h|HHmA5rVg zfqI%Y8%U^L-RHKaJrK@l<}&w3WVe#UWqH#YDvbmtHIaWv<`U_>D6&L)I!&7CdrOhL5KQ; zz*E15U+mPjr*Sa|^du%O410ad;E@i#3WG$uzMjFJ4&w13e+;U|_tm+ru~xz{Sm8+9 z-|t$KU$rH<3XD;1s=jnefWv+!P4)AC`<^OHx|OIpbaTREqhd{%m;(vVEiR?K4- zSTW7z$HW)hDlQ#3&<)Sa+fhQN(SXbPDi%T$w=y?T-Ji}H^)oU@%`r@uz__)o9kaiC zqO6lWF;@aX+rYx{ga8W%V-`$HYS}iTm&@D&#WLDb!%ObcQPV2C^Y^s&ZYf=v!TY4l z?f)j7pFbDGEhFD=7$@$0*U-xB{qih!N`858tdJjl@`1AKCKud2D6p?lJ3}hULf>XK z&hzuuq5d~5Gm}YA8bl^>(ab;aXb1U9OXJ--f4Pkz3T$G4^)IokD0JxrI)x|s-N$vJ zk*SxoiigT^p3FqdTh*iPP1(CpEl3;M;wbZsgTzNngp38-P3{CdMS+V`4fhYY^os*H zMMPB&)!W*G9ueRCeOQ@t z=!V=`)5VQVp2Oh39=4a2%zt%YCdw@C1V8zSSZ>Vr=33;0_Y(|{VqY0;RO9-yieY%| ztjM8&Y8N2Jp4#3TJaox4sH+v`cQ@60d@pv6eX|SlwG?kqI9CqcwEW`%Wzk{4Do3#2 z3#-5nWf>rg+iwUY#-&*GRXfSo8a-?kkqUY*!nuCHgj%1sj1)d$#yukDwA3281tzwI zpDJaRd_T)tpD#Y^QVkfhtIJ!jX#(W{wlMI%O@@=?x|umY6#01H_V5c`1vHn1IAkWg zm{Z$0ZVna>gFA~-h&E+r#qlpD1Ad$_2#+%keDIBCh)6`cX4ty9jvlBc$%6_yf3D1- znopl+9{0Qb^7HLEx_QP0|Ko@*==v9^IUt!2Y3ovvWv{Chk?ce3g09qAF03lE|(>K4(U_A)F$8lnKdg36|?Aukx?*;I~ zRFh;MeKRijsZzX~5in9s~7Y4CsNP)xBO`GsEK06w*q0r@R#MOiI(=gx0LcZ^jH ze^Hsk-Tv1hbLO^XE!HT%02y}gC-GWrTUlKN&T7@3;G9onDoD68zT!(@`A2MwumANs zv#_1!W7aP>+-*FVPi?)K`)oawP-?c-=tq9j-l8v~IdY1T(TTUS=|kARMA3;vsjoyr zLYU?ntQZuTWOdUKd1Yaq&4T^Wq%2JA=CHJkJ~v48O)-_)&Iyjedt|ah8}Dpthcb$z z8vK{u&P+)>!R6CNM97-;solr1~8yr=v9lNqyP z(8Y?D*9OU@aNc`M2;wiPAy&{j(=OcH-BZD>K3U8%;yj29Z^hK9+vU?i2{3E6twre7 z!T*eWd`{TOFp&HmB7BVdrhA>mGtG3*Vl?QyPsw%15Xu)Fcm;gCpP_n2;08Q`TOz+- zl(J_NZTW$avt~*1=xfrK@61@RkKT==u}kcuCQ+nAyQ}Vr=POd;7yAdGGxT%zhMgQO zPp{kHntQ)zSjwtBWv#_O6->%adMdp-XD!^3M3=NE8I8XFimzatZd+TMu0Hj@(qXaB zW|X%90NcCqzwwooTd4KfbH}loXBX?&7uNt>`12~r@9R3BCBurtjMG1|95T>4}G#eHN(_k(BDV zqaIF-kk2?q&jqCfq{)r*#NwT&%*RfR{wj0n-}j$F=Nc@S`#@X7js0;^tz34p0PdKV z_d?BM3hD%yaL6U8rDh7(0m*r(lhmIUs=O(Fl8-2SP+BP0aToB?%(H{h?SB%_CiLR% zIO%y5K-*UcE$0dpdP|K@&zYuT5I z2Qi9moogh+guJpUrwg)$p!;x+AN7xgJ^r1B{*3R@>%oHdgKgh_xtZu=!9qA$(fE1b zlzV?$4S+NCJX;Qwo6Ub0rClzGD-cU4Vtj^czZ2B4D-?TkD$eSOKRRv_-PH9ZqN>O$ z0Q}&90}CFNde0f_Z~j=IZuxi5@orG{)neimz#!thP9U{EgBG*&1sWoWD zOAaW^-Du6Qw^$`PQ3xhfW5V*^GzBdL%OQ%3R6#AEWx9T|I_9^NP{6Cnh^Y_}|74#d zKofOq3ZFe)+13{PFd?J}>iD*)n^u7%;@g2at>g$FlE<^8^%kyR!Kt7BG(=k<1+2z} zw3EWBiNscL%KMeTpXUvRR1yP)$uebz&jeGejJZe%(NnO$_tB6GSQ-74Jn0ahZbp{}#bNUrcnBKWIga#Xo9`{F1$x-B${ zB+d3|R_zn-@6^5>8S6zNrc)7+;gu5!buZG==%wTld8*HCpG&$Vbvl;Vsf`?XUwkk6 zXy^EUWKIt@OyYL`cvgU&cr2JOHc>jEk}S_R`1Pdcs19p0qyTytpZbg6(f0IoFEzc8 zGAhI(!YPdp)%6&Ehv3(oM`dG#E_e&{6y~CspTAn@pnb@Xr+_=ngz^mlBL+ZO{Vj!J z0oGSDM!&XZ(jR_Ve|8Lglo4doNN-J*Fs2Ls%oYs`u8Y&)u^=$JTjCo%W+AqQ2*|^JTSYQJR{D?LRGj zkqN8UtzgM1BI^j1n;m%CS^dLTAAq}Cwr$EjEFon*#-REXpsQW)OD;nhl<)UZOZXdj zDd&jzDczPqu>sM6IxP*o=<6(>{}Yl6fp(^rM{a?|ma8OY#zq7KpaWFIhdSx=s{!et zNZe|7|8CPu9iY(u0s2>5ldx4fAlk_o*}0eMQg^FaSW@7ut*|&ARJ~dmr zc(zk;oMz4Mq#}iY?dk1Zim>R(H zzE*zv-oJfmNN$d*TkMAq**G+rPiU&5sf;f?Z&a#?jqSGHry{$Fs!Fa(w`cL$E-29Wr2Id3M|fYUp_?asq8ww| zx{5y97uXx2dX`U*)h#mj8+=RC?Hcs&xBE*K{?)iL+S#rrf0T#wgK(s8CgYhINCbF6BNd8Udb!+aQ4&$c(20b~* zD>j(Or^Gb>{3<3s!a{(`rq(Mdn4Fwm#=QfG*EZXXuU++Xo$Ws0D5GW|0MSaSU>V$x zMRcA3r#9Rw$Ep~+;(T2e(hk8=k)Qo{iFCvgh^hbp(#f3ec@kUZ&zqdo%?pBOx!MPO z3+yAKej;emmkZW;?yO&Zd<5~R>FC&v>%~x9rp-$|^BeE8?E~1ANkT*oRHuBJ%wOHK zJhyj1WS__2DnRA%G;PCyJ^zMaW%#Ac9h8YCnkOqcFxbG@|BYsb`(N28PYI~+)Zw-H>x;Vpux`_5e&TmRZf?AzI+H?TK!7xi*C+F_S_rsqmwob- zP4diB8`JcddtrCt!U$ZKgM??ti`@cc0SYyMIaK)*S)53%iaQj2`r;(O=%r_tx^9*|WdFbcpmYhC85*zTW_!9IbD1Zz zk)|6LG*bs+2JYKog(A<_n3P>flJ;*v;cDZ@f=U}~r*eY5Esw+Xlop(gRzSj=IzMoI z0V)}I{Q$PoGhxQs6i>F8qHthYX_65EgysmHO9RjHze_z4X)W>0Qhx4+;32+JOC_JZ zkr84tZgi^E8{7L9(UGQ4qn8Fa1IhaLvK+I~`Pu@Jg^btBQmU;$C?e=_rf}l^LpCNE z^T*|8k$?9VL(9@%MG^0CsOZ|k*Tk$@_PO`O62=1S!XsvYFcp4Ob|lARAA2tujHTSP$bCEaVWJM*#1kpNC&kdXfLL+ zcSJPS%@It5*A7YWJ}e;y5hyq1VT!hl+`>&fnDa zX`JO}2XH6e%<+9d*aBi%;ntdZOyQwAbSe|+L)3O3AjKS7XsQsC=kT#-z#v+*!4b@P znL`V@DU|K7*<#h$Q7-t1CQ7CvT}x1-TZ|fv?^^U&*xokuXA7}~w`CyY;x%hcm{=qk z1k3XHag@e3&hguz6sBBs+F-$;Ly?Ov+Q3M1(AtRM>!Y8o-C0r|u>f=l% zaQzKaGV3m^=Hb3}9bzR2%wIr46p6h&TyzDeHu z#}R&t_JEfS(De%uC5kzspm37tB1ETHcPA`?*;s6$Sz>_7^^V*e7XZU*;Pijr-PAt$iL>KTp`Lm5}I%iiZ%BzR}DB_+axJDs1^=~+g=CphXqiS&xjWSD$Q z$XCA*fz3tF7@p0sODFqT1* zJ+emN@8apX&91xt^he@m_f$d(;?r%h)3%RDZPc#ksq2DVjiZB|mDcjcB zxsq+y+2qxy?(XiuJKK6Fw&F=`wva})O&?r^snn&>Yh(8!v5;lnl|Xe+;;b4*r%T*U zsPY*yH3t@~YN<>Fzm2GY9TC+WO#07v%X48Zbk*~}7cb6@tR^rzD8a5yf!Qsm&9FDR z(8NRPZb6igJ6Na?M!=d#0WawP3>7*0E7c{b*L>Y+E>mE5r)_lykf{-j{l_?uy^_Xf zyDc?I)#`dSvBJb?z`FlRlzbh5WcQ~wg)9$yfEMTW)2|Bc~u^EF^>O6FnU^Qn3OA(_*+ z|6ni8g2^|2ISj#!b?Nr?TOej~iO34_fb4lp3>nBapDhjwcslXQ=iAZVN`n4g45Wvn z#v1P8Z2&_^TG4KxRBl3h4}0CMzEFTs;)hM!dZqC+r?+Xz@ibHeI>J136WLOTR0o)W z7=X>5J+Gb7gUq=R2_Ek0TU4bsh~Oe+nyR379O{`R{wTt{5E^!($^dS!K#Qlp`FB(V zjqc!MjSnrl0a5?_@a~6SKp8+z4#pWEIc9K~7z0%4;97x1Tfog3j1xpwg8Q z2#svIzIj|2Um_wiU2xFE$a>t_(HE;j(%i`XieYqA{ z<|gvc_psGXcJQPs3f;fYb?ToHLb1sL8(H7+c>eU8#Av3{5d<#y--A}s={>$WZvfUs zr%t0Yy^LVG9iOO(c4V@LFIv7deOSyi-PB3p)ZnMq}9dup)eK#4#Pt~2=@_1t=5i*;+CX>_R&`2QAE!lXmf>iZ7`8N`A zM4+I2Tk1diP%oxsC(wBYgi$niGUs3;eVV~VdDpDkgt4Uf)}#-vhCCN2ZRG?abFoG2 z%oqRfk^v+_%55l<{lL`~aC}U$PZ6^S`uS_y`pzo1rS*vg0vfmk1U1-qD4##)b0y#xT?u&Q`Modk zm2%ybUp-lHp#KXsL#m*?<#K^RZ0}E0-&;a=xHSNDJ8Zw1|!`*rIELshf z2l#o3!1?KYw&ReEuJ6YW0B|wYg#a0zBe;L6s35cWK2g8&EA5tHy*lZ@-j=9Gb$V9z z=g-Qrt)R`8`bw%yY+Lp0Sz{u?r7FGeIpOD)@6#!yow(RAFRq+5GMg{vX#v6IS94}o z##kl(U4?YRun1%Q_#TifWmWAyI5^OXx?t(JSpUy{z@0L;N#1(dSD6oxf1;Ar@ci8E6udrFRTKB`G)ypM@j)5 zMu)S5kJ4|~@7~7SOiYawl!nTDZwL_PU9`@kP)PE*=MY4w7wqrV6P{A|9oRabVPE4q zX(&m}0@zTBT7#+78A)@1WHUxOVdx-iQfzqN?^A{T%Ma=;8h%KX+4`aJ9@t1F6{?B5}oJ_1bq)l2)!T>se7ENaP6oxPCkEY{lU>4y^unhY11@|ymJUQk^m zzSPd5$M;?@t96=BqD@N0}T)<_br^B~<# zSa7X{CcbMLj4~7X*HiZI-hDBqL|@~narI61{n5JZ=Tk4w;s{q{m9apQmxMc3KV~kA zQgTE;!QJe$`ZL|~@faV3Yd#M%YXPhET``s4M%IFUjnMC|Q15on&2{+Tdr?u*jK@z< ztE`9&J!Z$Cp7;IbI`N9#^)4%S9f$WF-tfX-56z8BVGmw8i-XIM;l&XHnPuWrMDP(q z(DCtmy4Cn&774oW6MuA#dB?kp3v!3r(MhsgtuEgn_k&#e?oq()(B~N@rX&F zx)BYh*2K(A<1R7!q^w=>5jthL-g=wX^uzC~mns>hS=RQT+hs@wKa$vsi(B@HJFOmi z%t7x;Z?x9sgBMtcZdApjM)vu?+4_%I&y$I(T|mQ3@Eb*EEsJ#Tt4@bhMrE%{mzlon z+BIJYuvyc>0pI{Vo_9wP_J(6YL$#K>cgvEI+3RP}#5qaQ1fZmlMO$^zN-3q}jvZq9 zL%k|)S|Xl73ox)OLHQC(5^_t5jN9{)PG5X$`F17;XE2|#{v)$#`uO_+Y`Uj20va2$ z^zF0VDsKJE3*uGhkY`8f53v8DG6c1Mm?k4@#pmYbB@TH7bs(Qt(~)Q^wk`UHR%}&n zQZbdL@Nnu`Ep2B5ZcIk&Ld!QJOXrRH>;MNT$ti%`UnXG%inyr3bg2SISAgfBoBq%` z4aHAVOE3JVr3-Rr?ELE6>IG)IOvphJ@qI~YiiR{)Y<0G*8s($-ha9Xz(eRFQUM5f5 z(ODN6&DcFUb-75}@vAsc73IJ|!)h@rk$5YV%R`Q{H0EUh^|B3RADbj?BX+6sp5f}R z{O4G1zx&scn##AaGptP zJwXe2S0g!~KAgCJFE=feN(t?`3rK#EHK}F{+WA_PT-SlaTy`%)375UQ*^%gb zA}2p<7=tgr9KEYj!_J=Y#y>SXK35w5Pbw`J@R80OeN-QK6sb1|f&VPr4unlDZfwLf zxWdP&YhxEKuU`IVcn{9-gVuNu```{>OY8v)qXoFuwvWxabWyZ`ox;x~dMUmLs+XRA z<4Ugtt}b6EXh$jH==&*4SeV;H*;`{OCQ+?2Qa@K${Z6T&AzcK0Zm`B|483?P=})P6 zS;rswCu@ZXEmcJt1)g+U3DpkCFlB58473v8}P8%{j)(%l+QjK4> zyE3Nq5eZ-7PFAiE=Runw_#PBP#@jra|GT^{2cxXOkvnx#F$ss{q{3mV=?UNmy zDm$1m-gTwOZ|P06;fhY12B7=$3qfpYU7lYxWnIn8ay&dzkFNf9)0#i#Q8)?7Y;pVL z)?oK3xpfIzM|DCmbriGQY4bT`8mYBpX=d!qWWkJb!AH@`0oJ4G75_Iwu%k&?PP6u! zH1o{WkYNTa0B&IZSP@pX?NQIM2Q+`7cK)=mN&bJZBFfO;@D%|_;Hovfy5F94zP8Bb zc^qjE@NARMboQex7o(dnn_jZQ#`t_EwBzUf!833EcmyT zOQGeUF=3Bn2+c1jtbg}#JpcfGP}ZM60P3`%OVRuP{#9NLVC~_)WicV2Titd1*dq4cWN|L)Ccs*y1dKi2U^(9(h;o}_&wK}(9SMA!1m+9|IeRb9Bu(}kD*5Rs6 z+4Hp{Mi#_>9is7h?cxg?XRLAWgui4;;$f1a!jpPA!8+r03UgYV4kB8Njeql?vM@0% zswlZFgaM-B<$#QxWN>Y&&nJ_<4_H>u^mUO5E%b>QDWGZ|k!`C=86 z-g39smzS$%D7XE9a}=eGNaz6BC^j64Wyc$P3x^El9VJuOcM8ZLT5=QP-Q+$jq>rWi z&CeOeJDweircHjA}PckB)Tf|3}RtGRonB0#B9_5qw?~ta`4SnL2 zAt*ja1WqSRa%<8ySzRCDaI#QG!J1Yfti^{^07d@azFbLE$XFdRh^iq`rvEWvOujRX z&kPa$bOvnJ>q)x~Z2B9&p!iwK2d0fyprV+)be@r{wRHQPnm?8q1EFDJOqpX)fEXa0 z{{^`erNgDeF3*(bAr{bIUWgl{Wv$VvKc!ms7MZ*AYAY~KEQ{j_6m ze?K9q;LUJV%e*VI{J+w#CJ!c!3`ORP6m|^JELKB)$byM)#cGvtp}R7E-fFYQ=AzPF zy6gYtqk**I^%&PiSy!$2vyET*>KHF(E*R%+&W>3&hNr}^Bjj_E8sr`k0G ztGVm;YUCjQKibF_)OkEv(6Hm_d#tN&s;IKZcHj-hT344oh6_2siS4=y{7_<<(`KAf zZo|E5QoSxLg$MA^go!O2tt#Y{y{mh;W^bEA4s^o>1cek5RRzi|2PDqG_mcpY3^dDB z7&YO@K|X`Awvc9uEVYbY9-R(+^nKkprf-xclZ|ofOphWv6e2DLm!N%FKk;>fO6YAYv zONyIGf~Xy%**d|Jo02rLh?-Q8Hb)AdIFkR?`y!Y}ds{28@4_3t<~kWfBkd*cq?HQ# zF%*m6sq}8z5~EY07X`55sPHmObzjS214k`@;2^U3UI?7yJPq{lM}f8-xq7BblswnR zl=BehY=NN$kLI>o;n!sW_GZ#WV%{Ex!)KS9A6vq3!hYmSGOajA$xZEMGGvU|vzZ1U z-x&~B`f&Nz9Pud1eDkStN|@Fka=6FVNrW>ruEf?N@TH|CA|t{+Mro$J^bc#l_)o3J zr;4IofAMDt%WyTDvEY|I`q`&od?%#0PD^nC-^mU40^g2U3}h^=p3K3oF4cX>!8vcV zWO(^;Yf;tFd?dztrj2B9%sTshM3wpx{My<>e4c=wb_JM1#U0F=&3g>3LR&uXUA`0i zKP;&-@mwaceNOM{ogfqW3`_?cr<*(L)<(=5;&R6+-^eCjhlUENs-*1t6lY*_TkvK-DPzwhU{ zD*LjB`e%oaS62)BeXv6|6DZ?Vd|!CM=eK=r5ECB1O8rC0Pn8P!Dncyvn1Y_eyPh5H zOgGtQ&k^Dv=n(mZ!_$TP$>Gpglg0>F#`Kh$zuif1Z#kj(+A4fk{z-c|$HQ-aO9AZ+ zOQqO9y!um9CA>VElCCPiULdreRY~`@PW(2RKhF0UPIy|af85U)`o%wpaVAYnA-t8V zpWc+J*b7lg_muj5t2F=4$KpA1V?r}z>$^cNum1^*6f=cem`MBQR*@Q)LwP%dm0k8zthPCtXZrNMK1 zk&aM78Ish%{^#PjV0Ib(p*5*r6+joDRvudOQQl?Plaa2cZg~zQ^-P;QPWWiK_jS2>jYvYdV;S=mXuh@@$p8A>2!$;@e ziL=u5c>(ul40_;04Uf%5cXzfQx|&1)IXB5zL_Cgw9av?n@uq8e}p6$N++UAR7dzML{tDv=OkhiCl(Kc-Ca|cmKp{Nl$}F6)j5Wi zE^=J+IW^`zp2;$89b>dVdZp zDO<1Z>$sCzE1-A99hL%RQ|%sJTxqk-(B!g^k^qAt7;o;{AJJ5$X%$sy@8_>1JS=vs z?`^>nThwV9p-?l+xzh7f$|m4P(e2|9t~7@~GLbd?Y*b3Ym!~oE*VhGEYY{NfKP@y> zZ@zv^tDk&SIy9QpviodmvvOl5XKG543oX0ESGG&8iwg%QeAJbGA76jewR+jN;jQ4@ zOs=HIqnAICyhdi7x3^7{j*qZs`$Wv}{3AqlGD4FtNqZY3Rq!so?YEeww`+p({FRl( zEWJvMpv6@7)uPh;#G$JeQ-F)g>t>4gIvEubPg?4q$p2d%@kgtUAA)L|Jipj;I4(gQ za~%3SfwD_1c-`wP8={rH9tshfo=oQ(Xqv~kann`1-M41aHM|$4_SD+a^y4k zl^Gr~0&yM2M%VCb@y70R(_^izEh2V;p!Y}P7Ulpmcq5^9h*yz-odq^EG0S`MP0zFx zd|LNU5C0Ff&(u)nAO|4PbPgtxKaRY-4=&@Q`e{p$Di(z2l(#Rpw}ti6)a+aU%!Rh@ zI`Zq;<@bgGlMe6+=4h+=K|)uS;oygZ9tYA-A*~j9UsYvZT%a)(HQ!$eiM)^SnVv(< zyoZ!IOV8AlBAu@{{Qljb2-G&ED+)gE1%iv|!Vmj^4gt5H3H{}?UcrA?-(cM$y&Ahs z`Iuxh_Ppk)(E?2kf;0jC{!2-3PX$y&e{XYf8y8)Q@Oi@HZl;2TEM5g$Td<(` zy3I(o<_T@`95s($t^|o`R}|L`@)-Vpxh$(`HYEb*upJINzDdqtkzKC6NgWcWPp6`< z_vJI24%N>|m*d}vxTSDh#i(g5n93e8r`WDeb))RFo0ACR7yK%_;iN> zkG)BDisPZ~k(_K5WhvD1vkQoP(q!wAIg}FF+!_-FQ3FUO z6{cn;1%Ngvyx)G&P(>8YQm$+ITS39L7O-@+ozUO!xF1~PDl<5Lt*tnGkmqg*0DpWL z;%aW5arMUl{i4O~?;!AvsO%z`E}*r~V$w^dZ_!Vt%be{l3GxW4k3np6_>k=cE>_hT z5`^%1p3nF@o46V8@Vx+hq5;=R90Ko{UaTX0O#*1R z13w&`-8E8V%Kvi_0RyUjZ&!sJNAUtt%G1-%Owj_1GEtv?8o)jOiFil(d5+4Q+dVzL zRFRPb3dIy3d0AN$AL`;jmXMMpVk&%m(Qbt=Pl0F*cumVQD}RNJVBYiRx0G!N`jM{z z{iF^>cD!(X0l!}cO#7Xbfm+sMc`#vdGc~b+WS}bN`5*01)MU3etV*X7t+PgFRD)0+ z@TH#SCMlTCU;+0KT~)|=VgE0((kF^jOHq{N25`_hwPMud12~&O#>K_C9S3>cP3H*j zQlHL?3t{d@#?59t-XCAu#q^K!;=X+RJhRPtE3sU4=z{$K((*GDLjE{Y`lOomERP*D zKW})gZ5zw8?sZJjHQ_V&0h#-+%J|nmxyMCaV@F*jC!8RxAQ|%`62iTz@b3VXhBk@z zap(j5iZ#bZj;YM6)Q zfj)Fd5r%*2ZZ2!!kJD3}cgf~jT=;vDw1zgx^(t{{#sB*citAKo|2v`DZ*Ya>(NHU{ zo8s?VOf3g^{hk`MwU9BUOS2f2_`;C1AM#nfl7CWxq1;K-?$4^*2U$wCMlFrz*;==o zbuKx-??LbS_!M&mVj-CWSv4p!>YMS|2xhonTZe{0qo5L!&r)USL0oE9CvEoOf(d`s z_*7qf_mG&ccK@S*;cr5YQMiX%HZ86X;~m^Gxnq%F+3xLNQEzZpr03RLigEP};Q04(bo|Kb z59NgGFAAueNHfg^(v6+~X@;*U&rQ3<9>z-Kl<{aVP7VW*|E8DU^<5Fhb?b}BAG1b2 z5mibY)_JqsKo!fT?})**JIw0eaMYG1+v9)z|5O`X*ZzgH=Kb8}N4}P)08%!5_;5Ff z*4WNHlE%EK3(PHH0!8b5q8K$Nv`2TxE0|V_SNwxdzTK8f{BzCaG+b)_Eb#Ffr9J71 zcoNy*ocD2?lW-F7HfYi4C(oF$FO%{M17l2tsoFeDR6KX(c4okX_$8V2Pp+gJoXV8y zh%m7S)V#s+AGiW<$}1I?IJ^ftz2~;h5%``N2bL&L3CJ5O?2ylM zs6|BL+VzocBn%G%w!0w8-~y;Nr-9OM^N=ZQWkvUQACt;U*{WQkpsPvo4|EX*GvO0a z6AK73sJGXW{~4~{e^%~x#2c(rE3f`#xacd}W=j{3Vnp|1^t99`@1~B5t2d$zIh}rf zHjPnK3PTNay{yc{|Xkd1|Ro2teY-He;r~WMns1{7vF)0w1d=( zM7!3cPW;R6*0D^ZNg|0)zfK1ZrBU8$0u+K9 zIZ^%OL;PG}NK}V;>62EAfrf$ioc;Rrz*TRFvgwADB3~hG$mIkd`o+VUE3BCec8(?F z(5e|ey)MF@sN_b+Rk5K{Yw%P2yft@vf~~BfE7Lp!|^c0R#yfwEX1) zqzWsq6cee2^S=o)&IoWo7xJ56Kq20|cxCos1uW4MY-*U9N(KiAWaj{QsXQOI53W~hHa9pb_F5jMiv zCBh%e+tN^o`F{F>k2YoZ;D}gZ2VajN9`$v1$AEP{xm8h7fCg<;bIRu2Sk6MCZOhs)u<*j=)#hq`)nhYbiB>WN!}o_Wsr!HzqDKeO!X-}7mmN11-S z?j67t1{&|y_8SnuYnG;;m&nr}&i$9qswL2k157*A0A=?3hh{9)XcfgBk+!UEx1`C5lD;=lj*p3NoDomcfVWgE z6`N;M%P5r*0F{`3W?TKTv;PF5oPsAJXqGSQmjZyoc!-IizenbxyRcx*L+OT15C`lsc=yQ_+>(y>7UPYx)JW#nY6 z<-fJYm4HR8=S+$bV_g^&KB`_@Dm3m=deWKaj zHn;?(2re7QRtm|pR_-i`5!iq2EV8@n_(?Mbka2z-RmrGdE6{?h*6n{|GIOOzB$p?? zQNRY&YV)Al-wxt2=?+fvYUB00GF{v&UhP<6jUu(jBZfbtFWt7DTC!omt+gC24Sff; zD8ALBBQnB4ley^DT_EN*DR%&-y)h{gV*Jz;AxzMmIrua4yNV(>O#(RQC-#$%K~g8K zn||ZH5p1N#c6;L0grB#d}^2729V-M?hsHrvP|OAY^;C zzgnRQzEA;OhpH0!Ke&G(n19g--=L*cjYn9}9dS2zg9Q>5qTpumrSKv(&hYGdjI~3}1Wty{9?Ffn2(fsC&3n@SSu+ERhqB zeM;ZLBkFr|w)toLxW7*ANk~$Cg@5ZHgL73=$py*Q(DmO1?^bEpb}NU|F7DK!uAvC8 zFg|gQ_)O!ogCyqr`(iht(904OulZVpPcCxyYqowwfIibhL&N5;LwwT;I%UlPMpiZ6 zRUiq#E%TOH1MnX&FI0PUd{AKS1XUD6yNc!-uazt;_SzE;#|0|uPeVtb)Q9bV$xoty zg4M0T{rj)9#`0*nZXp-kZXtbn;S4Vc;mRFDsnopj58-?xrypc9e7=IFi9^2ke3HtQ z84{}}A3EF{wBjB4G038)bc2YcoT%Mx&KpsJt7L>*8MnLvKxtUbmjAlN_AeK20kf=* zU9;vVrTS+Y4qAZ!tb^QW8446nFAB*tMF7K5b-zTDXr5Q2qcQXTBrAYcTxUh#6lb_`I8KLI+-+$Y)tj&KlBm=JddLxBlBUCtW%Lb3A20dsbrrTQ}*3u#PGkn3n z@MDCSefPy|q* zy>vmZqmz_3La@1&LsK+y9&J;# z=<6C?l#E{;+Vi%_7HB;A!KB=C*1qoBs(vtOxFic?oE_uo-FMF}6L%w=bUssit&5Sq zSx{+|MGNQ^;D~~EzM?|pB^tCeP--CrzY`qr1^oDn8juu z8(g2}uPAVmJ}4Y#BrCMK(V+EsE#N`fur=s!h!z6fi9rqN=5SL0FfO2lI}?#7-q(&O z`(1Ow>se}lKR_?JL_$`hmU>G?-kd`xgg^GCbk0kEe}C@3Pj=S@)G4Jh#M|A2 z#~Y^^U7n7+XZ5FuY44@kun9;RF!r;)S*UdrNtV!(o#nUWF%_P41!$&4SIJixJ7Il5 zjfTIh=?O$DY>Db-ydlI@V=Fw8c^7@F{&wFd0S(5-Q$&mDI&kgjd{>r4bhE{X1ZN(< zpMQVYsK_~GU- zYr;a}JSbtdLYxG85_+LDZ5`8G6xQs219UapUD^`lN-aefE<}Od`K_q z;vWZs+!C)9?A_t!IPaXYc~1!o6XT9G=qtR%*CW&V8^~Jr(}4@*-`=LXjw%0v9$EEr zurRWgZ!!N|es7BSQ;S4IJ#Ka11Nwo9DdMv2?dhI??kH_>s+CjPF(~T#x9_AW04iXR z%9_huS0NbkArq&8D%G&L*#;5!-7o*H#joC8kNlfPPqEnI*{c2ty@Gz)?Q*%iEJ(4J%oGW#M3+HcwdXW67xQ z6!7q`A^wsos6&V7xBYmlw3)t*MWrdN5~OecOT2VPA#A623`+yi8ea53y+PzG1&l)C zoL@&dmBuV(9RQ#I;|tA$bchy(;)4k5yHj{&efe)@b{wiOc~48-46*;HXIBC(b9iVe zdC5r=c-8`NlG_JhUTvkH!ZOugo5#WnKh>`VR-FD_yfrR(c`lYFb=jiHhvb*}B~AH> z)>h}ffOorKY?0uaKWu+*T!++}FFx3EIlvUf0U`b`T)3gjh4seZ#G zsTq@!$kUh!+pCw6yLeWkO#$q?$h)?s->uWT#&hszfWFw$p2L^dzn44bO80FQ-}t47 z>CVk1rT7!%qnVuDVuK@DV@GOyLyeSh6)GmVhTYK6fGN9rXYHN+^tJJ|y|ok$cS%Oj zq2NUxy5*9}#{otw+rAn|&w8nlMhac*qHS}x{)#o>^!TWPvD3K^>CizaOj|eqPUSjP zWT?U9NQ&Dk&nffcy-s$0k~iX*HU?m?v}tvK5m#X<0Ye7HI9i^?8wk7qe87=Ojo%_WbDL;oneP zm9D8qpgpUF?-(y$0;_qy6T=P^9YbTPCtrg#`Wa)wN%W_tWb|bdZ71y=*o-lm(&gk* zAjxNkFWxH*Y$(SBYFt;|LcHNu@#mk6XZbu2QElJ~VV|8Yp%x~h}Ab>1^9OaL!ooHt(b zsRUAI`CD*ZVW|L?+mC(CT)pg^>yBlz&7yp%Q?7+GL9^dGN_$d9* zoEq`}-6!{Jz;n>F-{*_klCBZWOsWw^+}l;zV2XPA8&sRA`Lg<|lU(>+wxG7!xRU;F z--X%6FA8<_cScUcbN~Lp>laspDzes(zONRn0V5xI%_n!j4?6BmqjUSUwB(^Ie&6>C zK}j#%i)<8$9spnN(RMiI8I`l_17-4X4?hmo1|QEoF+>m;uS8&XGhF4aiNrXYtN~el z|G@K3h-lq>1xNO_3WGpTOwW87k`5f^NV%lM@U;8glgQ7=n5F2#-3P-IU1{BVAOWl+ zgDr9#GIa1rGmUTEBLrOF-w}f7iSJ z&>a`89jUx%u`VAA4S`n{4=JXPZk7whrnL#OM%~w?E)M2J*g`pIwS^>Gdo6^Yq1kk_)auOkP2a2D#qYX;(xdU^>G)N{Q!d=dwkf6H zlbGiDN1L0z?)RNa|Ke{kzZUg31uF{B3kM|gM4e;49fZwR@puH)nLQldf`0$C>*afK z%R(Ak>9v=H$`hn^%E=8bblrbv^MHEgmlU1sT7XQEC;qerS=)z4&)7f_QU5Ea^~smhX;w0na0%B0G4Js@DoRymu;iG zSjQXNmpz?OQ3<}ku%xJ{B&YhKI*$!ZX6*qB{;7p9eIr8BYYdXsE;6Fi=_6m?t><`N+vf3E;GY=SQy;L&z8@rZD zKkCml#_1~2gC^{GphM8v;%Wrbu?t=F`9wA>MAT}Q2^r{h7fIRgRvW)9J0d{AI|jBw zs|?PQR4IEWb}ja-?CQ<@`VnF-Qab!&zSe8fhk-u7o+F9&yN;ANwf65!JFte14?7t( zld=;q`i}YLzqVy%$^Z|a9&YppMe5+DSJ8sms@;pHowImjiFHG&Zcs#uH=F~1{*d0> z63sH!G|FbnT-j>MH?a9m8fc>tYmvEkho)b(TpuN|0n?fA8Mc1=0ZcX1P`<4s>^!`t znbnuB-wWDhQ!3eyf44B3f%R>@Hq4osZU2Ey{H{5vj#C}FZ z2L7=B&fBZNR!HUcA4{1vt zun%b?7Z_tRUlkr18L>kuz>cZ5ii&w!y1`Wo)aQ3J1{39=p&y4FTrN%v`8+hwUCoxv zRD!*|44pmF#NMgFpWNC919xu?hH+$s%gHQTq71p@o7Xk1#xPAdL-#vy$MQ`2I3U8) zn`SvbR+xIw)-22}@!5g`k1xWA_7C7>i*MR7kISAcpUFL7F#l6=KLYjazp0|M-h&dV z$=^Ax`cqfues^WA@1-sWKBem6`}?i-zhwLDR)YXaLFJb#e8^4zkp0Zp&F0O&F=3vs zFXFiWI?VzCQ-1pI_3nPvPboS)1^3TMN}mfW=I|#v@FDja+H1g+)=c8sya5?hYk?_o zRg*b?PmSsi>}2svgyk7zkC_+YYuE~%BQh5kS@s!Ix!l~fCn|%u4bK&d@oP| zi0N&0U7L02)v4`Q~?eeC^dI zeoxo`oi6LVD2ZL2Dy2kec(667}rzpOE{HePY<|lwnthiBPooCp3M4hW5-EGnrnjCm+AP1Ykwj0uP^^RXx z_iTD|{OnXZa+890Rb`t|ksuK-@z~Ow?RjDeYDk;m&y49Sp5@MKZmtH`{5g8{*SNfm zXW4%v3PlwokaT`n1|!wH9+TE*Dv`PoQvu6K9slyjOH@wieVOcOEXt<260u6Z!5?-{ zegMO$?F?O{_%ifch^IKU556HEDDSjF-}Iy15$|JAPF{c7J?hmw;gVY^zu(69H^ecK zJ~e@~1ZYC({UH{+aWVN-hea;sd9I#8 zS)u&VnrFJ!Xmr67Rg}E71VLPK7kzRL9`U<%M_D#8UQyIRqaPve&{}}nw^5yi_`zGo zV!aw)pFA(f%w)+aE1KJW(@d_3+_vJCE<@r}-PaHb4fvL&fU$Je^GNP^P(S?T`Wq#5 zjD;PIDlkBi44X)5@sLZa@CDDl%32S#uYn{~GtD-<)?-QNDt2}U*;=P&9K!HDV=fZ= z`D^cBaTLXA+!SY*2S9hk0^V`D)IxMO?>-vwo~$+klA!s)w>6*YSl#pWENPgeXqaqr zl$@$?H?}1>FFl{of??{VAy{(!QIVs2vyh7D#a0g4COu&%@>GSFA#c!D>F>i@$C2yy z?J_^pBo5zG>sH=-an?4Zx!kjNsD{|_4+?q^b1T@Ao>YAOfVHyl69C7RtHtP3sT=4m zmm$ByPPA(wd&kF1%;i*}?xP4b(9Tm?SabBG5<2sQ_wyFTlNZUTGPLtu&_)BY;214e zKp7Se#si1|SILzC`0U)TZ9g7r&;Kgzr~lS@b)D?oAAI7#xUBub|80lZ|0p`|c&Pt4 zj#tPmdquXKTy{A-vd#?Idy~C4kv+4cI@#HqoE$m(h$z(Iva@Axzt8V4|8bAU`F_6d z&+GkqJzpBsJMKkI+)n}nvKoH;OrEXjd8@L1%&=!_>e=T4rR#t4;+U?j8Hhb~H6r^- zMf@husr=8k>CTU~n6xt`R?2`eKmXH4lGWz5gl*R`F~@*&xRJrTl6oCuN1D6`J|1*a&c4Geba;B0aS^ zeDHLNn7!=1rh*;&7;W`~cXXp3Q{bLNl8%LtJ*U-Ry4DI1cZ$G-b=di0SO zPrR72?t|{djW|yFKCOHum>zFr&iprzDQExPw88lBO(BC@vYBz3(0QG-S&iaySjM7Z zWTDyA?qcoLZCq*{h#|mro@Yz07UmgF{!IRN$Cznqon?A5dUaJ9`up)GTHnwDR;4Kw zx41>XapD+ME%oFY5vJookiH&^u)f!z{=MZ6ihRR*=DDh0oY#-zVmq^`S0#{!bG$lN z5yag#y~2yN^9WR}%7kfC9b9v2vd42t`0aw$UCwyf!GEaqulloZR=Foc!AHo9tl7$S zV5cWX_bhv{!{sxF82W$GN|rEg6AB?(g-1Cz?1^UY`?3Tl(H;RV&$dIUkp5p2clRA1 zSMavSH`S1&e~I-+jCgz z4wqBUl?PjjU7%TZV@RU|quG?M0sR7(9ZRs^dC|-~l{TYMk)S?cM_VzB{SX_{c|I@q z)16Wu9NpW?O*f|aOUHhy|5AK)Xw zrA6hwz4!U=ZLIQr-1NqZW7MOYjn84M|Hb_J!w^^)%vWp;kEg} zEk~~lw%f}SH-p<${O&?n6OTHPY z!(x{fvG@MqQO`aLkf34kczIT5yzG({^6-=Usi~=^wFV22LN|$SK`+zZkw?*Zu?d={ zZ9bd{x(1cC#J4cQeEyv@vIg0!5CW%k3Lao|t*@qrrwb=_G{zX`{5B-&rq5Fv!`{L% z!w`3eZO}+41GUHq$CYH~W1nh4mZ_hgIlqIwES?oxPsvXI7l^9kJ2A1%-8gG@?>nI* zE%ArCF>1sb6YzFxqo@e+JH8`pYnOv#S+l%o=oEQc8$9XK(^8Ii=L?Zni_ucwLRM?}9>C0d!& zg;*r`EecY^uq(FNV5@A5RT{;~I3w8>{5n21`+Vqw3)=yViOt6voio&mUwcF}RA4)| ze`FwS1iACUiop>($)4T&EzK@n<9#XZt}T(U`ay@vaC^&YP$;K{aOM%wvtNXvwYEu% zN#nvd->?4kgyF~UcI^0ycecys&+9*S`A_E*&u{r6H=3_;|1D z@bXVneay%pXVM}l_w5H~UW&-EetP6f+-QJt6hkPFjTa6(f6kt>&-d}yIfSi~T!`M*`p7B&07)>67-|C)_s$lkg}8!y*R;X^{1W@y}Wl@Uzdik(8DA5 z^G?p>+nSv?&ie2ldWmIneP3iCxDV%9x(BxEHm`-c|ENtQ397f5q9{R2TV<42i8_Sq z4XQ)%Pw|re_lP%-P`D;$@px7Sk}}Eo1R^HLb6_nh|$vV4ELiW07*ZF{kn`UohWU82+FAq@TMy;LK6w3r^68RKjXZ~5*vyAt4$KalPYP&eDq_a8yJ9>S zPET|9&q)`@+RrmmSEGTWNO=0MNz2GUtUpj9^AsVEfzuM-0_7$p7516OE!*zF?qkJ* zI(r*)GNT7U55yT=?zXaRW;jv3fA)UKkdJ$!#TAey0H30RN2;oszvf9n)(W`(Jrcml zP%G~B(Niv*<^*@uWv}~{AZLr`I%)y{Nx${~IENu8b-|^~;xg7Cv%#xpTx7pt*JDV? zz5wF?B?Qb-k3PMUy*^D1_`N$(dzIZV{FD~TFQt~gNGO699HK-EO}5u?YKSZt>U_8E zW(G|2m%Z9uQvCs_ZtsI)UlVPmGxfkstEyYh+_bK={fl_Z{0{f%)0T3RYbwQ=Q%v~{ zc>J`qhx{d2d!+<4RrrU|u#^&lx|;FVBu$otg?Rf7I@tuq@z!gXAz1?{0t>OQJG)$3 z>Ulf(EBAtCYQ&y^%VT+Ktd%N-BY5kXab>Rr%JYN;gxF*4f9r>sy!*vKnEO}N{Ka$@ z=*2-ff1Z6f^nn|$BQ}Wu$r>oV0Atf|BUw?^ucb#81`66FMESNR%LD%HW^Y%M8`KTy z=GSt1Qv_)uqHY*ezjDg{Nl>f&^#wT<;t5tYn|AX^`19Ji=9~+#e>;ZA+JaR-szWdd zFBbh>cb4#kZdHjmAwZpZ-gpa9L+hQ*}(cM)8)JJVZ1 zr4`QWNWatZH-fwI*2F>A*5q%APM&0~a@=K5`X%?Gl_@ZL_vBy+B~F!6#;Gy;QCbZ_ zzgd;``MW(Rn02}*s1&ei*H#2oTM5jLOQt;^6xMR1;s5Y(bfR0KAD}viT(5H!!*)Zb zsClgMLFE|iZksu%c7BTWJNQuib;@@cn{!*1V%(J`c6ee~s&>ZBV7R5hC0i<|_ym+F zDwp}v9(4J;cwzm9C;m1`6#R{Dc|SE}(Bf-lmfxjns24KKyHm>&yC~P-jZt@a(l4l9 zXV3o44_NJ_M#m$ZCDNPzoUWyTEszyU@QU467ZxLw_p%}%Jok&O*^^rqGF%!HptxS^ zTU4Q~u-G>R?P2VOn3UEwXKn2c^AUj+!^e)E*~cQk{XCMr`$cD-WTrp)C#W73k*f6l zE~g!@?oV=7**bm^?IsYTHDPs>2|H_M>ajI!Y>@c-y=BBU_e)xdA_bmIsI1`K4ARHv z-*}}dc%m)2Lp(P$XNfYFB$z{EZ9Q7_*!)^L`d`<1`zzTDQOfRGN~6<-Iy7J; zNLsPVNM)3E6X2fYAGeD2X_JIlLGX*%k{Dz4ix(mU!i8-5Po;)38`j1UD?ULU_pk`5 z)Ovjhqu51iWAs)~Mk`_#_8u|N@YdZTJbS?|v!QxSi*w_))eY7mRwKGVk9RHXWY7AI zXLdyuJmm|ehaWH#j!tYg%BN^eQt=S49)lVMO6RF_p`i61UOh8z1W2^{p3hZXxm9n* zM%&H8Hq~mT_}HlHMKQ!^#oyztOc2T|P(1#J?h2SaC)UzN^RLx$hv@<2&p?CLr;Thu zGQ+89IL2oD#ezEE54o~qB?L9C6Vt|OtnU#XA7$fW_e4>vo?+ox0)h@Lxuv;m2h*jw z{jr1<$Xim8W1JX#_5Ilvuy4Gy+_tA|Fu5-1wDw|Q9yIH@$j7y!~5=J0o z1O=GPuz#GEZ6lfB%xU()bGXietWn@PSKf)byo#u));3Nl_q+eAC0BG-d&(fCA8*Iq zff5m%XGNjfq?mU=2Y+qo41D?4CIpd8%IvyJ-%~LH4hG*<=LsX~Ap#_v{5c}6CcPjd z_$!MM2#RJw!OKByL>MXcx29jX$fEvY{iOR;p^Anv!mh)6@7F@Cn1h6rA1?1%CrD|T zlHf?L-EviQ)7pRf_I{~a3LJ!yOxYkT@M9XkS+6AN^vT(-TV*ET7i>7L&y`2x6Bx{X zb5TlR=%2td=DnH4d0AcH{vLnMyS+mX^88+(+???0emirbKY<*ZyP1$%b^wAsfvVfX z*2un2sfR*tK(s2wr&&-_q$C6HER1XSoi@_y*YWp%5|Wz5Rn%a*+R}R)gV+%djPdHI z=>6_i;2O23_qf_I{Aa>1GPv=$Z*3K3Df^RGYoa{vj#dyz!NV24N{)*B-k-T8{%qqZ zGO!4m5-XQ|j9RslPIYD86?HMr;ATV+PQMws`LY|rp1|2H$U~-ECy)A_C2l;p>p1(z zE9_aY%;Ix3=}+aqP^drRAxui`e@#|rMsI@RO7kJx+l3G=GCaTb*O=^k*@2!lpI=$M zWiS(73l@X^EXR-b&%L24COC<{@)f8H|M$v>R6)CVAG%CXt|TQJZfUTsZQS7R>ubfJ z)Gf$8YWJI_pBN6z7^I1$nn#xkzU@G%$Xz9{39iYhgvMqh36iX}_tvwD+VMW<#+-Jy z4930)zNJ8ne&vJ+JUwE>-EXbBL!c^=6qOdDE8vW7(S$sT7@M7sT8-X3Y7bVuSq#Z7 zj-F^pc;lLTCp(%;lfZ|1fJ4Wbd{Jo~^f+G}Y-ZNnnSkvc9Sup{QLus};vfKNl*W~- z_Jv4u%dexZn)-708?uVyO~Bc|8tfsSrz$x*s!ZB%Ib|@O5hxEBRk6U4`VErFfkGdn zT`71}&N2d{xPESA4qJ)0&MQu#juz4y&EJ(O(5V{2#-{kvR+&=7BrQHQ z%Jve&vi4dQ()yZZaOt!PO>)AileE=aIRAzGZuz>O#bE753yx(_>NSR1waKzZ^bG6j z$=9t*3ZnihlPbjoBAyB-_1bn+M#L3>$6VsF8!&S>&O}yL9pAwI2+PWVx$#~yaK}sk1LMxG$<5I-S2w~aLo&jokY~#S$>o&k|KQ` z3TIGia#hn-jS$6lWa z`Rb7~Zjle3tCkkZQ8Yq945m%SMQUog#%``*si&f>9eYT4PdzN~ecMv0wn6gl56s5HLEGyFJcz z_O{@6$PviQ&sUsik)C`)7Ro36m{fz4ZK^a4cTEw`_pz3+iN20ednTqpApAH{0PZKc z?=rA=14llKH-+O4SRA7~A=q)p#bqS5wi@ICPbEnV%0|TU3BXg*1ZsZ{z8r!j;D*Vq zTYRZX<5;beyf(ArVA%`Xu$1(~(BNK%(_g%Hh6ZxpwHpcY|H8t&3u4|eziYnD_b5#0 zOl7zlstcd3eb;z=5owDx=9{5=^PG69KtI5#%xOJuzMH~ z<$OVQd-1+RV8@q5LUuUEMOTGe7h*6meRY+`L0B7tbGSzsDd_v5PQ}aDQwi4^a(R{| zcmV6{j7J9|-j*?LokI7AxAcYXez<7QiAK49o_)Ch1L1@QXwgpaUI=*MS{X%KM(xe0 zgxea?lr72~>6)qGd^1awDO3)v^Pd1ujrs9mWSZ?4|0pW6ihcE&Z>d*w6|O38{p9;A}~cI1Q$ z&Tl4BeR6RM)`2{GQuzAmuw}1~0m7l<9b4hX>L~31ceXMkkeyFjjBCz=rHwn_{F9y~ z9?7qqfs5zdqrzcz9yB0I(QLp zOC1!rzjas~=#tsz(nX18aVao>L)1%3=8c^=w#8G5Wvx9zRKrZ}#p0<@?;@w?d)SkK z2S)>Uo^V#bs;MTHX9SRo!=47RrND(7&xBoe@lpd{5_P|2i<`}#1()rxk*&SHjg5Df zEg6}vCMpw2R?KkSf~7F}uWI=kH>&K~coIau?ck=j{2Q>k`l+K28=+|n<{BIGyWaJ#zh|q zaiz$G04lbXL!Elu&RRdQji~2lV>P=X<^I*xgV0B~A}F;#nNPAobNaIK)j>afQbb_d zwhn@4IO8ihRcpx6rwS4RAVIJ8pG2gV(K;;S5Vl1TkGonXgKA9exCLU@4m2hrevun2YgB9Q`SihUq7CxeZkHH#&7{) zb6FXw@ng_A$U5DU#YVB+b1YUtW~+2uM5{j#*4fX%_d3^zC84FQ-mZMVdk)JrWp>#kp;xMP}?i9^%zr5x*X2_NN=uW20~8|)jq9(=~-!DcI7 zGHMBgy+|krN0N;cjym;8WY61GMrSd?fHU0Xh73cStYrgX08u)Z0caN`Oy|13IBoox zf@au35R-u={ceB#5;?|8nK>4Kl$kNM{rk6?BC%U5k@?nL6lj&Mu~f@Diim$8Q+s}n z?WoNxwSEpT8@?vX8n=ENCZp$H(Gvv?@841`)&Tx{d1jsf#6?%nmo|!%LPxV?jsxzv z&A{J}UvvL@p2@BH6=__bYB{4XOYyC!@qN<7F!I|EJ+(Y;4y2=`SYGOG$j$5^1P^sJ zm4* z7q0~rvXrA9`#&LJobh(C*<9eYA3k~lCu-RVG7!uvEF(xL{BwCp;A~uh)wr-JP{C@I z@zAeGXRPl8eY$T2IsO6IBTFCz(+@U-MBlzLXM$*o5_!@IFNwOz$mq-Y0hmunaGm$lgKw z!~G#Q8_#FV@gsHtown1hHGGZV8i5YAJT7t9@=@6Y^<)ynKkY8(JOzKE!gHE#_Aj%x zt%YwMMl*;j(C|3S(Ke2N_4=Myzn~}tmtK7iCp{hnfLC zc@cIf+#lchtY%Rw{OmOme$|Bo=&F;rU(RQgCo3fb9Dim!zgk^IisQ-D0equI%>Q`T z?6YC1m9H4kR+!&$v}Tqg9b#xV*ey zO=BiYq0Adu6eX(Rl*fm${v8C+j z8f+KI#*!DM{dLQr54Ce#hR%a<_u8nmsIOUS>*1_>(EUv*{JlRT`(R(@_-OaLuhBoe zd=!&e;edlkq9tvTwH}??FzleInr_&fIc+(Y45lj7({QONoU0f{ zczH@-EruSO){2#`<-;4vQ)S~)p1^^F!Go-GP|nm(D*Pl) zCr|d`iuIoq+{D%?YSoE_CI3_9z22B{!d8aSz|hm71{a#>k6STTRQWCX_+jdLQ!bUv z%4JRu$U<&es6YBm`uBWL4@Lus0Ss{rqsGtv`o$tvZzh1mW4h>~SD1~-@*@aCbA;%~ zUkP|F1E*t$mTXA6t{Me}B4Y%(QJ$~>6M~genQ|XmnSwpMPZy6`4unq__SMT55IrMz z<^*&DR*4EbcA}5vOq0Io-)SR6t5n=i4M$DHnNxop<{~TJyNvS?6|W+PGY`8mmgNyPH`0{OK~)l1{WttGS3dY>s2+tB+V<`$^WoUw|O z-eJL>gGrN&fxFlt7e&HB+dOa}g(Qq2N}=RmP+{C;)DCxP zjejClLn@uz6w+YDCpH?W`iNa876>UjPe-&sVcMaWqVot?c_rL} zGqPj|jeqK0#yDfC(WgcXaxQm6I}@a|Ancbd)zhjiBPu#37?iu25?mOc zLvk07IJ!pjRz4T86GA&%vfg)YT@wGGUEB^!_Z$@>bi(49-X@z`>O|fm3n*(;1u@$u(VR^ zb+Yb(%VcZG$s?S|fs1;OU$+kTMh@4t&cQQ7E_w4D(JK05@A2$3Om zOjb0B?>Tp8O~^9$KAXGCH|23X-#VAs7qzJdi9wKqQf16m9Ka~Hfe`5$)kBSJ+8$3p zY#*;GhC~}VRTsEA8<+`k!Pko!USnEPYS@J*n(pZNdb;$y;>uRlpt$X?eTKU@a<}Vd z9{47ZKvl8c@~f#rb$lD z-}q#pB$OFG{>JVxSULGRoqVvxLsQ5SZF^h_65Xc?_D18SE^lp?>JeB$j7O1qKs0J8 zhhQSXFGEw5%r7r9Ab_oSNi<%TolXPdqg6J`>bf=RWBFuJSMB zpG`C{;)S?naU{v-D70p_zdngSzn8>DxxW6Ost0D@iv8Zw@Je$c%IdF>(o@+`*?)Um zq=?n|Q+5zaoZezJjZ%rZi(38O!ijjo?*gsh%arG1D2s-*ymjT!)M@R0!`086z>IdG z(iXfCzZ39C+fg(sDBme;*+ik>KDXV^0;wv}xJ{o-}K zZS!?s3Rs|j;f9MCRu?H0lj@1d%Zgx;zXbc*MF_N6p5f9~8Ot}koqF&8WjrB9kF^!N zD%o+^<8YWIbDg3%xoJg_c>ZwA?IB&ePJaKtfG@1?Chgcqj!sY^ACrC+7f2BEfDNRi z#zY-sKtRaKyiaE91hS1KZ4^x40U;FXhaA+kg1c|+lUaC<*+oNgWO$c7r+4BOdpeeJ zyRYAfW_4}Aiot{hI^jL=J}$0BfEM}*`InchG7*mtUN5cTzZPtSZ8-1!N!<)!OSjwhf>bLlodT0?F zN#rZ5EZDTLmd~X+Ea`*=vPH^Nyfu@P?X^iR9uun_RrYwpeg=;(9i2@(O5HhY)tO`I z#qcMPDyMz_S!Vj<*BGryU+$??Wa&mQvgLev+mf7|JWTiJI28a`f~r?tgG+r-cn=|2 z`Jv}X}sEhDrhei>VWI)!NTtr_R(dC^uZ$yNg(|WBh?k)eNxE)fYvfl zr?ko8)s(e(7$-y}sh0j@&DWsPzI(0wI}Gkm$8g{TxX+sF4-pDAKk>@)Dy(-q|3kM9w%;fdtZ5y~l0IDYv#;AC$C zY_nZcFMN}`b+j6vHDK1d85s9#5#*}%5?V9MUe8QtjRhCqdCqoQ{JD9)ZLY6sWTRh_ z3C^nMf*tOxB+vFD__q~9cyDa|>uJb}Vp!wEG?+*5B@^$5pP_e*#ClgpExs{}M87E?pl* zTCw7S9d4>hhq5lCe~I34YRPe5gn8G9j%@j@oSssnSSfDbeC_NlrZIx#b!)|hhEE?q zlB@HNgyFd5=vq;4vXrJ;mK6K2&T8g>=g+4~pgsZWz}QCpd*H8Gqc)GY73)`n0(;4= zOW_B#A71X!iq}E32x(QC)Vkcz-iL7=X5O-aS z+X;*+=oe+GO8fCmSnVNr@XG!^inm$&v~?7Xt`h)=e(i1Eg!iqj{_DonG36fQTk3f+ z9Q5B2W5tD0s2y&*ooze7CsT|k^OpZdbb{y?O};pr>IA-*-HQw03;cTA(WxKlc1`MY zL^8DM0l4_mWx6A+c2=!?pDOtf*}Pc)^WxQ0(8x7)7%7?-zxR^FnV}^iWDRl*{vm*61-& zNd79htX1{j{O++;@WM2@2mU7tA$`Znnmpz63Z4o^55Ul0QL*svALS@D(I_mX$yEcf z%1?2>zWVkanX?#Uor~9u3pNkMw1lRA2^v=HsiV+`ew-=tU^YCz)bLF&}q*h+L9a-ktDX``@I6l>mHbV>B&(6?a z3l{kPd7(&*ks`)DL$Bu@Wt{JHKi}@@GbZeEQn>$xI8D_#@XZCAwYh!E2(St$|BnHK zJju6MxT&ieajW_X_s^F%XL>y48G3>3C?{v)g`Nfl5sd}^SL>vMrY_@BPiuq$G^VD5 zgoXekHAv9rx~zAxwLza?tt^|wKk;{*yr6$dz+FljNT_5QmzwExI=@M!=FFb9?)(nc z`6Jofykl|;NAI7dSM`o#BwRavLeAM zIreMIaeRLBUiLatGrNwiP(?kp6`Smf1r?pX=%ok{wyHqF(mr-uKbQDeV*=1 zYf;G1Q+1N+KDU~0nK$G7YbuE^;$ZN=@aw*od#k!EAQfE7Xqe5^=Q2~1RYXV#eDzd3 z{Ef(j7e$n7(WXLd8YL}@(R(dtETIXD!_@)CAvV*dFJ*{0=WyonMP2iRl;wkmwF@a% z7)irFgde|b9Uk_cU+#npd^OS9Prcriyjl#ukVVRNsV@jxVeLPgkDef6<aeWEPaWxQ zr1XPy1P`={QH!e!64Y9bZ&Gjh4*N7mW&N0U70bIT&C&EtXF2BV5 zIp_{-bv03>2~tRFsx9HkA@*nu#0A~|%i-84$Um%vaA9`j9#-z}iUFT{dcG2(Sv3Wbv? z`w3#*XiCq+|98grd&*!8Oda1!9ryG7sJqvwaTKq(#vQu1JZa7fo>8mtiarMPnEyfO zM!I5#=v;U_p}J26YHo*gPb%luLX(gNp6um14}T8n|34OdlyQ?6%cJ?=pQ^=f86?$N ziS`AFxGhZ#XeXwL#TK`s?euZ`nC;*6C2jIxxBsKG{79ux7Y@6kD|Ug6lBiravCp2UgD8n>k(>ElzQuKL+DqL-rXITU`f6Q-uu3^;6- zU=>(ee)AK6?3vt+B|MI4z39K5mlaADfl~phZ1@Fwr=G~C8R7@}@1EcR%)MqYYTWO& zD6%yTlJY9KYpUv96~o>aTXVYcDy{^(hxSzq9+2F0ise@&lMnrUIw?0(L5apnxkD!( z@6ct(?H5ZR;Iw;nMVqKRHMtb69+P}i%lU$B$s+({xK|XJr{x&xbE9Kpl`ATI8Nc4B zmTtKN4nyBNKer-<5Hskkf|(s40o&2W6p!bH)}sy4uz?SI6Xddhj~;u87b>emqvd7r zVTp9#111cvNR;$Zl#6UNf;LGLm-j$PV<_(PSY07&(4Lg{Y@1RI#Y-=)g|}>D%vxGA zH4aEr&SCtow`Bx2R^FK+TEUJ4WwFYr5SB4xmV@I~gHj7si{i|}E#zb0lx4Qv!M&uy zVPf~ZxaPLCHIG~=D}q;Gex+UQveD0VKH;jQ_c z4fzHV1E=;zUt1U})?=)THWUm9=y0)~GYoxmkKfa-?ng^${Y57Drj>;FwtsK(a^LuU zH_h6?-)m`+vG%%h?AP^P+{w`yl7(Cu zT)tz`0E0#TYB>az?r;;6PI((4@`-sF^|)Ht%R=mbT#IzXj(4T;_=_=X#WZB_J04Ws z_s70DM#B%wVI6z&FNus3sW-tC)4n15r%g0&_a1Ey<|i?A6jeKx71aKS#w+wqzEHQ( znmGD@nAXF6HWjsRbWu7oL$gsgR;1(9n3aoj8P;>`*wr|OCFX-~{?qiZG9G*fxZ~@p zL!nL&D-g(bi+$)1=Ir*)$h+7he3fRD5kf~v#8 zCw?D4*3k8CGZ(5Hd)3}zW5!Olj4}~>tj+N6>gwT5XN&mQz;YFid~5&W4HIOIgU82F z^n8z~>XV&V*6`Ow)(!l8eQ^&ajk$GoMmZJWIwe5X?XeTG0XjzxCYghL`C6WEJJD`_ z87l@b7Eu8de@>}35v%doYN`je=?mwPgPP0~O*;?Mgz`qj3884gdBVtbel@G#YW&() zVi5wTm~}r;pd|S1KpS7b&>q_|F1d{YM3`j+7v1ycvSh{Igez#d;Jg;dZk@|z7Quf! z&U5C=e#C^E;|=5opyZP=2H`Sa=Nd5U)yWZKSn z{Fn)Ji_hr3Bvyb@_LgJ*%{s2%9wndAL@Ng)&;rMXoa%8<3=F~YU1Di@nRH^>t3$sD z07;HN+Cqb2n`>CQ$SB|3>8N^a`mH;Rx8eSl0HFTn-kTPMf_@~isDAdkScq)#j&phH zr$04l4V^ScqNk1z;%y=!ihO}g*~@pGANNnBZ7g%#-Erj}wV@&6-2V+y2(nt~1NA4t z-*WzsrSD5M;BriB9oEm*ZxmVMa?5VY#^vTPW~v9}1QxJLd}nT7^!n3{QB0dS{^0x? z1S4p>QP8?U(T#AhUxu8lq9O4$$2RJHoo^Z*_Pl8oimTAY2G|3ZcA zVhT13^IEu5I1;251I~I5&-$bUq-15=-?%}kZZ(1cjXX_k(jwT9xooIp4&ZOJ8-9e4 zvLCoIRi?>1VOzfO+}>}PKTjWUzgHiF5TI3T^X@51vzqx-NwO86Us+x|jET{aF~eC6 zM;>t;G#~@M-%#~z`_gXqkv+ky<>&6+-nxWmCHC6oU{;0Vj9-pD=en$n(A=W4(D$ji zN~u=)jjfxi6_-vN)?XTC#O0I~5UYF3-+w|e9K)B8g~MeLIkw~-)Xw%d{?SnOPl29> zv1vif%a4kot=KH^I-Hv`|2)foV5Uq{Hms|~P#UE@Ecz|eZjFkAs_r&slW;gg@Tk)U z4_UJqlotFkfVc|(M|e4*I#O)@jgf)tf2fGzV^d(d}lNK2cF%nNtn|R@{f@mWV&E$ zHQ;|&)%yLGEq8(q8(3$ByPyi>!6+4YNTdWdk4tPGZ+|wgWxlK204+lj zlU}c_4dh>){GYaRRwe|gZXV4M{)mI4?BRZkZ zB=plXho$9|)+u@^*TF>TMNk5`7tI!u;J+u8k=W^tN3{4XZCTuqkMrVr_M*lt&>_qW ztXi@}M|SaW8h6D)EF`;lkDaXZN`LtBjkmK|S2%}QP#v%-y=!S}I}d-Fx8n8%?C}UD zeo)`0?7Q&Rm5A3VZfEeE2F-p)E`4LoM5>mVv(o{zBspAvmk&6)49Tl$5UfC?)AL;x z3*T?85w9O7m+rfWbQk>9$0vaC8k$A4P8nqDZS$caJugZ^Q*m<>$s#^I14$;;q-1a3NJIO6UXbQKXGK{F;=y{Hg(t(MXm>2KajTh;wAzL~-K z^W4LlDa?Iy>v{!k)x6R#A=FMs^Bx>z&yY3Tqh6VN5m{{N%yxq|X7qrFXFbw)7=-?v ze0(g%E0!%O_j%;?`5Snpc#3eg9ljI*R%)kvPw$+}?p(!Jxc%bQVCemVLXC@xEkL@+ z6{O~TKUj8^{S=}h2;zPFI5lvc;f$pcIGw1D!Y}&6*)(+B^pbaimjbu_B-owuUel)U z!tSapX>U_Z4wYPcg#7Uf%u++m?n;lAmxc7JXdgEL|JSWeQv$6piTk~vz1Gf<+9Bzg z2D8KT)7xx{+I3JoSIKez>YnaWS}hFZA_!!N9wb0*BzxJ?%=Qkbfgf> z9K}95nja8&y1oue-*as5tf|?nJsU%;=Gx_UAdzsht_fQwXm7jV0`M-dlSuOkQEkRB6mf3cs+&5GbELO*tX#r???^QR!vrGSa;{6Fy6)kjrG~>cwg$h zAE~mJd8IWyLMwz^o_&HuK~J6YUEjrLxm>+wORLHoceHCWtzBxna8NX|PPXeD9c(1Z z)M}HYh?ZHLp2gAVAgfA30U_yJ8ma!-jBmZvsuQP6$B3aS?1<}EPDNYs{0!uNLOpui z^V3fMd11daGm9V)KvVAXY5$()`z?d!2eGU&*7YD{ zl2?i{2e~E?-UNacIHE-@87WCY?~g>G!1di;{W>V}utJ9^!{iSysieo)niW zYttNr_J@VvsIr-><@$AO-=GjKrM0;ShYp^uH~*giYTgw|e+$LjeEm3bx6intpC%I} z;4rrCsaBde$m=?g_dt#fjNanib~` z+6eUN?YT$%4$S(eM%`VMhH}iN06+UFvqQJzK{4C!<42e;bJ(#kipDA?u*kFe=ySh+ zF#@v;U?;#SJr3pG4P7w&BW4{#X=?t5RBQUHO{%G}Sl$sd`F?Ax-3F)JL_)`~`xKO+>E8$U@W3nifc4Io{L z%c*bH@S*GeoU(+?holPXTgy9CbXAUMt^us3um_ z^cyYqNSX#|IXqP2{I3ag-PTMo$x+l*kAJ&7Iut3JC@OlwSol1C#@clHNquM4Mlvkz z9z2iu(NsgkWBh_q*bu@4(HkzU$!Q#Xg6coV(o4zu#e4M%`iLgmGe>`BiUN$S#$mkn zOG+FmL+tIu)XD6Mih7relgdtZO)o*t4dMM&*~_#Mmk`3be)#tG^P6UTR9{_16bc@U z__@6;SgKx*AJcLknX0vbrzb&Dz*hc6E9oMeoI~V*C)BQ&ibq`Ur{%B$_J^%eypI05 z;D$Uy6r?)0i8fg4uUetJbHW}GLtVN#@Fdvh1@~DMl)HzV9N>lWRQuAZwYr;|-uO!X zfqW|%I|D8O^aoA-`>|S?cI;K7^=Spz7V(a80bhj|)`<6IK<4yNnRszgc0CbZIG{)z z+^!cDp=?fb{6T@@w)%w1#E%OAFG%O&CW#(5$rkt3+pol35H|g0=#O@CTnjF5RIWjO z_q(r6Q~081f1g}b3fnK~X7k*9rjIehNb+Z$bwX8y7xGYwG+&E-uf0a)cr}#>?O5Z!>*`D&23eJ+J+h zR7~qO#fK`3Ux@~O3XAphVcs7pUbl)8$u zu-5w()zsqGMBm4!{JE7h9{EgV{09Le$0Y3n%#YxAF6<%bQ99mNguN~3Z+WC{BQUYX zWykQcijt*F@R37aso&5{>KzKR{!-;&Z7-Le6pYNeJ~>I??dw~$b8_1n>Sv3 zAPaNbPmotGYiCplauI^l4FGaMKz}_aoTPAo0$`i7J=+mLUMbjt-=E=0lAj#e`?pAl zl!MW0`&j21aD})6TDScsQ%Z_4H?A%La<{yKbZ19I+w>z17aW*qHku0uT6frJ8>GN1 zI#VBtQDrD;@P8+f4qG_fQbO?X-=t~}-W~?&{!uC($tXyInV0PYIO$o9y$L}c?^XSp z=J|)xXtdDs;WF*kX;ZQXv|Er(RcETq_`CTHzmIOl>9ArqeD=$|J$b4@`tQ$^7M6{9 zR)z1XjFXK{FyED|GJ8IhZWm1rC863n$5KMc$y4vfn^WRbE`F|qKGI&YA_MJNnZm_J zDe9?3k_Y|d91D<4cGIZ{o$XPHiDR8lKg`(*oO9mf=j3)BFHLX7{$=x7w&0%PqyZip zTO)$noaNw{HTneAo3=(ZQ+E0hwY-?fDFdsQK{eGxSdA3QeSuK}*BOtKO7jO)7r(`mGkO!rzYTel<6Ga;tgIDHu>GQRo~TOLKp{%3lOGMoBMWE+ z=|J1t(Bs~eh%u{CUbs>v_1>mN5gSgb)a!A3tFp%z?`V6xS>IL-w*Oeo`GekbT_tgJlpHwZ9}ksPjZF|y`WUXM>d2G^;6rUm098P7#hFoAJ2 zD}r`SzCCRSF4TQ0mNS{28^5v4=}6^nW-=vZB~pW|wOFzId6>!17JnVQf-h{%WL_y= zfsYB^?`SJ9T%Pw|X^UQNZ}{!lE&*+7GddDr6UrTFzxQuSsOU;c9CS4;H-R_o5-=wh z?!@245_y=_J{D|ZvKt}`jdqIGnz@OxXLqfkIDn?*!7?l!U_o6oLNVa}=YxB8tOF(O zwFR!KrsmYoT*xa5R%ytiPxfB1p0RIsR5*q6VJVa!Gy(@;A6??g&Uy-hdbu~Z1_UyU znLS@HTh3wrfwxBqelr7Q?YtQiAEy{~`s3x&>8w3Hi5LoIHi-JW-cFsj9aB?6DLl^c zOfdM}7HeYR>apdb#YQ~W;B+*H<^-g#fXSnBRDK*Z^t`)QgF#nJNbH(Lx^~3YAU)6MMZ>0N&FUIET*9Pl^H(GhqA{O}0G!J~dn(v$OOT?;K zqx#HrMS{1J){mT;zUn)&@Q&EKza9LP!FOo2-Xb%$y^OX})}1(U5zqxE!j?RLVCJ>-_n`fF_-_;!VHue6FANZ5pz)lo;B@2g)E zo4SpaOObt2LK0UiIW{D2CXzu7dSek6?Q>;JU=vlu$);I2k)K2yT7vNse>*Kp_HJep zCxv{>5@h%a!4ZG>$Yu;sCTgFo-eeYkeY{L_1+5DgiM4FPkdR!TQT&b&)Jv{4a+X>9Jz~f!=;iYO3+y`>=y`fa3;yH2eJUGjNE_3f*-5(+$&qk=y1^Bx zVmoLA&1m*Je}+kiWG`t=rF6@X>GT`VrSCyH(Xiay$@NX9Dkr7jE?dY>lhp`Lm$z32 z9lDDNjGbW&g$5srIaso+Aga9ne{p75678cz>SWn}1>m>)XD6TUaB=m@iGZ&5;Gye(kho#F|aqsv4Uc^N(=;vIBBaX zR+kXvv@z~~rD<$}RXva~HSYcG;GkGEIVPQci}jRxHREYN`)+5>-wLL*{;Byfi<_?$ zkgeKKCxrT-?|MBE-$BmW-d_qviIIPLucZ|q1 z$&|73sAIVH1nmqyqJ=<`>y~C2b0b`MKp^*-~0}q`YtNE1l-E^D z?ZB~rj6O5R>35Fye)ac~IX$G%*^$md6fs(Aa-{mqe*~0BFZ@ok{V&P8lkdn@Cq6H{ z6~r=JeflvotBq@dinKQj$he~hd82#Sb&Ci8@TD+d z2cN`9uNJIM%QR0vOXEk=Qo%fOAP?=C zRq?Hhk22|hwK|tXJeJlWdn(w!!+UL1o8vQdR8j{%?Ri@nLBz`+d^z~u3&eGPa>dI8 zDs=gEhVSR+6XRQVcL_HSwld+5E~98e{IpmRgD=7qkBYf z>i6bNZTvf0N;rAfbK4u%I$}fVl3f^Ql}If_^sQ0Pg^GffHaFGKD~lwQe0BLlf7-3m zEydF6M60Wj>|kraLq$9R8;~BrKJx)@Y6654L@4{4b~a-{a#3qVGJRU_hUzn^8;*>< zaP5@<+y8~(s4dX>u$OE#boJ^dsT1+~X(nZj1p%du1HJOpx*LI?jak7Wd8wpIQky

< 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 Dd7VGU~Kc)hol55F2W%|8ByvN$^O#LW-z%)SVWi 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 W=R;B9O(1W-sPPmfz^{W;??-u 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

t$?u;Fr6Y|O|OYA1xkCTYDmtM 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 diff --git a/front/src/assets/images/withings/thermo-c.jpg b/front/src/assets/images/withings/thermo-c.jpg index 5aa6535f1e4ff19f77be18bc45f938bcf6878e1d..7a2a45129e275602443cf7f132ee73768e0d7515 100644 GIT binary patch literal 4680 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 NLQpMK>+omz{{v~q|7-vN diff --git a/front/src/routes/integration/all/withings/device-page/actions.js b/front/src/routes/integration/all/withings/device-page/actions.js index 9249ecd9d0..71dc8eaee9 100755 --- a/front/src/routes/integration/all/withings/device-page/actions.js +++ b/front/src/routes/integration/all/withings/device-page/actions.js @@ -48,7 +48,7 @@ const actions = store => ({ const mapOfDeviceImgByName = new Map(); mapOfDeviceImgByName.set('Withings - Withings WBS01', 'sleep-analyzer-single.png'); mapOfDeviceImgByName.set('Withings - WS30', 'sleep-analyzer-single.png'); - mapOfDeviceImgByName.set('Withings - Kid Scale', 'KidScale.jpeg'); + mapOfDeviceImgByName.set('Withings - Kid Scale', 'KidScale.jpg'); mapOfDeviceImgByName.set('Withings - Smart Body Analyzer', 'body-plus-black-kg.jpg'); mapOfDeviceImgByName.set('Withings - Body+', 'body-plus-black-kg.jpg'); mapOfDeviceImgByName.set('Withings - Body Cardio', 'body-cardio-black-kg.jpg'); diff --git a/server/services/withings/lib/withings.init.js b/server/services/withings/lib/withings.init.js index ad1267e792..9c99d6b78f 100755 --- a/server/services/withings/lib/withings.init.js +++ b/server/services/withings/lib/withings.init.js @@ -119,7 +119,7 @@ function buildFeature(currentGroup, device, currentFeatures) { const gladysDeviceId = device.id; // Choose type of feature - // (cf: https://developer.withings.com/oauth2/#tag/measure ) + // (cf: https://developer.withings.com/api-reference#operation/measure-getmeas ) let featureType; let featureName; let featureUnit; From de441840d02c7623270efbf72d066d4213901202 Mon Sep 17 00:00:00 2001 From: Euguuu Date: Mon, 6 Dec 2021 23:15:45 +0100 Subject: [PATCH 009/164] fix merge error --- .../withings/devices/WithingsDeviceList.js | 67 ++++++++++--------- .../devices/WithingsDeviceListNoDevice.js | 25 +++---- .../withings/settings/WithingsSettings.js | 44 ++++-------- front/src/components/oauth2/actions.js | 2 +- .../oauth2/oauth2.executeOauth2HTTPQuery.js | 4 +- .../withings/lib/withings.deleteVar.js | 2 +- server/services/withings/lib/withings.init.js | 10 ++- 7 files changed, 69 insertions(+), 85 deletions(-) diff --git a/front/cypress/integration/routes/integration/withings/devices/WithingsDeviceList.js b/front/cypress/integration/routes/integration/withings/devices/WithingsDeviceList.js index 3805075acb..65ebf70036 100644 --- a/front/cypress/integration/routes/integration/withings/devices/WithingsDeviceList.js +++ b/front/cypress/integration/routes/integration/withings/devices/WithingsDeviceList.js @@ -4,7 +4,7 @@ describe('Withings device list', () => { external_id: 'c43dbbbd-1091-44e7-b122-68911483d28b', selector: 'withings-body-c43dbbbd-1091-44e7-b122-68911483d28b', should_poll: 1, - poll_frequency: 86400000, + poll_frequency: 86400000, features: [ { name: 'Battery', @@ -40,7 +40,7 @@ describe('Withings device list', () => { external_id: 'c43dbbbd-1091-44e7-b144-68911483d28b', selector: 'withings-body+-c43dbbbd-1091-44e7-b144-68911483d28b', should_poll: 1, - poll_frequency: 86400000, + poll_frequency: 86400000, features: [ { name: 'Battery', @@ -98,7 +98,8 @@ describe('Withings device list', () => { name: 'Fat Mass Weight', category: 'health', type: 'fat-mass-weight', - external_id: 'withings-Fat Mass Weight:c43dbbbd-1091-44e7-b144-68911483d28b:0d9226e1-e794-4d46-9d0e-ed91725a8c9e', + external_id: + 'withings-Fat Mass Weight:c43dbbbd-1091-44e7-b144-68911483d28b:0d9226e1-e794-4d46-9d0e-ed91725a8c9e', selector: 'withings-Fat Mass Weight-c43dbbbd-1091-44e7-b144-68911483d28b', read_only: true, keep_history: true, @@ -141,7 +142,7 @@ describe('Withings device list', () => { external_id: 'c43dbbbd-1091-44e7-b166-68911483d28b', selector: 'withings-body+-c43dbbbd-1091-44e7-b166-68911483d28b', should_poll: 1, - poll_frequency: 86400000, + poll_frequency: 86400000, features: [ { name: 'Battery', @@ -199,7 +200,8 @@ describe('Withings device list', () => { name: 'Fat Mass Weight', category: 'health', type: 'fat-mass-weight', - external_id: 'withings-Fat Mass Weight:c43dbbbd-1091-44e7-b166-68911483d28b:0d9226e1-e794-4d46-9d0e-ed91725a8c9e', + external_id: + 'withings-Fat Mass Weight:c43dbbbd-1091-44e7-b166-68911483d28b:0d9226e1-e794-4d46-9d0e-ed91725a8c9e', selector: 'withings-Fat Mass Weight-c43dbbbd-1091-44e7-b166-68911483d28b', read_only: true, keep_history: true, @@ -255,7 +257,7 @@ describe('Withings device list', () => { external_id: 'c43dbbbd-1091-44e7-b177-68911483d28b', selector: 'withings-body-c43dbbbd-1091-44e7-b177-68911483d28b', should_poll: 1, - poll_frequency: 86400000, + poll_frequency: 86400000, features: [ { name: 'Heart Pulse', @@ -278,7 +280,7 @@ describe('Withings device list', () => { external_id: 'c43dbbbd-1091-44e7-b199-68911483d28b', selector: 'withings-bpm-c43dbbbd-1091-44e7-b199-68911483d28b', should_poll: 1, - poll_frequency: 86400000, + poll_frequency: 86400000, features: [ { name: 'Heart Pulse', @@ -297,7 +299,8 @@ describe('Withings device list', () => { name: 'Pulse Wave Velocity', category: 'health', type: 'pulse-wave-velocity', - external_id: 'withings-Pulse Wave Velocity:c43dbbbd-1091-44e7-b199-68911483d28b:0d9226e1-e794-4d46-9d0e-ed91725a8c9e', + external_id: + 'withings-Pulse Wave Velocity:c43dbbbd-1091-44e7-b199-68911483d28b:0d9226e1-e794-4d46-9d0e-ed91725a8c9e', selector: 'withings-Pulse Wave Velocity-c43dbbbd-1091-44e7-b199-68911483d28b', read_only: true, keep_history: true, @@ -314,7 +317,7 @@ describe('Withings device list', () => { external_id: 'c43dbbbd-1091-44e7-b120-68911483d28b', selector: 'withings-bpm-c43dbbbd-1091-44e7-b120-68911483d28b', should_poll: 1, - poll_frequency: 86400000, + poll_frequency: 86400000, features: [ { name: 'Heart Pulse', @@ -333,7 +336,8 @@ describe('Withings device list', () => { name: 'Pulse Wave Velocity', category: 'health', type: 'pulse-wave-velocity', - external_id: 'withings-Pulse Wave Velocity:c43dbbbd-1091-44e7-b120-68911483d28b:0d9226e1-e794-4d46-9d0e-ed91725a8c9e', + external_id: + 'withings-Pulse Wave Velocity:c43dbbbd-1091-44e7-b120-68911483d28b:0d9226e1-e794-4d46-9d0e-ed91725a8c9e', selector: 'withings-Pulse Wave Velocity-c43dbbbd-1091-44e7-b120-68911483d28b', read_only: true, keep_history: true, @@ -346,7 +350,8 @@ describe('Withings device list', () => { name: 'Systolic Blood Pressure', category: 'health', type: 'systolic-blood-pressure', - external_id: 'withings-Systolic Blood Pressure:c43dbbbd-1091-44e7-b120-68911483d28b:0d9226e1-e794-4d46-9d0e-ed91725a8c9e', + external_id: + 'withings-Systolic Blood Pressure:c43dbbbd-1091-44e7-b120-68911483d28b:0d9226e1-e794-4d46-9d0e-ed91725a8c9e', selector: 'withings-Systolic Blood Pressure-c43dbbbd-1091-44e7-b120-68911483d28b', read_only: true, keep_history: true, @@ -359,7 +364,8 @@ describe('Withings device list', () => { name: 'Diastolic Blood Pressure', category: 'health', type: 'diastolic-blood-pressure', - external_id: 'withings-Diastolic Blood Pressure:c43dbbbd-1091-44e7-b120-68911483d28b:0d9226e1-e794-4d46-9d0e-ed91725a8c9e', + external_id: + 'withings-Diastolic Blood Pressure:c43dbbbd-1091-44e7-b120-68911483d28b:0d9226e1-e794-4d46-9d0e-ed91725a8c9e', selector: 'withings-Diastolic Blood Pressure-c43dbbbd-1091-44e7-b120-68911483d28b', read_only: true, keep_history: true, @@ -376,7 +382,7 @@ describe('Withings device list', () => { external_id: 'c43dbbbd-1091-44e7-b121-68911483d28b', selector: 'withings-thermo-c43dbbbd-1091-44e7-b121-68911483d28b', should_poll: 1, - poll_frequency: 86400000, + poll_frequency: 86400000, features: [ { name: 'Temperature', @@ -395,7 +401,8 @@ describe('Withings device list', () => { name: 'Body Temperature', category: 'health', type: 'body-temperature', - external_id: 'withings-Body Temperature:c43dbbbd-1091-44e7-b121-68911483d28b:0d9226e1-e794-4d46-9d0e-ed91725a8c9e', + external_id: + 'withings-Body Temperature:c43dbbbd-1091-44e7-b121-68911483d28b:0d9226e1-e794-4d46-9d0e-ed91725a8c9e', selector: 'withings-Body Temperature-c43dbbbd-1091-44e7-b121-68911483d28b', read_only: true, keep_history: true, @@ -408,7 +415,8 @@ describe('Withings device list', () => { name: 'Skin Temperature', category: 'health', type: 'skin-temperature', - external_id: 'withings-Skin Temperature:c43dbbbd-1091-44e7-b121-68911483d28b:0d9226e1-e794-4d46-9d0e-ed91725a8c9e', + external_id: + 'withings-Skin Temperature:c43dbbbd-1091-44e7-b121-68911483d28b:0d9226e1-e794-4d46-9d0e-ed91725a8c9e', selector: 'withings-Skin Temperature-c43dbbbd-1091-44e7-b121-68911483d28b', read_only: true, keep_history: true, @@ -419,7 +427,7 @@ describe('Withings device list', () => { } ] }; - + before(() => { cy.login(); @@ -427,14 +435,14 @@ describe('Withings device list', () => { cy.createDevice(deviceBody, 'withings'); cy.createDevice(deviceBodyPlus, 'withings'); cy.createDevice(deviceBodyCardio, 'withings'); - - cy.createDevice(deviceSleep1, 'withings'); + + cy.createDevice(deviceSleep1, 'withings'); cy.createDevice(deviceBPM1, 'withings'); cy.createDevice(deviceBPM2, 'withings'); cy.createDevice(deviceThermo, 'withings'); - + cy.visit('/dashboard/integration/health/withings/device'); }); @@ -448,7 +456,7 @@ describe('Withings device list', () => { .should('exist') .parent('.card') .within(() => { - cy.get('img').should('have.attr', 'src', '/assets/images/withings/body-black-kg.jpg'); + cy.get('img').should('have.attr', 'src', '/assets/images/withings/body-black-kg.jpg'); cy.get('select').should('have.value', ''); cy.get('span').should('exist'); cy.get('.fe-battery').should('exist'); @@ -461,7 +469,7 @@ describe('Withings device list', () => { .should('exist') .parent('.card') .within(() => { - cy.get('img').should('have.attr', 'src', '/assets/images/withings/body-plus-black-kg.jpg'); + cy.get('img').should('have.attr', 'src', '/assets/images/withings/body-plus-black-kg.jpg'); cy.get('select').should('have.value', ''); cy.get('span').should('exist'); cy.get('.fe-battery').should('exist'); @@ -475,12 +483,12 @@ describe('Withings device list', () => { .should('exist') .parent('.card') .within(() => { - cy.get('img').should('have.attr', 'src', '/assets/images/withings/body-cardio-black-kg.jpg'); + cy.get('img').should('have.attr', 'src', '/assets/images/withings/body-cardio-black-kg.jpg'); cy.get('select').should('have.value', ''); cy.get('span').should('exist'); cy.get('.fe-battery').should('exist'); cy.get('.fe-grid').should('exist'); - cy.get('.fe-percent').should('exist'); + cy.get('.fe-percent').should('exist'); cy.get('.fe-activity').should('exist'); }); }); @@ -490,7 +498,7 @@ describe('Withings device list', () => { .should('exist') .parent('.card') .within(() => { - cy.get('img').should('have.attr', 'src', '/assets/images/withings/sleep-analyzer-single.png'); + cy.get('img').should('have.attr', 'src', '/assets/images/withings/sleep-analyzer-single.png'); cy.get('select').should('have.value', ''); cy.get('span').should('exist'); cy.get('.fe-activity').should('exist'); @@ -502,7 +510,7 @@ describe('Withings device list', () => { .should('exist') .parent('.card') .within(() => { - cy.get('img').should('have.attr', 'src', '/assets/images/withings/thermo-c.jpg'); + cy.get('img').should('have.attr', 'src', '/assets/images/withings/thermo-c.jpg'); cy.get('select').should('have.value', ''); cy.get('span').should('exist'); cy.get('.fe-thermometer').should('exist'); @@ -514,7 +522,7 @@ describe('Withings device list', () => { .should('exist') .parent('.card') .within(() => { - cy.get('img').should('have.attr', 'src', '/assets/images/withings/bpm-core.jpg'); + cy.get('img').should('have.attr', 'src', '/assets/images/withings/bpm-core.jpg'); cy.get('select').should('have.value', ''); cy.get('span').should('exist'); cy.get('.fe-activity').should('exist'); @@ -526,7 +534,7 @@ describe('Withings device list', () => { .should('exist') .parent('.card') .within(() => { - cy.get('img').should('have.attr', 'src', '/assets/images/withings/bpm-connect.jpg'); + cy.get('img').should('have.attr', 'src', '/assets/images/withings/bpm-connect.jpg'); cy.get('select').should('have.value', ''); cy.get('span').should('exist'); cy.get('.fe-activity').should('exist'); @@ -544,8 +552,8 @@ describe('Withings device list', () => { cy.contains('button', 'integration.withings.device.saveButton').click(); }); - // Check redirected to edit page - cy.location('pathname').should('eq', '/dashboard/integration/health/withings/device'); + // Check redirected to edit page + cy.location('pathname').should('eq', '/dashboard/integration/health/withings/device'); }); it('Check updated device', () => { @@ -557,5 +565,4 @@ describe('Withings device list', () => { cy.get('select option:selected').should('have.text', rooms[0].name); }); }); - }); diff --git a/front/cypress/integration/routes/integration/withings/devices/WithingsDeviceListNoDevice.js b/front/cypress/integration/routes/integration/withings/devices/WithingsDeviceListNoDevice.js index 672dd75830..66290326b9 100644 --- a/front/cypress/integration/routes/integration/withings/devices/WithingsDeviceListNoDevice.js +++ b/front/cypress/integration/routes/integration/withings/devices/WithingsDeviceListNoDevice.js @@ -1,29 +1,24 @@ describe('Withings Empty device list', () => { - before(() => { cy.login(); - + cy.visit('/dashboard/integration/health/withings/device'); }); it('Check Empty device page', () => { - cy.get('.alert-info') - .i18n('integration.withings.device.noDevices'); + cy.get('.alert-info').i18n('integration.withings.device.noDevices'); }); - it('Check right menu page', () => { - - cy.contains('a', 'integration.withings.device.menu') - .should('have.attr', 'href', '/dashboard/integration/health/withings/device'); + cy.contains('a', 'integration.withings.device.menu').should( + 'have.attr', + 'href', + '/dashboard/integration/health/withings/device' + ); - cy.get('.list-group-item-action').i18n( 'integration.withings.settings.menu'); - - cy.contains('a', 'integration.withings.documentation') - .should('exist'); - cy.contains('a', 'integration.withings.officialWebSite') - .should('have.attr', 'href', 'https://www.withings.com/'); + cy.get('.list-group-item-action').i18n('integration.withings.settings.menu'); + cy.contains('a', 'integration.withings.documentation').should('exist'); + cy.contains('a', 'integration.withings.officialWebSite').should('have.attr', 'href', 'https://www.withings.com/'); }); - }); diff --git a/front/cypress/integration/routes/integration/withings/settings/WithingsSettings.js b/front/cypress/integration/routes/integration/withings/settings/WithingsSettings.js index 1b87cb9228..29de0b0ee8 100644 --- a/front/cypress/integration/routes/integration/withings/settings/WithingsSettings.js +++ b/front/cypress/integration/routes/integration/withings/settings/WithingsSettings.js @@ -1,18 +1,14 @@ describe('Withings settings page', () => { - before(() => { cy.login(); - + cy.visit('/dashboard/integration/health/withings/settings'); }); it('Check setting page and connect', () => { - - cy.get('.markup') - .i18n('integration.oauth2.instructions'); + cy.get('.markup').i18n('integration.oauth2.instructions'); - cy.get('.form-label') - .i18n('integration.oauth2.apiKeyLabel'); + cy.get('.form-label').i18n('integration.oauth2.apiKeyLabel'); cy.get('input') .first() @@ -24,15 +20,15 @@ describe('Withings settings page', () => { .clear() .type('FakeSecret'); - const serverUrl = Cypress.env('serverUrl'); + const serverUrl = Cypress.env('serverUrl'); cy.intercept( { method: 'POST', url: `${serverUrl}/api/v1/service/oauth2/client/authorization-uri` - }, + }, req => { req.reply(res => { - res.body.authorizationUri = `/dashboard/integration/health/withings/settings`; + res.body.authorizationUri = `/dashboard/integration/health/withings/settings`; }); } ); @@ -42,36 +38,24 @@ describe('Withings settings page', () => { // Check redirected to settings page cy.location('pathname').should('eq', '/dashboard/integration/health/withings/settings'); + cy.get('.alert-info').i18n('integration.withings.settings.complete'); - cy.get('.alert-info') - .i18n('integration.withings.settings.complete'); - - cy.get('.alert-info') - .i18n('integration.withings.settings.clientId'); + cy.get('.alert-info').i18n('integration.withings.settings.clientId'); cy.get('.alert-info').contains('FakeClientId'); - cy.get('.alert-info') - .i18n('integration.withings.settings.afterIntegration'); - - cy.get('.alert-info') - .i18n('integration.withings.settings.instructionsToUse'); + cy.get('.alert-info').i18n('integration.withings.settings.afterIntegration'); - cy.contains('p', 'integration.oauth2.delete') - .should('exist'); + cy.get('.alert-info').i18n('integration.withings.settings.instructionsToUse'); + cy.contains('p', 'integration.oauth2.delete').should('exist'); }); it('Check unconnect', () => { - cy.contains('button', 'integration.oauth2.buttonUnConnect').click(); - cy.get('.markup') - .i18n('integration.oauth2.instructions'); - - cy.get('.form-label') - .i18n('integration.oauth2.apiKeyLabel'); + cy.get('.markup').i18n('integration.oauth2.instructions'); + cy.get('.form-label').i18n('integration.oauth2.apiKeyLabel'); }); - -}); \ No newline at end of file +}); diff --git a/front/src/components/oauth2/actions.js b/front/src/components/oauth2/actions.js index ea370e399b..1323ee725d 100755 --- a/front/src/components/oauth2/actions.js +++ b/front/src/components/oauth2/actions.js @@ -1,5 +1,5 @@ import { RequestStatus } from '../../utils/consts'; -import { OAUTH2 } from '../../../server/utils/constants'; +import { OAUTH2 } from '../../../../server/utils/constants'; const actions = store => ({ updateIntegrationName(state, e) { diff --git a/server/lib/oauth2/oauth2.executeOauth2HTTPQuery.js b/server/lib/oauth2/oauth2.executeOauth2HTTPQuery.js index 5f382910a7..aaa26347ad 100644 --- a/server/lib/oauth2/oauth2.executeOauth2HTTPQuery.js +++ b/server/lib/oauth2/oauth2.executeOauth2HTTPQuery.js @@ -43,7 +43,7 @@ async function refreshTokenAccess(serviceId, gladys, userId) { json: true, }, }; - console.log('credentials: ', credentials); + try { const client = new ClientCredentials(credentials); let authResult = await client.createToken(accessToken); @@ -95,7 +95,7 @@ async function refreshTokenAccess(serviceId, gladys, userId) { async function executeOauth2HTTPQuery(serviceId, userId, queryType, queryUrl, queryParams) { // Refresh token access if needed const accesToken = await refreshTokenAccess(serviceId, this.gladys, userId); - console.log('accesToken: ', accesToken); + const headerConfig = { headers: { Authorization: `${accesToken.token.token_type} ${accesToken.token.access_token}`, diff --git a/server/services/withings/lib/withings.deleteVar.js b/server/services/withings/lib/withings.deleteVar.js index b231108505..92841925af 100755 --- a/server/services/withings/lib/withings.deleteVar.js +++ b/server/services/withings/lib/withings.deleteVar.js @@ -14,7 +14,7 @@ const OAuth2Manager = require('../../../lib/oauth2'); */ async function deleteVar(integrationName, userId) { const oauth2Manager = new OAuth2Manager(this.gladys); - const oauth2SaveVarResult = await oauth2Manager.deleteVar(integrationName, this.serviceId, userId); + const oauth2SaveVarResult = await oauth2Manager.deleteClient(this.serviceId, userId); return oauth2SaveVarResult; } diff --git a/server/services/withings/lib/withings.init.js b/server/services/withings/lib/withings.init.js index 9c99d6b78f..79f4c7e390 100755 --- a/server/services/withings/lib/withings.init.js +++ b/server/services/withings/lib/withings.init.js @@ -276,10 +276,9 @@ async function init(userId) { const { serviceId } = this; const oauth2Manager = new OAuth2Manager(this.gladys); - const userResult = await oauth2Manager.executeQuery( + const userResult = await oauth2Manager.executeOauth2HTTPQuery( serviceId, - userId, - this.integrationName, + userId, 'get', `${this.withingsUrl}/v2/user`, 'action=getdevice', @@ -296,10 +295,9 @@ async function init(userId) { } }); - const measureResult = await oauth2Manager.executeQuery( + const measureResult = await oauth2Manager.executeOauth2HTTPQuery( serviceId, - userId, - this.integrationName, + userId, 'get', `${this.withingsUrl}/measure`, 'action=getmeas', From cfa2bd21c6f46d439cf46db9b9987268bc7052f5 Mon Sep 17 00:00:00 2001 From: Euguuu Date: Fri, 10 Dec 2021 18:32:53 +0100 Subject: [PATCH 010/164] fix server test --- front/src/components/oauth2/OAuth2Config.jsx | 6 +- front/src/components/oauth2/actions.js | 24 ++++--- front/src/config/i18n/en.json | 2 +- front/src/config/i18n/fr.json | 2 +- .../all/withings/device-page/Device.jsx | 1 + .../all/withings/settings-page/actions.js | 5 +- server/api/controllers/oauth2.controller.js | 67 +++++-------------- server/config/oauth2/providers.json | 20 ------ .../oauth2/oauth2.executeOauth2HTTPQuery.js | 20 +++--- server/seeders/20190226025931-variable.js | 7 -- .../withings/api/withings.controller.js | 45 +------------ server/services/withings/index.js | 24 ++++++- server/services/withings/lib/index.js | 4 -- .../withings/lib/withings.deleteVar.js | 4 +- .../withings/lib/withings.getServiceId.js | 13 ---- server/services/withings/lib/withings.init.js | 4 +- server/services/withings/lib/withings.poll.js | 13 ++-- .../services/withings/lib/withings.saveVar.js | 31 --------- .../withings/api/withings.controller.test.js | 36 ---------- server/test/services/withings/index.test.js | 19 +++++- .../lib/withings.getServiceId.test.js | 11 --- .../withings/lib/withings.init.test.js | 44 +++++++++--- .../withings/lib/withings.poll.test.js | 58 +++++++++++----- .../withings/lib/withings.saveVar.test.js | 26 ------- 24 files changed, 180 insertions(+), 306 deletions(-) delete mode 100644 server/config/oauth2/providers.json delete mode 100755 server/services/withings/lib/withings.getServiceId.js delete mode 100755 server/services/withings/lib/withings.saveVar.js delete mode 100644 server/test/services/withings/lib/withings.getServiceId.test.js delete mode 100644 server/test/services/withings/lib/withings.saveVar.test.js diff --git a/front/src/components/oauth2/OAuth2Config.jsx b/front/src/components/oauth2/OAuth2Config.jsx index 98236e0ff8..a520fbb804 100755 --- a/front/src/components/oauth2/OAuth2Config.jsx +++ b/front/src/components/oauth2/OAuth2Config.jsx @@ -55,9 +55,9 @@ const OAuth2Config = ({ integrationImg, integrationName, children, ...props }) = } - onInput={props.updateSecretId} - value={props.secretId} + placeholder={} + onInput={props.updateSecret} + value={props.secret} />

diff --git a/front/src/components/oauth2/actions.js b/front/src/components/oauth2/actions.js index 1323ee725d..5e07c63bcb 100755 --- a/front/src/components/oauth2/actions.js +++ b/front/src/components/oauth2/actions.js @@ -12,9 +12,9 @@ const actions = store => ({ clientId: e.target.value }); }, - updateSecretId(state, e) { + updateSecret(state, e) { store.setState({ - secretId: e.target.value + secret: e.target.value }); }, async getCurrentConfig(state) { @@ -25,7 +25,7 @@ const actions = store => ({ const returnServiceId = (await state.httpClient.get(`/api/v1/service/${state.integrationName}`)).id; const returnGetConfig = await state.httpClient.get('/api/v1/service/oauth2/client', { - serviceId: returnServiceId.result.serviceId + serviceId: returnServiceId }); if (returnGetConfig) { @@ -47,7 +47,7 @@ const actions = store => ({ oauth2GetStatus: RequestStatus.Getting }); try { - if (!state.secretId || !state.clientId) { + if (!state.secret || !state.clientId) { store.setState({ oauth2GetStatus: RequestStatus.Error, oauth2ErrorMsg: 'errorEmptyConfig' @@ -58,18 +58,22 @@ const actions = store => ({ const serviceId = (await state.httpClient.get(`/api/v1/service/${state.integrationName}`)).id; // Save Oauth2 variables - await state.httpClient.post(`/api/service/${state.integrationName}/variable/${OAUTH2.VARIABLE.CLIENT_ID}`, { + await state.httpClient.post(`/api/v1/service/${state.integrationName}/variable/${OAUTH2.VARIABLE.CLIENT_ID}`, { value: state.clientId, - secretId: state.secretId + userRelated: true }); - await state.httpClient.post(`/api/service/${state.integrationName}/variable/${OAUTH2.VARIABLE.CLIENT_SECRET}`, { - value: state.secretId - }); + await state.httpClient.post( + `/api/v1/service/${state.integrationName}/variable/${OAUTH2.VARIABLE.CLIENT_SECRET}`, + { + value: state.secret, + userRelated: true + } + ); const returnValue = await state.httpClient.post('/api/v1/service/oauth2/client/authorization-uri', { clientId: state.clientId, - secretId: state.secretId, + secret: state.secret, integrationName: state.integrationName, serviceId }); diff --git a/front/src/config/i18n/en.json b/front/src/config/i18n/en.json index 6d61196b0e..a368f70015 100644 --- a/front/src/config/i18n/en.json +++ b/front/src/config/i18n/en.json @@ -863,7 +863,7 @@ "errorServiceId": "Service Id of current integration must not be found!", "errorAuthorizationUri": "Error in authorization provider connection configuration!", "clientId": "Account client id", - "secretId": "Account client secret", + "secret": "Account client secret", "instructions": "In this stage please fill in the given client id and client secret key below and click on connect button.", "delete": "To delete your account configuration clic on 'Unconnect' button (all data will be deleted).", "unconnectButton": "Unconnect" diff --git a/front/src/config/i18n/fr.json b/front/src/config/i18n/fr.json index 8b8b91c127..4bc48e05b4 100644 --- a/front/src/config/i18n/fr.json +++ b/front/src/config/i18n/fr.json @@ -863,7 +863,7 @@ "errorServiceId": "Service Id de l'intégration courante n'a pas été trouvé !", "errorAuthorizationUri": "Erreur dans la configuration du provider pour l'autorisation de connexion !", "clientId": "Client id du compte", - "secretId": "Client secret du compte", + "secret": "Client secret du compte", "instructions": "À cette étape, veuillez remplir les champs client id et client secret ci-dessous et cliquez sur le bouton de connexion.", "delete": "Pour supprimer vos configuration de compte cliquer sur le bouton 'Déconneter' (toutes les données associées seront supprimées).", "unconnectButton": "Déconnecter" diff --git a/front/src/routes/integration/all/withings/device-page/Device.jsx b/front/src/routes/integration/all/withings/device-page/Device.jsx index fc67e87034..00d8ca0a3d 100644 --- a/front/src/routes/integration/all/withings/device-page/Device.jsx +++ b/front/src/routes/integration/all/withings/device-page/Device.jsx @@ -80,6 +80,7 @@ class WithingsDeviceBox extends Component { {<Text} /> diff --git a/front/src/routes/integration/all/withings/settings-page/actions.js b/front/src/routes/integration/all/withings/settings-page/actions.js index b0d5f37514..8b4c71eb0f 100755 --- a/front/src/routes/integration/all/withings/settings-page/actions.js +++ b/front/src/routes/integration/all/withings/settings-page/actions.js @@ -12,10 +12,9 @@ const actions = store => ({ if (state.currentUrl) { const queryParams = queryString.parse(state.currentUrl.substring(state.currentUrl.indexOf('?'))); if (queryParams && queryParams.code) { - const returnServiceId = await state.httpClient.get('/api/v1/service/withings/getServiceId'); - const serviceId = returnServiceId.result.serviceId; + const serviceId = (await state.httpClient.get(`/api/v1/service/withings`)).id; - await state.httpClient.post('/api/v1/service/oauth2/client/token-access-uri', { + await state.httpClient.post('/api/v1/service/oauth2/client/access-token-uri', { integrationName: 'withings', authorizationCode: queryParams.code, serviceId diff --git a/server/api/controllers/oauth2.controller.js b/server/api/controllers/oauth2.controller.js index 2c39b80473..f2f12bc874 100644 --- a/server/api/controllers/oauth2.controller.js +++ b/server/api/controllers/oauth2.controller.js @@ -12,41 +12,24 @@ module.exports = function OAuth2Controller(gladys) { */ async function buildAuthorizationUri(req, res) { // Find provider configuration - const tokenHost = await gladys.variable.getValue(`${OAUTH2.VARIABLE.TOKEN_HOST}`, req.body.serviceId, req.user.id); - const authorizeHost = await gladys.variable.getValue( - `${OAUTH2.VARIABLE.AUTHORIZE_HOST}`, - req.body.serviceId, - req.user.id, - ); - const authorizePath = await gladys.variable.getValue( - `${OAUTH2.VARIABLE.AUTHORIZE_PATH}`, - req.body.serviceId, - req.user.id, - ); - const integrationScope = await gladys.variable.getValue( - `${OAUTH2.VARIABLE.INTEGRATION_SCOPE}`, - req.body.serviceId, - req.user.id, - ); + const tokenHost = await gladys.variable.getValue(`${OAUTH2.VARIABLE.TOKEN_HOST}`, req.body.serviceId); + const authorizeHost = await gladys.variable.getValue(`${OAUTH2.VARIABLE.AUTHORIZE_HOST}`, req.body.serviceId); + const authorizePath = await gladys.variable.getValue(`${OAUTH2.VARIABLE.AUTHORIZE_PATH}`, req.body.serviceId); + const integrationScope = await gladys.variable.getValue(`${OAUTH2.VARIABLE.INTEGRATION_SCOPE}`, req.body.serviceId); const redirectUriSuffix = await gladys.variable.getValue( `${OAUTH2.VARIABLE.REDIRECT_URI_SUFFIX}`, req.body.serviceId, - req.user.id, ); // Get variale client id and client secret const clientId = await gladys.variable.getValue(`${OAUTH2.VARIABLE.CLIENT_ID}`, req.body.serviceId, req.user.id); - const secretId = await gladys.variable.getValue( - `${OAUTH2.VARIABLE.CLIENT_SECRET}`, - req.body.serviceId, - req.user.id, - ); + const secret = await gladys.variable.getValue(`${OAUTH2.VARIABLE.CLIENT_SECRET}`, req.body.serviceId, req.user.id); // Init credentials based on integration name const credentials = { client: { id: clientId, - secret: secretId, + secret, }, auth: { tokenHost, @@ -76,43 +59,26 @@ module.exports = function OAuth2Controller(gladys) { */ async function buildAccesTokenUri(req, res) { // Find provider configuration - const tokenHost = await gladys.variable.getValue(`${OAUTH2.VARIABLE.TOKEN_HOST}`, req.body.serviceId, req.user.id); - const tokenPath = await gladys.variable.getValue(`${OAUTH2.VARIABLE.TOKEN_PATH}`, req.body.serviceId, req.user.id); - const authorizeHost = await gladys.variable.getValue( - `${OAUTH2.VARIABLE.AUTHORIZE_HOST}`, - req.body.serviceId, - req.user.id, - ); - const authorizePath = await gladys.variable.getValue( - `${OAUTH2.VARIABLE.AUTHORIZE_PATH}`, - req.body.serviceId, - req.user.id, - ); - const grantType = await gladys.variable.getValue(`${OAUTH2.VARIABLE.GRANT_TYPE}`, req.body.serviceId, req.user.id); + const tokenHost = await gladys.variable.getValue(`${OAUTH2.VARIABLE.TOKEN_HOST}`, req.body.serviceId); + const tokenPath = await gladys.variable.getValue(`${OAUTH2.VARIABLE.TOKEN_PATH}`, req.body.serviceId); + const authorizeHost = await gladys.variable.getValue(`${OAUTH2.VARIABLE.AUTHORIZE_HOST}`, req.body.serviceId); + const authorizePath = await gladys.variable.getValue(`${OAUTH2.VARIABLE.AUTHORIZE_PATH}`, req.body.serviceId); + const grantType = await gladys.variable.getValue(`${OAUTH2.VARIABLE.GRANT_TYPE}`, req.body.serviceId); const redirectUriSuffix = await gladys.variable.getValue( `${OAUTH2.VARIABLE.REDIRECT_URI_SUFFIX}`, req.body.serviceId, - req.user.id, ); const { authorizationCode } = req.body; - const clientId = await gladys.variable.getValue( - `${req.body.integrationName.toUpperCase()}${OAUTH2.VARIABLE.CLIENT_ID}`, - req.body.serviceId, - req.user.id, - ); - const secretId = await gladys.variable.getValue( - `${req.body.integrationName.toUpperCase()}${OAUTH2.VARIABLE.CLIENT_SECRET}`, - req.body.serviceId, - req.user.id, - ); + const clientId = await gladys.variable.getValue(`${OAUTH2.VARIABLE.CLIENT_ID}`, req.body.serviceId, req.user.id); + const secret = await gladys.variable.getValue(`${OAUTH2.VARIABLE.CLIENT_SECRET}`, req.body.serviceId, req.user.id); // Init credentials based on integration name const credentials = { client: { id: clientId, - secret: secretId, + secret, }, auth: { tokenHost, @@ -121,11 +87,12 @@ module.exports = function OAuth2Controller(gladys) { authorizePath, }, }; + // Build token access request const tokenConfig = { code: authorizationCode, client_id: clientId, - client_secret: secretId, + client_secret: secret, grant_type: grantType, redirect_uri: `${req.headers.referer}${redirectUriSuffix}`, }; @@ -136,7 +103,7 @@ module.exports = function OAuth2Controller(gladys) { // Save accessToken await gladys.variable.setValue( - `${req.body.integrationName.toUpperCase()}${OAUTH2.VARIABLE.ACCESS_TOKEN}`, + `${OAUTH2.VARIABLE.ACCESS_TOKEN}`, JSON.stringify(authResult), req.body.serviceId, req.user.id, diff --git a/server/config/oauth2/providers.json b/server/config/oauth2/providers.json deleted file mode 100644 index 2851d9575b..0000000000 --- a/server/config/oauth2/providers.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "test": { - "tokenHost": "http://localhost:9292", - "tokenPath": "/oauth2/token", - "authorizeHost": "http://localhost:9292", - "authorizePath": "/oauth2_user/authorize2", - "integrationScope": "user.info,user.metrics,user.activity,user.sleepevents", - "grantType": "authorization_code", - "redirectUriSuffix": "dashboard/integration/health/test/settings" - }, - "withings": { - "tokenHost": "https://account.withings.com", - "tokenPath": "/oauth2/token", - "authorizeHost": "https://account.withings.com", - "authorizePath": "/oauth2_user/authorize2", - "integrationScope": "user.info,user.metrics,user.activity,user.sleepevents", - "grantType": "authorization_code", - "redirectUriSuffix": "dashboard/integration/health/withings/settings" - } -} diff --git a/server/lib/oauth2/oauth2.executeOauth2HTTPQuery.js b/server/lib/oauth2/oauth2.executeOauth2HTTPQuery.js index aaa26347ad..0ceeda1b25 100644 --- a/server/lib/oauth2/oauth2.executeOauth2HTTPQuery.js +++ b/server/lib/oauth2/oauth2.executeOauth2HTTPQuery.js @@ -16,22 +16,22 @@ const { OAUTH2 } = require('../../utils/constants'); */ async function refreshTokenAccess(serviceId, gladys, userId) { const clientId = await gladys.variable.getValue(`${OAUTH2.VARIABLE.CLIENT_ID}`, serviceId, userId); - const secretId = await gladys.variable.getValue(`${OAUTH2.VARIABLE.CLIENT_SECRET}`, serviceId, userId); + const secret = await gladys.variable.getValue(`${OAUTH2.VARIABLE.CLIENT_SECRET}`, serviceId, userId); const accessToken = JSON.parse(await gladys.variable.getValue(`${OAUTH2.VARIABLE.ACCESS_TOKEN}`, serviceId, userId)); logger.trace('accessToken: ', accessToken); // Find provider configuration - const tokenHost = await gladys.variable.getValue(`${OAUTH2.VARIABLE.TOKEN_HOST}`, serviceId, userId); - const tokenPath = await gladys.variable.getValue(`${OAUTH2.VARIABLE.TOKEN_PATH}`, serviceId, userId); - const authorizeHost = await gladys.variable.getValue(`${OAUTH2.VARIABLE.AUTHORIZE_HOST}`, serviceId, userId); - const authorizePath = await gladys.variable.getValue(`${OAUTH2.VARIABLE.AUTHORIZE_PATH}`, serviceId, userId); - const integrationScope = await gladys.variable.getValue(`${OAUTH2.VARIABLE.INTEGRATION_SCOPE}`, serviceId, userId); + const tokenHost = await gladys.variable.getValue(`${OAUTH2.VARIABLE.TOKEN_HOST}`, serviceId); + const tokenPath = await gladys.variable.getValue(`${OAUTH2.VARIABLE.TOKEN_PATH}`, serviceId); + const authorizeHost = await gladys.variable.getValue(`${OAUTH2.VARIABLE.AUTHORIZE_HOST}`, serviceId); + const authorizePath = await gladys.variable.getValue(`${OAUTH2.VARIABLE.AUTHORIZE_PATH}`, serviceId); + const integrationScope = await gladys.variable.getValue(`${OAUTH2.VARIABLE.INTEGRATION_SCOPE}`, serviceId); // Init credentials based on integration name const credentials = { client: { id: `${clientId}`, - secret: `${secretId}`, + secret: `${secret}`, }, auth: { tokenHost, @@ -43,7 +43,7 @@ async function refreshTokenAccess(serviceId, gladys, userId) { json: true, }, }; - + try { const client = new ClientCredentials(credentials); let authResult = await client.createToken(accessToken); @@ -54,7 +54,7 @@ async function refreshTokenAccess(serviceId, gladys, userId) { try { const refreshParams = { client_id: clientId, - client_secret: secretId, + client_secret: secret, scope: integrationScope, }; @@ -95,7 +95,7 @@ async function refreshTokenAccess(serviceId, gladys, userId) { async function executeOauth2HTTPQuery(serviceId, userId, queryType, queryUrl, queryParams) { // Refresh token access if needed const accesToken = await refreshTokenAccess(serviceId, this.gladys, userId); - + const headerConfig = { headers: { Authorization: `${accesToken.token.token_type} ${accesToken.token.access_token}`, diff --git a/server/seeders/20190226025931-variable.js b/server/seeders/20190226025931-variable.js index 8de1e5e587..4dbe37e0b9 100644 --- a/server/seeders/20190226025931-variable.js +++ b/server/seeders/20190226025931-variable.js @@ -59,7 +59,6 @@ module.exports = { id: '837seg11-1611-4695-b137-2d0182868f07', name: 'OAUTH2_TOKEN_HOST', service_id: 'a810b8db-6d04-4697-bed3-c4b72c996279', - user_id: '0cd30aef-9c4e-4a23-88e3-3547971296e5', value: 'http://localhost:9292', created_at: '2019-02-12 07:49:07.556 +00:00', updated_at: '2019-02-12 07:49:07.556 +00:00', @@ -68,7 +67,6 @@ module.exports = { id: '837seg11-8251-4695-b137-2d0182868f07', name: 'OAUTH2_TOKEN_PATH', service_id: 'a810b8db-6d04-4697-bed3-c4b72c996279', - user_id: '0cd30aef-9c4e-4a23-88e3-3547971296e5', value: '/oauth2/token', created_at: '2019-02-12 07:49:07.556 +00:00', updated_at: '2019-02-12 07:49:07.556 +00:00', @@ -77,7 +75,6 @@ module.exports = { id: '837seg11-7551-4695-b137-2d0182868f07', name: 'OAUTH2_AUTHORIZE_HOST', service_id: 'a810b8db-6d04-4697-bed3-c4b72c996279', - user_id: '0cd30aef-9c4e-4a23-88e3-3547971296e5', value: 'http://localhost:9292', created_at: '2019-02-12 07:49:07.556 +00:00', updated_at: '2019-02-12 07:49:07.556 +00:00', @@ -86,7 +83,6 @@ module.exports = { id: '837seg11-1932-4695-b137-2d0182868f07', name: 'OAUTH2_AUTHORIZE_PATH', service_id: 'a810b8db-6d04-4697-bed3-c4b72c996279', - user_id: '0cd30aef-9c4e-4a23-88e3-3547971296e5', value: '/oauth2_user/authorize2', created_at: '2019-02-12 07:49:07.556 +00:00', updated_at: '2019-02-12 07:49:07.556 +00:00', @@ -95,7 +91,6 @@ module.exports = { id: '837seg11-5951-4695-b137-2d0182868f07', name: 'OAUTH2_INTEGRATION_SCOPE', service_id: 'a810b8db-6d04-4697-bed3-c4b72c996279', - user_id: '0cd30aef-9c4e-4a23-88e3-3547971296e5', value: 'user.info,user.metrics,user.activity,user.sleepevents', created_at: '2019-02-12 07:49:07.556 +00:00', updated_at: '2019-02-12 07:49:07.556 +00:00', @@ -104,7 +99,6 @@ module.exports = { id: '837seg11-1631-4695-b137-2d0182868f07', name: 'OAUTH2_GRANT_TYPE', service_id: 'a810b8db-6d04-4697-bed3-c4b72c996279', - user_id: '0cd30aef-9c4e-4a23-88e3-3547971296e5', value: 'authorization_code', created_at: '2019-02-12 07:49:07.556 +00:00', updated_at: '2019-02-12 07:49:07.556 +00:00', @@ -113,7 +107,6 @@ module.exports = { id: '837seg11-1258-4695-b137-2d0182868f07', name: 'OAUTH2_REDIRECT_URI_SUFFIX', service_id: 'a810b8db-6d04-4697-bed3-c4b72c996279', - user_id: '0cd30aef-9c4e-4a23-88e3-3547971296e5', value: 'dashboard/integration/health/test/settings', created_at: '2019-02-12 07:49:07.556 +00:00', updated_at: '2019-02-12 07:49:07.556 +00:00', diff --git a/server/services/withings/api/withings.controller.js b/server/services/withings/api/withings.controller.js index e1739aa152..e49e6ea8dd 100755 --- a/server/services/withings/api/withings.controller.js +++ b/server/services/withings/api/withings.controller.js @@ -16,27 +16,8 @@ module.exports = function WithingsController(withingsHandler) { } /** - * @description Save clientId and secretId of withings oauth2 api. - * @api {post} /api/v1/service/withings/saveVar Save clientId and secretId of withings oauth2 api. - * @apiName saveVar - * @apiGroup Withings - */ - async function saveVar(req, res) { - const resultSaveVar = await withingsHandler.saveVar( - req.body.clientId, - req.body.secretId, - req.body.integrationName, - req.user.id, - ); - res.json({ - success: true, - result: resultSaveVar, - }); - } - - /** - * @description Delete clientId and secretId of withings oauth2 api. - * @api {get} /api/v1/service/withings/deleteConfig Delete clientId and secretId of withings oauth2 api. + * @description Delete clientId and secret of withings oauth2 api. + * @api {get} /api/v1/service/withings/deleteConfig Delete clientId and secret of withings oauth2 api. * @apiName deleteConfig * @apiGroup Withings */ @@ -48,36 +29,14 @@ module.exports = function WithingsController(withingsHandler) { }); } - /** - * @description Return the withings service id. - * @api {get} /api/v1/service/withings/getServiceId Return the withings service id. - * @apiName getServiceId - * @apiGroup Withings - */ - function getServiceId(req, res) { - const resultServiceId = withingsHandler.getServiceId(); - res.json({ - success: true, - result: resultServiceId, - }); - } - return { 'post /api/v1/service/withings/init': { authenticated: true, controller: asyncMiddleware(init), }, - 'post /api/v1/service/withings/saveVar': { - authenticated: true, - controller: asyncMiddleware(saveVar), - }, 'get /api/v1/service/withings/deleteConfig': { authenticated: true, controller: asyncMiddleware(deleteConfig), }, - 'get /api/v1/service/withings/getServiceId': { - authenticated: true, - controller: getServiceId, - }, }; }; diff --git a/server/services/withings/index.js b/server/services/withings/index.js index e588bae3b0..c146a7899c 100755 --- a/server/services/withings/index.js +++ b/server/services/withings/index.js @@ -1,9 +1,10 @@ const logger = require('../../utils/logger'); const WithingsHandler = require('./lib/index'); const WithingsController = require('./api/withings.controller'); +const { OAUTH2 } = require('../../utils/constants.js'); module.exports = function WithingsService(gladys, serviceId) { - const withingsHandler = new WithingsHandler(gladys, serviceId, 'https://wbsapi.withings.net'); + const withingsHandler = new WithingsHandler(gladys, serviceId, 'https://wbsapi.withings.net', 'withings'); /** * @public @@ -13,6 +14,27 @@ module.exports = function WithingsService(gladys, serviceId) { */ async function start() { logger.log('starting Withings service'); + + // check if variable necessary to oauth2 connection is in variable table + const tokenHost = await gladys.variable.getValue(`${OAUTH2.VARIABLE.TOKEN_HOST}`, serviceId); + if (!tokenHost) { + // Init variable in db + await gladys.variable.setValue(`${OAUTH2.VARIABLE.TOKEN_HOST}`, 'https://account.withings.com', serviceId); + await gladys.variable.setValue(`${OAUTH2.VARIABLE.TOKEN_PATH}`, '/oauth2/token', serviceId); + await gladys.variable.setValue(`${OAUTH2.VARIABLE.AUTHORIZE_HOST}`, 'https://account.withings.com', serviceId); + await gladys.variable.setValue(`${OAUTH2.VARIABLE.AUTHORIZE_PATH}`, '/oauth2_user/authorize2', serviceId); + await gladys.variable.setValue( + `${OAUTH2.VARIABLE.INTEGRATION_SCOPE}`, + 'user.info,user.metrics,user.activity,user.sleepevents', + serviceId, + ); + await gladys.variable.setValue(`${OAUTH2.VARIABLE.GRANT_TYPE}`, 'authorization_code', serviceId); + await gladys.variable.setValue( + `${OAUTH2.VARIABLE.REDIRECT_URI_SUFFIX}`, + 'dashboard/integration/health/withings/settings', + serviceId, + ); + } } /** diff --git a/server/services/withings/lib/index.js b/server/services/withings/lib/index.js index ec0d5dd4d8..b9b4d10e54 100755 --- a/server/services/withings/lib/index.js +++ b/server/services/withings/lib/index.js @@ -1,9 +1,7 @@ // COMMANDS const { init } = require('./withings.init'); -const { saveVar } = require('./withings.saveVar'); const { deleteVar } = require('./withings.deleteVar'); const { deleteDevices } = require('./withings.deleteDevices'); -const { getServiceId } = require('./withings.getServiceId'); const { poll } = require('./withings.poll'); /** @@ -28,10 +26,8 @@ const WithingsHandler = function WithingsHandler(gladys, serviceId, withingsServ // COMMANDS WithingsHandler.prototype.init = init; -WithingsHandler.prototype.saveVar = saveVar; WithingsHandler.prototype.deleteVar = deleteVar; WithingsHandler.prototype.deleteDevices = deleteDevices; -WithingsHandler.prototype.getServiceId = getServiceId; WithingsHandler.prototype.poll = poll; module.exports = WithingsHandler; diff --git a/server/services/withings/lib/withings.deleteVar.js b/server/services/withings/lib/withings.deleteVar.js index 92841925af..038d7c0cf1 100755 --- a/server/services/withings/lib/withings.deleteVar.js +++ b/server/services/withings/lib/withings.deleteVar.js @@ -14,8 +14,8 @@ const OAuth2Manager = require('../../../lib/oauth2'); */ async function deleteVar(integrationName, userId) { const oauth2Manager = new OAuth2Manager(this.gladys); - const oauth2SaveVarResult = await oauth2Manager.deleteClient(this.serviceId, userId); - return oauth2SaveVarResult; + const oauth2Result = await oauth2Manager.deleteClient(this.serviceId, userId); + return oauth2Result; } module.exports = { diff --git a/server/services/withings/lib/withings.getServiceId.js b/server/services/withings/lib/withings.getServiceId.js deleted file mode 100755 index faa0a83d32..0000000000 --- a/server/services/withings/lib/withings.getServiceId.js +++ /dev/null @@ -1,13 +0,0 @@ -/** - * @description Send the Withings service id. - * @returns {Object} Resolve with withings service id. - * @example - * withings.getServiceId(); - */ -function getServiceId() { - return { success: true, serviceId: this.serviceId }; -} - -module.exports = { - getServiceId, -}; diff --git a/server/services/withings/lib/withings.init.js b/server/services/withings/lib/withings.init.js index 79f4c7e390..733f9d2624 100755 --- a/server/services/withings/lib/withings.init.js +++ b/server/services/withings/lib/withings.init.js @@ -278,7 +278,7 @@ async function init(userId) { const userResult = await oauth2Manager.executeOauth2HTTPQuery( serviceId, - userId, + userId, 'get', `${this.withingsUrl}/v2/user`, 'action=getdevice', @@ -297,7 +297,7 @@ async function init(userId) { const measureResult = await oauth2Manager.executeOauth2HTTPQuery( serviceId, - userId, + userId, 'get', `${this.withingsUrl}/measure`, 'action=getmeas', diff --git a/server/services/withings/lib/withings.poll.js b/server/services/withings/lib/withings.poll.js index 9074850558..000ed0f7ba 100755 --- a/server/services/withings/lib/withings.poll.js +++ b/server/services/withings/lib/withings.poll.js @@ -3,6 +3,7 @@ const uuid = require('uuid'); const { DEVICE_FEATURE_TYPES } = require('../../../utils/constants'); const OAuth2Manager = require('../../../lib/oauth2'); const logger = require('../../../utils/logger'); +const { OAUTH2 } = require('../../../utils/constants.js'); /** * @description Poll value of a withings device. @@ -25,7 +26,11 @@ async function poll(device) { await Promise.map( users, async (user) => { - const withingsClienId = await this.gladys.variable.getValue('WITHINGS_CLIENT_ID', this.serviceId, user.id); + const withingsClienId = await this.gladys.variable.getValue( + `${OAUTH2.VARIABLE.CLIENT_ID}`, + this.serviceId, + user.id, + ); if (withingsClienId) { await Promise.each(device.features, async (feature) => { @@ -94,10 +99,9 @@ async function poll(device) { if (withingsType > 0) { logger.debug('Current feature last value changed: ', feature.last_value_changed); - const measureResult = await oauth2Manager.executeQuery( + const measureResult = await oauth2Manager.executeOauth2HTTPQuery( this.serviceId, user.id, - this.integrationName, 'get', `${this.withingsUrl}/measure`, `action=getmeas&meastype=${withingsType}&category=1&lastupdate=${feature.last_value_changed.getTime() / @@ -140,10 +144,9 @@ async function poll(device) { } if (withingsType === -1) { - const userResult = await oauth2Manager.executeQuery( + const userResult = await oauth2Manager.executeOauth2HTTPQuery( this.serviceId, user.id, - this.integrationName, 'get', `${this.withingsUrl}/v2/user`, 'action=getdevice', diff --git a/server/services/withings/lib/withings.saveVar.js b/server/services/withings/lib/withings.saveVar.js deleted file mode 100755 index b63579c18b..0000000000 --- a/server/services/withings/lib/withings.saveVar.js +++ /dev/null @@ -1,31 +0,0 @@ -const OAuth2Manager = require('../../../lib/oauth2'); - -/** - * @description Build and save withings device with access_token response and init feature values. - * @param {string} clientId - The client_id of oauth2. - * @param {string} secretId - The secret_id of oauth2. - * @param {string} integrationName - Name of oauth2 integration. - * @param {string} userId - Gladys userId of current session. - * @returns {Promise} Resolve with withings service id. - * @example - * withings.saveVar( - * 'b2f2c27f0bf3414e0fe3facfba7be9455109409a', - * '9d41fe14fz23414e0fe3facfba7be9455109409a', - * 'withings' - * 'fsd1fe14fz23414e0fe3facfba7be9455109409a', - * } - * ); - */ -async function saveVar(clientId, secretId, integrationName, userId) { - const oauth2Manager = new OAuth2Manager(this.gladys); - - const oauth2SaveVarResult = await oauth2Manager.saveVar(clientId, secretId, integrationName, this.serviceId, userId); - if (oauth2SaveVarResult.success) { - return { success: true, serviceId: this.serviceId }; - } - return { success: false, errorMsg: oauth2SaveVarResult.errorMsg }; -} - -module.exports = { - saveVar, -}; diff --git a/server/test/services/withings/api/withings.controller.test.js b/server/test/services/withings/api/withings.controller.test.js index 3d54a030c4..a1bf90773f 100644 --- a/server/test/services/withings/api/withings.controller.test.js +++ b/server/test/services/withings/api/withings.controller.test.js @@ -3,10 +3,8 @@ const WithingsController = require('../../../../services/withings/api/withings.c const withingsHandler = { init: fake.resolves({ device: { name: 'testServiceID' } }), - saveVar: fake.resolves({ success: true, serviceId: 'testServiceID' }), deleteVar: fake.resolves({ success: true }), deleteDevices: fake.resolves({ success: true }), - getServiceId: fake.returns({ success: true, serviceId: 'testServiceID' }), }; describe('WithingsController POST /api/v1/service/withings/init', () => { @@ -22,28 +20,6 @@ describe('WithingsController POST /api/v1/service/withings/init', () => { }); }); -describe('WithingsController POST /api/v1/service/withings/saveVar', () => { - const controller = WithingsController(withingsHandler); - - it('should save oauth2 var', async () => { - const req = { - body: { - clientId: '78sdfds7fsd7f8d3sf5sd4fds24vfd', - secretId: '45f7sd452f4181fsdf2sdfhgyrjy152', - integrationName: 'withings', - }, - user: { - id: 'fsdfdd452f4181fsdf2sdfhgyrjfdsfsd', - }, - }; - const res = { json: fake.returns(null) }; - - await controller['post /api/v1/service/withings/saveVar'].controller(req, res); - assert.calledOnce(withingsHandler.saveVar); - assert.calledOnce(res.json); - }); -}); - describe('WithingsController GET /api/v1/service/withings/deleteConfig', () => { const controller = WithingsController(withingsHandler); @@ -56,15 +32,3 @@ describe('WithingsController GET /api/v1/service/withings/deleteConfig', () => { assert.calledOnce(withingsHandler.deleteDevices); }); }); - -describe('WithingsController GET /api/v1/service/withings/getServiceId', () => { - const controller = WithingsController(withingsHandler); - - it('should return serviceId', () => { - const res = { json: fake.returns(null) }; - - controller['get /api/v1/service/withings/getServiceId'].controller(undefined, res); - assert.calledOnce(withingsHandler.getServiceId); - assert.calledOnce(res.json); - }); -}); diff --git a/server/test/services/withings/index.test.js b/server/test/services/withings/index.test.js index 0253c441eb..6948ba2d2d 100755 --- a/server/test/services/withings/index.test.js +++ b/server/test/services/withings/index.test.js @@ -10,7 +10,24 @@ const WithingsService = proxyquire('../../../services/withings', { }); describe('withingsService', () => { - const withingsService = WithingsService({}, '3ac129d9-a610-42f8-924f-3fe708001b3d'); + const withingsService = WithingsService( + { + variable: { + getValue: fake.returns( + '{' + + '"access_token":"b96a86b654acb01c2aeb4d5a39f10ff9c964f8e4",' + + '"expires_in":10800,' + + '"token_type":"Bearer",' + + '"scope":"user.info,user.metrics,user.activity,user.sleepevents",' + + '"refresh_token":"11757dc7fd8d25889f5edfd373d1f525f53d4942",' + + '"userid":"33669966",' + + '"expires_at":"2020-11-13T20:46:50.042Z"' + + '}', + ), + }, + }, + '3ac129d9-a610-42f8-924f-3fe708001b3d', + ); it('should start service', async () => { await withingsService.start(); }); diff --git a/server/test/services/withings/lib/withings.getServiceId.test.js b/server/test/services/withings/lib/withings.getServiceId.test.js deleted file mode 100644 index bc845af26b..0000000000 --- a/server/test/services/withings/lib/withings.getServiceId.test.js +++ /dev/null @@ -1,11 +0,0 @@ -const { expect } = require('chai'); -const WithingsHandler = require('../../../../services/withings/lib'); - -describe('WithingsHandler getServiceId', () => { - const withingsHandler = new WithingsHandler(null, '55f177d7-bc35-4560-a1f0-4c58b9e9f2c4', null, null); - - it('returns serviceId', () => { - const result = withingsHandler.getServiceId(); - expect(result).to.eql({ success: true, serviceId: '55f177d7-bc35-4560-a1f0-4c58b9e9f2c4' }); - }); -}); diff --git a/server/test/services/withings/lib/withings.init.test.js b/server/test/services/withings/lib/withings.init.test.js index 8209f4afd1..04fa7d85d5 100644 --- a/server/test/services/withings/lib/withings.init.test.js +++ b/server/test/services/withings/lib/withings.init.test.js @@ -3,6 +3,7 @@ const { OAuth2Server } = require('oauth2-mock-server'); const { fake } = require('sinon'); const ServerMock = require('mock-http-server'); const WithingsHandler = require('../../../../services/withings/lib'); +const { OAUTH2 } = require('../../../../utils/constants.js'); const serverOauth2 = new OAuth2Server(); const server = new ServerMock({ host: 'localhost', port: 9192 }, null); @@ -20,17 +21,38 @@ const gladys = { }, event: { emit: fake.returns(null) }, variable: { - getValue: fake.returns( - '{' + - '"access_token":"b96a86b654acb01c2aeb4d5a39f10ff9c964f8e4",' + - '"expires_in":10800,' + - '"token_type":"Bearer",' + - '"scope":"user.info,user.metrics,user.activity,user.sleepevents",' + - '"refresh_token":"11757dc7fd8d25889f5edfd373d1f525f53d4942",' + - '"userid":"33669966",' + - '"expires_at":"2020-11-13T20:46:50.042Z"' + - '}', - ), + getValue: function returnValue(key, serviceId) { + switch (key) { + case `${OAUTH2.VARIABLE.TOKEN_HOST}`: + return 'http://localhost:9292'; + case `${OAUTH2.VARIABLE.TOKEN_PATH}`: + return '/oauth2/token'; + case `${OAUTH2.VARIABLE.REDIRECT_URI_SUFFIX}`: + return 'ashboard/integration/health/test/settings'; + case `${OAUTH2.VARIABLE.AUTHORIZE_HOST}`: + return 'http://localhost:9292'; + case `${OAUTH2.VARIABLE.AUTHORIZE_PATH}`: + return '/oauth2_user/authorize2'; + case `${OAUTH2.VARIABLE.GRANT_TYPE}`: + return 'authorization_code'; + case `${OAUTH2.VARIABLE.INTEGRATION_SCOPE}`: + return 'user.info,user.metrics,user.activity,user.sleepevents'; + case `${OAUTH2.VARIABLE.ACCESS_TOKEN}`: + return ( + '{' + + '"access_token":"b96a86b654acb01c2aeb4d5a39f10ff9c964f8e4",' + + '"expires_in":10800,' + + '"token_type":"Bearer",' + + '"scope":"user.info,user.metrics,user.activity,user.sleepevents",' + + '"refresh_token":"11757dc7fd8d25889f5edfd373d1f525f53d4942",' + + '"userid":"33669966",' + + '"expires_at":"2020-11-13T20:46:50.042Z"' + + '}' + ); + default: + return ''; + } + }, setValue: fake.returns(null), destroy: fake.returns(null), }, diff --git a/server/test/services/withings/lib/withings.poll.test.js b/server/test/services/withings/lib/withings.poll.test.js index 3d0b49e9c5..85fc74672b 100644 --- a/server/test/services/withings/lib/withings.poll.test.js +++ b/server/test/services/withings/lib/withings.poll.test.js @@ -1,8 +1,10 @@ const ServerMock = require('mock-http-server'); +const chai = require('chai'); const { OAuth2Server } = require('oauth2-mock-server'); const sinon = require('sinon'); const WithingsHandler = require('../../../../services/withings/lib'); const { DEVICE_FEATURE_TYPES } = require('../../../../utils/constants'); +const { OAUTH2 } = require('../../../../utils/constants.js'); const { assert, fake } = sinon; @@ -10,16 +12,47 @@ const serverOauth2 = new OAuth2Server(); const server = new ServerMock({ host: 'localhost', port: 9192 }, null); +let countGetValueCall = 0; +let countGetValueCallClientId = 0; + const gladys = { variable: { - getValue: fake.resolves( - '{"access_token":"b96a86b654acb01c2aeb4d5a39f10ff9c964f8e4","expires_in":10800,' + - '"token_type":"Bearer",' + - '"scope":"user.info,user.metrics,user.activity,user.sleepevents",' + - '"refresh_token":"11757dc7fd8d25889f5edfd373d1f525f53d4942",' + - '"userid":"33669966",' + - '"expires_at":"2020-11-13T20:46:50.042Z"}', - ), + getValue: function returnValue(key, serviceId, userId) { + countGetValueCall += 1; + switch (key) { + case `${OAUTH2.VARIABLE.TOKEN_HOST}`: + return 'http://localhost:9292'; + case `${OAUTH2.VARIABLE.TOKEN_PATH}`: + return '/oauth2/token'; + case `${OAUTH2.VARIABLE.REDIRECT_URI_SUFFIX}`: + return 'ashboard/integration/health/test/settings'; + case `${OAUTH2.VARIABLE.AUTHORIZE_HOST}`: + return 'http://localhost:9292'; + case `${OAUTH2.VARIABLE.AUTHORIZE_PATH}`: + return '/oauth2_user/authorize2'; + case `${OAUTH2.VARIABLE.GRANT_TYPE}`: + return 'authorization_code'; + case `${OAUTH2.VARIABLE.INTEGRATION_SCOPE}`: + return 'user.info,user.metrics,user.activity,user.sleepevents'; + case `${OAUTH2.VARIABLE.ACCESS_TOKEN}`: + return ( + '{' + + '"access_token":"b96a86b654acb01c2aeb4d5a39f10ff9c964f8e4",' + + '"expires_in":10800,' + + '"token_type":"Bearer",' + + '"scope":"user.info,user.metrics,user.activity,user.sleepevents",' + + '"refresh_token":"11757dc7fd8d25889f5edfd373d1f525f53d4942",' + + '"userid":"33669966",' + + '"expires_at":"2020-11-13T20:46:50.042Z"' + + '}' + ); + case `${OAUTH2.VARIABLE.CLIENT_ID}`: + countGetValueCallClientId += 1; + return 'fake_client_id'; + default: + return ''; + } + }, setValue: fake.resolves(null), destroy: fake.returns(null), }, @@ -233,13 +266,8 @@ describe('WithingsHandler poll', () => { await withingsHandler.poll(deviceToPoll); - assert.callCount(gladys.variable.getValue, 52); - assert.calledWithExactly( - gladys.variable.getValue, - 'WITHINGS_CLIENT_ID', - '55f177d7-bc35-4560-a1f0-4c58b9e9f2c4', - '0cd30aef-9c4e-4a23-88e3-3547971296e5', - ); + chai.assert.equal(countGetValueCall, 137); + chai.assert.equal(countGetValueCallClientId, 18); const deviceDef = { id: 'gdfgdfgd-7207-4e55-b893-gfdgdfgkjliu', diff --git a/server/test/services/withings/lib/withings.saveVar.test.js b/server/test/services/withings/lib/withings.saveVar.test.js deleted file mode 100644 index 5f76db2453..0000000000 --- a/server/test/services/withings/lib/withings.saveVar.test.js +++ /dev/null @@ -1,26 +0,0 @@ -const { expect } = require('chai'); -const { fake } = require('sinon'); -const WithingsHandler = require('../../../../services/withings/lib'); - -const gladysOk = { - variable: { setValue: fake.resolves(null) }, -}; - -const gladysKo = { - variable: { setValue: fake.rejects('Fail to save') }, -}; - -describe('WithingsHandler saveVar', () => { - it('saves oauth2 vars', async () => { - const withingsHandler = new WithingsHandler(gladysOk, '55f177d7-bc35-4560-a1f0-4c58b9e9f2c4', null, null); - - const result = await withingsHandler.saveVar('789dsfds452fsdq27fze2ds', 'fdsf847f5re3f92d1', 'test', null); - expect(result).to.eql({ success: true, serviceId: '55f177d7-bc35-4560-a1f0-4c58b9e9f2c4' }); - }); - it('fails to save oauth2 vars', async () => { - const withingsHandler = new WithingsHandler(gladysKo, '55f177d7-bc35-4560-a1f0-4c58b9e9f2c4', null, null); - - const result = await withingsHandler.saveVar('789dsfds452fsdq27fze2ds', 'fdsf847f5re3f92d1', 'test', null); - expect(result).to.eql({ success: false, errorMsg: 'Fail to save' }); - }); -}); From 7558ee8db046b2983df657c2816eea3fc6abb5b1 Mon Sep 17 00:00:00 2001 From: Euguuu Date: Fri, 10 Dec 2021 19:18:58 +0100 Subject: [PATCH 011/164] fix translation --- front/src/config/i18n/en.json | 8 +++++++- front/src/config/i18n/fr.json | 8 +++++++- server/utils/constants.js | 1 - 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/front/src/config/i18n/en.json b/front/src/config/i18n/en.json index fd1298a48b..aa0aa50424 100644 --- a/front/src/config/i18n/en.json +++ b/front/src/config/i18n/en.json @@ -1556,12 +1556,16 @@ "watt": "Watt (W)", "kilowatt": "Kilowatt (kW)", "kilowatt-hour": "Kilowatt hour (kWh)", + "kg": "Kilogramme (kg)", "ampere": "Ampere (A)", "millivolt": "Millivolt (mV)", "volt": "Volt (V)", "ppm": "Parts per million (ppm)", "cm": "Centimeter (cm)", - "mm": "Millimeter (mm)" + "mm": "Millimeter (mm)", + "mmHg": "Millimeters of mercury (mmHg)", + "bpm": "Beats per minute (bpm)", + "m/s": "Meters per second (m/s)" }, "deviceFeatureUnitShort": { "celsius": "°C", @@ -1723,6 +1727,8 @@ "bed-activity": "Bed Activity" }, "health": { + "shortCategoryName": "Health", + "unknown": "Unknown", "weight": "Weight", "height": "Height", "fat-free-mass": "Fat Free Mass", diff --git a/front/src/config/i18n/fr.json b/front/src/config/i18n/fr.json index d3b017e085..b0d903550d 100644 --- a/front/src/config/i18n/fr.json +++ b/front/src/config/i18n/fr.json @@ -1556,12 +1556,16 @@ "watt": "Watt", "kilowatt": "Kilowatt", "kilowatt-hour": "Kilowatt heure (kWh)", + "kg": "Kilogramme (kg)", "ampere": "Ampère (A)", "millivolt": "Millivolt (mV)", "volt": "Volt (V)", "ppm": "Partie par million (ppm)", "cm": "Centimètre (cm)", - "mm": "Millimètre (mm)" + "mm": "Millimètre (mm)", + "mmHg": "Millimètres de mercure (mmHg)", + "bpm": "Battements par minute (bpm)", + "m/s": "Mètres par seconde (m/s)" }, "deviceFeatureUnitShort": { "celsius": "°C", @@ -1723,6 +1727,8 @@ "bed-activity": "Activité Lit" }, "health": { + "shortCategoryName": "Santé", + "unknown": "Inconnu", "weight": "Poids", "height": "Taille", "fat-free-mass": "Masse sans graisse", diff --git a/server/utils/constants.js b/server/utils/constants.js index 09cc57c55b..18c0ceeb1b 100644 --- a/server/utils/constants.js +++ b/server/utils/constants.js @@ -376,7 +376,6 @@ const DEVICE_FEATURE_TYPES = { CLICK: 'click', }, HEALTH: { - BATTERY: 'battery', WEIGHT: 'weight', HEIGHT: 'height', FAT_FREE_MASS: 'fat-free-mass', From c67823c8f98dbeba7b8b9a7bbe39e3b6b37270e4 Mon Sep 17 00:00:00 2001 From: Euguuu Date: Fri, 10 Dec 2021 20:01:57 +0100 Subject: [PATCH 012/164] fix cypress test --- .../routes/integration/withings/settings/WithingsSettings.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/front/cypress/integration/routes/integration/withings/settings/WithingsSettings.js b/front/cypress/integration/routes/integration/withings/settings/WithingsSettings.js index 29de0b0ee8..8dcb314497 100644 --- a/front/cypress/integration/routes/integration/withings/settings/WithingsSettings.js +++ b/front/cypress/integration/routes/integration/withings/settings/WithingsSettings.js @@ -52,7 +52,7 @@ describe('Withings settings page', () => { }); it('Check unconnect', () => { - cy.contains('button', 'integration.oauth2.buttonUnConnect').click(); + cy.contains('button', 'integration.oauth2.unconnectButton').click(); cy.get('.markup').i18n('integration.oauth2.instructions'); From 6ebf10759c0d7244b843e4d93963fc56d031950e Mon Sep 17 00:00:00 2001 From: Euguuu Date: Fri, 10 Dec 2021 20:16:51 +0100 Subject: [PATCH 013/164] improve server test --- server/test/services/withings/index.test.js | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/server/test/services/withings/index.test.js b/server/test/services/withings/index.test.js index 6948ba2d2d..65ead586a5 100755 --- a/server/test/services/withings/index.test.js +++ b/server/test/services/withings/index.test.js @@ -1,4 +1,5 @@ const { fake } = require('sinon'); +const { assert } = require('chai'); const proxyquire = require('proxyquire').noCallThru(); class WithingsHandler {} @@ -34,4 +35,24 @@ describe('withingsService', () => { it('should stop service', async () => { await withingsService.stop(); }); + + let countSetValueCount = 0; + const withingsServiceWithoutDBVar = WithingsService( + { + variable: { + getValue: fake.returns(null), + setValue: function returnValue(key, serviceId, userId) { + countSetValueCount += 1; + }, + }, + }, + '3ac129d9-a610-42f8-924f-3fe708001b3d', + ); + it('should start service (without db var)', async () => { + await withingsServiceWithoutDBVar.start(); + assert.equal(countSetValueCount, 7); + }); + it('should stop service (without db var)', async () => { + await withingsServiceWithoutDBVar.stop(); + }); }); From 3c71cd9e0feade8ec3fb88f15d14745e38000c7e Mon Sep 17 00:00:00 2001 From: Euguuu Date: Fri, 10 Dec 2021 20:32:20 +0100 Subject: [PATCH 014/164] improve server test --- .../services/withings/lib/withings.poll.test.js | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/server/test/services/withings/lib/withings.poll.test.js b/server/test/services/withings/lib/withings.poll.test.js index 85fc74672b..8de87c9da3 100644 --- a/server/test/services/withings/lib/withings.poll.test.js +++ b/server/test/services/withings/lib/withings.poll.test.js @@ -67,6 +67,8 @@ const gladys = { event: { emit: fake.returns(null) }, }; +let batteryValue = 'low'; + describe('WithingsHandler poll', () => { const withingsHandler = new WithingsHandler( gladys, @@ -90,7 +92,7 @@ describe('WithingsHandler poll', () => { type: 'string', model: 'string', model_id: 0, - battery: 'low', + battery: batteryValue, deviceid: 'withingsDevideId', timezone: 'string', last_session_date: 0, @@ -285,5 +287,17 @@ describe('WithingsHandler poll', () => { // 18 feature - 1 feature unknown = 17 state to save assert.callCount(gladys.device.saveHistoricalState, 17); assert.calledWith(gladys.device.saveHistoricalState, deviceDef); + + batteryValue = 'medium'; + await withingsHandler.poll(deviceToPoll); + assert.calledWith(gladys.device.saveHistoricalState, deviceDef); + + batteryValue = 'high'; + await withingsHandler.poll(deviceToPoll); + assert.calledWith(gladys.device.saveHistoricalState, deviceDef); + + batteryValue = 'n/a'; + await withingsHandler.poll(deviceToPoll); + assert.calledWith(gladys.device.saveHistoricalState, deviceDef); }); }); From 6eae869e82d13d57e0a215bae5c26a2b66a11ad8 Mon Sep 17 00:00:00 2001 From: Euguuu Date: Tue, 14 Dec 2021 21:29:38 +0100 Subject: [PATCH 015/164] fix test --- front/package.json | 2 +- server/package.json | 6 +-- server/seeders/20190226025931-variable.js | 6 +-- .../oauth2/oauth2.controller.test.js | 29 +++++++++++- server/test/lib/oauth2/oauth2manager.test.js | 22 ++++----- .../withings/lib/withings.init.test.js | 2 +- .../withings/lib/withings.poll.test.js | 45 ++++++++++++------- 7 files changed, 76 insertions(+), 36 deletions(-) diff --git a/front/package.json b/front/package.json index 33aaf6fc75..ee0da5f45e 100644 --- a/front/package.json +++ b/front/package.json @@ -64,7 +64,7 @@ "preact-i18n": "^2.4.0-preactx", "preact-router": "^3.2.1", "qrcode": "^1.4.2", - "query-string": "^6.12.1", + "query-string": "^7.0.1", "react-big-calendar": "^0.22.1", "react-datepicker": "^3.8.0", "react-select": "^4.3.1", diff --git a/server/package.json b/server/package.json index 61d26382bd..a06a33e21d 100644 --- a/server/package.json +++ b/server/package.json @@ -62,12 +62,12 @@ "jsdoc": "^3.6.7", "mocha": "^8.3.2", "mock-express-request": "^0.2.2", - "mock-http-server": "^1.4.2", + "mock-http-server": "^1.4.5", "nock": "^13.0.11", "nodemon": "^2.0.7", "npm-run-all": "^4.1.5", "nyc": "^15.1.0", - "oauth2-mock-server": "^3.1.0", + "oauth2-mock-server": "^4.1.1", "prettier": "^1.17.1", "proxyquire": "^2.1.0", "shx": "^0.3.2", @@ -99,7 +99,7 @@ "node-schedule": "^1.3.2", "node-webcrypto-ossl": "^1.0.48", "path-to-regexp": "^3.0.0", - "query-string": "^6.12.1", + "query-string": "^7.0.1", "queue": "^6.0.0", "semver": "^6.1.1", "sequelize": "^6.5.0", diff --git a/server/seeders/20190226025931-variable.js b/server/seeders/20190226025931-variable.js index 4dbe37e0b9..6a123706e5 100644 --- a/server/seeders/20190226025931-variable.js +++ b/server/seeders/20190226025931-variable.js @@ -67,7 +67,7 @@ module.exports = { id: '837seg11-8251-4695-b137-2d0182868f07', name: 'OAUTH2_TOKEN_PATH', service_id: 'a810b8db-6d04-4697-bed3-c4b72c996279', - value: '/oauth2/token', + value: '/token', created_at: '2019-02-12 07:49:07.556 +00:00', updated_at: '2019-02-12 07:49:07.556 +00:00', }, @@ -83,7 +83,7 @@ module.exports = { id: '837seg11-1932-4695-b137-2d0182868f07', name: 'OAUTH2_AUTHORIZE_PATH', service_id: 'a810b8db-6d04-4697-bed3-c4b72c996279', - value: '/oauth2_user/authorize2', + value: '/authorize2', created_at: '2019-02-12 07:49:07.556 +00:00', updated_at: '2019-02-12 07:49:07.556 +00:00', }, @@ -107,7 +107,7 @@ module.exports = { id: '837seg11-1258-4695-b137-2d0182868f07', name: 'OAUTH2_REDIRECT_URI_SUFFIX', service_id: 'a810b8db-6d04-4697-bed3-c4b72c996279', - value: 'dashboard/integration/health/test/settings', + value: '/dashboard/integration/health/test/settings', created_at: '2019-02-12 07:49:07.556 +00:00', updated_at: '2019-02-12 07:49:07.556 +00:00', }, diff --git a/server/test/controllers/oauth2/oauth2.controller.test.js b/server/test/controllers/oauth2/oauth2.controller.test.js index 30ccbe4e79..eb7e801b65 100755 --- a/server/test/controllers/oauth2/oauth2.controller.test.js +++ b/server/test/controllers/oauth2/oauth2.controller.test.js @@ -1,4 +1,4 @@ -const { expect } = require('chai'); +const { expect, assert } = require('chai'); const { OAuth2Server } = require('oauth2-mock-server'); const { buildOauth2Request } = require('./oauth2.request.test'); @@ -9,7 +9,7 @@ const server = new OAuth2Server(); describe('POST /api/v1/service/oauth2/client/authorization-uri', () => { before(async function testBefore() { // Generate a new RSA key and add it to the keystore - await server.issuer.keys.generateRSA(); + await server.issuer.keys.generate('RS256'); // Start the server await server.start(9292, 'localhost'); logger.debug('Issuer URL:', server.issuer.url); @@ -44,6 +44,17 @@ describe('POST /api/v1/service/oauth2/client/authorization-uri', () => { }); describe('POST /api/v1/service/oauth2/client/access-token-uri', () => { + before(async function testBefore() { + // Generate a new RSA key and add it to the keystore + await server.issuer.keys.generate('RS256'); + // Start the server + await server.start(9292, 'localhost'); + logger.debug('Issuer URL:', server.issuer.url); + }); + + after(async function testAfter() { + await server.stop(); + }); it('should get token access uri', async () => { const req = { integrationName: 'test', @@ -62,6 +73,7 @@ describe('POST /api/v1/service/oauth2/client/access-token-uri', () => { .then((res) => { expect(res.body).to.have.property('success'); expect(res.body).to.have.property('result'); + assert.equal(res.body.success, true); }); }); }); @@ -83,11 +95,23 @@ describe('POST /api/v1/service/oauth2/client/access-token-uri', () => { .then((res) => { expect(res.body).to.have.property('success'); expect(res.body).to.have.property('result'); + assert.equal(res.body.success, false); }); }); }); describe('GET /api/v1/service/oauth2/client', () => { + before(async function testBefore() { + // Generate a new RSA key and add it to the keystore + await server.issuer.keys.generate('RS256'); + // Start the server + await server.start(9292, 'localhost'); + logger.debug('Issuer URL:', server.issuer.url); + }); + + after(async function testAfter() { + await server.stop(); + }); it('should get token access uri', async () => { const req = { integrationName: 'test', @@ -105,6 +129,7 @@ describe('GET /api/v1/service/oauth2/client', () => { .then((res) => { expect(res.body).to.have.property('success'); expect(res.body).to.have.property('clientId'); + assert.equal(res.body.success, true); }); }); }); diff --git a/server/test/lib/oauth2/oauth2manager.test.js b/server/test/lib/oauth2/oauth2manager.test.js index aa52aa3ec4..1cd973ebb1 100755 --- a/server/test/lib/oauth2/oauth2manager.test.js +++ b/server/test/lib/oauth2/oauth2manager.test.js @@ -11,24 +11,26 @@ const server = new OAuth2Server(); const testServiceId = 'a810b8db-6d04-4697-bed3-c4b72c996279'; const testUserId = '0cd30aef-9c4e-4a23-88e3-3547971296e5'; +const testUrl = 'http://localhost:9292'; + const gladys = { variable: { getValue: function getValue(key, serviceId, userId) { switch (key) { case `${OAUTH2.VARIABLE.TOKEN_HOST}`: - return 'http://localhost:9292'; + return testUrl; case `${OAUTH2.VARIABLE.TOKEN_PATH}`: - return '/oauth2/token'; + return '/token'; case `${OAUTH2.VARIABLE.AUTHORIZE_HOST}`: - return 'http://localhost:9292'; + return testUrl; case `${OAUTH2.VARIABLE.AUTHORIZE_PATH}`: - return '/oauth2_user/authorize2'; + return '/authorize2'; case `${OAUTH2.VARIABLE.INTEGRATION_SCOPE}`: return 'user.info,user.metrics,user.activity,user.sleepevents'; case `${OAUTH2.VARIABLE.GRANT_TYPE}`: return 'authorization_code'; case `${OAUTH2.VARIABLE.REDIRECT_URI_SUFFIX}`: - return 'dashboard/integration/health/test/settings'; + return '/dashboard/integration/health/test/settings'; case `${OAUTH2.VARIABLE.ACCESS_TOKEN}`: return ( '{"access_token":"b96a86b654acb01c2aeb4d5a39f10ff9c964f8e4","expires_in":10800,' + @@ -53,7 +55,7 @@ const gladys = { describe('oauth2manager test', () => { before(async function testBefore() { // Generate a new RSA key and add it to the keystore - await server.issuer.keys.generateRSA(); + await server.issuer.keys.generate('RS256'); // Start the server await server.start(9292, 'localhost'); logger.debug('Issuer URL:', server.issuer.url); @@ -67,7 +69,7 @@ describe('oauth2manager test', () => { it('oauth manager get executeOauth2HTTPQuery test ', async () => { const queryType = 'get'; - const queryUrl = 'http://localhost:9292/userinfo'; + const queryUrl = `${testUrl}/userinfo`; const queryParams = 'param1=testParam'; const result = await manager.executeOauth2HTTPQuery(testServiceId, testUserId, queryType, queryUrl, queryParams); @@ -77,7 +79,7 @@ describe('oauth2manager test', () => { it('oauth manager post executeOauth2HTTPQuery test ', async () => { const queryType = 'post'; - const queryUrl = 'http://localhost:9292/revoke'; + const queryUrl = `${testUrl}/revoke`; const queryParams = 'param1=testParam'; logger.debug(manager); @@ -88,7 +90,7 @@ describe('oauth2manager test', () => { it('oauth manager get error executeOauth2HTTPQuery test ', async () => { const queryType = 'get'; - const queryUrl = 'http://localhost:9292/revoke'; + const queryUrl = `${testUrl}/revoke`; const queryParams = 'param1=testParam'; const result = await manager.executeOauth2HTTPQuery(testServiceId, testUserId, queryType, queryUrl, queryParams); @@ -98,7 +100,7 @@ describe('oauth2manager test', () => { it('oauth manager get error executeOauth2HTTPQuery test (bad integration name) ', async () => { const queryType = 'get'; - const queryUrl = 'http://localhost:9292/revoke'; + const queryUrl = `${testUrl}/revoke`; const queryParams = 'param1=testParam'; const result = await manager.executeOauth2HTTPQuery(testServiceId, 'fakeUserId', queryType, queryUrl, queryParams); diff --git a/server/test/services/withings/lib/withings.init.test.js b/server/test/services/withings/lib/withings.init.test.js index 04fa7d85d5..16fa80fda5 100644 --- a/server/test/services/withings/lib/withings.init.test.js +++ b/server/test/services/withings/lib/withings.init.test.js @@ -283,7 +283,7 @@ describe('WithingsHandler init', () => { // Start fake oatuh2 server // Generate a new RSA key and add it to the keystore - serverOauth2.issuer.keys.generateRSA(); + serverOauth2.issuer.keys.generate('RS256'); // Start the server serverOauth2.start(9292, 'localhost'); }); diff --git a/server/test/services/withings/lib/withings.poll.test.js b/server/test/services/withings/lib/withings.poll.test.js index 8de87c9da3..26ab045865 100644 --- a/server/test/services/withings/lib/withings.poll.test.js +++ b/server/test/services/withings/lib/withings.poll.test.js @@ -67,8 +67,6 @@ const gladys = { event: { emit: fake.returns(null) }, }; -let batteryValue = 'low'; - describe('WithingsHandler poll', () => { const withingsHandler = new WithingsHandler( gladys, @@ -92,11 +90,38 @@ describe('WithingsHandler poll', () => { type: 'string', model: 'string', model_id: 0, - battery: batteryValue, + battery: 'low', deviceid: 'withingsDevideId', timezone: 'string', last_session_date: 0, }, + { + type: 'string', + model: 'string', + model_id: 0, + battery: 'no', + deviceid: 'withingsDevideId2', + timezone: 'string', + last_session_date: 0, + }, + { + type: 'string', + model: 'string', + model_id: 0, + battery: 'medium', + deviceid: 'withingsDevideId3', + timezone: 'string', + last_session_date: 0, + }, + { + type: 'string', + model: 'string', + model_id: 0, + battery: 'high', + deviceid: 'withingsDevideId4', + timezone: 'string', + last_session_date: 0, + }, ], }, }), @@ -146,7 +171,7 @@ describe('WithingsHandler poll', () => { // Start fake oatuh2 server // Generate a new RSA key and add it to the keystore - serverOauth2.issuer.keys.generateRSA(); + serverOauth2.issuer.keys.generate('RS256'); // Start the server serverOauth2.start(9292, 'localhost'); }); @@ -287,17 +312,5 @@ describe('WithingsHandler poll', () => { // 18 feature - 1 feature unknown = 17 state to save assert.callCount(gladys.device.saveHistoricalState, 17); assert.calledWith(gladys.device.saveHistoricalState, deviceDef); - - batteryValue = 'medium'; - await withingsHandler.poll(deviceToPoll); - assert.calledWith(gladys.device.saveHistoricalState, deviceDef); - - batteryValue = 'high'; - await withingsHandler.poll(deviceToPoll); - assert.calledWith(gladys.device.saveHistoricalState, deviceDef); - - batteryValue = 'n/a'; - await withingsHandler.poll(deviceToPoll); - assert.calledWith(gladys.device.saveHistoricalState, deviceDef); }); }); From 4a3136066445ab0945bb32c69bcadaf1d690460b Mon Sep 17 00:00:00 2001 From: Euguuu Date: Tue, 14 Dec 2021 21:31:52 +0100 Subject: [PATCH 016/164] fix test --- front/package-lock.json | 31436 ++++++++++++++++++++++++++++++++++++- server/package-lock.json | 12820 ++++++++++++++- 2 files changed, 43808 insertions(+), 448 deletions(-) diff --git a/front/package-lock.json b/front/package-lock.json index 797a1adb4d..693a9a89da 100644 --- a/front/package-lock.json +++ b/front/package-lock.json @@ -1,7 +1,30722 @@ { "name": "gladys-front", + "lockfileVersion": 2, "requires": true, - "lockfileVersion": 1, + "packages": { + "": { + "name": "gladys-front", + "dependencies": { + "@gladysassistant/gladys-gateway-js": "^3.5.0", + "@gladysassistant/theme-optimized": "^1.0.3", + "@jaames/iro": "^5.5.2", + "@yaireo/tagify": "^4.5.0", + "apexcharts": "^3.29.0", + "axios": "^0.21.1", + "classnames": "^2.3.1", + "cropperjs": "^1.5.12", + "date-fns": "^2.22.1", + "dayjs": "^1.10.6", + "debounce": "^1.2.1", + "dotenv": "^6.2.0", + "get-value": "^3.0.1", + "immutability-helper": "^3.1.1", + "leaflet": "^1.7.1", + "linkstate": "^1.1.1", + "preact": "^10.5.14", + "preact-cli-plugin-fast-async": "^1.0.1", + "preact-i18n": "^2.4.0-preactx", + "preact-router": "^3.2.1", + "qrcode": "^1.4.2", + "query-string": "^7.0.1", + "react-big-calendar": "^0.22.1", + "react-datepicker": "^3.8.0", + "react-select": "^4.3.1", + "set-value": "^3.0.2", + "unistore": "^3.5.2", + "useragent-parser-js": "^1.0.3", + "uuid": "^3.4.0" + }, + "devDependencies": { + "@relative-ci/agent": "^2.0.0", + "compare-json": "^0.4.0", + "cross-env": "^5.2.0", + "cypress": "^6.9.1", + "eslint": "^4.19.1", + "eslint-config-prettier": "^4.0.0", + "eslint-config-synacor": "^2.0.2", + "eslint-plugin-cypress": "^2.11.3", + "eslint-plugin-json": "^1.4.0", + "eslint-plugin-preact-i18n": "^1.1.0", + "identity-obj-proxy": "^3.0.0", + "jest": "^21.2.1", + "per-env": "^1.0.2", + "preact-cli": "^3.2.2", + "preact-render-spy": "^1.2.1", + "prettier": "^1.17.1", + "sirv-cli": "^1.0.12" + }, + "engines": { + "node": "14.x", + "npm": "6.x" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.44.tgz", + "integrity": "sha512-cuAuTTIQ9RqcFRJ/Y8PvTh+paepNcaGxwQwjIDRWPXmzzyAeCO4KqS9ikMvq0MCbRk6GlYKwfzStrcP3/jSL8g==", + "dev": true, + "dependencies": { + "@babel/highlight": "7.0.0-beta.44" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.7.tgz", + "integrity": "sha512-nS6dZaISCXJ3+518CWiBfEr//gHyMO02uDxBkXTKZDN5POruCnOZ1N4YBRZDCabwF8nZMWBpRxIicmXtBs+fvw==", + "devOptional": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.6.tgz", + "integrity": "sha512-gJnOEWSqTk96qG5BoIrl5bVtc23DCycmIePPYnamY9RboYdI4nFy5vAQMSl81O5K/W0sLDWfGysnOECC+KUUCA==", + "devOptional": true, + "dependencies": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.14.5", + "@babel/helper-compilation-targets": "^7.14.5", + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helpers": "^7.14.6", + "@babel/parser": "^7.14.6", + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "devOptional": true, + "dependencies": { + "@babel/highlight": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core/node_modules/@babel/generator": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz", + "integrity": "sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==", + "devOptional": true, + "dependencies": { + "@babel/types": "^7.14.5", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core/node_modules/@babel/helper-function-name": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", + "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", + "devOptional": true, + "dependencies": { + "@babel/helper-get-function-arity": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core/node_modules/@babel/helper-get-function-arity": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", + "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", + "devOptional": true, + "dependencies": { + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core/node_modules/@babel/helper-split-export-declaration": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", + "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", + "devOptional": true, + "dependencies": { + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core/node_modules/@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "devOptional": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core/node_modules/@babel/template": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", + "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", + "devOptional": true, + "dependencies": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core/node_modules/@babel/traverse": { + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.7.tgz", + "integrity": "sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ==", + "devOptional": true, + "dependencies": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.14.5", + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-hoist-variables": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/parser": "^7.14.7", + "@babel/types": "^7.14.5", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core/node_modules/@babel/types": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "devOptional": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.5", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "devOptional": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/core/node_modules/json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "devOptional": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/core/node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "devOptional": true + }, + "node_modules/@babel/core/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "devOptional": true + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "devOptional": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.44.tgz", + "integrity": "sha512-5xVb7hlhjGcdkKpMXgicAVgx8syK5VJz193k0i/0sLP6DzE6lRrU1K3B/rFefgdo9LPGMAOOOAWW4jycj07ShQ==", + "dev": true, + "dependencies": { + "@babel/types": "7.0.0-beta.44", + "jsesc": "^2.5.1", + "lodash": "^4.2.0", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.14.5.tgz", + "integrity": "sha512-EivH9EgBIb+G8ij1B2jAwSH36WnGvkQSEC6CkX/6v6ZFlw5fVOHvsgGF4uiEHO2GzMvunZb6tDLQEQSdrdocrA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure/node_modules/@babel/types": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.5", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.14.5.tgz", + "integrity": "sha512-YTA/Twn0vBXDVGJuAX6PwW7x5zQei1luDDo2Pl6q1qZ7hVNl0RZrhHCQG/ArGpR29Vl7ETiB8eJyrvpuRp300w==", + "dev": true, + "dependencies": { + "@babel/helper-explode-assignable-expression": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor/node_modules/@babel/types": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.5", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.14.5.tgz", + "integrity": "sha512-v+QtZqXEiOnpO6EYvlImB6zCD2Lel06RzOPzmkz/D/XgQiUu3C/Jb1LOqSt/AIA34TYi/Q+KlT8vTQrgdxkbLw==", + "devOptional": true, + "dependencies": { + "@babel/compat-data": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.16.6", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/browserslist": { + "version": "4.16.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", + "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", + "devOptional": true, + "dependencies": { + "caniuse-lite": "^1.0.30001219", + "colorette": "^1.2.2", + "electron-to-chromium": "^1.3.723", + "escalade": "^3.1.1", + "node-releases": "^1.1.71" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/caniuse-lite": { + "version": "1.0.30001245", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001245.tgz", + "integrity": "sha512-768fM9j1PKXpOCKws6eTo3RHmvTUsG9UrpT4WoREFeZgJBTi4/X9g565azS/rVUGtqb8nt7FjLeF5u4kukERnA==", + "devOptional": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/electron-to-chromium": { + "version": "1.3.776", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.776.tgz", + "integrity": "sha512-V0w7eFSBoFPpdw4xexjVPZ770UDZIevSwkkj4W97XbE3IsCsTRFpa7/yXGZ88EOQAUEA09JMMsWK0xsw0kRAYw==", + "devOptional": true + }, + "node_modules/@babel/helper-compilation-targets/node_modules/node-releases": { + "version": "1.1.73", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz", + "integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==", + "devOptional": true + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "devOptional": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.6.tgz", + "integrity": "sha512-Z6gsfGofTxH/+LQXqYEK45kxmcensbzmk/oi8DmaQytlQCgqNZt9XQF8iqlI/SeXWVjaMNxvYvzaYw+kh42mDg==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-member-expression-to-functions": "^7.14.5", + "@babel/helper-optimise-call-expression": "^7.14.5", + "@babel/helper-replace-supers": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/@babel/helper-function-name": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", + "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", + "dev": true, + "dependencies": { + "@babel/helper-get-function-arity": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/@babel/helper-get-function-arity": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", + "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/@babel/helper-split-export-declaration": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", + "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/@babel/template": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", + "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/@babel/types": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.5", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.5.tgz", + "integrity": "sha512-TLawwqpOErY2HhWbGJ2nZT5wSkR192QpN+nBg1THfBfftrlvOh+WbhrxXCH4q4xJ9Gl16BGPR/48JA+Ryiho/A==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.14.5", + "regexpu-core": "^4.7.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz", + "integrity": "sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0-0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider/node_modules/@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider/node_modules/@babel/generator": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz", + "integrity": "sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.14.5", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider/node_modules/@babel/helper-function-name": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", + "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", + "dev": true, + "dependencies": { + "@babel/helper-get-function-arity": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider/node_modules/@babel/helper-get-function-arity": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", + "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider/node_modules/@babel/helper-module-imports": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", + "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider/node_modules/@babel/helper-split-export-declaration": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", + "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider/node_modules/@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider/node_modules/@babel/template": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", + "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider/node_modules/@babel/traverse": { + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.7.tgz", + "integrity": "sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.14.5", + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-hoist-variables": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/parser": "^7.14.7", + "@babel/types": "^7.14.5", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider/node_modules/@babel/types": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.5", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/helper-define-polyfill-provider/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "dependencies": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-explode-assignable-expression": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.14.5.tgz", + "integrity": "sha512-Htb24gnGJdIGT4vnRKMdoXiOIlqOLmdiUYpAQ0mYfgVT/GDm8GOYhgi4GL+hMKrkiPRohO4ts34ELFsGAPQLDQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-explode-assignable-expression/node_modules/@babel/types": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.5", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.44.tgz", + "integrity": "sha512-MHRG2qZMKMFaBavX0LWpfZ2e+hLloT++N7rfM3DYOMUOGCD8cVjqZpwiL8a0bOX3IYcQev1ruciT0gdFFRTxzg==", + "dev": true, + "dependencies": { + "@babel/helper-get-function-arity": "7.0.0-beta.44", + "@babel/template": "7.0.0-beta.44", + "@babel/types": "7.0.0-beta.44" + } + }, + "node_modules/@babel/helper-get-function-arity": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.44.tgz", + "integrity": "sha512-w0YjWVwrM2HwP6/H3sEgrSQdkCaxppqFeJtAnB23pRiJB5E/O9Yp7JAAeWBl+gGEgmBFinnTyOv2RN7rcSmMiw==", + "dev": true, + "dependencies": { + "@babel/types": "7.0.0-beta.44" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz", + "integrity": "sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ==", + "devOptional": true, + "dependencies": { + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables/node_modules/@babel/types": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "devOptional": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.5", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.14.7.tgz", + "integrity": "sha512-TMUt4xKxJn6ccjcOW7c4hlwyJArizskAhoSTOCkA0uZ+KghIaci0Qg9R043kUMWI9mtQfgny+NQ5QATnZ+paaA==", + "devOptional": true, + "dependencies": { + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions/node_modules/@babel/types": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "devOptional": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.5", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.5.tgz", + "integrity": "sha512-iXpX4KW8LVODuAieD7MzhNjmM6dzYY5tfRqT+R9HDXWl0jPn/djKmA+G9s/2C2T9zggw5tK1QNqZ70USfedOwA==", + "devOptional": true, + "dependencies": { + "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-replace-supers": "^7.14.5", + "@babel/helper-simple-access": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/helper-validator-identifier": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms/node_modules/@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "devOptional": true, + "dependencies": { + "@babel/highlight": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms/node_modules/@babel/generator": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz", + "integrity": "sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==", + "devOptional": true, + "dependencies": { + "@babel/types": "^7.14.5", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms/node_modules/@babel/helper-function-name": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", + "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", + "devOptional": true, + "dependencies": { + "@babel/helper-get-function-arity": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms/node_modules/@babel/helper-get-function-arity": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", + "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", + "devOptional": true, + "dependencies": { + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms/node_modules/@babel/helper-module-imports": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", + "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", + "devOptional": true, + "dependencies": { + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms/node_modules/@babel/helper-split-export-declaration": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", + "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", + "devOptional": true, + "dependencies": { + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms/node_modules/@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "devOptional": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms/node_modules/@babel/template": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", + "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", + "devOptional": true, + "dependencies": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms/node_modules/@babel/traverse": { + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.7.tgz", + "integrity": "sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ==", + "devOptional": true, + "dependencies": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.14.5", + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-hoist-variables": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/parser": "^7.14.7", + "@babel/types": "^7.14.5", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms/node_modules/@babel/types": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "devOptional": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.5", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "devOptional": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/helper-module-transforms/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "devOptional": true + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz", + "integrity": "sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA==", + "devOptional": true, + "dependencies": { + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression/node_modules/@babel/types": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "devOptional": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.5", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.14.5.tgz", + "integrity": "sha512-rLQKdQU+HYlxBwQIj8dk4/0ENOUEhA/Z0l4hN8BexpvmSMN9oA9EagjnhnDpNsRdWCfjwa4mn/HyBXO9yhQP6A==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-wrap-function": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator/node_modules/@babel/types": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.5", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.14.5.tgz", + "integrity": "sha512-3i1Qe9/8x/hCHINujn+iuHy+mMRLoc77b2nI9TB0zjH1hvn9qGlXjWlggdwUcju36PkPCy/lpM7LLUdcTyH4Ow==", + "devOptional": true, + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.14.5", + "@babel/helper-optimise-call-expression": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers/node_modules/@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "devOptional": true, + "dependencies": { + "@babel/highlight": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers/node_modules/@babel/generator": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz", + "integrity": "sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==", + "devOptional": true, + "dependencies": { + "@babel/types": "^7.14.5", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers/node_modules/@babel/helper-function-name": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", + "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", + "devOptional": true, + "dependencies": { + "@babel/helper-get-function-arity": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers/node_modules/@babel/helper-get-function-arity": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", + "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", + "devOptional": true, + "dependencies": { + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers/node_modules/@babel/helper-split-export-declaration": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", + "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", + "devOptional": true, + "dependencies": { + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers/node_modules/@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "devOptional": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers/node_modules/@babel/template": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", + "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", + "devOptional": true, + "dependencies": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers/node_modules/@babel/traverse": { + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.7.tgz", + "integrity": "sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ==", + "devOptional": true, + "dependencies": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.14.5", + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-hoist-variables": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/parser": "^7.14.7", + "@babel/types": "^7.14.5", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers/node_modules/@babel/types": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "devOptional": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.5", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "devOptional": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/helper-replace-supers/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "devOptional": true + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.14.5.tgz", + "integrity": "sha512-nfBN9xvmCt6nrMZjfhkl7i0oTV3yxR4/FztsbOASyTvVcoYd0TRHh7eMLdlEcCqobydC0LAF3LtC92Iwxo0wyw==", + "devOptional": true, + "dependencies": { + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access/node_modules/@babel/types": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "devOptional": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.5", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.14.5.tgz", + "integrity": "sha512-dmqZB7mrb94PZSAOYtr+ZN5qt5owZIAgqtoTuqiFbHFtxgEcmQlRJVI+bO++fciBunXtB6MK7HrzrfcAzIz2NQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers/node_modules/@babel/types": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.5", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.44.tgz", + "integrity": "sha512-aQ7QowtkgKKzPGf0j6u77kBMdUFVBKNHw2p/3HX/POt5/oz8ec5cs0GwlgM8Hz7ui5EwJnzyfRmkNF1Nx1N7aA==", + "dev": true, + "dependencies": { + "@babel/types": "7.0.0-beta.44" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz", + "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==", + "devOptional": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "devOptional": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.14.5.tgz", + "integrity": "sha512-YEdjTCq+LNuNS1WfxsDCNpgXkJaIyqco6DAelTUjT4f2KIWC1nBcaCaSdHTBqQVLnTBexBcVcFhLSU1KnYuePQ==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function/node_modules/@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function/node_modules/@babel/generator": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz", + "integrity": "sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.14.5", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function/node_modules/@babel/helper-function-name": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", + "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", + "dev": true, + "dependencies": { + "@babel/helper-get-function-arity": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function/node_modules/@babel/helper-get-function-arity": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", + "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function/node_modules/@babel/helper-split-export-declaration": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", + "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function/node_modules/@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function/node_modules/@babel/template": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", + "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function/node_modules/@babel/traverse": { + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.7.tgz", + "integrity": "sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.14.5", + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-hoist-variables": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/parser": "^7.14.7", + "@babel/types": "^7.14.5", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function/node_modules/@babel/types": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.5", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/helper-wrap-function/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@babel/helpers": { + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.6.tgz", + "integrity": "sha512-yesp1ENQBiLI+iYHSJdoZKUtRpfTlL1grDIX9NRlAVppljLw/4tTyYupIB7uIYmC3stW/imAv8EqaKaS/ibmeA==", + "devOptional": true, + "dependencies": { + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers/node_modules/@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "devOptional": true, + "dependencies": { + "@babel/highlight": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers/node_modules/@babel/generator": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz", + "integrity": "sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==", + "devOptional": true, + "dependencies": { + "@babel/types": "^7.14.5", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers/node_modules/@babel/helper-function-name": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", + "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", + "devOptional": true, + "dependencies": { + "@babel/helper-get-function-arity": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers/node_modules/@babel/helper-get-function-arity": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", + "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", + "devOptional": true, + "dependencies": { + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers/node_modules/@babel/helper-split-export-declaration": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", + "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", + "devOptional": true, + "dependencies": { + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers/node_modules/@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "devOptional": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers/node_modules/@babel/template": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", + "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", + "devOptional": true, + "dependencies": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers/node_modules/@babel/traverse": { + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.7.tgz", + "integrity": "sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ==", + "devOptional": true, + "dependencies": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.14.5", + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-hoist-variables": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/parser": "^7.14.7", + "@babel/types": "^7.14.5", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers/node_modules/@babel/types": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "devOptional": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.5", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "devOptional": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/helpers/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "devOptional": true + }, + "node_modules/@babel/highlight": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.44.tgz", + "integrity": "sha512-Il19yJvy7vMFm8AVAh6OZzaFoAd0hbkeMZiX3P5HGD+z7dyI7RzndHB0dg6Urh/VAFfHtpOIzDUSxmY6coyZWQ==", + "dev": true, + "dependencies": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^3.0.0" + } + }, + "node_modules/@babel/highlight/node_modules/js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "node_modules/@babel/parser": { + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.7.tgz", + "integrity": "sha512-X67Z5y+VBJuHB/RjwECp8kSl5uYi0BvRbNeWqkaJCVh+LiTPl19WBUfG627psSgp9rSf6ojuXghQM3ha6qHHdA==", + "devOptional": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.14.5.tgz", + "integrity": "sha512-ZoJS2XCKPBfTmL122iP6NM9dOg+d4lc9fFk3zxc8iDjvt8Pk4+TlsHSKhIPf6X+L5ORCdBzqMZDjL/WHj7WknQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5", + "@babel/plugin-proposal-optional-chaining": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.14.7.tgz", + "integrity": "sha512-RK8Wj7lXLY3bqei69/cc25gwS5puEc3dknoFPFbqfy3XxYQBQFvu4ioWpafMBAB+L9NyptQK4nMOa5Xz16og8Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.14.5", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz", + "integrity": "sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.14.5.tgz", + "integrity": "sha512-KBAH5ksEnYHCegqseI5N9skTdxgJdmDoAOc0uXa+4QMYKeZD0w5IARh4FMlTNtaHhbB8v+KzMdTgxMMzsIy6Yg==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-proposal-decorators": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.14.5.tgz", + "integrity": "sha512-LYz5nvQcvYeRVjui1Ykn28i+3aUiXwQ/3MGoEy0InTaz1pJo/lAzmIDXX+BQny/oufgHzJ6vnEEiXQ8KZjEVFg==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-decorators": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-dynamic-import": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.5.tgz", + "integrity": "sha512-ExjiNYc3HDN5PXJx+bwC50GIx/KKanX2HiggnIUAYedbARdImiCU4RhhHfdf0Kd7JNXGpsBBBCOm+bBVy3Gb0g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-export-namespace-from": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.5.tgz", + "integrity": "sha512-g5POA32bXPMmSBu5Dx/iZGLGnKmKPc5AiY7qfZgurzrCYgIztDlHFbznSNCoQuv57YQLnQfaDi7dxCtLDIdXdA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-json-strings": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.5.tgz", + "integrity": "sha512-NSq2fczJYKVRIsUJyNxrVUMhB27zb7N7pOFGQOhBKJrChbGcgEAqyZrmZswkPk18VMurEeJAaICbfm57vUeTbQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.5.tgz", + "integrity": "sha512-YGn2AvZAo9TwyhlLvCCWxD90Xq8xJ4aSgaX3G5D/8DW94L8aaT+dS5cSP+Z06+rCJERGSr9GxMBZ601xoc2taw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.5.tgz", + "integrity": "sha512-gun/SOnMqjSb98Nkaq2rTKMwervfdAoz6NphdY0vTfuzMfryj+tDGb2n6UkDKwez+Y8PZDhE3D143v6Gepp4Hg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.5.tgz", + "integrity": "sha512-yiclALKe0vyZRZE0pS6RXgjUOt87GWv6FYa5zqj15PvhOGFO69R5DusPlgK/1K5dVnCtegTiWu9UaBSrLLJJBg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.14.7.tgz", + "integrity": "sha512-082hsZz+sVabfmDWo1Oct1u1AgbKbUAyVgmX4otIc7bdsRgHBXwTwb3DpDmD4Eyyx6DNiuz5UAATT655k+kL5g==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.14.7", + "@babel/helper-compilation-targets": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-catch-binding": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.5.tgz", + "integrity": "sha512-3Oyiixm0ur7bzO5ybNcZFlmVsygSIQgdOa7cTfOYCMY+wEPAYhZAJxi3mixKFCTCKUhQXuCTtQ1MzrpL3WT8ZQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.5.tgz", + "integrity": "sha512-ycz+VOzo2UbWNI1rQXxIuMOzrDdHGrI23fRiz/Si2R4kv2XZQ1BK8ccdHwehMKBlcH/joGW/tzrUmo67gbJHlQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.14.5.tgz", + "integrity": "sha512-838DkdUA1u+QTCplatfq4B7+1lnDa/+QMI89x5WZHBcnNv+47N8QEj2k9I2MUU9xIv8XJ4XvPCviM/Dj7Uwt9g==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-62EyfyA3WA0mZiF2e2IV9mc9Ghwxcg8YTu8BS4Wss4Y3PY725OmS9M0qLORbJwLqFtGh+jiE4wAmocK2CTUK2Q==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-unicode-property-regex": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.14.5.tgz", + "integrity": "sha512-6axIeOU5LnY471KenAB9vI8I5j7NQ2d652hIYwVyRfgaZT5UpiqFKCuVXCDMSrU+3VFafnu2c5m3lrWIlr6A5Q==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-decorators": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.14.5.tgz", + "integrity": "sha512-c4sZMRWL4GSvP1EXy0woIP7m4jkVcEuG8R1TOZxPBPtp4FSM/kiPZub9UIs/Jrb5ZAOzvTUSGYrWsrSu1JvoPw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz", + "integrity": "sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz", + "integrity": "sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.14.5.tgz", + "integrity": "sha512-KOnO0l4+tD5IfOdi4x8C1XmEIRWUjNRV8wc6K2vz/3e8yAOoZZvsRXRRIF/yo/MAOFb4QjtAw9xSxMXbSMRy8A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.14.5.tgz", + "integrity": "sha512-szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator/node_modules/@babel/helper-module-imports": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", + "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator/node_modules/@babel/types": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.5", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.14.5.tgz", + "integrity": "sha512-dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.5.tgz", + "integrity": "sha512-LBYm4ZocNgoCqyxMLoOnwpsmQ18HWTQvql64t3GvMUzLQrNoV1BDG0lNftC8QKYERkZgCCT/7J5xWGObGAyHDw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.14.5.tgz", + "integrity": "sha512-J4VxKAMykM06K/64z9rwiL6xnBHgB1+FVspqvlgCdwD1KUbQNfszeKVVOMh59w3sztHYIZDgnhOC4WbdEfHFDA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-optimise-call-expression": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes/node_modules/@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/plugin-transform-classes/node_modules/@babel/helper-function-name": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", + "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", + "dev": true, + "dependencies": { + "@babel/helper-get-function-arity": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/plugin-transform-classes/node_modules/@babel/helper-get-function-arity": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", + "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/plugin-transform-classes/node_modules/@babel/helper-split-export-declaration": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", + "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/plugin-transform-classes/node_modules/@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/plugin-transform-classes/node_modules/@babel/template": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", + "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/plugin-transform-classes/node_modules/@babel/types": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.5", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.14.5.tgz", + "integrity": "sha512-pWM+E4283UxaVzLb8UBXv4EIxMovU4zxT1OPnpHJcmnvyY9QbPPTKZfEj31EUvG3/EQRbYAGaYEUZ4yWOBC2xg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.7.tgz", + "integrity": "sha512-0mDE99nK+kVh3xlc5vKwB6wnP9ecuSj+zQCa/n0voENtP/zymdT4HH6QEb65wjjcbqr1Jb/7z9Qp7TF5FtwYGw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.14.5.tgz", + "integrity": "sha512-loGlnBdj02MDsFaHhAIJzh7euK89lBrGIdM9EAtHFo6xKygCUGuuWe07o1oZVk287amtW1n0808sQM99aZt3gw==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.14.5.tgz", + "integrity": "sha512-iJjbI53huKbPDAsJ8EmVmvCKeeq21bAze4fu9GBQtSLqfvzj2oRuHVx4ZkDwEhg1htQ+5OBZh/Ab0XDf5iBZ7A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.14.5.tgz", + "integrity": "sha512-jFazJhMBc9D27o9jDnIE5ZErI0R0m7PbKXVq77FFvqFbzvTMuv8jaAwLZ5PviOLSFttqKIW0/wxNSDbjLk0tYA==", + "dev": true, + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.14.5.tgz", + "integrity": "sha512-CfmqxSUZzBl0rSjpoQSFoR9UEj3HzbGuGNL21/iFTmjb5gFggJp3ph0xR1YBhexmLoKRHzgxuFvty2xdSt6gTA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.14.5.tgz", + "integrity": "sha512-vbO6kv0fIzZ1GpmGQuvbwwm+O4Cbm2NrPzwlup9+/3fdkuzo1YqOZcXw26+YUJB84Ja7j9yURWposEHLYwxUfQ==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name/node_modules/@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/plugin-transform-function-name/node_modules/@babel/helper-function-name": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", + "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", + "dev": true, + "dependencies": { + "@babel/helper-get-function-arity": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/plugin-transform-function-name/node_modules/@babel/helper-get-function-arity": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", + "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/plugin-transform-function-name/node_modules/@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/plugin-transform-function-name/node_modules/@babel/template": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", + "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/plugin-transform-function-name/node_modules/@babel/types": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.5", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.14.5.tgz", + "integrity": "sha512-ql33+epql2F49bi8aHXxvLURHkxJbSmMKl9J5yHqg4PLtdE6Uc48CH1GS6TQvZ86eoB/ApZXwm7jlA+B3kra7A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.14.5.tgz", + "integrity": "sha512-WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.5.tgz", + "integrity": "sha512-3lpOU8Vxmp3roC4vzFpSdEpGUWSMsHFreTWOMMLzel2gNGfHE5UWIh/LN6ghHs2xurUp4jRFYMUIZhuFbody1g==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.5.tgz", + "integrity": "sha512-en8GfBtgnydoao2PS+87mKyw62k02k7kJ9ltbKe0fXTHrQmG6QZZflYuGI1VVG7sVpx4E1n7KBpNlPb8m78J+A==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-simple-access": "^7.14.5", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.14.5.tgz", + "integrity": "sha512-mNMQdvBEE5DcMQaL5LbzXFMANrQjd2W7FPzg34Y4yEz7dBgdaC+9B84dSO+/1Wba98zoDbInctCDo4JGxz1VYA==", + "dev": true, + "dependencies": { + "@babel/helper-hoist-variables": "^7.14.5", + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-identifier": "^7.14.5", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.5.tgz", + "integrity": "sha512-RfPGoagSngC06LsGUYyM9QWSXZ8MysEjDJTAea1lqRjNECE3y0qIJF/qbvJxc4oA4s99HumIMdXOrd+TdKaAAA==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.14.7.tgz", + "integrity": "sha512-DTNOTaS7TkW97xsDMrp7nycUVh6sn/eq22VaxWfEdzuEbRsiaOU0pqU7DlyUGHVsbQbSghvjKRpEl+nUCKGQSg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.14.5.tgz", + "integrity": "sha512-Nx054zovz6IIRWEB49RDRuXGI4Gy0GMgqG0cII9L3MxqgXz/+rgII+RU58qpo4g7tNEx1jG7rRVH4ihZoP4esQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-assign": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.14.5.tgz", + "integrity": "sha512-lvhjk4UN9xJJYB1mI5KC0/o1D5EcJXdbhVe+4fSk08D6ZN+iuAIs7LJC+71h8av9Ew4+uRq9452v9R93SFmQlQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.14.5.tgz", + "integrity": "sha512-MKfOBWzK0pZIrav9z/hkRqIk/2bTv9qvxHzPQc12RcVkMOzpIKnFCNYJip00ssKWYkd8Sf5g0Wr7pqJ+cmtuFg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.14.5.tgz", + "integrity": "sha512-Tl7LWdr6HUxTmzQtzuU14SqbgrSKmaR77M0OKyq4njZLQTPfOvzblNKyNkGwOfEFCEx7KeYHQHDI0P3F02IVkA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.14.5.tgz", + "integrity": "sha512-r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.14.5.tgz", + "integrity": "sha512-7RylxNeDnxc1OleDm0F5Q/BSL+whYRbOAR+bwgCxIr0L32v7UFh/pz1DLMZideAUxKT6eMoS2zQH6fyODLEi8Q==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-jsx": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx/node_modules/@babel/helper-module-imports": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", + "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx/node_modules/@babel/types": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.5", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.14.5.tgz", + "integrity": "sha512-NVIY1W3ITDP5xQl50NgTKlZ0GrotKtLna08/uGY6ErQt6VEQZXla86x/CTddm5gZdcr+5GSsvMeTmWA5Ii6pkg==", + "dev": true, + "dependencies": { + "regenerator-transform": "^0.14.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.14.5.tgz", + "integrity": "sha512-cv4F2rv1nD4qdexOGsRQXJrOcyb5CrgjUH9PKrrtyhSDBNWGxd0UIitjyJiWagS+EbUGjG++22mGH1Pub8D6Vg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.14.5.tgz", + "integrity": "sha512-xLucks6T1VmGsTB+GWK5Pl9Jl5+nRXD1uoFdA5TSO6xtiNjtXTjKkmPdFXVLGlK5A2/or/wQMKfmQ2Y0XJfn5g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.14.6.tgz", + "integrity": "sha512-Zr0x0YroFJku7n7+/HH3A2eIrGMjbmAIbJSVv0IZ+t3U2WUQUA64S/oeied2e+MaGSjmt4alzBCsK9E8gh+fag==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.14.5.tgz", + "integrity": "sha512-Z7F7GyvEMzIIbwnziAZmnSNpdijdr4dWt+FJNBnBLz5mwDFkqIXU9wmBcWWad3QeJF5hMTkRe4dAq2sUZiG+8A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.14.5.tgz", + "integrity": "sha512-22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.14.5.tgz", + "integrity": "sha512-lXzLD30ffCWseTbMQzrvDWqljvZlHkXU+CnseMhkMNqU1sASnCsz3tSzAaH3vCUXb9PHeUb90ZT1BdFTm1xxJw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.14.6.tgz", + "integrity": "sha512-XlTdBq7Awr4FYIzqhmYY80WN0V0azF74DMPyFqVHBvf81ZUgc4X7ZOpx6O8eLDK6iM5cCQzeyJw0ynTaefixRA==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.14.6", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-typescript": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.14.5.tgz", + "integrity": "sha512-crTo4jATEOjxj7bt9lbYXcBAM3LZaUrbP2uUdxb6WIorLmjNKSpHfIybgY4B8SRpbf8tEVIWH3Vtm7ayCrKocA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.14.5.tgz", + "integrity": "sha512-UygduJpC5kHeCiRw/xDVzC+wj8VaYSoKl5JNVmbP7MadpNinAm3SvZCxZ42H37KZBKztz46YC73i9yV34d0Tzw==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.14.7.tgz", + "integrity": "sha512-itOGqCKLsSUl0Y+1nSfhbuuOlTs0MJk2Iv7iSH+XT/mR8U1zRLO7NjWlYXB47yhK4J/7j+HYty/EhFZDYKa/VA==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.14.7", + "@babel/helper-compilation-targets": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.14.5", + "@babel/plugin-proposal-async-generator-functions": "^7.14.7", + "@babel/plugin-proposal-class-properties": "^7.14.5", + "@babel/plugin-proposal-class-static-block": "^7.14.5", + "@babel/plugin-proposal-dynamic-import": "^7.14.5", + "@babel/plugin-proposal-export-namespace-from": "^7.14.5", + "@babel/plugin-proposal-json-strings": "^7.14.5", + "@babel/plugin-proposal-logical-assignment-operators": "^7.14.5", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5", + "@babel/plugin-proposal-numeric-separator": "^7.14.5", + "@babel/plugin-proposal-object-rest-spread": "^7.14.7", + "@babel/plugin-proposal-optional-catch-binding": "^7.14.5", + "@babel/plugin-proposal-optional-chaining": "^7.14.5", + "@babel/plugin-proposal-private-methods": "^7.14.5", + "@babel/plugin-proposal-private-property-in-object": "^7.14.5", + "@babel/plugin-proposal-unicode-property-regex": "^7.14.5", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.14.5", + "@babel/plugin-transform-async-to-generator": "^7.14.5", + "@babel/plugin-transform-block-scoped-functions": "^7.14.5", + "@babel/plugin-transform-block-scoping": "^7.14.5", + "@babel/plugin-transform-classes": "^7.14.5", + "@babel/plugin-transform-computed-properties": "^7.14.5", + "@babel/plugin-transform-destructuring": "^7.14.7", + "@babel/plugin-transform-dotall-regex": "^7.14.5", + "@babel/plugin-transform-duplicate-keys": "^7.14.5", + "@babel/plugin-transform-exponentiation-operator": "^7.14.5", + "@babel/plugin-transform-for-of": "^7.14.5", + "@babel/plugin-transform-function-name": "^7.14.5", + "@babel/plugin-transform-literals": "^7.14.5", + "@babel/plugin-transform-member-expression-literals": "^7.14.5", + "@babel/plugin-transform-modules-amd": "^7.14.5", + "@babel/plugin-transform-modules-commonjs": "^7.14.5", + "@babel/plugin-transform-modules-systemjs": "^7.14.5", + "@babel/plugin-transform-modules-umd": "^7.14.5", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.14.7", + "@babel/plugin-transform-new-target": "^7.14.5", + "@babel/plugin-transform-object-super": "^7.14.5", + "@babel/plugin-transform-parameters": "^7.14.5", + "@babel/plugin-transform-property-literals": "^7.14.5", + "@babel/plugin-transform-regenerator": "^7.14.5", + "@babel/plugin-transform-reserved-words": "^7.14.5", + "@babel/plugin-transform-shorthand-properties": "^7.14.5", + "@babel/plugin-transform-spread": "^7.14.6", + "@babel/plugin-transform-sticky-regex": "^7.14.5", + "@babel/plugin-transform-template-literals": "^7.14.5", + "@babel/plugin-transform-typeof-symbol": "^7.14.5", + "@babel/plugin-transform-unicode-escapes": "^7.14.5", + "@babel/plugin-transform-unicode-regex": "^7.14.5", + "@babel/preset-modules": "^0.1.4", + "@babel/types": "^7.14.5", + "babel-plugin-polyfill-corejs2": "^0.2.2", + "babel-plugin-polyfill-corejs3": "^0.2.2", + "babel-plugin-polyfill-regenerator": "^0.2.2", + "core-js-compat": "^3.15.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/@babel/types": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.5", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@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==", + "dev": true, + "dependencies": { + "@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" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-modules/node_modules/@babel/types": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.5", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.14.5.tgz", + "integrity": "sha512-u4zO6CdbRKbS9TypMqrlGH7sd2TAJppZwn3c/ZRLeO/wGsbddxgbPDUZVNrie3JWYLQ9vpineKlsrWFvO6Pwkw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-transform-typescript": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.7.2.tgz", + "integrity": "sha512-JONRbXbTXc9WQE2mAZd1p0Z3DZ/6vaQIkgYMSTP3KjRCyd7rCZCcfhCyX+YjwcKxcZ82UrxbRD358bpExNgrjw==", + "dependencies": { + "regenerator-runtime": "^0.13.2" + } + }, + "node_modules/@babel/template": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.44.tgz", + "integrity": "sha512-w750Sloq0UNifLx1rUqwfbnC6uSUk0mfwwgGRfdLiaUzfAOiH0tHJE6ILQIUi3KYkjiCDTskoIsnfqZvWLBDng==", + "dev": true, + "dependencies": { + "@babel/code-frame": "7.0.0-beta.44", + "@babel/types": "7.0.0-beta.44", + "babylon": "7.0.0-beta.44", + "lodash": "^4.2.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.44.tgz", + "integrity": "sha512-UHuDz8ukQkJCDASKHf+oDt3FVUzFd+QYfuBIsiNu/4+/ix6pP/C+uQZJ6K1oEfbCMv/IKWbgDEh7fcsnIE5AtA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "7.0.0-beta.44", + "@babel/generator": "7.0.0-beta.44", + "@babel/helper-function-name": "7.0.0-beta.44", + "@babel/helper-split-export-declaration": "7.0.0-beta.44", + "@babel/types": "7.0.0-beta.44", + "babylon": "7.0.0-beta.44", + "debug": "^3.1.0", + "globals": "^11.1.0", + "invariant": "^2.2.0", + "lodash": "^4.2.0" + } + }, + "node_modules/@babel/types": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.44.tgz", + "integrity": "sha512-5eTV4WRmqbaFM3v9gHAIljEQJU4Ssc6fxL61JN+Oe2ga/BwyjzjamwkCVVAQjHGuAX8i0BWo42dshL8eO5KfLQ==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2", + "lodash": "^4.2.0", + "to-fast-properties": "^2.0.0" + } + }, + "node_modules/@bundle-stats/utils": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@bundle-stats/utils/-/utils-3.0.1.tgz", + "integrity": "sha512-FWGtsbEUyEpKpAN2hA7cZQIUqbH2I9WHClOcKmv7kdsNRhvNn2YPAho0eGz0ZMxjH2Goz3a17Y5BjIxDHJMDQA==", + "dev": true, + "dependencies": { + "convert-units": "^2.3.4", + "query-string": "^7.0.0", + "serialize-query-params": "^1.3.3", + "superstruct": "^0.8.3" + }, + "engines": { + "node": ">= 12.0" + }, + "peerDependencies": { + "core-js": "^3.9.1", + "lodash": "^4.17.11" + } + }, + "node_modules/@ctrlpanel/pbkdf2": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@ctrlpanel/pbkdf2/-/pbkdf2-1.0.0.tgz", + "integrity": "sha512-NC/J3R2tRUciBPQKcJJ8rz9BGIJYVCPbl699fblp6fBXCHWwAnrOu1oEdDqKhspxsKDj/yZTTDlnSLkmO+ovfA==" + }, + "node_modules/@cypress/listr-verbose-renderer": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@cypress/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz", + "integrity": "sha1-p3SS9LEdzHxEajSz4ochr9M8ZCo=", + "dev": true, + "dependencies": { + "chalk": "^1.1.3", + "cli-cursor": "^1.0.2", + "date-fns": "^1.27.2", + "figures": "^1.7.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@cypress/listr-verbose-renderer/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@cypress/listr-verbose-renderer/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@cypress/listr-verbose-renderer/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@cypress/listr-verbose-renderer/node_modules/cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "dev": true, + "dependencies": { + "restore-cursor": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@cypress/listr-verbose-renderer/node_modules/date-fns": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", + "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==", + "dev": true + }, + "node_modules/@cypress/listr-verbose-renderer/node_modules/figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@cypress/listr-verbose-renderer/node_modules/onetime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@cypress/listr-verbose-renderer/node_modules/restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "dev": true, + "dependencies": { + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@cypress/listr-verbose-renderer/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@cypress/request": { + "version": "2.88.5", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.5.tgz", + "integrity": "sha512-TzEC1XMi1hJkywWpRfD2clreTa/Z+lOrXDCxxBTBPEcY5azdPi56A6Xw+O4tWJnaJH3iIE7G5aDXZC6JgRZLcA==", + "dev": true, + "dependencies": { + "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" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@cypress/xvfb": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", + "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==", + "dev": true, + "dependencies": { + "debug": "^3.1.0", + "lodash.once": "^4.1.1" + } + }, + "node_modules/@emotion/cache": { + "version": "11.4.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.4.0.tgz", + "integrity": "sha512-Zx70bjE7LErRO9OaZrhf22Qye1y4F7iDl+ITjet0J+i+B88PrAOBkKvaAWhxsZf72tDLajwCgfCjJ2dvH77C3g==", + "dependencies": { + "@emotion/memoize": "^0.7.4", + "@emotion/sheet": "^1.0.0", + "@emotion/utils": "^1.0.0", + "@emotion/weak-memoize": "^0.2.5", + "stylis": "^4.0.3" + } + }, + "node_modules/@emotion/hash": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", + "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==" + }, + "node_modules/@emotion/memoize": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.5.tgz", + "integrity": "sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ==" + }, + "node_modules/@emotion/react": { + "version": "11.4.0", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.4.0.tgz", + "integrity": "sha512-4XklWsl9BdtatLoJpSjusXhpKv9YVteYKh9hPKP1Sxl+mswEFoUe0WtmtWjxEjkA51DQ2QRMCNOvKcSlCQ7ivg==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@emotion/cache": "^11.4.0", + "@emotion/serialize": "^1.0.2", + "@emotion/sheet": "^1.0.1", + "@emotion/utils": "^1.0.0", + "@emotion/weak-memoize": "^0.2.5", + "hoist-non-react-statics": "^3.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/react/node_modules/@babel/runtime": { + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.6.tgz", + "integrity": "sha512-/PCB2uJ7oM44tz8YhC4Z/6PeOKXp4K588f+5M3clr1M4zbqztlo0XEfJ2LEzj/FgwfgGcIdl8n7YYjTCI0BYwg==", + "dependencies": { + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@emotion/react/node_modules/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==" + }, + "node_modules/@emotion/serialize": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.0.2.tgz", + "integrity": "sha512-95MgNJ9+/ajxU7QIAruiOAdYNjxZX7G2mhgrtDWswA21VviYIRP1R5QilZ/bDY42xiKsaktP4egJb3QdYQZi1A==", + "dependencies": { + "@emotion/hash": "^0.8.0", + "@emotion/memoize": "^0.7.4", + "@emotion/unitless": "^0.7.5", + "@emotion/utils": "^1.0.0", + "csstype": "^3.0.2" + } + }, + "node_modules/@emotion/serialize/node_modules/csstype": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.8.tgz", + "integrity": "sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw==" + }, + "node_modules/@emotion/sheet": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.0.1.tgz", + "integrity": "sha512-GbIvVMe4U+Zc+929N1V7nW6YYJtidj31lidSmdYcWozwoBIObXBnaJkKNDjZrLm9Nc0BR+ZyHNaRZxqNZbof5g==" + }, + "node_modules/@emotion/unitless": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" + }, + "node_modules/@emotion/utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.0.0.tgz", + "integrity": "sha512-mQC2b3XLDs6QCW+pDQDiyO/EdGZYOygE8s5N5rrzjSI4M3IejPE/JPndCBwRT9z982aqQNi6beWs1UeayrQxxA==" + }, + "node_modules/@emotion/weak-memoize": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz", + "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==" + }, + "node_modules/@gladysassistant/gladys-gateway-js": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@gladysassistant/gladys-gateway-js/-/gladys-gateway-js-3.5.0.tgz", + "integrity": "sha512-4nd1ueZW4izHnl7tx1zPHib2RDQDNIb9B2sF7sJPJ+4Kvj1CCAr/BlYnQbhT2vZsHvdspm7lUsE3foniS9hHTA==", + "dependencies": { + "@ctrlpanel/pbkdf2": "^1.0.0", + "array-buffer-to-hex": "^1.0.0", + "auto-bind": "^2.1.0", + "axios": "^0.21.1", + "encode-utf8": "^1.0.2", + "hex-to-array-buffer": "^1.1.0", + "secure-remote-password": "^0.3.1", + "socket.io-client": "^2.3.0" + } + }, + "node_modules/@gladysassistant/theme-optimized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@gladysassistant/theme-optimized/-/theme-optimized-1.0.3.tgz", + "integrity": "sha512-FhcHgDFXPb3BCw31wK9p2Cr/4L+oApzmPnIyk7GaybIYyznLWOuhYf0TXzaA9uMlARbpK5HgMmzJUaloXgiykA==" + }, + "node_modules/@hapi/address": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", + "integrity": "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==", + "deprecated": "Moved to 'npm install @sideway/address'", + "dev": true + }, + "node_modules/@hapi/formula": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@hapi/formula/-/formula-1.2.0.tgz", + "integrity": "sha512-UFbtbGPjstz0eWHb+ga/GM3Z9EzqKXFWIbSOFURU0A/Gku0Bky4bCk9/h//K2Xr3IrCfjFNhMm4jyZ5dbCewGA==", + "deprecated": "Moved to 'npm install @sideway/formula'", + "dev": true + }, + "node_modules/@hapi/hoek": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz", + "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==", + "deprecated": "This version has been deprecated and is no longer supported or maintained", + "dev": true + }, + "node_modules/@hapi/joi": { + "version": "16.1.8", + "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-16.1.8.tgz", + "integrity": "sha512-wAsVvTPe+FwSrsAurNt5vkg3zo+TblvC5Bb1zMVK6SJzZqw9UrJnexxR+76cpePmtUZKHAPxcQ2Bf7oVHyahhg==", + "deprecated": "Switch to 'npm install joi'", + "dev": true, + "dependencies": { + "@hapi/address": "^2.1.2", + "@hapi/formula": "^1.2.0", + "@hapi/hoek": "^8.2.4", + "@hapi/pinpoint": "^1.0.2", + "@hapi/topo": "^3.1.3" + } + }, + "node_modules/@hapi/pinpoint": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@hapi/pinpoint/-/pinpoint-1.0.2.tgz", + "integrity": "sha512-dtXC/WkZBfC5vxscazuiJ6iq4j9oNx1SHknmIr8hofarpKUZKmlUVYVIhNVzIEgK5Wrc4GMHL5lZtt1uS2flmQ==", + "deprecated": "Moved to 'npm install @sideway/pinpoint'", + "dev": true + }, + "node_modules/@hapi/topo": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz", + "integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==", + "deprecated": "This version has been deprecated and is no longer supported or maintained", + "dev": true, + "dependencies": { + "@hapi/hoek": "^8.3.0" + } + }, + "node_modules/@hypnosphi/create-react-context": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@hypnosphi/create-react-context/-/create-react-context-0.3.1.tgz", + "integrity": "sha512-V1klUed202XahrWJLLOT3EXNeCpFHCcJntdFGI15ntCwau+jfT386w7OFTMaCqOgXUH1fa0w/I1oZs+i/Rfr0A==", + "dependencies": { + "gud": "^1.0.0", + "warning": "^4.0.3" + }, + "peerDependencies": { + "prop-types": "^15.0.0", + "react": ">=0.14.0" + } + }, + "node_modules/@irojs/iro-core": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@irojs/iro-core/-/iro-core-1.2.1.tgz", + "integrity": "sha512-p2OvsBSSmidsDsTSkID6jEyXDF7lcyxPrkh3qBzasBZFpjkYd6kZ3yMWai3MlAaQ3F7li/Et7rSJVV09Fpei+A==" + }, + "node_modules/@jaames/iro": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/@jaames/iro/-/iro-5.5.2.tgz", + "integrity": "sha512-Fbi5U4Vdkw6UsF+R3oMlPONqkvUDMkwzh+mX718gQsDFt3+1r1jvGsrfCbedmXAAy0WsjDHOrefK0BkDk99TQg==", + "dependencies": { + "@irojs/iro-core": "^1.2.1", + "preact": "^10.0.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@npmcli/move-file": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", + "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "dev": true, + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/move-file/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/move-file/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.15", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.15.tgz", + "integrity": "sha512-15spi3V28QdevleWBNXE4pIls3nFZmBbUGrW9IVPwiQczuSb9n76TCB4bsk8TSel+I1OkHEdPhu5QKMfY6rQHA==", + "dev": true + }, + "node_modules/@preact/async-loader": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@preact/async-loader/-/async-loader-3.0.1.tgz", + "integrity": "sha512-BoUN24hxEfAQYnWjliAmkZLuliv+ONQi7AWn+/+VOJHTIHmbFiXrvmSxITf7PDkKiK0a5xy4OErZtVVLlk96Tg==", + "dev": true, + "dependencies": { + "kleur": "^4.0.2", + "loader-utils": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "preact": ">= 10.0.0" + } + }, + "node_modules/@prefresh/babel-plugin": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@prefresh/babel-plugin/-/babel-plugin-0.4.1.tgz", + "integrity": "sha512-gj3ekiYtHlZNz0zFI1z6a9mcYX80Qacw84+2++7V1skvO7kQoV2ux56r8bJkTBbKMVxwAgaYrxxIdUCYlclE7Q==", + "dev": true + }, + "node_modules/@prefresh/core": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@prefresh/core/-/core-1.3.2.tgz", + "integrity": "sha512-Iv+uI698KDgWsrKpLvOgN3hmAMyvhVgn09mcnhZ98BUNdg/qrxE7tcUf5yFCImkgqED5/Dcn8G5hFy4IikEDvg==", + "dev": true, + "peerDependencies": { + "preact": "^10.0.0" + } + }, + "node_modules/@prefresh/utils": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@prefresh/utils/-/utils-1.1.1.tgz", + "integrity": "sha512-MUhT5m2XNN5NsZl4GnpuvlzLo6VSTa/+wBfBd3fiWUvHGhv0GF9hnA1pd//v0uJaKwUnVRQ1hYElxCV7DtYsCQ==", + "dev": true + }, + "node_modules/@prefresh/webpack": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/@prefresh/webpack/-/webpack-3.3.2.tgz", + "integrity": "sha512-1cX0t5G7IXWO2164sl2O32G02BzDl6C4UUZWfDb0x1CQM1g3It9PSLWd+rIlHfSg4MEU9YHM8e6/OK8uavRJhA==", + "dev": true, + "dependencies": { + "@prefresh/core": "^1.3.1", + "@prefresh/utils": "^1.1.0" + }, + "peerDependencies": { + "@prefresh/babel-plugin": "^0.4.0", + "preact": "^10.4.0", + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/@relative-ci/agent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@relative-ci/agent/-/agent-2.0.0.tgz", + "integrity": "sha512-W/Mew+z7PRnFNxceAf4H3BI49FEanT3EGr3Q2LN/5JNvDBfzs+x2jYr1DAmBjHrNR88+emxSir2mQv+5GCNCbg==", + "dev": true, + "dependencies": { + "@bundle-stats/utils": "^3.0.0", + "@relative-ci/env-ci": "^5.3.1", + "core-js": "^3.6.4", + "cosmiconfig": "^7.0.0", + "debug": "^4.1.1", + "dotenv": "^8.2.0", + "fs-extra": "^9.0.0", + "isomorphic-fetch": "^3.0.0", + "lodash": "^4.17.15" + }, + "bin": { + "relative-ci-agent": "bin/index.js" + }, + "engines": { + "node": ">= 10.0" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0-rc.1" + } + }, + "node_modules/@relative-ci/agent/node_modules/@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@relative-ci/agent/node_modules/@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@relative-ci/agent/node_modules/core-js": { + "version": "3.15.2", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.15.2.tgz", + "integrity": "sha512-tKs41J7NJVuaya8DxIOCnl8QuPHx5/ZVbFo1oKgVl1qHFBBrDctzQGtuLjPpRdNTWmKPH6oEvgN/MUID+l485Q==", + "dev": true, + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/@relative-ci/agent/node_modules/cosmiconfig": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", + "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", + "dev": true, + "dependencies": { + "@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" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@relative-ci/agent/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@relative-ci/agent/node_modules/dotenv": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", + "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@relative-ci/agent/node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@relative-ci/agent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@relative-ci/agent/node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@relative-ci/agent/node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@relative-ci/agent/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@relative-ci/agent/node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@relative-ci/env-ci": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@relative-ci/env-ci/-/env-ci-5.3.1.tgz", + "integrity": "sha512-FychihgwUb2n28hACPROIb7LDrIQPGrIPXOZ7OsIFZw8o2rJzI1Xz0l6EJd79ePB+30rgmMJBFCnTmsH+t5ZvQ==", + "dev": true, + "dependencies": { + "execa": "^4.0.0", + "java-properties": "^1.0.0" + }, + "engines": { + "node": ">=10.13" + } + }, + "node_modules/@relative-ci/env-ci/node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@relative-ci/env-ci/node_modules/execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, + "dependencies": { + "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" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/@relative-ci/env-ci/node_modules/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==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@relative-ci/env-ci/node_modules/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@relative-ci/env-ci/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@relative-ci/env-ci/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@relative-ci/env-ci/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@relative-ci/env-ci/node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@relative-ci/env-ci/node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/@relative-ci/env-ci/node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@relative-ci/env-ci/node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@relative-ci/env-ci/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@restart/hooks": { + "version": "0.3.15", + "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.3.15.tgz", + "integrity": "sha512-rVNba1A2oMzKBg16fCrrHmCf4JjOzFhT9TWR8J+Y8iOcY4zffxtP3ke7mEsakvghHZT+9//uDOPSSeuBDW41GQ==", + "peerDependencies": { + "react": "^16.8.0-0" + } + }, + "node_modules/@rollup/plugin-babel": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz", + "integrity": "sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "@types/babel__core": "^7.1.9", + "rollup": "^1.20.0||^2.0.0" + }, + "peerDependenciesMeta": { + "@types/babel__core": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-babel/node_modules/@babel/helper-module-imports": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", + "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@rollup/plugin-babel/node_modules/@babel/types": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.5", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", + "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/plugin-node-resolve/node_modules/builtin-modules": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", + "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@rollup/plugin-node-resolve/node_modules/resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "dependencies": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@rollup/plugin-replace": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz", + "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "magic-string": "^0.25.7" + }, + "peerDependencies": { + "rollup": "^1.20.0 || ^2.0.0" + } + }, + "node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@samverschueren/stream-to-observable": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz", + "integrity": "sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ==", + "dev": true, + "dependencies": { + "any-observable": "^0.3.0" + }, + "engines": { + "node": ">=6" + }, + "peerDependenciesMeta": { + "rxjs": { + "optional": true + }, + "zen-observable": { + "optional": true + } + } + }, + "node_modules/@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@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==", + "dev": true, + "dependencies": { + "ejs": "^2.6.1", + "magic-string": "^0.25.0" + } + }, + "node_modules/@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "dev": true, + "dependencies": { + "defer-to-connect": "^1.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@trysound/sax": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.1.1.tgz", + "integrity": "sha512-Z6DoceYb/1xSg5+e+ZlPZ9v0N16ZvZ+wYMraFue4HYrE4ttONKtsvruIRf6t9TBR0YvSOfi1hUU0fJfBLCDYow==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@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==", + "dev": true + }, + "node_modules/@types/glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA==", + "dev": true, + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.8.tgz", + "integrity": "sha512-YSBPTLTVm2e2OoQIDYx8HaeWJ5tTToLH67kXR7zYNGupXMEHa2++G8k+DczX2cFVgalypqtyZIcU19AFcmOpmg==", + "dev": true + }, + "node_modules/@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "16.3.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.3.2.tgz", + "integrity": "sha512-jJs9ErFLP403I+hMLGnqDRWT0RYKSvArxuBVh2veudHV7ifEC1WAmjJADacZ7mRbA2nWgHtn8xyECMAot0SkAw==", + "dev": true + }, + "node_modules/@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==", + "dev": true + }, + "node_modules/@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==" + }, + "node_modules/@types/q": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz", + "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==", + "dev": true + }, + "node_modules/@types/react": { + "version": "16.9.11", + "resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.11.tgz", + "integrity": "sha512-UBT4GZ3PokTXSWmdgC/GeCGEJXE5ofWyibCcecRLUVN2ZBpXQGVgQGtG2foS7CrTKFKlQVVswLvf7Js6XA/CVQ==", + "dependencies": { + "@types/prop-types": "*", + "csstype": "^2.2.0" + } + }, + "node_modules/@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/sinonjs__fake-timers": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.3.tgz", + "integrity": "sha512-E1dU4fzC9wN2QK2Cr1MLCfyHM8BoNnRFvuf45LYMPNDA+WqbNzC45S4UzPxvp1fFJ1rvSGU0bPvdd35VLmXG8g==", + "dev": true + }, + "node_modules/@types/sizzle": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.3.tgz", + "integrity": "sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==", + "dev": true + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } + }, + "node_modules/@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==", + "dev": true + }, + "node_modules/@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==", + "dev": true + }, + "node_modules/@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==", + "dev": true + }, + "node_modules/@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==", + "dev": true, + "dependencies": { + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "node_modules/@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==", + "dev": true + }, + "node_modules/@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==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0" + } + }, + "node_modules/@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==", + "dev": true + }, + "node_modules/@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==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", + "dev": true + }, + "node_modules/@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==", + "dev": true, + "dependencies": { + "@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" + } + }, + "node_modules/@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==", + "dev": true, + "dependencies": { + "@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" + } + }, + "node_modules/@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==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" + } + }, + "node_modules/@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==", + "dev": true, + "dependencies": { + "@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" + } + }, + "node_modules/@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==", + "dev": true, + "dependencies": { + "@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" + } + }, + "node_modules/@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==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/@yaireo/tagify": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@yaireo/tagify/-/tagify-4.5.0.tgz", + "integrity": "sha512-fYy9IVFt0i41KuTX3kwJ1sEzGeYhFe9b6GGDGIz/La9pyG1VaGJPFyKEtsDkkyNKptRU83yXSPtM6laldF1q1A==", + "peerDependencies": { + "prop-types": "^15.7.2" + } + }, + "node_modules/abab": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz", + "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=", + "dev": true + }, + "node_modules/accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", + "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-es7-plugin": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/acorn-es7-plugin/-/acorn-es7-plugin-1.1.7.tgz", + "integrity": "sha1-8u4fMiipDurRJF+asZIusucdM2s=" + }, + "node_modules/acorn-globals": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz", + "integrity": "sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=", + "dev": true, + "dependencies": { + "acorn": "^4.0.4" + } + }, + "node_modules/acorn-globals/node_modules/acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", + "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", + "dev": true, + "dependencies": { + "acorn": "^3.0.4" + } + }, + "node_modules/acorn-jsx/node_modules/acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", + "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/after": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", + "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=" + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "dependencies": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, + "node_modules/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==", + "dev": true, + "peerDependencies": { + "ajv": ">=5.0.0" + } + }, + "node_modules/ajv-keywords": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", + "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", + "dev": true, + "peerDependencies": { + "ajv": "^5.0.0" + } + }, + "node_modules/alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", + "dev": true + }, + "node_modules/ansi-align": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", + "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==", + "dev": true, + "dependencies": { + "string-width": "^3.0.0" + } + }, + "node_modules/ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/any-observable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.3.0.tgz", + "integrity": "sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "node_modules/anymatch/node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/anymatch/node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "dependencies": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/expand-brackets/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/expand-brackets/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/expand-brackets/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/expand-brackets/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/expand-brackets/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "dependencies": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/extglob/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/anymatch/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/apexcharts": { + "version": "3.29.0", + "resolved": "https://registry.npmjs.org/apexcharts/-/apexcharts-3.29.0.tgz", + "integrity": "sha512-PhI17VayidYAbLb5/g+7WOeirgFrVopzt0qGwLq8V+cd6NXx4CeHYq3S0pDZiUGO7UFQ4YIrT8+ie9/Fnler+w==", + "dependencies": { + "svg.draggable.js": "^2.2.2", + "svg.easing.js": "^2.0.0", + "svg.filter.js": "^2.0.2", + "svg.pathmorphing.js": "^0.1.3", + "svg.resize.js": "^1.4.3", + "svg.select.js": "^3.0.1" + } + }, + "node_modules/append-transform": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", + "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", + "dev": true, + "dependencies": { + "default-require-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "node_modules/arch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "dependencies": { + "arr-flatten": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-buffer-to-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-to-hex/-/array-buffer-to-hex-1.0.0.tgz", + "integrity": "sha512-arycdkxgK1cj6s03GDb96tlCxOl1n3kg9M2OHseUc6Pqyqp+lgfceFPmG507eI5V+oxOSEnlOw/dFc7LXBXF4Q==" + }, + "node_modules/array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", + "dev": true + }, + "node_modules/array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "node_modules/array-includes": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", + "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", + "dev": true, + "dependencies": { + "define-properties": "^1.1.2", + "es-abstract": "^1.7.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arraybuffer.slice": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", + "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==" + }, + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dev": true, + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/asn1.js/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dev": true, + "dependencies": { + "object-assign": "^4.1.1", + "util": "0.10.3" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/assert/node_modules/inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "node_modules/assert/node_modules/util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "dependencies": { + "inherits": "2.0.1" + } + }, + "node_modules/assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/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==", + "dev": true + }, + "node_modules/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==", + "dev": true + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "node_modules/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==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true, + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/auto-bind": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-2.1.1.tgz", + "integrity": "sha512-NUwV1i9D3vxxY1KnfZgSZ716d6ovY7o8LfOwLhGIPFBowIb6Ln6DBW64+jCqPzUznel2hRSkQnYQqvh7/ldw8A==", + "dependencies": { + "@types/react": "^16.8.12" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/autoprefixer": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.3.1.tgz", + "integrity": "sha512-L8AmtKzdiRyYg7BUXJTzigmhbQRCXFKz6SA1Lqo0+AR2FBbQ4aTAPFSDlOutnFkjhiz8my4agGXog1xlMjPJ6A==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.6", + "caniuse-lite": "^1.0.30001243", + "colorette": "^1.2.2", + "fraction.js": "^4.1.1", + "normalize-range": "^0.1.2", + "postcss-value-parser": "^4.1.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/autoprefixer/node_modules/browserslist": { + "version": "4.16.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", + "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", + "dev": true, + "dependencies": { + "caniuse-lite": "^1.0.30001219", + "colorette": "^1.2.2", + "electron-to-chromium": "^1.3.723", + "escalade": "^3.1.1", + "node-releases": "^1.1.71" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "node_modules/autoprefixer/node_modules/caniuse-lite": { + "version": "1.0.30001245", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001245.tgz", + "integrity": "sha512-768fM9j1PKXpOCKws6eTo3RHmvTUsG9UrpT4WoREFeZgJBTi4/X9g565azS/rVUGtqb8nt7FjLeF5u4kukERnA==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "node_modules/autoprefixer/node_modules/electron-to-chromium": { + "version": "1.3.776", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.776.tgz", + "integrity": "sha512-V0w7eFSBoFPpdw4xexjVPZ770UDZIevSwkkj4W97XbE3IsCsTRFpa7/yXGZ88EOQAUEA09JMMsWK0xsw0kRAYw==", + "dev": true + }, + "node_modules/autoprefixer/node_modules/node-releases": { + "version": "1.1.73", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz", + "integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==", + "dev": true + }, + "node_modules/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=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "dev": true + }, + "node_modules/axios": { + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", + "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", + "dependencies": { + "follow-redirects": "^1.10.0" + } + }, + "node_modules/axios/node_modules/follow-redirects": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.3.tgz", + "integrity": "sha512-DUgl6+HDzB0iEptNQEXLx/KhTmDb8tZUHSeLqpnjpknR70H0nC2t9N73BK6fN4hOvJ84pKlIQVQ4k5FFlBedKA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "dependencies": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + } + }, + "node_modules/babel-code-frame/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/babel-code-frame/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/babel-code-frame/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/babel-code-frame/node_modules/js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "node_modules/babel-code-frame/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/babel-core": { + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", + "dev": true, + "dependencies": { + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "convert-source-map": "^1.5.1", + "debug": "^2.6.9", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.8", + "slash": "^1.0.0", + "source-map": "^0.5.7" + } + }, + "node_modules/babel-core/node_modules/babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true, + "bin": { + "babylon": "bin/babylon.js" + } + }, + "node_modules/babel-core/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/babel-eslint": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-8.2.6.tgz", + "integrity": "sha512-aCdHjhzcILdP8c9lej7hvXKvQieyRt20SF102SIGyY4cUIiw6UaAtK4j2o3dXX74jEmy0TJ0CEhv4fTIM3SzcA==", + "deprecated": "babel-eslint is now @babel/eslint-parser. This package will no longer receive updates.", + "dev": true, + "dependencies": { + "@babel/code-frame": "7.0.0-beta.44", + "@babel/traverse": "7.0.0-beta.44", + "@babel/types": "7.0.0-beta.44", + "babylon": "7.0.0-beta.44", + "eslint-scope": "3.7.1", + "eslint-visitor-keys": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/babel-eslint/node_modules/eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", + "dev": true, + "dependencies": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/babel-esm-plugin": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/babel-esm-plugin/-/babel-esm-plugin-0.9.0.tgz", + "integrity": "sha512-OyPyLI6LUuUqNm3HNUldAkynWrLzXkhcZo4fGTsieCgHqvbCoCIMMOwJmfG9Lmp91S7WDIuUr0mvOeI8pAb/pw==", + "dev": true, + "dependencies": { + "chalk": "2.4.1", + "deepcopy": "1.0.0" + }, + "peerDependencies": { + "webpack": "^4.28.4" + } + }, + "node_modules/babel-esm-plugin/node_modules/chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/babel-esm-plugin/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "dev": true, + "dependencies": { + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.7", + "trim-right": "^1.0.1" + } + }, + "node_modules/babel-generator/node_modules/jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "dev": true, + "dependencies": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "node_modules/babel-jest": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-21.2.0.tgz", + "integrity": "sha512-O0W2qLoWu1QOoOGgxiR2JID4O6WSpxPiQanrkyi9SSlM0PJ60Ptzlck47lhtnr9YZO3zYOsxHwnyeWJ6AffoBQ==", + "dev": true, + "dependencies": { + "babel-plugin-istanbul": "^4.0.0", + "babel-preset-jest": "^21.2.0" + }, + "peerDependencies": { + "babel-core": "^6.0.0 || ^7.0.0-alpha || ^7.0.0-beta || ^7.0.0" + } + }, + "node_modules/babel-loader": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.2.tgz", + "integrity": "sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g==", + "dev": true, + "dependencies": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^1.4.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "engines": { + "node": ">= 8.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "webpack": ">=2" + } + }, + "node_modules/babel-loader/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/babel-loader/node_modules/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==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/babel-loader/node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "dependencies": { + "babel-runtime": "^6.22.0" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "object.assign": "^4.1.0" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz", + "integrity": "sha512-PWP9FQ1AhZhS01T/4qLSKoHGY/xvkZdVBGlKM/HuxxS3+sC66HhTNR7+MpbO/so/cz/wY94MeSWJuP1hXIPfwQ==", + "dev": true, + "dependencies": { + "babel-plugin-syntax-object-rest-spread": "^6.13.0", + "find-up": "^2.1.0", + "istanbul-lib-instrument": "^1.10.1", + "test-exclude": "^4.2.1" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-21.2.0.tgz", + "integrity": "sha512-yi5QuiVyyvhBUDLP4ButAnhYzkdrUwWDtvUJv71hjH3fclhnZg4HkDeqaitcR2dZZx/E67kGkRcPVjtVu+SJfQ==", + "dev": true + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz", + "integrity": "sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.2.2", + "semver": "^6.1.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.3.tgz", + "integrity": "sha512-rCOFzEIJpJEAU14XCcV/erIf/wZQMmMT5l5vXOpL5uoznyOGfDIjPj6FVytMvtzaKSTSVKouOCTPJ5OMUZH30g==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.2.2", + "core-js-compat": "^3.14.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz", + "integrity": "sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.2.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/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=", + "dev": true + }, + "node_modules/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==", + "dev": true + }, + "node_modules/babel-preset-jest": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-21.2.0.tgz", + "integrity": "sha512-hm9cBnr2h3J7yXoTtAVV0zg+3vg0Q/gT2GYuzlreTU0EPkJRtlNgKJJ3tBKEn0+VjAi3JykV6xCJkuUYttEEfA==", + "dev": true, + "dependencies": { + "babel-plugin-jest-hoist": "^21.2.0", + "babel-plugin-syntax-object-rest-spread": "^6.13.0" + } + }, + "node_modules/babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "dev": true, + "dependencies": { + "babel-core": "^6.26.0", + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "home-or-tmp": "^2.0.0", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "source-map-support": "^0.4.15" + } + }, + "node_modules/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=", + "dev": true, + "dependencies": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "node_modules/babel-runtime/node_modules/regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + }, + "node_modules/babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "dependencies": { + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" + } + }, + "node_modules/babel-template/node_modules/babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true, + "bin": { + "babylon": "bin/babylon.js" + } + }, + "node_modules/babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "dependencies": { + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" + } + }, + "node_modules/babel-traverse/node_modules/babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true, + "bin": { + "babylon": "bin/babylon.js" + } + }, + "node_modules/babel-traverse/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/babel-traverse/node_modules/globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "dependencies": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + } + }, + "node_modules/babel-types/node_modules/to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/babylon": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.44.tgz", + "integrity": "sha512-5Hlm13BJVAioCHpImtFqNOF2H3ieTOHd0fmFGMxOJ9jgeFqeAwsv3u5P5cR7CSeFrkgHsT19DgFJkHV0/Mcd8g==", + "dev": true, + "bin": { + "babylon": "bin/babylon.js" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" + }, + "node_modules/balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "node_modules/base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "dependencies": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base64-arraybuffer": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz", + "integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI=", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/bl/node_modules/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==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/blob": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", + "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==" + }, + "node_modules/blob-util": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz", + "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==", + "dev": true + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "node_modules/bn.js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", + "dev": true + }, + "node_modules/body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "dev": true, + "dependencies": { + "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" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, + "dependencies": { + "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" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "node_modules/boxen": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.0.1.tgz", + "integrity": "sha512-49VBlw+PrWEF51aCmy7QIteYPIFZxSpvqBdP/2itCPPlJ49kj9zg/XPRFrdkne2W+CfwXUls8exMvu1RysZpKA==", + "dev": true, + "dependencies": { + "ansi-align": "^3.0.0", + "camelcase": "^6.2.0", + "chalk": "^4.1.0", + "cli-boxes": "^2.2.1", + "string-width": "^4.2.0", + "type-fest": "^0.20.2", + "widest-line": "^3.1.0", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boxen/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/boxen/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/boxen/node_modules/camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boxen/node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/boxen/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/boxen/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/boxen/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/boxen/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/boxen/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/boxen/node_modules/string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/boxen/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/boxen/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/boxen/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "dependencies": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "node_modules/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==", + "dev": true + }, + "node_modules/browser-resolve": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", + "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", + "dev": true, + "dependencies": { + "resolve": "1.1.7" + } + }, + "node_modules/browser-resolve/node_modules/resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "dependencies": { + "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" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dev": true, + "dependencies": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "node_modules/browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dev": true, + "dependencies": { + "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" + } + }, + "node_modules/browserify-sign/node_modules/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==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/browserify-sign/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "pako": "~1.0.5" + } + }, + "node_modules/browserlist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserlist/-/browserlist-1.0.1.tgz", + "integrity": "sha512-nYq9jiWv+qXcgrJxQzivfEc7Wo2GvAKkeRViE5L3cUJpq4SZO6NZR710I/8T+OjE5BPECbzpm8rpUkwslE3nTg==", + "dev": true, + "dependencies": { + "chalk": "^2.4.1" + }, + "bin": { + "browserlist": "cli.js" + } + }, + "node_modules/browserslist": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.7.2.tgz", + "integrity": "sha512-uZavT/gZXJd2UTi9Ov7/Z340WOSQ3+m1iBVRUknf+okKxonL9P83S3ctiBDtuRmRu8PiCHjqyueqQ9HYlJhxiw==", + "dev": true, + "dependencies": { + "caniuse-lite": "^1.0.30001004", + "electron-to-chromium": "^1.3.295", + "node-releases": "^1.1.38" + }, + "bin": { + "browserslist": "cli.js" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.4.3.tgz", + "integrity": "sha512-zvj65TkFeIt3i6aj5bIvJDzjjQQGs4o/sNoezg1F1kYap9Nu2jcUdpwzRSJTHMMzG0H7bZkn4rNQpImhuxWX2A==", + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" + } + }, + "node_modules/buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dependencies": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "node_modules/buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=" + }, + "node_modules/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==" + }, + "node_modules/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==", + "dev": true + }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "node_modules/builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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=", + "dev": true + }, + "node_modules/builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", + "dev": true + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cacache": { + "version": "15.2.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.2.0.tgz", + "integrity": "sha512-uKoJSHmnrqXgthDFx/IU6ED/5xd+NNGe+Bb+kLZy7Ku4P+BaiWEUflAKPZ7eAzsYGcsAGASJZsybXp+quEcHTw==", + "dev": true, + "dependencies": { + "@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.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/cacache/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cacache/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cacache/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "dependencies": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cache-base/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cache-base/node_modules/get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cache-base/node_modules/set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "dev": true, + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cacheable-request/node_modules/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==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cacheable-request/node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cacheable-request/node_modules/normalize-url": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cachedir": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", + "integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "dev": true, + "dependencies": { + "callsites": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/caller-callsite/node_modules/callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/caller-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "dev": true, + "dependencies": { + "callsites": "^0.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/callsites": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "dev": true, + "dependencies": { + "no-case": "^2.2.0", + "upper-case": "^1.1.1" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/caniuse-db": { + "version": "1.0.30001009", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30001009.tgz", + "integrity": "sha512-klfjT6Tmyg/1GINznqr1oE89cw08gKHkA8yU801fxZGE4lao1EL7+W1fAXLniGUOS3kSuHT9dE7ZSTgSAs27iQ==", + "dev": true + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001009", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001009.tgz", + "integrity": "sha512-M3rEqHN6SaVjgo4bIik7HsGcWXsi+lI9WA0p51RPMFx5gXfduyOXWJrc0R4xBkSK1pgNf4CNgy5M+6H+WiEP8g==", + "dev": true + }, + "node_modules/capture-exit": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-1.2.0.tgz", + "integrity": "sha1-HF/MSJ/QqwDU8ax64QcuMXP7q28=", + "dev": true, + "dependencies": { + "rsvp": "^3.3.3" + } + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "devOptional": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "devOptional": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chardet": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", + "dev": true + }, + "node_modules/check-more-types": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", + "integrity": "sha1-FCD/sQ/URNz8ebQ4kbv//TKoRgA=", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/chokidar": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", + "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", + "dev": true, + "optional": true, + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "optional": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/chokidar/node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "optional": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/chokidar/node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "optional": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/chokidar/node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "optional": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/chokidar/node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chokidar/node_modules/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==", + "dev": true, + "optional": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chokidar/node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/chokidar/node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chokidar/node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "optional": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/ci-env": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/ci-env/-/ci-env-1.16.0.tgz", + "integrity": "sha512-ucF9caQEX5wQlY449KZBIJPx91+kRg9tJ3tWSc4+KzrvC5KNiPm/3g1noP8VhdI3046+Vw3jLmKAD0fjCRJTmw==", + "dev": true + }, + "node_modules/ci-info": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", + "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==", + "dev": true + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", + "deprecated": "CircularJSON is in maintenance only, flatted is its successor.", + "dev": true + }, + "node_modules/class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/classnames": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz", + "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==" + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/clean-css/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-boxes": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "dependencies": { + "restore-cursor": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-spinners": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.0.tgz", + "integrity": "sha512-t+4/y50K/+4xcCRosKkA7W4gTr1MySvLV0q+PxmG7FJ5g+66ChKurYjxBCjHggHH3HA5Hh9cy+lcUGWDqVH+4Q==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-table3": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.0.tgz", + "integrity": "sha512-gnB85c3MGC7Nm9I/FkiasNBOKjOiO1RNuXXarQms37q4QMpWdlbBgD/VnOStA2faG1dpXMv31RFApjX1/QdgWQ==", + "dev": true, + "dependencies": { + "object-assign": "^4.1.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "colors": "^1.1.2" + } + }, + "node_modules/cli-table3/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-table3/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/cli-table3/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-table3/node_modules/string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-table3/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-truncate": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", + "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=", + "dev": true, + "dependencies": { + "slice-ansi": "0.0.4", + "string-width": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cli-truncate/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cli-truncate/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cli-truncate/node_modules/slice-ansi": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cli-truncate/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cli-truncate/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true + }, + "node_modules/cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dependencies": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clone-deep/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "dev": true, + "dependencies": { + "mimic-response": "^1.0.0" + } + }, + "node_modules/clsx": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.0.4.tgz", + "integrity": "sha512-1mQ557MIZTrL/140j+JVdRM6e31/OA4vTYxXgqIIZlndyfjHpyawKZia1Im05Vp9BWmImkcNrNtFYQMyFcgJDg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true, + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/coa": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "dev": true, + "dependencies": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "dependencies": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/color/-/color-3.1.3.tgz", + "integrity": "sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.1", + "color-string": "^1.5.4" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "node_modules/color-string": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.5.tgz", + "integrity": "sha512-jgIoum0OfQfq9Whcfc2z/VhCNcmQjWbey6qBX0vqt7YICflUmBCh9E9CiQD5GSJ+Uehixm3NUwHVhqUAWRivZg==", + "dev": true, + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/colord": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.1.0.tgz", + "integrity": "sha512-H5sDP9XDk2uP+x/xSGkgB9SEFc1bojdI5DMKU0jmSXQtml2GIe48dj1DcSS0e53QQAHn+JKqUXbGeGX24xWD7w==", + "dev": true + }, + "node_modules/colorette": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", + "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "devOptional": true + }, + "node_modules/colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/common-tags": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", + "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "node_modules/compare-json": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/compare-json/-/compare-json-0.4.0.tgz", + "integrity": "sha512-DSXzNQQa6J7VyuJmpeETgL3LaTgDgvltUE50AX1hsZCprjrZe1A9yVyDzng5md6YYOyMaThewRxc8yZm13UjYQ==", + "dev": true, + "dependencies": { + "colors": "^1.1.2", + "glob": "^7.1.2", + "lodash": "^4.17.4", + "yargs": "^12.0.5" + }, + "bin": { + "comparejson": "bin/compare.js" + } + }, + "node_modules/compare-json/node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/compare-json/node_modules/cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "dependencies": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "node_modules/compare-json/node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "dependencies": { + "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" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/compare-json/node_modules/get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "node_modules/compare-json/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/compare-json/node_modules/invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/compare-json/node_modules/lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, + "dependencies": { + "invert-kv": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/compare-json/node_modules/mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "dev": true, + "dependencies": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/compare-json/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/compare-json/node_modules/os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, + "dependencies": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/compare-json/node_modules/p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/compare-json/node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/compare-json/node_modules/require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "node_modules/compare-json/node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/compare-json/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/compare-json/node_modules/wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "dependencies": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/compare-json/node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/compare-json/node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/compare-json/node_modules/wrap-ansi/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/compare-json/node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/compare-json/node_modules/yargs": { + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dev": true, + "dependencies": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + } + }, + "node_modules/compare-json/node_modules/yargs-parser": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "node_modules/component-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", + "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=" + }, + "node_modules/component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "node_modules/component-inherit": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", + "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=" + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compressible/node_modules/mime-db": { + "version": "1.48.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.48.0.tgz", + "integrity": "sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression-webpack-plugin": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/compression-webpack-plugin/-/compression-webpack-plugin-6.1.1.tgz", + "integrity": "sha512-BEHft9M6lwOqVIQFMS/YJGmeCYXVOakC5KzQk05TFpMBlODByh1qNsZCWjUBxCQhUP9x0WfGidxTbGkjbWO/TQ==", + "dev": true, + "dependencies": { + "cacache": "^15.0.5", + "find-cache-dir": "^3.3.1", + "schema-utils": "^3.0.0", + "serialize-javascript": "^5.0.1", + "webpack-sources": "^1.4.3" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/compression-webpack-plugin/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/compression-webpack-plugin/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/compression-webpack-plugin/node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/compression-webpack-plugin/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/compression-webpack-plugin/node_modules/schema-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", + "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.7", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "dev": true, + "dependencies": { + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/configstore/node_modules/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==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "node_modules/console-clear": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/console-clear/-/console-clear-1.1.1.tgz", + "integrity": "sha512-pMD+MVR538ipqkG5JXeOEbKWS5um1H4LUUccUQG68qpeqBYbzYy79Gh55jkd2TtPdRfUaLWdv6LPP//5Zt0aPQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "node_modules/content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "dev": true, + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type-parser": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/content-type-parser/-/content-type-parser-1.0.2.tgz", + "integrity": "sha512-lM4l4CnMEwOLHAHr/P6MEZwZFPJFtAAKgL6pogbXmVZggIqXhdB6RbBtPOTsw2FcXwYhehRGERJmRrjOiIB8pQ==", + "dev": true + }, + "node_modules/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==", + "devOptional": true, + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/convert-units": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/convert-units/-/convert-units-2.3.4.tgz", + "integrity": "sha512-ERHfdA0UhHJp1IpwE6PnFJx8LqG7B1ZjJ20UvVCmopEnVCfER68Tbe3kvN63dLbYXDA2xFWRE6zd4Wsf0w7POg==", + "dev": true, + "dependencies": { + "lodash.foreach": "2.3.x", + "lodash.keys": "2.3.x" + } + }, + "node_modules/cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "node_modules/copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "dependencies": { + "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" + } + }, + "node_modules/copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/copy-webpack-plugin": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-6.4.1.tgz", + "integrity": "sha512-MXyPCjdPVx5iiWyl40Va3JGh27bKzOTNY3NjUTrosD2q7dR/cLD0013uqJ3BpFbUjyONINjb6qI7nDIJujrMbA==", + "dev": true, + "dependencies": { + "cacache": "^15.0.5", + "fast-glob": "^3.2.4", + "find-cache-dir": "^3.3.1", + "glob-parent": "^5.1.1", + "globby": "^11.0.1", + "loader-utils": "^2.0.0", + "normalize-path": "^3.0.0", + "p-limit": "^3.0.2", + "schema-utils": "^3.0.0", + "serialize-javascript": "^5.0.1", + "webpack-sources": "^1.4.3" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/copy-webpack-plugin/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/copy-webpack-plugin/node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/copy-webpack-plugin/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/copy-webpack-plugin/node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/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==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/copy-webpack-plugin/node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/copy-webpack-plugin/node_modules/schema-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", + "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.7", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/core-js": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==", + "deprecated": "core-js@<3.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.", + "dev": true, + "hasInstallScript": true + }, + "node_modules/core-js-compat": { + "version": "3.15.2", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.15.2.tgz", + "integrity": "sha512-Wp+BJVvwopjI+A1EFqm2dwUmWYXrvucmtIB2LgXn/Rb+gWPKYxtmb4GKHGKG/KGF1eK9jfjzT38DITbTOCX/SQ==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.6", + "semver": "7.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat/node_modules/browserslist": { + "version": "4.16.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", + "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", + "dev": true, + "dependencies": { + "caniuse-lite": "^1.0.30001219", + "colorette": "^1.2.2", + "electron-to-chromium": "^1.3.723", + "escalade": "^3.1.1", + "node-releases": "^1.1.71" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "node_modules/core-js-compat/node_modules/caniuse-lite": { + "version": "1.0.30001245", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001245.tgz", + "integrity": "sha512-768fM9j1PKXpOCKws6eTo3RHmvTUsG9UrpT4WoREFeZgJBTi4/X9g565azS/rVUGtqb8nt7FjLeF5u4kukERnA==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "node_modules/core-js-compat/node_modules/electron-to-chromium": { + "version": "1.3.776", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.776.tgz", + "integrity": "sha512-V0w7eFSBoFPpdw4xexjVPZ770UDZIevSwkkj4W97XbE3IsCsTRFpa7/yXGZ88EOQAUEA09JMMsWK0xsw0kRAYw==", + "dev": true + }, + "node_modules/core-js-compat/node_modules/node-releases": { + "version": "1.1.73", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz", + "integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==", + "dev": true + }, + "node_modules/core-js-compat/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/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=", + "dev": true + }, + "node_modules/cosmiconfig": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", + "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", + "dev": true, + "dependencies": { + "@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" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cosmiconfig/node_modules/@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cosmiconfig/node_modules/@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cosmiconfig/node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cosmiconfig/node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cosmiconfig/node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + } + }, + "node_modules/create-ecdh/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "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" + } + }, + "node_modules/critters-webpack-plugin": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/critters-webpack-plugin/-/critters-webpack-plugin-2.5.0.tgz", + "integrity": "sha512-O41TSPV2orAfrV6kSVC0SivZCtVkeypCNKb7xtrbqE/CfjrHeRaFaGuxglcjOI2IGf+oNg6E+ZoOktdlhXPTIQ==", + "dev": true, + "dependencies": { + "css": "^2.2.1", + "cssnano": "^4.1.7", + "jsdom": "^12.0.0", + "minimatch": "^3.0.4", + "parse5": "^4.0.0", + "postcss": "^7.0.5", + "pretty-bytes": "^4.0.2", + "webpack-log": "^2.0.0", + "webpack-sources": "^1.3.0" + } + }, + "node_modules/critters-webpack-plugin/node_modules/abab": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", + "dev": true + }, + "node_modules/critters-webpack-plugin/node_modules/acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/critters-webpack-plugin/node_modules/acorn-globals": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", + "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", + "dev": true, + "dependencies": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + } + }, + "node_modules/critters-webpack-plugin/node_modules/cssstyle": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz", + "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", + "dev": true, + "dependencies": { + "cssom": "0.3.x" + } + }, + "node_modules/critters-webpack-plugin/node_modules/jsdom": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-12.2.0.tgz", + "integrity": "sha512-QPOggIJ8fquWPLaYYMoh+zqUmdphDtu1ju0QGTitZT1Yd8I5qenPpXM1etzUegu3MjVp8XPzgZxdn8Yj7e40ig==", + "dev": true, + "dependencies": { + "abab": "^2.0.0", + "acorn": "^6.0.2", + "acorn-globals": "^4.3.0", + "array-equal": "^1.0.0", + "cssom": "^0.3.4", + "cssstyle": "^1.1.1", + "data-urls": "^1.0.1", + "domexception": "^1.0.1", + "escodegen": "^1.11.0", + "html-encoding-sniffer": "^1.0.2", + "nwsapi": "^2.0.9", + "parse5": "5.1.0", + "pn": "^1.1.0", + "request": "^2.88.0", + "request-promise-native": "^1.0.5", + "saxes": "^3.1.3", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.4.3", + "w3c-hr-time": "^1.0.1", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0", + "ws": "^6.1.0", + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/critters-webpack-plugin/node_modules/jsdom/node_modules/parse5": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", + "dev": true + }, + "node_modules/critters-webpack-plugin/node_modules/parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "dev": true + }, + "node_modules/critters-webpack-plugin/node_modules/postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/critters-webpack-plugin/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/critters-webpack-plugin/node_modules/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==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/critters-webpack-plugin/node_modules/tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/critters-webpack-plugin/node_modules/whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "node_modules/critters-webpack-plugin/node_modules/ws": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", + "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", + "dev": true, + "dependencies": { + "async-limiter": "~1.0.0" + } + }, + "node_modules/critters-webpack-plugin/node_modules/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==", + "dev": true + }, + "node_modules/cropperjs": { + "version": "1.5.12", + "resolved": "https://registry.npmjs.org/cropperjs/-/cropperjs-1.5.12.tgz", + "integrity": "sha512-re7UdjE5UnwdrovyhNzZ6gathI4Rs3KGCBSc8HCIjUo5hO42CtzyblmWLj6QWVw7huHyDMfpKxhiO2II77nhDw==" + }, + "node_modules/cross-env": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-5.2.1.tgz", + "integrity": "sha512-1yHhtcfAd1r4nwQgknowuUNfIT9E8dOMMspC36g45dN+iD1blloi7xp8X/xAIDnjHWyt1uQ8PHk2fkNaym7soQ==", + "dev": true, + "dependencies": { + "cross-spawn": "^6.0.5" + }, + "bin": { + "cross-env": "dist/bin/cross-env.js", + "cross-env-shell": "dist/bin/cross-env-shell.js" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/cross-spawn-promise": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/cross-spawn-promise/-/cross-spawn-promise-0.10.2.tgz", + "integrity": "sha512-74PXJf6DYaab2klRS+D+9qxKJL1Weo3/ao9OPoH6NFzxtINSa/HE2mcyAPu1fpEmRTPD4Gdmpg3xEXQSgI8lpg==", + "dev": true, + "dependencies": { + "cross-spawn": "^5.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cross-spawn-promise/node_modules/cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "dependencies": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "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" + }, + "engines": { + "node": "*" + } + }, + "node_modules/crypto-digest-sync": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/crypto-digest-sync/-/crypto-digest-sync-1.0.0.tgz", + "integrity": "sha512-UQBOB5z+HF4iA8shKQ3PPwhCmdFAihwcytD1Qh4uiz78x04cZZmKtZ1F1VyAjkrA8uEZqXt2tMXfj3dJHtcbng==" + }, + "node_modules/crypto-random-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-hex/-/crypto-random-hex-1.0.0.tgz", + "integrity": "sha512-1DuZQ03El13TRgfrqbbjW40Gvi4OKInny/Wxqj23/JMXe214C/3Tlz92bKXWDW3NZT5RjXUGdYW4qiIOUPf+cA==", + "dependencies": { + "array-buffer-to-hex": "^1.0.0" + } + }, + "node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/css": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", + "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "source-map": "^0.6.1", + "source-map-resolve": "^0.5.2", + "urix": "^0.1.0" + } + }, + "node_modules/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=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "postcss": "^7.0.1", + "timsort": "^0.3.0" + }, + "engines": { + "node": ">4" + } + }, + "node_modules/css-declaration-sorter/node_modules/postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/css-declaration-sorter/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/css-declaration-sorter/node_modules/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==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/css-loader": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-5.2.7.tgz", + "integrity": "sha512-Q7mOvpBNBG7YrVGMxRxcBJZFL75o+cH2abNASdibkj/fffYD8qWbInZrD0S9ccI6vZclF3DsHE7njGlLtaHbhg==", + "dev": true, + "dependencies": { + "icss-utils": "^5.1.0", + "loader-utils": "^2.0.0", + "postcss": "^8.2.15", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.1.0", + "schema-utils": "^3.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.27.0 || ^5.0.0" + } + }, + "node_modules/css-loader/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/css-loader/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/css-loader/node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/css-loader/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/css-loader/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/css-loader/node_modules/schema-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", + "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.7", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/css-loader/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/css-loader/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "node_modules/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==", + "dev": true + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/css-tree/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/css-what": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.11.tgz", + "integrity": "sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==", + "dev": true, + "dependencies": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.8", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cssnano-preset-default": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz", + "integrity": "sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==", + "dev": true, + "dependencies": { + "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.3", + "postcss-unique-selectors": "^4.0.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cssnano-preset-default/node_modules/postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/cssnano-preset-default/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cssnano-preset-default/node_modules/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==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/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=", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/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=", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cssnano-util-raw-cache/node_modules/postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/cssnano-util-raw-cache/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cssnano-util-raw-cache/node_modules/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==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/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==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cssnano-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-2.0.1.tgz", + "integrity": "sha512-i8vLRZTnEH9ubIyfdZCAdIdgnHAUeQeByEeQ2I7oTilvP9oHO6RScpeq3GsFUVqeB8uZgOQ9pw8utofNn32hhQ==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano/node_modules/caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "dev": true, + "dependencies": { + "caller-callsite": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano/node_modules/cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "dependencies": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano/node_modules/import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "dependencies": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano/node_modules/postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/cssnano/node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cssnano/node_modules/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==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dev": true, + "dependencies": { + "css-tree": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/csso/node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/csso/node_modules/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==", + "dev": true + }, + "node_modules/csso/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, + "node_modules/cssstyle": { + "version": "0.2.37", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz", + "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=", + "dev": true, + "dependencies": { + "cssom": "0.3.x" + } + }, + "node_modules/csstype": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.7.tgz", + "integrity": "sha512-9Mcn9sFbGBAdmimWb2gLVDtFJzeKtDGIr76TUqmjZrw9LFXBMSU70lcs+C0/7fyCd6iBDqmksUcCOUIkisPHsQ==" + }, + "node_modules/cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", + "dev": true + }, + "node_modules/cypress": { + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-6.9.1.tgz", + "integrity": "sha512-/RVx6sOhsyTR9sd9v0BHI4tnDZAhsH9rNat7CIKCUEr5VPWxyfGH0EzK4IHhAqAH8vjFcD4U14tPiJXshoUrmQ==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@cypress/listr-verbose-renderer": "^0.4.1", + "@cypress/request": "^2.88.5", + "@cypress/xvfb": "^1.2.4", + "@types/node": "12.12.50", + "@types/sinonjs__fake-timers": "^6.0.1", + "@types/sizzle": "^2.3.2", + "arch": "^2.1.2", + "blob-util": "2.0.2", + "bluebird": "^3.7.2", + "cachedir": "^2.3.0", + "chalk": "^4.1.0", + "check-more-types": "^2.24.0", + "cli-table3": "~0.6.0", + "commander": "^5.1.0", + "common-tags": "^1.8.0", + "dayjs": "^1.9.3", + "debug": "4.3.2", + "eventemitter2": "^6.4.2", + "execa": "^4.0.2", + "executable": "^4.1.1", + "extract-zip": "^1.7.0", + "fs-extra": "^9.0.1", + "getos": "^3.2.1", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.3.2", + "lazy-ass": "^1.6.0", + "listr": "^0.14.3", + "lodash": "^4.17.19", + "log-symbols": "^4.0.0", + "minimist": "^1.2.5", + "moment": "^2.29.1", + "ospath": "^1.2.2", + "pretty-bytes": "^5.4.1", + "ramda": "~0.27.1", + "request-progress": "^3.0.0", + "supports-color": "^7.2.0", + "tmp": "~0.2.1", + "untildify": "^4.0.0", + "url": "^0.11.0", + "yauzl": "^2.10.0" + }, + "bin": { + "cypress": "bin/cypress" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/cypress/node_modules/@types/node": { + "version": "12.12.50", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.50.tgz", + "integrity": "sha512-5ImO01Fb8YsEOYpV+aeyGYztcYcjGsBvN4D7G5r1ef2cuQOpymjWNQi5V0rKHE6PC2ru3HkoUr/Br2/8GUA84w==", + "dev": true + }, + "node_modules/cypress/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/cypress/node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/cypress/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "node_modules/cypress/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/cypress/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/cypress/node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/cypress/node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cypress/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/cypress/node_modules/execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, + "dependencies": { + "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" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/cypress/node_modules/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==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cypress/node_modules/global-dirs": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.1.0.tgz", + "integrity": "sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==", + "dev": true, + "dependencies": { + "ini": "1.3.7" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cypress/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cypress/node_modules/ini": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", + "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==", + "dev": true + }, + "node_modules/cypress/node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/cypress/node_modules/is-installed-globally": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", + "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", + "dev": true, + "dependencies": { + "global-dirs": "^2.0.1", + "is-path-inside": "^3.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cypress/node_modules/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cypress/node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/cypress/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cypress/node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/cypress/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/cypress/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cypress/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cypress/node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cypress/node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cypress/node_modules/ramda": { + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.1.tgz", + "integrity": "sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw==", + "dev": true + }, + "node_modules/cypress/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cypress/node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cypress/node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cypress/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cypress/node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, + "node_modules/cypress/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "dev": true, + "dependencies": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + } + }, + "node_modules/data-urls/node_modules/abab": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", + "dev": true + }, + "node_modules/data-urls/node_modules/tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/data-urls/node_modules/whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "node_modules/date-arithmetic": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/date-arithmetic/-/date-arithmetic-4.0.1.tgz", + "integrity": "sha512-fawhJU3ajJud093das8L3PSXqDb+LjclKhRTIbVX1xC+QeHtL/30kNTkS8s/lOiKMGMngxKvwEzQhBEmK/KQnQ==" + }, + "node_modules/date-fns": { + "version": "2.22.1", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.22.1.tgz", + "integrity": "sha512-yUFPQjrxEmIsMqlHhAhmxkuH769baF21Kk+nZwZGyrMoyLA+LugaQtC0+Tqf9CBUUULWwUJt6Q5ySI3LJDDCGg==", + "engines": { + "node": ">=0.11" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/date-fns" + } + }, + "node_modules/dayjs": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.10.6.tgz", + "integrity": "sha512-AztC/IOW4L1Q41A86phW5Thhcrco3xuAA+YX/BLpLWWjRcTj5TOt/QImBLmCKlrF7u7k47arTnOyL6GnbG8Hvw==" + }, + "node_modules/debounce": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", + "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==" + }, + "node_modules/debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "dev": true, + "dependencies": { + "mimic-response": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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==", + "dependencies": { + "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" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/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=", + "dev": true + }, + "node_modules/deepcopy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/deepcopy/-/deepcopy-1.0.0.tgz", + "integrity": "sha512-WJrecobaoqqgQHtvRI2/VCzWoWXPAnFYyAkF/spmL46lZMnd0gW0gLGuyeFVSrqt2B3s0oEEj6i+j2L/2QiS4g==", + "dev": true, + "dependencies": { + "type-detect": "^4.0.8" + } + }, + "node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-gateway": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", + "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", + "dev": true, + "dependencies": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/default-gateway/node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "dependencies": { + "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" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/default-gateway/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/default-require-extensions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", + "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", + "dev": true, + "dependencies": { + "strip-bom": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "dependencies": { + "clone": "^1.0.2" + } + }, + "node_modules/defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", + "dev": true + }, + "node_modules/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==", + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-property/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-property/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-property/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-property/node_modules/kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/del": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "dev": true, + "dependencies": { + "@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" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/del/node_modules/array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "dependencies": { + "array-uniq": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/del/node_modules/globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "dependencies": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/del/node_modules/globby/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/del/node_modules/p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/del/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "node_modules/detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "dependencies": { + "repeating": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "node_modules/diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "node_modules/diffie-hellman/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/dijkstrajs": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.1.tgz", + "integrity": "sha1-082BIh4+pAdCz83lVtTpnpjdxxs=" + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dir-glob/node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" + }, + "node_modules/dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "node_modules/dns-packet": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", + "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", + "dev": true, + "dependencies": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "dependencies": { + "buffer-indexof": "^1.0.0" + } + }, + "node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "dependencies": { + "utila": "~0.4" + } + }, + "node_modules/dom-helpers": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.1.3.tgz", + "integrity": "sha512-nZD1OtwfWGRBWlpANxacBEZrEuLa16o1nh7YopFWeoF68Zt8GGEmzHu6Xv4F3XaFIC+YXtTLrzgqKxFgLEe4jw==", + "dependencies": { + "@babel/runtime": "^7.6.3", + "csstype": "^2.6.7" + } + }, + "node_modules/dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + } + }, + "node_modules/dom-serializer/node_modules/domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/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==", + "dev": true, + "engines": { + "node": ">=0.4", + "npm": ">=1.2" + } + }, + "node_modules/domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "node_modules/domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "dev": true, + "dependencies": { + "webidl-conversions": "^4.0.2" + } + }, + "node_modules/domhandler": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.0.tgz", + "integrity": "sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA==", + "dev": true, + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domhandler/node_modules/domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "dependencies": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dotenv": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.2.0.tgz", + "integrity": "sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w==", + "engines": { + "node": ">=6" + } + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "node_modules/duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "dev": true + }, + "node_modules/duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/ecc-jsbn/node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "node_modules/ejs": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", + "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==", + "dev": true, + "hasInstallScript": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ejs-loader": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/ejs-loader/-/ejs-loader-0.5.0.tgz", + "integrity": "sha512-iirFqlP3tiFoedNZ7dQcjvechunl054VbW6Ki38T/pabgXMAncduSE0ZXLeVGn1NbmcUJF9Z5TC0EvQ4RIpP9Q==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "lodash": "^4.17.15" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.3.306", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.306.tgz", + "integrity": "sha512-frDqXvrIROoYvikSKTIKbHbzO6M3/qC6kCIt/1FOa9kALe++c4VAJnwjSFvf1tYLEUsP2n9XZ4XSCyqc3l7A/A==", + "dev": true + }, + "node_modules/elegant-spinner": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", + "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dev": true, + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/encode-utf8": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz", + "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/engine.io-client": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.5.2.tgz", + "integrity": "sha512-QEqIp+gJ/kMHeUun7f5Vv3bteRHppHH/FMBQX/esFj/fuYfjyUKWGMo3VCvIP/V8bE9KcjHmRZrhIz2Z9oNsDA==", + "dependencies": { + "component-emitter": "~1.3.0", + "component-inherit": "0.0.3", + "debug": "~3.1.0", + "engine.io-parser": "~2.2.0", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "parseqs": "0.0.6", + "parseuri": "0.0.6", + "ws": "~7.4.2", + "xmlhttprequest-ssl": "~1.6.2", + "yeast": "0.1.2" + } + }, + "node_modules/engine.io-client/node_modules/component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + }, + "node_modules/engine.io-parser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.1.tgz", + "integrity": "sha512-x+dN/fBH8Ro8TFwJ+rkB2AmuVw9Yu2mockR/p3W8f8YtExwFgDvBDi0GWyb4ZLkpahtDGZgtr3zLovanJghPqg==", + "dependencies": { + "after": "0.8.2", + "arraybuffer.slice": "~0.0.7", + "base64-arraybuffer": "0.1.4", + "blob": "0.0.5", + "has-binary2": "~1.0.2" + } + }, + "node_modules/enhanced-resolve": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", + "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/enhanced-resolve/node_modules/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==", + "dev": true, + "dependencies": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + }, + "engines": { + "node": ">=4.3.0 <5.0.0 || >=5.10" + } + }, + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "dev": true, + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": true, + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.16.0.tgz", + "integrity": "sha512-xdQnfykZ9JMEiasTAJZJdMWCQ1Vm00NBw79/AWi7ELfZuuPCSOMDZbT9mkOfSctVtfhb+sAAzrm+j//GjjLHLg==", + "dev": true, + "dependencies": { + "es-to-primitive": "^1.2.0", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.0", + "is-callable": "^1.1.4", + "is-regex": "^1.0.4", + "object-inspect": "^1.6.0", + "object-keys": "^1.1.1", + "string.prototype.trimleft": "^2.1.0", + "string.prototype.trimright": "^2.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "devOptional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-goat": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", + "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "devOptional": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/escodegen": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.12.0.tgz", + "integrity": "sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg==", + "dev": true, + "dependencies": { + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=4.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/escodegen/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz", + "integrity": "sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==", + "dev": true, + "dependencies": { + "ajv": "^5.3.0", + "babel-code-frame": "^6.22.0", + "chalk": "^2.1.0", + "concat-stream": "^1.6.0", + "cross-spawn": "^5.1.0", + "debug": "^3.1.0", + "doctrine": "^2.1.0", + "eslint-scope": "^3.7.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^3.5.4", + "esquery": "^1.0.0", + "esutils": "^2.0.2", + "file-entry-cache": "^2.0.0", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.0.1", + "ignore": "^3.3.3", + "imurmurhash": "^0.1.4", + "inquirer": "^3.0.6", + "is-resolvable": "^1.0.0", + "js-yaml": "^3.9.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.4", + "minimatch": "^3.0.2", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "pluralize": "^7.0.0", + "progress": "^2.0.0", + "regexpp": "^1.0.1", + "require-uncached": "^1.0.3", + "semver": "^5.3.0", + "strip-ansi": "^4.0.0", + "strip-json-comments": "~2.0.1", + "table": "4.0.2", + "text-table": "~0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-config-prettier": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-4.3.0.tgz", + "integrity": "sha512-sZwhSTHVVz78+kYD3t5pCWSYEdVSBR0PXnwjDRsUs8ytIrK8PLXw+6FKp8r3Z7rx4ZszdetWlXYKOHoUrrwPlA==", + "dev": true, + "dependencies": { + "get-stdin": "^6.0.0" + }, + "bin": { + "eslint-config-prettier-check": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=3.14.1" + } + }, + "node_modules/eslint-config-synacor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-synacor/-/eslint-config-synacor-2.1.0.tgz", + "integrity": "sha512-wdJbrtQ/7GESxJNEBRHOP9Tq3C/9mWbL+fIvhPixgn+gbuEbkc7gMc67RkpySJ8juB4GxpFXdhE6bERY/PuZjA==", + "dev": true, + "dependencies": { + "babel-eslint": "^8.1.2", + "eslint-plugin-compat": "^2.1.0", + "eslint-plugin-mocha": "^4.0.0", + "eslint-plugin-react": "^7.5.1" + }, + "peerDependencies": { + "eslint": "^4.0.0" + } + }, + "node_modules/eslint-plugin-compat": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-compat/-/eslint-plugin-compat-2.7.0.tgz", + "integrity": "sha512-3J4Ic1WS+SgF1smUOc62fdf7Cnrdsg0GNwKmGVPziPtWdrc2vV5Oq2ut4kG6SM5DJcxOoz/sWJIN7rkcsWh60Q==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.3.1", + "browserslist": "^4.4.1", + "caniuse-db": "^1.0.30000935", + "mdn-browser-compat-data": "^0.0.65" + }, + "engines": { + "node": ">=8.x", + "npm": ">=6.7.0" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0" + } + }, + "node_modules/eslint-plugin-cypress": { + "version": "2.11.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-cypress/-/eslint-plugin-cypress-2.11.3.tgz", + "integrity": "sha512-hOoAid+XNFtpvOzZSNWP5LDrQBEJwbZwjib4XJ1KcRYKjeVj0mAmPmucG4Egli4j/aruv+Ow/acacoloWWCl9Q==", + "dev": true, + "dependencies": { + "globals": "^11.12.0" + }, + "peerDependencies": { + "eslint": ">= 3.2.1" + } + }, + "node_modules/eslint-plugin-json": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-json/-/eslint-plugin-json-1.4.0.tgz", + "integrity": "sha512-CECvgRAWtUzuepdlPWd+VA7fhyF9HT183pZnl8wQw5x699Mk/MbME/q8xtULBfooi3LUbj6fToieNmsvUcDxWA==", + "dev": true, + "dependencies": { + "vscode-json-languageservice": "^3.2.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-mocha": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-4.12.1.tgz", + "integrity": "sha512-hxWtYHvLA0p/PKymRfDYh9Mxt5dYkg2Goy1vZDarTEEYfELP9ksga7kKG1NUKSQy27C8Qjc7YrSWTLUhOEOksA==", + "dev": true, + "dependencies": { + "ramda": "^0.25.0" + }, + "peerDependencies": { + "eslint": "^2.0.0 || ^3.0.0 || ^4.0.0" + } + }, + "node_modules/eslint-plugin-preact-i18n": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-preact-i18n/-/eslint-plugin-preact-i18n-1.1.0.tgz", + "integrity": "sha512-wjbyVCzdfhUy8VZ8eTPt6CkZpOnkI6gvNsgQKeA7XYlZSsMhG6ZSaqemMLvpcEnH5fMDTQ+47Dy0NAZCVktuUg==", + "dev": true, + "dependencies": { + "minimatch": "3.0.4" + }, + "peerDependencies": { + "eslint": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.16.0.tgz", + "integrity": "sha512-GacBAATewhhptbK3/vTP09CbFrgUJmBSaaRcWdbQLFvUZy9yVcQxigBNHGPU/KE2AyHpzj3AWXpxoMTsIDiHug==", + "dev": true, + "dependencies": { + "array-includes": "^3.0.3", + "doctrine": "^2.1.0", + "has": "^1.0.3", + "jsx-ast-utils": "^2.2.1", + "object.entries": "^1.1.0", + "object.fromentries": "^2.0.0", + "object.values": "^1.1.0", + "prop-types": "^15.7.2", + "resolve": "^1.12.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA==", + "dev": true, + "dependencies": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", + "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint/node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint/node_modules/cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "dependencies": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "node_modules/eslint/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esm": { + "version": "3.2.25", + "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", + "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/espree": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", + "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", + "dev": true, + "dependencies": { + "acorn": "^5.5.0", + "acorn-jsx": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", + "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "dev": true, + "dependencies": { + "estraverse": "^4.0.0" + }, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "dependencies": { + "estraverse": "^4.1.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter2": { + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.4.tgz", + "integrity": "sha512-HLU3NDY6wARrLCEwyGKRBvuWYyvW6mHYv72SJJAH3iJN3a6eVUvkjFkcxah1bcTgGVBBrFdIopBJPhCQFMLyXw==", + "dev": true + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/eventsource": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.0.tgz", + "integrity": "sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg==", + "dev": true, + "dependencies": { + "original": "^1.0.0" + }, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/exec-sh": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.2.tgz", + "integrity": "sha512-FIUCJz1RbuS0FKTdaAafAByGS0CPvU3R0MeHxgtl+djzCc//F8HakL8GzmVNZanasTbTAY/3DRFA0KpVqj/eAw==", + "dev": true, + "dependencies": { + "merge": "^1.2.0" + } + }, + "node_modules/execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "dependencies": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.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" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/execa/node_modules/cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "dependencies": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "node_modules/executable": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", + "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", + "dev": true, + "dependencies": { + "pify": "^2.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/executable/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/exit-hook": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", + "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "dependencies": { + "is-posix-bracket": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "dependencies": { + "fill-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expect": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-21.2.1.tgz", + "integrity": "sha512-orfQQqFRTX0jH7znRIGi8ZMR8kTNpXklTTz8+HGTpmTKZo3Occ6JNB5FXMb8cRuiiC/GyDqsr30zUa66ACYlYw==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.0", + "jest-diff": "^21.2.1", + "jest-get-type": "^21.2.0", + "jest-matcher-utils": "^21.2.1", + "jest-message-util": "^21.2.1", + "jest-regex-util": "^21.2.0" + } + }, + "node_modules/express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "dev": true, + "dependencies": { + "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" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extend-shallow/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/external-editor": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", + "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", + "dev": true, + "dependencies": { + "chardet": "^0.4.0", + "iconv-lite": "^0.4.17", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "dependencies": { + "is-extglob": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extract-zip": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", + "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", + "dev": true, + "dependencies": { + "concat-stream": "^1.6.2", + "debug": "^2.6.9", + "mkdirp": "^0.5.4", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + } + }, + "node_modules/extract-zip/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/extract-zip/node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/extract-zip/node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true, + "engines": [ + "node >=0.6.0" + ] + }, + "node_modules/fast-async": { + "version": "6.3.8", + "resolved": "https://registry.npmjs.org/fast-async/-/fast-async-6.3.8.tgz", + "integrity": "sha512-TjlooyqrYm/gOXjD2UHNwfrWkvTbzU105Nk4bvcRTeRoL+wIeK6rqbqDg3CN9z5p37cE2iXhP6SxQFz8OVIaUg==", + "dependencies": { + "nodent-compiler": "^3.2.10", + "nodent-runtime": ">=3.2.1" + } + }, + "node_modules/fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fast-glob/node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fast-glob/node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-glob/node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-glob/node_modules/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==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-glob/node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/fast-glob/node_modules/micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dev": true, + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/fast-glob/node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "node_modules/fastq": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.1.tgz", + "integrity": "sha512-HOnr8Mc60eNYl1gzwp6r5RoUyAn5/glBolUzP/Ez6IFVPMPirxn/9phgL6zhOtaTy7ISwPvQ+wT+hfcRZh/bzw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz", + "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=", + "dev": true, + "dependencies": { + "bser": "^2.0.0" + } + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "dev": true, + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", + "dev": true + }, + "node_modules/figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/file-entry-cache": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "dev": true, + "dependencies": { + "flat-cache": "^1.2.1", + "object-assign": "^4.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/file-loader/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/file-loader/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/file-loader/node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/file-loader/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/file-loader/node_modules/schema-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", + "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.7", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fileset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", + "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", + "dev": true, + "dependencies": { + "glob": "^7.0.3", + "minimatch": "^3.0.3" + } + }, + "node_modules/fill-range": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", + "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", + "dev": true, + "dependencies": { + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^3.0.0", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fill-range/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "node_modules/fill-range/node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/filter-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", + "integrity": "sha1-mzERErxsYSehbgFsbF1/GeCAXFs=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/flat-cache": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", + "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", + "dev": true, + "dependencies": { + "circular-json": "^0.3.1", + "graceful-fs": "^4.1.2", + "rimraf": "~2.6.2", + "write": "^0.2.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "node_modules/follow-redirects": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.1.tgz", + "integrity": "sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "dependencies": { + "for-in": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "@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" + }, + "engines": { + "node": ">=6.11.5", + "yarn": ">=1.0.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "dependencies": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/expand-brackets/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/expand-brackets/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/expand-brackets/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/expand-brackets/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/expand-brackets/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "dependencies": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/extglob/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fraction.js": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.1.tgz", + "integrity": "sha512-MHOhvvxHTfRFpF1geTK9czMIZ6xclsEor2wkIGYYq+PxcQqT7vStJqjhe6S1TenZrMZzo+wlqOufBDVepUEgPg==", + "dev": true, + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://www.patreon.com/infusion" + } + }, + "node_modules/fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "dependencies": { + "map-cache": "^0.2.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/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=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/fsevents": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", + "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", + "bundleDependencies": [ + "node-pre-gyp" + ], + "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "nan": "^2.12.1", + "node-pre-gyp": "^0.12.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/fsevents/node_modules/abbrev": { + "version": "1.1.1", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true, + "inBundle": true, + "optional": true + }, + "node_modules/fsevents/node_modules/ansi-regex": { + "version": "2.1.1", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "inBundle": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/aproba": { + "version": "1.2.0", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true, + "inBundle": true, + "optional": true + }, + "node_modules/fsevents/node_modules/are-we-there-yet": { + "version": "1.1.5", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "dev": true, + "inBundle": true, + "optional": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "node_modules/fsevents/node_modules/balanced-match": { + "version": "1.0.0", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true, + "inBundle": true, + "optional": true + }, + "node_modules/fsevents/node_modules/brace-expansion": { + "version": "1.1.11", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "inBundle": true, + "optional": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/fsevents/node_modules/chownr": { + "version": "1.1.1", + "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", + "dev": true, + "inBundle": true, + "optional": true + }, + "node_modules/fsevents/node_modules/code-point-at": { + "version": "1.1.0", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true, + "inBundle": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/concat-map": { + "version": "0.0.1", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true, + "inBundle": true, + "optional": true + }, + "node_modules/fsevents/node_modules/console-control-strings": { + "version": "1.1.0", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true, + "inBundle": true, + "optional": true + }, + "node_modules/fsevents/node_modules/core-util-is": { + "version": "1.0.2", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true, + "inBundle": true, + "optional": true + }, + "node_modules/fsevents/node_modules/debug": { + "version": "4.1.1", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", + "dev": true, + "inBundle": true, + "optional": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/fsevents/node_modules/deep-extend": { + "version": "0.6.0", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "inBundle": true, + "optional": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/fsevents/node_modules/delegates": { + "version": "1.0.0", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true, + "inBundle": true, + "optional": true + }, + "node_modules/fsevents/node_modules/detect-libc": { + "version": "1.0.3", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", + "dev": true, + "inBundle": true, + "optional": true, + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/fsevents/node_modules/fs-minipass": { + "version": "1.2.5", + "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", + "dev": true, + "inBundle": true, + "optional": true, + "dependencies": { + "minipass": "^2.2.1" + } + }, + "node_modules/fsevents/node_modules/fs.realpath": { + "version": "1.0.0", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true, + "inBundle": true, + "optional": true + }, + "node_modules/fsevents/node_modules/gauge": { + "version": "2.7.4", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "inBundle": true, + "optional": true, + "dependencies": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "node_modules/fsevents/node_modules/glob": { + "version": "7.1.3", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "inBundle": true, + "optional": true, + "dependencies": { + "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" + }, + "engines": { + "node": "*" + } + }, + "node_modules/fsevents/node_modules/has-unicode": { + "version": "2.0.1", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true, + "inBundle": true, + "optional": true + }, + "node_modules/fsevents/node_modules/iconv-lite": { + "version": "0.4.24", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "inBundle": true, + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/ignore-walk": { + "version": "3.0.1", + "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", + "dev": true, + "inBundle": true, + "optional": true, + "dependencies": { + "minimatch": "^3.0.4" + } + }, + "node_modules/fsevents/node_modules/inflight": { + "version": "1.0.6", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "inBundle": true, + "optional": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/fsevents/node_modules/inherits": { + "version": "2.0.3", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true, + "inBundle": true, + "optional": true + }, + "node_modules/fsevents/node_modules/ini": { + "version": "1.3.5", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "deprecated": "Please update to ini >=1.3.6 to avoid a prototype pollution issue", + "dev": true, + "inBundle": true, + "optional": true, + "engines": { + "node": "*" + } + }, + "node_modules/fsevents/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "inBundle": true, + "optional": true, + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/isarray": { + "version": "1.0.0", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true, + "inBundle": true, + "optional": true + }, + "node_modules/fsevents/node_modules/minimatch": { + "version": "3.0.4", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "inBundle": true, + "optional": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/fsevents/node_modules/minimist": { + "version": "0.0.8", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true, + "inBundle": true, + "optional": true + }, + "node_modules/fsevents/node_modules/minipass": { + "version": "2.3.5", + "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", + "dev": true, + "inBundle": true, + "optional": true, + "dependencies": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "node_modules/fsevents/node_modules/minizlib": { + "version": "1.2.1", + "integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==", + "dev": true, + "inBundle": true, + "optional": true, + "dependencies": { + "minipass": "^2.2.1" + } + }, + "node_modules/fsevents/node_modules/mkdirp": { + "version": "0.5.1", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", + "dev": true, + "inBundle": true, + "optional": true, + "dependencies": { + "minimist": "0.0.8" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/fsevents/node_modules/ms": { + "version": "2.1.1", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true, + "inBundle": true, + "optional": true + }, + "node_modules/fsevents/node_modules/needle": { + "version": "2.3.0", + "integrity": "sha512-QBZu7aAFR0522EyaXZM0FZ9GLpq6lvQ3uq8gteiDUp7wKdy0lSd2hPlgFwVuW1CBkfEs9PfDQsQzZghLs/psdg==", + "dev": true, + "inBundle": true, + "optional": true, + "dependencies": { + "debug": "^4.1.0", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 4.4.x" + } + }, + "node_modules/fsevents/node_modules/node-pre-gyp": { + "version": "0.12.0", + "integrity": "sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A==", + "deprecated": "Please upgrade to @mapbox/node-pre-gyp: the non-scoped node-pre-gyp package is deprecated and only the @mapbox scoped package will recieve updates in the future", + "dev": true, + "inBundle": true, + "optional": true, + "dependencies": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + }, + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" + } + }, + "node_modules/fsevents/node_modules/nopt": { + "version": "4.0.1", + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "dev": true, + "inBundle": true, + "optional": true, + "dependencies": { + "abbrev": "1", + "osenv": "^0.1.4" + }, + "bin": { + "nopt": "bin/nopt.js" + } + }, + "node_modules/fsevents/node_modules/npm-bundled": { + "version": "1.0.6", + "integrity": "sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==", + "dev": true, + "inBundle": true, + "optional": true + }, + "node_modules/fsevents/node_modules/npm-packlist": { + "version": "1.4.1", + "integrity": "sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw==", + "dev": true, + "inBundle": true, + "optional": true, + "dependencies": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "node_modules/fsevents/node_modules/npmlog": { + "version": "4.1.2", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "inBundle": true, + "optional": true, + "dependencies": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "node_modules/fsevents/node_modules/number-is-nan": { + "version": "1.0.1", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true, + "inBundle": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/object-assign": { + "version": "4.1.1", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true, + "inBundle": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/once": { + "version": "1.4.0", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "inBundle": true, + "optional": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/fsevents/node_modules/os-homedir": { + "version": "1.0.2", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true, + "inBundle": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/os-tmpdir": { + "version": "1.0.2", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true, + "inBundle": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/osenv": { + "version": "0.1.5", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "inBundle": true, + "optional": true, + "dependencies": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "node_modules/fsevents/node_modules/path-is-absolute": { + "version": "1.0.1", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "inBundle": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/process-nextick-args": { + "version": "2.0.0", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true, + "inBundle": true, + "optional": true + }, + "node_modules/fsevents/node_modules/rc": { + "version": "1.2.8", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "inBundle": true, + "optional": true, + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/fsevents/node_modules/rc/node_modules/minimist": { + "version": "1.2.0", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true, + "inBundle": true, + "optional": true + }, + "node_modules/fsevents/node_modules/readable-stream": { + "version": "2.3.6", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "inBundle": true, + "optional": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/fsevents/node_modules/rimraf": { + "version": "2.6.3", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "inBundle": true, + "optional": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/fsevents/node_modules/safe-buffer": { + "version": "5.1.2", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "inBundle": true, + "optional": true + }, + "node_modules/fsevents/node_modules/safer-buffer": { + "version": "2.1.2", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "inBundle": true, + "optional": true + }, + "node_modules/fsevents/node_modules/sax": { + "version": "1.2.4", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true, + "inBundle": true, + "optional": true + }, + "node_modules/fsevents/node_modules/semver": { + "version": "5.7.0", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "dev": true, + "inBundle": true, + "optional": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/fsevents/node_modules/set-blocking": { + "version": "2.0.0", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true, + "inBundle": true, + "optional": true + }, + "node_modules/fsevents/node_modules/signal-exit": { + "version": "3.0.2", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true, + "inBundle": true, + "optional": true + }, + "node_modules/fsevents/node_modules/string_decoder": { + "version": "1.1.1", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "inBundle": true, + "optional": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/fsevents/node_modules/string-width": { + "version": "1.0.2", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "inBundle": true, + "optional": true, + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/strip-ansi": { + "version": "3.0.1", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "inBundle": true, + "optional": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/strip-json-comments": { + "version": "2.0.1", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true, + "inBundle": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/tar": { + "version": "4.4.8", + "integrity": "sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==", + "dev": true, + "inBundle": true, + "optional": true, + "dependencies": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + }, + "engines": { + "node": ">=4.5" + } + }, + "node_modules/fsevents/node_modules/util-deprecate": { + "version": "1.0.2", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true, + "inBundle": true, + "optional": true + }, + "node_modules/fsevents/node_modules/wide-align": { + "version": "1.1.3", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "inBundle": true, + "optional": true, + "dependencies": { + "string-width": "^1.0.2 || 2" + } + }, + "node_modules/fsevents/node_modules/wrappy": { + "version": "1.0.2", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true, + "inBundle": true, + "optional": true + }, + "node_modules/fsevents/node_modules/yallist": { + "version": "3.0.3", + "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", + "dev": true, + "inBundle": true, + "optional": true + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/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=", + "dev": true + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "devOptional": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic/node_modules/has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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==", + "dev": true + }, + "node_modules/get-port": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", + "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-stdin": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", + "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/get-value": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-3.0.1.tgz", + "integrity": "sha512-mKZj9JLQrwMBtj5wxi6MH8Z5eSKaERpAwjg43dPtlGI1ZVEgH/qC7T8/6R2OBSUA+zzHBZgICsVJaEIV2tKTDA==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/getos": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", + "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==", + "dev": true, + "dependencies": { + "async": "^3.2.0" + } + }, + "node_modules/getos/node_modules/async": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", + "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==", + "dev": true + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/gittar": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/gittar/-/gittar-0.1.1.tgz", + "integrity": "sha1-1pk+phYKhsi3895yKmH3O8meFLQ=", + "dev": true, + "dependencies": { + "mkdirp": "^0.5.1", + "tar": "^4.4.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/gittar/node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "node_modules/gittar/node_modules/fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "dev": true, + "dependencies": { + "minipass": "^2.6.0" + } + }, + "node_modules/gittar/node_modules/minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "node_modules/gittar/node_modules/minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "dev": true, + "dependencies": { + "minipass": "^2.9.0" + } + }, + "node_modules/gittar/node_modules/tar": { + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", + "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", + "dev": true, + "dependencies": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + }, + "engines": { + "node": ">=4.5" + } + }, + "node_modules/gittar/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "dependencies": { + "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" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "dependencies": { + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "dependencies": { + "is-glob": "^2.0.0" + } + }, + "node_modules/global-dirs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", + "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", + "dev": true, + "dependencies": { + "ini": "2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "devOptional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/globby": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", + "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby/node_modules/ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/globby/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "dev": true, + "dependencies": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/got/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/got/node_modules/p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", + "dev": true + }, + "node_modules/growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", + "dev": true + }, + "node_modules/gud": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gud/-/gud-1.0.0.tgz", + "integrity": "sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw==" + }, + "node_modules/gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "dev": true, + "dependencies": { + "duplexer": "^0.1.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "node_modules/handlebars": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.1.tgz", + "integrity": "sha512-C29UoFzHe9yM61lOsIlCE5/mQVGrnIOrOq7maQl76L7tYPCgC1og0Ajt6uWnX4ZTxBPnjw+CUvawphwCfJgUnA==", + "dev": true, + "dependencies": { + "neo-async": "^2.6.0", + "optimist": "^0.6.1", + "source-map": "^0.6.1" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/handlebars/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "deprecated": "this library is no longer supported", + "dev": true, + "dependencies": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/har-validator/node_modules/ajv": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "node_modules/har-validator/node_modules/fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "node_modules/har-validator/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/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==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-ansi/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-binary2": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", + "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", + "dependencies": { + "isarray": "2.0.1" + } + }, + "node_modules/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=" + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "devOptional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "dependencies": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-value/node_modules/get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/has-values/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-yarn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hash-base/node_modules/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==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/hash-base/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/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==", + "dev": true + }, + "node_modules/hex-to-array-buffer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hex-to-array-buffer/-/hex-to-array-buffer-1.1.0.tgz", + "integrity": "sha512-vvl3IM8FfT1uOnHtEqyjkDK9Luqz6MQrH82qIvVnjyXxRhkeaEZyRRPiBgf2yym3nweRVEfayxt/1SoTXZYd4Q==" + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "dev": true, + "dependencies": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hosted-git-info": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", + "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==", + "dev": true + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", + "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", + "dev": true + }, + "node_modules/hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", + "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", + "dev": true + }, + "node_modules/html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "dev": true, + "dependencies": { + "whatwg-encoding": "^1.0.1" + } + }, + "node_modules/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==", + "dev": true + }, + "node_modules/html-minifier": { + "version": "3.5.21", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz", + "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==", + "dev": true, + "dependencies": { + "camel-case": "3.0.x", + "clean-css": "4.2.x", + "commander": "2.17.x", + "he": "1.2.x", + "param-case": "2.1.x", + "relateurl": "0.2.x", + "uglify-js": "3.4.x" + }, + "bin": { + "html-minifier": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/html-minifier/node_modules/commander": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", + "dev": true + }, + "node_modules/html-minifier/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/html-minifier/node_modules/uglify-js": { + "version": "3.4.10", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.10.tgz", + "integrity": "sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==", + "dev": true, + "dependencies": { + "commander": "~2.19.0", + "source-map": "~0.6.1" + }, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/html-minifier/node_modules/uglify-js/node_modules/commander": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", + "dev": true + }, + "node_modules/html-webpack-exclude-assets-plugin": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/html-webpack-exclude-assets-plugin/-/html-webpack-exclude-assets-plugin-0.0.7.tgz", + "integrity": "sha512-gaYKMGBPDts3Fb1WXyDEEcS/0TSRg2IDl3EsbQL2AkKWTqdjSKwfQ8Iz0RhPiWErJfqhq5/wkhoYyjQoG55pug==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/html-webpack-plugin": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz", + "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=", + "deprecated": "3.x is no longer supported", + "dev": true, + "dependencies": { + "html-minifier": "^3.2.3", + "loader-utils": "^0.2.16", + "lodash": "^4.17.3", + "pretty-error": "^2.0.2", + "tapable": "^1.0.0", + "toposort": "^1.0.0", + "util.promisify": "1.0.0" + }, + "engines": { + "node": ">=6.9" + }, + "peerDependencies": { + "webpack": "^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0" + } + }, + "node_modules/html-webpack-plugin/node_modules/big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/html-webpack-plugin/node_modules/emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/html-webpack-plugin/node_modules/loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "dependencies": { + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0", + "object-assign": "^4.0.1" + } + }, + "node_modules/html-webpack-plugin/node_modules/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==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/htmlparser2/node_modules/dom-serializer": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/htmlparser2/node_modules/domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/htmlparser2/node_modules/domutils": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.7.0.tgz", + "integrity": "sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg==", + "dev": true, + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "dev": true + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-errors/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "node_modules/http-parser-js": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz", + "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==", + "dev": true + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-middleware": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", + "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", + "dev": true, + "dependencies": { + "http-proxy": "^1.17.0", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "dependencies": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/expand-brackets/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/expand-brackets/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/expand-brackets/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/expand-brackets/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/expand-brackets/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "dependencies": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/extglob/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/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==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/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=", + "dev": true + }, + "node_modules/human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true, + "engines": { + "node": ">=8.12.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/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=", + "dev": true, + "dependencies": { + "harmony-reflect": "^1.4.6" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + }, + "node_modules/iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "node_modules/ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "dev": true + }, + "node_modules/immutability-helper": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/immutability-helper/-/immutability-helper-3.1.1.tgz", + "integrity": "sha512-Q0QaXjPjwIju/28TsugCHNEASwoCcJSyJV3uO1sOIQGI0jKgm9f41Lvz0DZj3n46cNCyAZTsEYoY4C2bVRUzyQ==" + }, + "node_modules/import-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-3.0.0.tgz", + "integrity": "sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg==", + "dev": true, + "dependencies": { + "import-from": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/import-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-3.0.0.tgz", + "integrity": "sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-from/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/import-local/node_modules/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==", + "dev": true, + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, + "node_modules/indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" + }, + "node_modules/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==", + "dev": true + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/inquirer": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", + "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "dev": true, + "dependencies": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.0", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^2.0.4", + "figures": "^2.0.0", + "lodash": "^4.3.0", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rx-lite": "^4.0.8", + "rx-lite-aggregates": "^4.0.8", + "string-width": "^2.1.0", + "strip-ansi": "^4.0.0", + "through": "^2.3.6" + } + }, + "node_modules/inquirer/node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/inquirer/node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/inquirer/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/internal-ip": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", + "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", + "dev": true, + "dependencies": { + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "node_modules/ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/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=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "node_modules/is-bigint": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.2.tgz", + "integrity": "sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "optional": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.1.tgz", + "integrity": "sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "dependencies": { + "builtin-modules": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-callable": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-ci": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", + "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", + "dev": true, + "dependencies": { + "ci-info": "^1.5.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/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=", + "dev": true, + "dependencies": { + "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" + } + }, + "node_modules/is-core-module": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.5.0.tgz", + "integrity": "sha512-TXCMSDsEHMEEZ6eCA8rwRDbLu55MRGmrctljsBX/2v1d9/GzqHOxW5c5oPSgrUt2vBFXebu9rGqckXGPWOlYpg==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-descriptor/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "dependencies": { + "is-primitive": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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=", + "engines": { + "node": ">=4" + } + }, + "node_modules/is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "dependencies": { + "is-extglob": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "dev": true, + "dependencies": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "dev": true + }, + "node_modules/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==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-npm": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", + "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz", + "integrity": "sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-observable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz", + "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", + "dev": true, + "dependencies": { + "symbol-observable": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "is-path-inside": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-path-in-cwd/node_modules/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==", + "dev": true, + "dependencies": { + "path-is-inside": "^1.0.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, + "node_modules/is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dependencies": { + "has": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true + }, + "node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-string": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.6.tgz", + "integrity": "sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", + "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/is-yarn-global": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", + "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", + "dev": true + }, + "node_modules/isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isomorphic-fetch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz", + "integrity": "sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==", + "dev": true, + "dependencies": { + "node-fetch": "^2.6.1", + "whatwg-fetch": "^3.4.1" + } + }, + "node_modules/isomorphic-fetch/node_modules/node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", + "dev": true, + "engines": { + "node": "4.x || >=6.0.0" + } + }, + "node_modules/isomorphic-unfetch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz", + "integrity": "sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==", + "dev": true, + "dependencies": { + "node-fetch": "^2.6.1", + "unfetch": "^4.2.0" + } + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "node_modules/istanbul-api": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.3.7.tgz", + "integrity": "sha512-4/ApBnMVeEPG3EkSzcw25wDe4N66wxwn+KKn6b47vyek8Xb3NBAcg4xfuQbS7BqcZuTX4wxfD5lVagdggR3gyA==", + "dev": true, + "dependencies": { + "async": "^2.1.4", + "fileset": "^2.0.2", + "istanbul-lib-coverage": "^1.2.1", + "istanbul-lib-hook": "^1.2.2", + "istanbul-lib-instrument": "^1.10.2", + "istanbul-lib-report": "^1.1.5", + "istanbul-lib-source-maps": "^1.2.6", + "istanbul-reports": "^1.5.1", + "js-yaml": "^3.7.0", + "mkdirp": "^0.5.1", + "once": "^1.4.0" + } + }, + "node_modules/istanbul-lib-coverage": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz", + "integrity": "sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ==", + "dev": true + }, + "node_modules/istanbul-lib-hook": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.2.2.tgz", + "integrity": "sha512-/Jmq7Y1VeHnZEQ3TL10VHyb564mn6VrQXHchON9Jf/AEcmQ3ZIiyD1BVzNOKTZf/G3gE+kiGK6SmpF9y3qGPLw==", + "dev": true, + "dependencies": { + "append-transform": "^0.4.0" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.2.tgz", + "integrity": "sha512-aWHxfxDqvh/ZlxR8BBaEPVSWDPUkGD63VjGQn3jcw8jCp7sHEMKcrj4xfJn/ABzdMEHiQNyvDQhqm5o8+SQg7A==", + "dev": true, + "dependencies": { + "babel-generator": "^6.18.0", + "babel-template": "^6.16.0", + "babel-traverse": "^6.18.0", + "babel-types": "^6.18.0", + "babylon": "^6.18.0", + "istanbul-lib-coverage": "^1.2.1", + "semver": "^5.3.0" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true, + "bin": { + "babylon": "bin/babylon.js" + } + }, + "node_modules/istanbul-lib-report": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.5.tgz", + "integrity": "sha512-UsYfRMoi6QO/doUshYNqcKJqVmFe9w51GZz8BS3WB0lYxAllQYklka2wP9+dGZeHYaWIdcXUx8JGdbqaoXRXzw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^1.2.1", + "mkdirp": "^0.5.1", + "path-parse": "^1.0.5", + "supports-color": "^3.1.2" + } + }, + "node_modules/istanbul-lib-report/node_modules/has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-lib-report/node_modules/supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "dependencies": { + "has-flag": "^1.0.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.6.tgz", + "integrity": "sha512-TtbsY5GIHgbMsMiRw35YBHGpZ1DVFEO19vxxeiDMYaeOFOCzfnYVxvl6pOUIZR4dtPhAGpSMup8OyF8ubsaqEg==", + "dev": true, + "dependencies": { + "debug": "^3.1.0", + "istanbul-lib-coverage": "^1.2.1", + "mkdirp": "^0.5.1", + "rimraf": "^2.6.1", + "source-map": "^0.5.3" + } + }, + "node_modules/istanbul-reports": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.5.1.tgz", + "integrity": "sha512-+cfoZ0UXzWjhAdzosCPP3AN8vvef8XDkWtTfgaN+7L3YTpNYITnCaEkceo5SEYy644VkHka/P1FvkWvrG/rrJw==", + "dev": true, + "dependencies": { + "handlebars": "^4.0.3" + } + }, + "node_modules/java-properties": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/java-properties/-/java-properties-1.0.2.tgz", + "integrity": "sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ==", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/jest": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-21.2.1.tgz", + "integrity": "sha512-mXN0ppPvWYoIcC+R+ctKxAJ28xkt/Z5Js875padm4GbgUn6baeR5N4Ng6LjatIRpUQDZVJABT7Y4gucFjPryfw==", + "dev": true, + "dependencies": { + "jest-cli": "^21.2.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/jest-changed-files": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-21.2.0.tgz", + "integrity": "sha512-+lCNP1IZLwN1NOIvBcV5zEL6GENK6TXrDj4UxWIeLvIsIDa+gf6J7hkqsW2qVVt/wvH65rVvcPwqXdps5eclTQ==", + "dev": true, + "dependencies": { + "throat": "^4.0.0" + } + }, + "node_modules/jest-config": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-21.2.1.tgz", + "integrity": "sha512-fJru5HtlD/5l2o25eY9xT0doK3t2dlglrqoGpbktduyoI0T5CwuB++2YfoNZCrgZipTwPuAGonYv0q7+8yDc/A==", + "dev": true, + "dependencies": { + "chalk": "^2.0.1", + "glob": "^7.1.1", + "jest-environment-jsdom": "^21.2.1", + "jest-environment-node": "^21.2.1", + "jest-get-type": "^21.2.0", + "jest-jasmine2": "^21.2.1", + "jest-regex-util": "^21.2.0", + "jest-resolve": "^21.2.0", + "jest-util": "^21.2.1", + "jest-validate": "^21.2.1", + "pretty-format": "^21.2.1" + } + }, + "node_modules/jest-diff": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-21.2.1.tgz", + "integrity": "sha512-E5fu6r7PvvPr5qAWE1RaUwIh/k6Zx/3OOkZ4rk5dBJkEWRrUuSgbMt2EO8IUTPTd6DOqU3LW6uTIwX5FRvXoFA==", + "dev": true, + "dependencies": { + "chalk": "^2.0.1", + "diff": "^3.2.0", + "jest-get-type": "^21.2.0", + "pretty-format": "^21.2.1" + } + }, + "node_modules/jest-docblock": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-21.2.0.tgz", + "integrity": "sha512-5IZ7sY9dBAYSV+YjQ0Ovb540Ku7AO9Z5o2Cg789xj167iQuZ2cG+z0f3Uct6WeYLbU6aQiM2pCs7sZ+4dotydw==", + "dev": true + }, + "node_modules/jest-environment-jsdom": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-21.2.1.tgz", + "integrity": "sha512-mecaeNh0eWmzNrUNMWARysc0E9R96UPBamNiOCYL28k7mksb1d0q6DD38WKP7ABffjnXyUWJPVaWRgUOivwXwg==", + "dev": true, + "dependencies": { + "jest-mock": "^21.2.0", + "jest-util": "^21.2.1", + "jsdom": "^9.12.0" + } + }, + "node_modules/jest-environment-node": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-21.2.1.tgz", + "integrity": "sha512-R211867wx9mVBVHzrjGRGTy5cd05K7eqzQl/WyZixR/VkJ4FayS8qkKXZyYnwZi6Rxo6WEV81cDbiUx/GfuLNw==", + "dev": true, + "dependencies": { + "jest-mock": "^21.2.0", + "jest-util": "^21.2.1" + } + }, + "node_modules/jest-get-type": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-21.2.0.tgz", + "integrity": "sha512-y2fFw3C+D0yjNSDp7ab1kcd6NUYfy3waPTlD8yWkAtiocJdBRQqNoRqVfMNxgj+IjT0V5cBIHJO0z9vuSSZ43Q==", + "dev": true + }, + "node_modules/jest-haste-map": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-21.2.0.tgz", + "integrity": "sha512-5LhsY/loPH7wwOFRMs+PT4aIAORJ2qwgbpMFlbWbxfN0bk3ZCwxJ530vrbSiTstMkYLao6JwBkLhCJ5XbY7ZHw==", + "dev": true, + "dependencies": { + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.1.11", + "jest-docblock": "^21.2.0", + "micromatch": "^2.3.11", + "sane": "^2.0.0", + "worker-farm": "^1.3.1" + } + }, + "node_modules/jest-jasmine2": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-21.2.1.tgz", + "integrity": "sha512-lw8FXXIEekD+jYNlStfgNsUHpfMWhWWCgHV7n0B7mA/vendH7vBFs8xybjQsDzJSduptBZJHqQX9SMssya9+3A==", + "dev": true, + "dependencies": { + "chalk": "^2.0.1", + "expect": "^21.2.1", + "graceful-fs": "^4.1.11", + "jest-diff": "^21.2.1", + "jest-matcher-utils": "^21.2.1", + "jest-message-util": "^21.2.1", + "jest-snapshot": "^21.2.1", + "p-cancelable": "^0.3.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-21.2.1.tgz", + "integrity": "sha512-kn56My+sekD43dwQPrXBl9Zn9tAqwoy25xxe7/iY4u+mG8P3ALj5IK7MLHZ4Mi3xW7uWVCjGY8cm4PqgbsqMCg==", + "dev": true, + "dependencies": { + "chalk": "^2.0.1", + "jest-get-type": "^21.2.0", + "pretty-format": "^21.2.1" + } + }, + "node_modules/jest-message-util": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-21.2.1.tgz", + "integrity": "sha512-EbC1X2n0t9IdeMECJn2BOg7buOGivCvVNjqKMXTzQOu7uIfLml+keUfCALDh8o4rbtndIeyGU8/BKfoTr/LVDQ==", + "dev": true, + "dependencies": { + "chalk": "^2.0.1", + "micromatch": "^2.3.11", + "slash": "^1.0.0" + } + }, + "node_modules/jest-mock": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-21.2.0.tgz", + "integrity": "sha512-aZDfyVf0LEoABWiY6N0d+O963dUQSyUa4qgzurHR3TBDPen0YxKCJ6l2i7lQGh1tVdsuvdrCZ4qPj+A7PievCw==", + "dev": true + }, + "node_modules/jest-regex-util": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-21.2.0.tgz", + "integrity": "sha512-BKQ1F83EQy0d9Jen/mcVX7D+lUt2tthhK/2gDWRgLDJRNOdRgSp1iVqFxP8EN1ARuypvDflRfPzYT8fQnoBQFQ==", + "dev": true + }, + "node_modules/jest-resolve": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-21.2.0.tgz", + "integrity": "sha512-vefQ/Lr+VdNvHUZFQXWtOqHX3HEdOc2MtSahBO89qXywEbUxGPB9ZLP9+BHinkxb60UT2Q/tTDOS6rYc6Mwigw==", + "dev": true, + "dependencies": { + "browser-resolve": "^1.11.2", + "chalk": "^2.0.1", + "is-builtin-module": "^1.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-21.2.0.tgz", + "integrity": "sha512-ok8ybRFU5ScaAcfufIQrCbdNJSRZ85mkxJ1EhUp8Bhav1W1/jv/rl1Q6QoVQHObNxmKnbHVKrfLZbCbOsXQ+bQ==", + "dev": true, + "dependencies": { + "jest-regex-util": "^21.2.0" + } + }, + "node_modules/jest-runner": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-21.2.1.tgz", + "integrity": "sha512-Anb72BOQlHqF/zETqZ2K20dbYsnqW/nZO7jV8BYENl+3c44JhMrA8zd1lt52+N7ErnsQMd2HHKiVwN9GYSXmrg==", + "dev": true, + "dependencies": { + "jest-config": "^21.2.1", + "jest-docblock": "^21.2.0", + "jest-haste-map": "^21.2.0", + "jest-jasmine2": "^21.2.1", + "jest-message-util": "^21.2.1", + "jest-runtime": "^21.2.1", + "jest-util": "^21.2.1", + "pify": "^3.0.0", + "throat": "^4.0.0", + "worker-farm": "^1.3.1" + } + }, + "node_modules/jest-runtime": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-21.2.1.tgz", + "integrity": "sha512-6omlpA3+NSE+rHwD0PQjNEjZeb2z+oRmuehMfM1tWQVum+E0WV3pFt26Am0DUfQkkPyTABvxITRjCUclYgSOsA==", + "dev": true, + "dependencies": { + "babel-core": "^6.0.0", + "babel-jest": "^21.2.0", + "babel-plugin-istanbul": "^4.0.0", + "chalk": "^2.0.1", + "convert-source-map": "^1.4.0", + "graceful-fs": "^4.1.11", + "jest-config": "^21.2.1", + "jest-haste-map": "^21.2.0", + "jest-regex-util": "^21.2.0", + "jest-resolve": "^21.2.0", + "jest-util": "^21.2.1", + "json-stable-stringify": "^1.0.1", + "micromatch": "^2.3.11", + "slash": "^1.0.0", + "strip-bom": "3.0.0", + "write-file-atomic": "^2.1.0", + "yargs": "^9.0.0" + }, + "bin": { + "jest-runtime": "bin/jest-runtime.js" + } + }, + "node_modules/jest-runtime/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-runtime/node_modules/camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-runtime/node_modules/cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "dependencies": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "node_modules/jest-runtime/node_modules/cliui/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-runtime/node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-runtime/node_modules/get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "node_modules/jest-runtime/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-runtime/node_modules/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=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-runtime/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-runtime/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-runtime/node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-runtime/node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-runtime/node_modules/path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "dependencies": { + "pify": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-runtime/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-runtime/node_modules/read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "dependencies": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-runtime/node_modules/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=", + "dev": true, + "dependencies": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-runtime/node_modules/require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "node_modules/jest-runtime/node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-runtime/node_modules/string-width/node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-runtime/node_modules/string-width/node_modules/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=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-runtime/node_modules/string-width/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-runtime/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-runtime/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-runtime/node_modules/wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "dependencies": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-runtime/node_modules/wrap-ansi/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-runtime/node_modules/y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "node_modules/jest-runtime/node_modules/yargs": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-9.0.1.tgz", + "integrity": "sha1-UqzCP+7Kw0BCB47njAwAf1CF20w=", + "dev": true, + "dependencies": { + "camelcase": "^4.1.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "read-pkg-up": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^7.0.0" + } + }, + "node_modules/jest-runtime/node_modules/yargs-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", + "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "dev": true, + "dependencies": { + "camelcase": "^4.1.0" + } + }, + "node_modules/jest-snapshot": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-21.2.1.tgz", + "integrity": "sha512-bpaeBnDpdqaRTzN8tWg0DqOTo2DvD3StOemxn67CUd1p1Po+BUpvePAp44jdJ7Pxcjfg+42o4NHw1SxdCA2rvg==", + "dev": true, + "dependencies": { + "chalk": "^2.0.1", + "jest-diff": "^21.2.1", + "jest-matcher-utils": "^21.2.1", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^21.2.1" + } + }, + "node_modules/jest-util": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-21.2.1.tgz", + "integrity": "sha512-r20W91rmHY3fnCoO7aOAlyfC51x2yeV3xF+prGsJAUsYhKeV670ZB8NO88Lwm7ASu8SdH0S+U+eFf498kjhA4g==", + "dev": true, + "dependencies": { + "callsites": "^2.0.0", + "chalk": "^2.0.1", + "graceful-fs": "^4.1.11", + "jest-message-util": "^21.2.1", + "jest-mock": "^21.2.0", + "jest-validate": "^21.2.1", + "mkdirp": "^0.5.1" + } + }, + "node_modules/jest-util/node_modules/callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-validate": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-21.2.1.tgz", + "integrity": "sha512-k4HLI1rZQjlU+EC682RlQ6oZvLrE5SCh3brseQc24vbZTxzT/k/3urar5QMCVgjadmSO7lECeGdc6YxnM3yEGg==", + "dev": true, + "dependencies": { + "chalk": "^2.0.1", + "jest-get-type": "^21.2.0", + "leven": "^2.1.0", + "pretty-format": "^21.2.1" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest/node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest/node_modules/camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest/node_modules/cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "dependencies": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "node_modules/jest/node_modules/cliui/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest/node_modules/cliui/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest/node_modules/cliui/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest/node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest/node_modules/get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "node_modules/jest/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest/node_modules/jest-cli": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-21.2.1.tgz", + "integrity": "sha512-T1BzrbFxDIW/LLYQqVfo94y/hhaj1NzVQkZgBumAC+sxbjMROI7VkihOdxNR758iYbQykL2ZOWUBurFgkQrzdg==", + "dev": true, + "dependencies": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "glob": "^7.1.2", + "graceful-fs": "^4.1.11", + "is-ci": "^1.0.10", + "istanbul-api": "^1.1.1", + "istanbul-lib-coverage": "^1.0.1", + "istanbul-lib-instrument": "^1.4.2", + "istanbul-lib-source-maps": "^1.1.0", + "jest-changed-files": "^21.2.0", + "jest-config": "^21.2.1", + "jest-environment-jsdom": "^21.2.1", + "jest-haste-map": "^21.2.0", + "jest-message-util": "^21.2.1", + "jest-regex-util": "^21.2.0", + "jest-resolve-dependencies": "^21.2.0", + "jest-runner": "^21.2.1", + "jest-runtime": "^21.2.1", + "jest-snapshot": "^21.2.1", + "jest-util": "^21.2.1", + "micromatch": "^2.3.11", + "node-notifier": "^5.0.2", + "pify": "^3.0.0", + "slash": "^1.0.0", + "string-length": "^2.0.0", + "strip-ansi": "^4.0.0", + "which": "^1.2.12", + "worker-farm": "^1.3.1", + "yargs": "^9.0.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/jest/node_modules/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=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest/node_modules/load-json-file/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest/node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest/node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest/node_modules/path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "dependencies": { + "pify": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest/node_modules/path-type/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest/node_modules/read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "dependencies": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest/node_modules/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=", + "dev": true, + "dependencies": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest/node_modules/require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "node_modules/jest/node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest/node_modules/string-width/node_modules/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=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest/node_modules/wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "dependencies": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest/node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest/node_modules/wrap-ansi/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest/node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest/node_modules/y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "node_modules/jest/node_modules/yargs": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-9.0.1.tgz", + "integrity": "sha1-UqzCP+7Kw0BCB47njAwAf1CF20w=", + "dev": true, + "dependencies": { + "camelcase": "^4.1.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "read-pkg-up": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^7.0.0" + } + }, + "node_modules/jest/node_modules/yargs-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", + "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "dev": true, + "dependencies": { + "camelcase": "^4.1.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha1-sBMHyym2GKHtJux56RH4A8TaAEA=" + }, + "node_modules/jsdom": { + "version": "9.12.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-9.12.0.tgz", + "integrity": "sha1-6MVG//ywbADUgzyoRBD+1/igl9Q=", + "dev": true, + "dependencies": { + "abab": "^1.0.3", + "acorn": "^4.0.4", + "acorn-globals": "^3.1.0", + "array-equal": "^1.0.0", + "content-type-parser": "^1.0.1", + "cssom": ">= 0.3.2 < 0.4.0", + "cssstyle": ">= 0.2.37 < 0.3.0", + "escodegen": "^1.6.1", + "html-encoding-sniffer": "^1.0.1", + "nwmatcher": ">= 1.3.9 < 2.0.0", + "parse5": "^1.5.1", + "request": "^2.79.0", + "sax": "^1.2.1", + "symbol-tree": "^3.2.1", + "tough-cookie": "^2.3.2", + "webidl-conversions": "^4.0.0", + "whatwg-encoding": "^1.0.1", + "whatwg-url": "^4.3.0", + "xml-name-validator": "^2.0.1" + } + }, + "node_modules/jsdom/node_modules/acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "devOptional": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", + "dev": true + }, + "node_modules/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==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true + }, + "node_modules/json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, + "dependencies": { + "jsonify": "~0.0.0" + } + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "node_modules/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=", + "dev": true + }, + "node_modules/json3": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", + "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==", + "dev": true + }, + "node_modules/json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/jsonc-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.2.0.tgz", + "integrity": "sha512-4fLQxW1j/5fWj6p78vAlAafoCKtuBm6ghv+Ij5W2DrDx0qE+ZdEl2c6Ko1mgJNF5ftX1iEWQQ4Ap7+3GlhjkOA==", + "dev": true + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "node_modules/jsx-ast-utils": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.2.3.tgz", + "integrity": "sha512-EdIHFMm+1BPynpKOpdPqiOsvnIrInRGJD7bzPZdPkjitQEqpdpUuFpq4T0npZFKTiB3RhWFdGN+oqOJIdhDhQA==", + "dev": true, + "dependencies": { + "array-includes": "^3.0.3", + "object.assign": "^4.1.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.0" + } + }, + "node_modules/killable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", + "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", + "dev": true + }, + "node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kind-of/node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/kleur": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.4.tgz", + "integrity": "sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/klona": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.4.tgz", + "integrity": "sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "lodash": "^4.17.5", + "webpack-sources": "^1.1.0" + } + }, + "node_modules/latest-version": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", + "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", + "dev": true, + "dependencies": { + "package-json": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lazy-ass": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", + "integrity": "sha1-eZllXoZGwX8In90YfRUNMyTVRRM=", + "dev": true, + "engines": { + "node": "> 0.8" + } + }, + "node_modules/lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "dependencies": { + "invert-kv": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/leaflet": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.7.1.tgz", + "integrity": "sha512-/xwPEBidtg69Q3HlqPdU3DnrXQOvQU/CCHA1tcDQVzOwm91YMYaILjNp7L4Eaw5Z4sOYdbBz6koWyibppd8Zqw==" + }, + "node_modules/leven": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", + "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lilconfig": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.3.tgz", + "integrity": "sha512-EHKqr/+ZvdKCifpNrJCKxBTgk5XupZA3y/aCPY9mxfgBzmgh93Mt/WqjjQ38oMxXuvDokaKiM3lAgvSH2sjtHg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/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=", + "dev": true + }, + "node_modules/linkstate": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/linkstate/-/linkstate-1.1.1.tgz", + "integrity": "sha512-5SICdxQG9FpWk44wSEoM2WOCUNuYfClp10t51XAIV5E7vUILF/dTYxf0vJw6bW2dUd2wcQon+LkNtRijpNLrig==" + }, + "node_modules/listr": { + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/listr/-/listr-0.14.3.tgz", + "integrity": "sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==", + "dev": true, + "dependencies": { + "@samverschueren/stream-to-observable": "^0.3.0", + "is-observable": "^1.1.0", + "is-promise": "^2.1.0", + "is-stream": "^1.1.0", + "listr-silent-renderer": "^1.1.1", + "listr-update-renderer": "^0.5.0", + "listr-verbose-renderer": "^0.5.0", + "p-map": "^2.0.0", + "rxjs": "^6.3.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/listr-silent-renderer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", + "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/listr-update-renderer": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz", + "integrity": "sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==", + "dev": true, + "dependencies": { + "chalk": "^1.1.3", + "cli-truncate": "^0.2.1", + "elegant-spinner": "^1.0.1", + "figures": "^1.7.0", + "indent-string": "^3.0.0", + "log-symbols": "^1.0.2", + "log-update": "^2.3.0", + "strip-ansi": "^3.0.1" + }, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "listr": "^0.14.2" + } + }, + "node_modules/listr-update-renderer/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/listr-update-renderer/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/listr-update-renderer/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/listr-update-renderer/node_modules/figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/listr-update-renderer/node_modules/indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/listr-update-renderer/node_modules/log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "dev": true, + "dependencies": { + "chalk": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/listr-update-renderer/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/listr-verbose-renderer": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz", + "integrity": "sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.1", + "cli-cursor": "^2.1.0", + "date-fns": "^1.27.2", + "figures": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/listr-verbose-renderer/node_modules/date-fns": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", + "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==", + "dev": true + }, + "node_modules/listr/node_modules/p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/load-json-file/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "dev": true, + "engines": { + "node": ">=4.3.0 <5.0.0 || >=5.10" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/loader-utils/node_modules/json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/loader-utils/node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/local-access": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/local-access/-/local-access-1.1.0.tgz", + "integrity": "sha512-XfegD5pyTAfb+GY6chk283Ox5z8WexG56OvM06RWLpAc/UHozO8X6xAxEkIitZOtsSMM1Yr3DkHgW5W+onLhCw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + }, + "node_modules/lodash-es": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.15.tgz", + "integrity": "sha512-rlrc3yU3+JNOpZ9zj5pQtxnx2THmvRykwL4Xlxoa8I9lHBlVbbyPhgyPMioxVZ4NqyxaVVtaJnzsyOidQIhyyQ==" + }, + "node_modules/lodash._basebind": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/lodash._basebind/-/lodash._basebind-2.3.0.tgz", + "integrity": "sha1-K1vEUqDhBhQ7IYafIzvbWHQX0kg=", + "dev": true, + "dependencies": { + "lodash._basecreate": "~2.3.0", + "lodash._setbinddata": "~2.3.0", + "lodash.isobject": "~2.3.0" + } + }, + "node_modules/lodash._basecreate": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-2.3.0.tgz", + "integrity": "sha1-m4ioak3P97fzxh2Dovz8BnHsneA=", + "dev": true, + "dependencies": { + "lodash._renative": "~2.3.0", + "lodash.isobject": "~2.3.0", + "lodash.noop": "~2.3.0" + } + }, + "node_modules/lodash._basecreatecallback": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/lodash._basecreatecallback/-/lodash._basecreatecallback-2.3.0.tgz", + "integrity": "sha1-N7KrF1kaM56YjbMln81GAZ16w2I=", + "dev": true, + "dependencies": { + "lodash._setbinddata": "~2.3.0", + "lodash.bind": "~2.3.0", + "lodash.identity": "~2.3.0", + "lodash.support": "~2.3.0" + } + }, + "node_modules/lodash._basecreatewrapper": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/lodash._basecreatewrapper/-/lodash._basecreatewrapper-2.3.0.tgz", + "integrity": "sha1-qgxhrZYETDkzN2ExSDqXWcNlEkc=", + "dev": true, + "dependencies": { + "lodash._basecreate": "~2.3.0", + "lodash._setbinddata": "~2.3.0", + "lodash._slice": "~2.3.0", + "lodash.isobject": "~2.3.0" + } + }, + "node_modules/lodash._createwrapper": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/lodash._createwrapper/-/lodash._createwrapper-2.3.0.tgz", + "integrity": "sha1-0arhEC2t9EDo4G/BM6bt1/4UYHU=", + "dev": true, + "dependencies": { + "lodash._basebind": "~2.3.0", + "lodash._basecreatewrapper": "~2.3.0", + "lodash.isfunction": "~2.3.0" + } + }, + "node_modules/lodash._objecttypes": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/lodash._objecttypes/-/lodash._objecttypes-2.3.0.tgz", + "integrity": "sha1-aj6jmH3W7rgCGy1cnDA1Scwrrh4=", + "dev": true + }, + "node_modules/lodash._renative": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/lodash._renative/-/lodash._renative-2.3.0.tgz", + "integrity": "sha1-d9jt1M7SbdWXH54Vpfdy5OMX+9M=", + "dev": true + }, + "node_modules/lodash._setbinddata": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/lodash._setbinddata/-/lodash._setbinddata-2.3.0.tgz", + "integrity": "sha1-5WEEkKzRMnfVmFjZW18nJ/FQjwQ=", + "dev": true, + "dependencies": { + "lodash._renative": "~2.3.0", + "lodash.noop": "~2.3.0" + } + }, + "node_modules/lodash._shimkeys": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/lodash._shimkeys/-/lodash._shimkeys-2.3.0.tgz", + "integrity": "sha1-YR+TFJ4+bHIQlrSHae8pU3rai6k=", + "dev": true, + "dependencies": { + "lodash._objecttypes": "~2.3.0" + } + }, + "node_modules/lodash._slice": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/lodash._slice/-/lodash._slice-2.3.0.tgz", + "integrity": "sha1-FHGYEyhZly5GgMoppZkshVZpqlw=", + "dev": true + }, + "node_modules/lodash.bind": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-2.3.0.tgz", + "integrity": "sha1-wqjhi2jl7MFS4rFoJmEW/qWwFsw=", + "dev": true, + "dependencies": { + "lodash._createwrapper": "~2.3.0", + "lodash._renative": "~2.3.0", + "lodash._slice": "~2.3.0" + } + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true + }, + "node_modules/lodash.foreach": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-2.3.0.tgz", + "integrity": "sha1-CDQEyR6EbudyRf3512UZxosq8Wg=", + "dev": true, + "dependencies": { + "lodash._basecreatecallback": "~2.3.0", + "lodash.forown": "~2.3.0" + } + }, + "node_modules/lodash.forown": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/lodash.forown/-/lodash.forown-2.3.0.tgz", + "integrity": "sha1-JPtKr4ANRfwtxgv+w84EyDajrX8=", + "dev": true, + "dependencies": { + "lodash._basecreatecallback": "~2.3.0", + "lodash._objecttypes": "~2.3.0", + "lodash.keys": "~2.3.0" + } + }, + "node_modules/lodash.identity": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/lodash.identity/-/lodash.identity-2.3.0.tgz", + "integrity": "sha1-awGiEMlIU1XCqRO0i2cRIZoXPe0=", + "dev": true + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", + "dev": true + }, + "node_modules/lodash.isfunction": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-2.3.0.tgz", + "integrity": "sha1-aylz5HpkfPEucNZ2rqE2Q3BuUmc=", + "dev": true + }, + "node_modules/lodash.isobject": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-2.3.0.tgz", + "integrity": "sha1-LhbT/Fg9qYMZaJU/LY5tc0NPZ5k=", + "dev": true, + "dependencies": { + "lodash._objecttypes": "~2.3.0" + } + }, + "node_modules/lodash.keys": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.3.0.tgz", + "integrity": "sha1-s1D0+Syqn0WkouzwGEVM8vKK4lM=", + "dev": true, + "dependencies": { + "lodash._renative": "~2.3.0", + "lodash._shimkeys": "~2.3.0", + "lodash.isobject": "~2.3.0" + } + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "node_modules/lodash.noop": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/lodash.noop/-/lodash.noop-2.3.0.tgz", + "integrity": "sha1-MFnWKNUbv5N80qC2/Dp/ISpmnCw=", + "dev": true + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=", + "dev": true + }, + "node_modules/lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, + "node_modules/lodash.support": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/lodash.support/-/lodash.support-2.3.0.tgz", + "integrity": "sha1-fq8DivTw1qq3drRKptz8gDNMm/0=", + "dev": true, + "dependencies": { + "lodash._renative": "~2.3.0" + } + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-update": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz", + "integrity": "sha1-iDKP19HOeTiykoN0bwsbwSayRwg=", + "dev": true, + "dependencies": { + "ansi-escapes": "^3.0.0", + "cli-cursor": "^2.0.0", + "wrap-ansi": "^3.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/wrap-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz", + "integrity": "sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=", + "dev": true, + "dependencies": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/loglevel": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz", + "integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==", + "dev": true, + "engines": { + "node": ">= 0.6.0" + }, + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/loglevel" + } + }, + "node_modules/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==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", + "dev": true + }, + "node_modules/lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.4" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "dev": true, + "dependencies": { + "tmpl": "1.0.x" + } + }, + "node_modules/map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "dependencies": { + "p-defer": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "dependencies": { + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/math-random": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz", + "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==", + "dev": true + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/mdn-browser-compat-data": { + "version": "0.0.65", + "resolved": "https://registry.npmjs.org/mdn-browser-compat-data/-/mdn-browser-compat-data-0.0.65.tgz", + "integrity": "sha512-OC27wWCLD2mw2aW6+8zZTwCv0+9WMTOFxuvTBfWoCx8f9gVFNUXHxGYA16mhKyso7hEa4tw1hY+ruCB/kg3EzQ==", + "deprecated": "mdn-browser-compat-data is deprecated. Upgrade to @mdn/browser-compat-data. Learn more: https://github.com/mdn/browser-compat-data/blob/v1.1.2/UPGRADE-2.0.x.md", + "dev": true, + "dependencies": { + "extend": "3.0.2" + } + }, + "node_modules/mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", + "dev": true + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "dev": true, + "dependencies": { + "mimic-fn": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/memoize-one": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-4.0.3.tgz", + "integrity": "sha512-QmpUu4KqDmX0plH4u+tf0riMc1KHE1+lw95cMrLlXQAFOx/xnBtwhZ52XJxd9X2O6kwKBqX32kmhbhlobD0cuw==" + }, + "node_modules/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=", + "dev": true, + "dependencies": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "node_modules/merge": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.1.tgz", + "integrity": "sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ==", + "dev": true + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/microevent.ts": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/microevent.ts/-/microevent.ts-0.1.1.tgz", + "integrity": "sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g==", + "dev": true + }, + "node_modules/micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "dependencies": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "dependencies": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "bin": { + "miller-rabin": "bin/miller-rabin" + } + }, + "node_modules/miller-rabin/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/mime": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", + "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.42.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.42.0.tgz", + "integrity": "sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.25", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.25.tgz", + "integrity": "sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg==", + "dev": true, + "dependencies": { + "mime-db": "1.42.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-1.6.2.tgz", + "integrity": "sha512-WhDvO3SjGm40oV5y26GjMJYjd2UMqrLAGKy5YS2/3QKJy2F7jgynuHTir/tgUUOiNQu5saXHdc8reo7YuhhT4Q==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0", + "webpack-sources": "^1.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.4.0 || ^5.0.0" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/mini-css-extract-plugin/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", + "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.7", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "node_modules/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=", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "node_modules/minipass": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", + "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, + "dependencies": { + "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" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "dependencies": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mixin-deep/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", + "dev": true, + "dependencies": { + "minimist": "0.0.8" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/moment": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", + "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "dependencies": { + "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" + } + }, + "node_modules/mri": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.1.6.tgz", + "integrity": "sha512-oi1b3MfbyGa7FJMP9GmLTttni5JoICpYBRlq+x5V16fZbLsnL9N3wFqqIm/nIG43FjUFkFh9Epzp/kzUGUnJxQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "node_modules/multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dev": true, + "dependencies": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/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=", + "dev": true + }, + "node_modules/mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, + "node_modules/nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "dev": true, + "optional": true + }, + "node_modules/nanoid": { + "version": "3.1.23", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.23.tgz", + "integrity": "sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/native-url": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/native-url/-/native-url-0.3.4.tgz", + "integrity": "sha512-6iM8R99ze45ivyH8vybJ7X0yekIcPf5GgLV5K0ENCbmRcaRIDoj37BC8iLEmaaBfqqb8enuZ5p0uhY+lVAbAcA==", + "dev": true, + "dependencies": { + "querystring": "^0.2.0" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "node_modules/negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", + "dev": true + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node_modules/no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "dev": true, + "dependencies": { + "lower-case": "^1.1.1" + } + }, + "node_modules/node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", + "dev": true, + "engines": { + "node": "4.x || >=6.0.0" + } + }, + "node_modules/node-forge": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", + "dev": true, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "dev": true + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "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" + } + }, + "node_modules/node-libs-browser/node_modules/buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "node_modules/node-libs-browser/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "node_modules/node-libs-browser/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "node_modules/node-notifier": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.3.tgz", + "integrity": "sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q==", + "dev": true, + "dependencies": { + "growly": "^1.3.0", + "is-wsl": "^1.1.0", + "semver": "^5.5.0", + "shellwords": "^0.1.1", + "which": "^1.3.0" + } + }, + "node_modules/node-releases": { + "version": "1.1.40", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.40.tgz", + "integrity": "sha512-r4LPcC5b/bS8BdtWH1fbeK88ib/wg9aqmg6/s3ngNLn2Ewkn/8J6Iw3P9RTlfIAdSdvYvQl2thCY5Y+qTAQ2iQ==", + "dev": true, + "dependencies": { + "semver": "^6.3.0" + } + }, + "node_modules/node-releases/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/nodent-compiler": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/nodent-compiler/-/nodent-compiler-3.2.11.tgz", + "integrity": "sha512-rfDrGWdgIJYomPUzR8nXiWNuIhJ7cVodPeZP3Ho65LEycuaX2uVNZ0ytpcfrmUKzdFeLRtye9+pHe8OynPZuPQ==", + "engines": "node >= 0.10.0", + "dependencies": { + "acorn": ">= 2.5.2 <= 5.7.3", + "acorn-es7-plugin": "^1.1.7", + "nodent-transform": "^3.2.9", + "source-map": "^0.5.7" + } + }, + "node_modules/nodent-runtime": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/nodent-runtime/-/nodent-runtime-3.2.1.tgz", + "integrity": "sha512-7Ws63oC+215smeKJQCxzrK21VFVlCFBkwl0MOObt0HOpVQXs3u483sAmtkF33nNqZ5rSOQjB76fgyPBmAUrtCA==", + "hasInstallScript": true + }, + "node_modules/nodent-transform": { + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/nodent-transform/-/nodent-transform-3.2.9.tgz", + "integrity": "sha512-4a5FH4WLi+daH/CGD5o/JWRR8W5tlCkd3nrDSkxbOzscJTyTUITltvOJeQjg3HJ1YgEuNyiPhQbvbtRjkQBByQ==" + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/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=", + "dev": true, + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "boolbase": "~1.0.0" + } + }, + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nwmatcher": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.4.tgz", + "integrity": "sha512-3iuY4N5dhgMpCUrOVnuAdGrgxVqV2cJpM+XNccjR2DKOB1RUP0aA+wGXEiNziG/UKboFyGBIoKOaNlJxx8bciQ==", + "dev": true + }, + "node_modules/nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", + "dev": true + }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "dependencies": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.1.tgz", + "integrity": "sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY=", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "dependencies": { + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.entries": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.0.tgz", + "integrity": "sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.12.0", + "function-bind": "^1.1.1", + "has": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.1.tgz", + "integrity": "sha512-PUQv8Hbg3j2QX0IQYv3iAGCbGcu4yY4KQ92/dhA4sFSixBmSmp13UpDLs6jGK8rBtbmhNNIK99LD2k293jpiGA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.15.0", + "function-bind": "^1.1.1", + "has": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.getownpropertydescriptors": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz", + "integrity": "sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.getownpropertydescriptors/node_modules/es-abstract": { + "version": "1.18.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.3.tgz", + "integrity": "sha512-nQIr12dxV7SSxE6r6f1l3DtAeEYdsGpps13dR0TwJg1S8gyp4ZPgy3FZcHBgbiQqnoqSTb+oC+kO4UQ0C/J8vw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "is-callable": "^1.2.3", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.3", + "is-string": "^1.0.6", + "object-inspect": "^1.10.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.getownpropertydescriptors/node_modules/has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.getownpropertydescriptors/node_modules/is-callable": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.getownpropertydescriptors/node_modules/is-regex": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz", + "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.getownpropertydescriptors/node_modules/object-inspect": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.getownpropertydescriptors/node_modules/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==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "dependencies": { + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.values": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.0.tgz", + "integrity": "sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.12.0", + "function-bind": "^1.1.1", + "has": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "dependencies": { + "mimic-fn": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true, + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/opn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "dev": true, + "dependencies": { + "is-wsl": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "dependencies": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + } + }, + "node_modules/optimize-css-assets-webpack-plugin": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-6.0.1.tgz", + "integrity": "sha512-BshV2UZPfggZLdUfN3zFBbG4sl/DynUI+YCB6fRRDWaqO2OiWN8GPcp4Y0/fEV6B3k9Hzyk3czve3V/8B/SzKQ==", + "dev": true, + "dependencies": { + "cssnano": "^5.0.2", + "last-call-webpack-plugin": "^3.0.0", + "postcss": "^8.2.1" + }, + "peerDependencies": { + "webpack": "^4.0.0" + } + }, + "node_modules/optimize-css-assets-webpack-plugin/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/optimize-css-assets-webpack-plugin/node_modules/browserslist": { + "version": "4.16.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", + "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", + "dev": true, + "dependencies": { + "caniuse-lite": "^1.0.30001219", + "colorette": "^1.2.2", + "electron-to-chromium": "^1.3.723", + "escalade": "^3.1.1", + "node-releases": "^1.1.71" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "node_modules/optimize-css-assets-webpack-plugin/node_modules/caniuse-lite": { + "version": "1.0.30001245", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001245.tgz", + "integrity": "sha512-768fM9j1PKXpOCKws6eTo3RHmvTUsG9UrpT4WoREFeZgJBTi4/X9g565azS/rVUGtqb8nt7FjLeF5u4kukERnA==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "node_modules/optimize-css-assets-webpack-plugin/node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/optimize-css-assets-webpack-plugin/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/optimize-css-assets-webpack-plugin/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/optimize-css-assets-webpack-plugin/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/optimize-css-assets-webpack-plugin/node_modules/css-color-names": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-1.0.1.tgz", + "integrity": "sha512-/loXYOch1qU1biStIFsHH8SxTmOseh1IJqFvy8IujXOm1h+QjUdDhkzOrR5HG8K8mlxREj0yfi8ewCHx0eMxzA==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/optimize-css-assets-webpack-plugin/node_modules/css-declaration-sorter": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.0.3.tgz", + "integrity": "sha512-52P95mvW1SMzuRZegvpluT6yEv0FqQusydKQPZsNN5Q7hh8EwQvN8E2nwuJ16BBvNN6LcoIZXu/Bk58DAhrrxw==", + "dev": true, + "dependencies": { + "timsort": "^0.3.0" + }, + "engines": { + "node": ">= 10" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/optimize-css-assets-webpack-plugin/node_modules/css-select": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", + "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^5.0.0", + "domhandler": "^4.2.0", + "domutils": "^2.6.0", + "nth-check": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/optimize-css-assets-webpack-plugin/node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/optimize-css-assets-webpack-plugin/node_modules/css-what": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.0.1.tgz", + "integrity": "sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/optimize-css-assets-webpack-plugin/node_modules/cssnano": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.0.6.tgz", + "integrity": "sha512-NiaLH/7yqGksFGsFNvSRe2IV/qmEBAeDE64dYeD8OBrgp6lE8YoMeQJMtsv5ijo6MPyhuoOvFhI94reahBRDkw==", + "dev": true, + "dependencies": { + "cosmiconfig": "^7.0.0", + "cssnano-preset-default": "^5.1.3", + "is-resolvable": "^1.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/cssnano" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/optimize-css-assets-webpack-plugin/node_modules/cssnano-preset-default": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.1.3.tgz", + "integrity": "sha512-qo9tX+t4yAAZ/yagVV3b+QBKeLklQbmgR3wI7mccrDcR+bEk9iHgZN1E7doX68y9ThznLya3RDmR+nc7l6/2WQ==", + "dev": true, + "dependencies": { + "css-declaration-sorter": "^6.0.3", + "cssnano-utils": "^2.0.1", + "postcss-calc": "^8.0.0", + "postcss-colormin": "^5.2.0", + "postcss-convert-values": "^5.0.1", + "postcss-discard-comments": "^5.0.1", + "postcss-discard-duplicates": "^5.0.1", + "postcss-discard-empty": "^5.0.1", + "postcss-discard-overridden": "^5.0.1", + "postcss-merge-longhand": "^5.0.2", + "postcss-merge-rules": "^5.0.2", + "postcss-minify-font-values": "^5.0.1", + "postcss-minify-gradients": "^5.0.1", + "postcss-minify-params": "^5.0.1", + "postcss-minify-selectors": "^5.1.0", + "postcss-normalize-charset": "^5.0.1", + "postcss-normalize-display-values": "^5.0.1", + "postcss-normalize-positions": "^5.0.1", + "postcss-normalize-repeat-style": "^5.0.1", + "postcss-normalize-string": "^5.0.1", + "postcss-normalize-timing-functions": "^5.0.1", + "postcss-normalize-unicode": "^5.0.1", + "postcss-normalize-url": "^5.0.2", + "postcss-normalize-whitespace": "^5.0.1", + "postcss-ordered-values": "^5.0.2", + "postcss-reduce-initial": "^5.0.1", + "postcss-reduce-transforms": "^5.0.1", + "postcss-svgo": "^5.0.2", + "postcss-unique-selectors": "^5.0.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/optimize-css-assets-webpack-plugin/node_modules/dom-serializer": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/optimize-css-assets-webpack-plugin/node_modules/domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/optimize-css-assets-webpack-plugin/node_modules/domutils": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.7.0.tgz", + "integrity": "sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg==", + "dev": true, + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/optimize-css-assets-webpack-plugin/node_modules/electron-to-chromium": { + "version": "1.3.776", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.776.tgz", + "integrity": "sha512-V0w7eFSBoFPpdw4xexjVPZ770UDZIevSwkkj4W97XbE3IsCsTRFpa7/yXGZ88EOQAUEA09JMMsWK0xsw0kRAYw==", + "dev": true + }, + "node_modules/optimize-css-assets-webpack-plugin/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/optimize-css-assets-webpack-plugin/node_modules/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/optimize-css-assets-webpack-plugin/node_modules/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==", + "dev": true + }, + "node_modules/optimize-css-assets-webpack-plugin/node_modules/node-releases": { + "version": "1.1.73", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz", + "integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==", + "dev": true + }, + "node_modules/optimize-css-assets-webpack-plugin/node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optimize-css-assets-webpack-plugin/node_modules/nth-check": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz", + "integrity": "sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/optimize-css-assets-webpack-plugin/node_modules/postcss-calc": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.0.0.tgz", + "integrity": "sha512-5NglwDrcbiy8XXfPM11F3HeC6hoT9W7GUH/Zi5U/p7u3Irv4rHhdDcIZwG0llHXV4ftsBjpfWMXAnXNl4lnt8g==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + }, + "peerDependencies": { + "postcss": "^8.2.2" + } + }, + "node_modules/optimize-css-assets-webpack-plugin/node_modules/postcss-colormin": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.2.0.tgz", + "integrity": "sha512-+HC6GfWU3upe5/mqmxuqYZ9B2Wl4lcoUUNkoaX59nEWV4EtADCMiBqui111Bu8R8IvaZTmqmxrqOAqjbHIwXPw==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "colord": "^2.0.1", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/optimize-css-assets-webpack-plugin/node_modules/postcss-convert-values": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.0.1.tgz", + "integrity": "sha512-C3zR1Do2BkKkCgC0g3sF8TS0koF2G+mN8xxayZx3f10cIRmTaAnpgpRQZjNekTZxM2ciSPoh2IWJm0VZx8NoQg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/optimize-css-assets-webpack-plugin/node_modules/postcss-discard-comments": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.0.1.tgz", + "integrity": "sha512-lgZBPTDvWrbAYY1v5GYEv8fEO/WhKOu/hmZqmCYfrpD6eyDWWzAOsl2rF29lpvziKO02Gc5GJQtlpkTmakwOWg==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/optimize-css-assets-webpack-plugin/node_modules/postcss-discard-duplicates": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.1.tgz", + "integrity": "sha512-svx747PWHKOGpAXXQkCc4k/DsWo+6bc5LsVrAsw+OU+Ibi7klFZCyX54gjYzX4TH+f2uzXjRviLARxkMurA2bA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/optimize-css-assets-webpack-plugin/node_modules/postcss-discard-empty": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.0.1.tgz", + "integrity": "sha512-vfU8CxAQ6YpMxV2SvMcMIyF2LX1ZzWpy0lqHDsOdaKKLQVQGVP1pzhrI9JlsO65s66uQTfkQBKBD/A5gp9STFw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/optimize-css-assets-webpack-plugin/node_modules/postcss-discard-overridden": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.0.1.tgz", + "integrity": "sha512-Y28H7y93L2BpJhrdUR2SR2fnSsT+3TVx1NmVQLbcnZWwIUpJ7mfcTC6Za9M2PG6w8j7UQRfzxqn8jU2VwFxo3Q==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/optimize-css-assets-webpack-plugin/node_modules/postcss-merge-longhand": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.0.2.tgz", + "integrity": "sha512-BMlg9AXSI5G9TBT0Lo/H3PfUy63P84rVz3BjCFE9e9Y9RXQZD3+h3YO1kgTNsNJy7bBc1YQp8DmSnwLIW5VPcw==", + "dev": true, + "dependencies": { + "css-color-names": "^1.0.1", + "postcss-value-parser": "^4.1.0", + "stylehacks": "^5.0.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/optimize-css-assets-webpack-plugin/node_modules/postcss-merge-rules": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.0.2.tgz", + "integrity": "sha512-5K+Md7S3GwBewfB4rjDeol6V/RZ8S+v4B66Zk2gChRqLTCC8yjnHQ601omj9TKftS19OPGqZ/XzoqpzNQQLwbg==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^2.0.1", + "postcss-selector-parser": "^6.0.5", + "vendors": "^1.0.3" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/optimize-css-assets-webpack-plugin/node_modules/postcss-minify-font-values": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.0.1.tgz", + "integrity": "sha512-7JS4qIsnqaxk+FXY1E8dHBDmraYFWmuL6cgt0T1SWGRO5bzJf8sUoelwa4P88LEWJZweHevAiDKxHlofuvtIoA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/optimize-css-assets-webpack-plugin/node_modules/postcss-minify-gradients": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.0.1.tgz", + "integrity": "sha512-odOwBFAIn2wIv+XYRpoN2hUV3pPQlgbJ10XeXPq8UY2N+9ZG42xu45lTn/g9zZ+d70NKSQD6EOi6UiCMu3FN7g==", + "dev": true, + "dependencies": { + "cssnano-utils": "^2.0.1", + "is-color-stop": "^1.1.0", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/optimize-css-assets-webpack-plugin/node_modules/postcss-minify-params": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.0.1.tgz", + "integrity": "sha512-4RUC4k2A/Q9mGco1Z8ODc7h+A0z7L7X2ypO1B6V8057eVK6mZ6xwz6QN64nHuHLbqbclkX1wyzRnIrdZehTEHw==", + "dev": true, + "dependencies": { + "alphanum-sort": "^1.0.2", + "browserslist": "^4.16.0", + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0", + "uniqs": "^2.0.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/optimize-css-assets-webpack-plugin/node_modules/postcss-minify-selectors": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.1.0.tgz", + "integrity": "sha512-NzGBXDa7aPsAcijXZeagnJBKBPMYLaJJzB8CQh6ncvyl2sIndLVWfbcDi0SBjRWk5VqEjXvf8tYwzoKf4Z07og==", + "dev": true, + "dependencies": { + "alphanum-sort": "^1.0.2", + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/optimize-css-assets-webpack-plugin/node_modules/postcss-normalize-charset": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.0.1.tgz", + "integrity": "sha512-6J40l6LNYnBdPSk+BHZ8SF+HAkS4q2twe5jnocgd+xWpz/mx/5Sa32m3W1AA8uE8XaXN+eg8trIlfu8V9x61eg==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/optimize-css-assets-webpack-plugin/node_modules/postcss-normalize-display-values": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.0.1.tgz", + "integrity": "sha512-uupdvWk88kLDXi5HEyI9IaAJTE3/Djbcrqq8YgjvAVuzgVuqIk3SuJWUisT2gaJbZm1H9g5k2w1xXilM3x8DjQ==", + "dev": true, + "dependencies": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/optimize-css-assets-webpack-plugin/node_modules/postcss-normalize-positions": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.0.1.tgz", + "integrity": "sha512-rvzWAJai5xej9yWqlCb1OWLd9JjW2Ex2BCPzUJrbaXmtKtgfL8dBMOOMTX6TnvQMtjk3ei1Lswcs78qKO1Skrg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/optimize-css-assets-webpack-plugin/node_modules/postcss-normalize-repeat-style": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.0.1.tgz", + "integrity": "sha512-syZ2itq0HTQjj4QtXZOeefomckiV5TaUO6ReIEabCh3wgDs4Mr01pkif0MeVwKyU/LHEkPJnpwFKRxqWA/7O3w==", + "dev": true, + "dependencies": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/optimize-css-assets-webpack-plugin/node_modules/postcss-normalize-string": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.0.1.tgz", + "integrity": "sha512-Ic8GaQ3jPMVl1OEn2U//2pm93AXUcF3wz+OriskdZ1AOuYV25OdgS7w9Xu2LO5cGyhHCgn8dMXh9bO7vi3i9pA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/optimize-css-assets-webpack-plugin/node_modules/postcss-normalize-timing-functions": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.0.1.tgz", + "integrity": "sha512-cPcBdVN5OsWCNEo5hiXfLUnXfTGtSFiBU9SK8k7ii8UD7OLuznzgNRYkLZow11BkQiiqMcgPyh4ZqXEEUrtQ1Q==", + "dev": true, + "dependencies": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/optimize-css-assets-webpack-plugin/node_modules/postcss-normalize-unicode": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.0.1.tgz", + "integrity": "sha512-kAtYD6V3pK0beqrU90gpCQB7g6AOfP/2KIPCVBKJM2EheVsBQmx/Iof+9zR9NFKLAx4Pr9mDhogB27pmn354nA==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.0", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/optimize-css-assets-webpack-plugin/node_modules/postcss-normalize-url": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.0.2.tgz", + "integrity": "sha512-k4jLTPUxREQ5bpajFQZpx8bCF2UrlqOTzP9kEqcEnOfwsRshWs2+oAFIHfDQB8GO2PaUaSE0NlTAYtbluZTlHQ==", + "dev": true, + "dependencies": { + "is-absolute-url": "^3.0.3", + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/optimize-css-assets-webpack-plugin/node_modules/postcss-normalize-whitespace": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.0.1.tgz", + "integrity": "sha512-iPklmI5SBnRvwceb/XH568yyzK0qRVuAG+a1HFUsFRf11lEJTiQQa03a4RSCQvLKdcpX7XsI1Gen9LuLoqwiqA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/optimize-css-assets-webpack-plugin/node_modules/postcss-ordered-values": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.0.2.tgz", + "integrity": "sha512-8AFYDSOYWebJYLyJi3fyjl6CqMEG/UVworjiyK1r573I56kb3e879sCJLGvR3merj+fAdPpVplXKQZv+ey6CgQ==", + "dev": true, + "dependencies": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/optimize-css-assets-webpack-plugin/node_modules/postcss-reduce-initial": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.0.1.tgz", + "integrity": "sha512-zlCZPKLLTMAqA3ZWH57HlbCjkD55LX9dsRyxlls+wfuRfqCi5mSlZVan0heX5cHr154Dq9AfbH70LyhrSAezJw==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.0", + "caniuse-api": "^3.0.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/optimize-css-assets-webpack-plugin/node_modules/postcss-reduce-transforms": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.0.1.tgz", + "integrity": "sha512-a//FjoPeFkRuAguPscTVmRQUODP+f3ke2HqFNgGPwdYnpeC29RZdCBvGRGTsKpMURb/I3p6jdKoBQ2zI+9Q7kA==", + "dev": true, + "dependencies": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/optimize-css-assets-webpack-plugin/node_modules/postcss-svgo": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.0.2.tgz", + "integrity": "sha512-YzQuFLZu3U3aheizD+B1joQ94vzPfE6BNUcSYuceNxlVnKKsOtdo6hL9/zyC168Q8EwfLSgaDSalsUGa9f2C0A==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.1.0", + "svgo": "^2.3.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/optimize-css-assets-webpack-plugin/node_modules/postcss-unique-selectors": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.0.1.tgz", + "integrity": "sha512-gwi1NhHV4FMmPn+qwBNuot1sG1t2OmacLQ/AX29lzyggnjd+MnVD5uqQmpXO3J17KGL2WAxQruj1qTd3H0gG/w==", + "dev": true, + "dependencies": { + "alphanum-sort": "^1.0.2", + "postcss-selector-parser": "^6.0.5", + "uniqs": "^2.0.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/optimize-css-assets-webpack-plugin/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/optimize-css-assets-webpack-plugin/node_modules/stylehacks": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.0.1.tgz", + "integrity": "sha512-Es0rVnHIqbWzveU1b24kbw92HsebBepxfcqe5iix7t9j0PQqhs0IxXVXv0pY2Bxa08CgMkzD6OWql7kbGOuEdA==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.0", + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/optimize-css-assets-webpack-plugin/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/optimize-css-assets-webpack-plugin/node_modules/svgo": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.3.1.tgz", + "integrity": "sha512-riDDIQgXpEnn0BEl9Gvhh1LNLIyiusSpt64IR8upJu7MwxnzetmF/Y57pXQD2NMX2lVyMRzXt5f2M5rO4wG7Dw==", + "dev": true, + "dependencies": { + "@trysound/sax": "0.1.1", + "chalk": "^4.1.0", + "commander": "^7.1.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.2", + "csso": "^4.2.0", + "stable": "^0.1.8" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "dependencies": { + "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" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ora/node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ora/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/ora/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ora/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "url-parse": "^1.4.3" + } + }, + "node_modules/os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "node_modules/os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "dev": true, + "dependencies": { + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ospath": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz", + "integrity": "sha1-EnZjl3Sj+O8lcvf+QoDg6kVQwHs=", + "dev": true + }, + "node_modules/p-cancelable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", + "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-limit": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", + "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/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==", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-retry": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", + "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", + "dev": true, + "dependencies": { + "retry": "^0.12.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "dev": true, + "dependencies": { + "got": "^9.6.0", + "registry-auth-token": "^4.0.0", + "registry-url": "^5.0.0", + "semver": "^6.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/package-json/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/pad-start": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pad-start/-/pad-start-1.0.2.tgz", + "integrity": "sha1-I+W6s+lkRrYoFs/28VCXXwQNGxQ=" + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "node_modules/parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "dev": true, + "dependencies": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "node_modules/param-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "dev": true, + "dependencies": { + "no-case": "^2.2.0" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parent-module/node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dev": true, + "dependencies": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "dependencies": { + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "dependencies": { + "error-ex": "^1.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parse5": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz", + "integrity": "sha1-m387DeMr543CQBsXVzzK8Pb1nZQ=", + "dev": true + }, + "node_modules/parseqs": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz", + "integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==" + }, + "node_modules/parseuri": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz", + "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==" + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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==", + "dev": true + }, + "node_modules/path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "engines": { + "node": ">=4" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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=", + "dev": true + }, + "node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/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==", + "dev": true + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "node_modules/path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-type/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dev": true, + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "dev": true + }, + "node_modules/per-env": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/per-env/-/per-env-1.0.2.tgz", + "integrity": "sha1-dOXxosQBtyzv5/2HKz8/a3nAS7E=", + "dev": true, + "bin": { + "per-env": "bin/per-env" + } + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pluralize": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", + "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", + "dev": true + }, + "node_modules/pngjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "ts-pnp": "^1.1.6" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/popper.js": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.0.tgz", + "integrity": "sha512-+G+EkOPoE5S/zChTpmBSSDYmhXJ5PsW8eMhH8cP/CQHMFPBG/kC9Y5IIw6qNYgdJ+/COf0ddY2li28iHaZRSjw==", + "deprecated": "You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1" + }, + "node_modules/portfinder": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", + "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", + "dev": true, + "dependencies": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" + }, + "engines": { + "node": ">= 0.12.0" + } + }, + "node_modules/portfinder/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/portfinder/node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/portfinder/node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/portfinder/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/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=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss": { + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.5.tgz", + "integrity": "sha512-NxTuJocUhYGsMiMFHDUkmjSKT3EdH4/WbGF6GCi1NDGk+vbcUTun4fpbOqaPtD8IIsztA2ilZm2DhYCuyN58gA==", + "dev": true, + "dependencies": { + "colorette": "^1.2.2", + "nanoid": "^3.1.23", + "source-map-js": "^0.6.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + } + }, + "node_modules/postcss-calc/node_modules/postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-calc/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-calc/node_modules/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==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-colormin": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", + "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", + "dev": true, + "dependencies": { + "browserslist": "^4.0.0", + "color": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-colormin/node_modules/postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-colormin/node_modules/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==", + "dev": true + }, + "node_modules/postcss-colormin/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-colormin/node_modules/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==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-convert-values/node_modules/postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-convert-values/node_modules/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==", + "dev": true + }, + "node_modules/postcss-convert-values/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-convert-values/node_modules/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==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-discard-comments/node_modules/postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-discard-comments/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-discard-comments/node_modules/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==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-discard-duplicates/node_modules/postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-discard-duplicates/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-discard-duplicates/node_modules/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==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-discard-empty/node_modules/postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-discard-empty/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-discard-empty/node_modules/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==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-discard-overridden/node_modules/postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-discard-overridden/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-discard-overridden/node_modules/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==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-load-config": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.0.tgz", + "integrity": "sha512-ipM8Ds01ZUophjDTQYSVP70slFSYg3T0/zyfII5vzhN6V57YSxMgG5syXuwi5VtS8wSf3iL30v0uBdoIVx4Q0g==", + "dev": true, + "dependencies": { + "import-cwd": "^3.0.0", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + }, + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-load-config/node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/postcss-loader": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-4.3.0.tgz", + "integrity": "sha512-M/dSoIiNDOo8Rk0mUqoj4kpGq91gcxCfb9PoyZVdZ76/AuhxylHDYZblNE8o+EQ9AMSASeMFEKxZf5aU6wlx1Q==", + "dev": true, + "dependencies": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.4", + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0", + "semver": "^7.3.4" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/postcss-loader/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/postcss-loader/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/postcss-loader/node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/postcss-loader/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/postcss-loader/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/postcss-loader/node_modules/schema-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", + "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.7", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/postcss-loader/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/postcss-loader/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "css-color-names": "0.0.4", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-merge-longhand/node_modules/postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-merge-longhand/node_modules/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==", + "dev": true + }, + "node_modules/postcss-merge-longhand/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-merge-longhand/node_modules/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==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "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" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-merge-rules/node_modules/postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-merge-rules/node_modules/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==", + "dev": true, + "dependencies": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/postcss-merge-rules/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-merge-rules/node_modules/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==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-minify-font-values/node_modules/postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-minify-font-values/node_modules/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==", + "dev": true + }, + "node_modules/postcss-minify-font-values/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-minify-font-values/node_modules/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==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "cssnano-util-get-arguments": "^4.0.0", + "is-color-stop": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-minify-gradients/node_modules/postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-minify-gradients/node_modules/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==", + "dev": true + }, + "node_modules/postcss-minify-gradients/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-minify-gradients/node_modules/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==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "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" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-minify-params/node_modules/postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-minify-params/node_modules/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==", + "dev": true + }, + "node_modules/postcss-minify-params/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-minify-params/node_modules/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==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-minify-selectors/node_modules/postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-minify-selectors/node_modules/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==", + "dev": true, + "dependencies": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/postcss-minify-selectors/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-minify-selectors/node_modules/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==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-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==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-charset/node_modules/postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-normalize-charset/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-normalize-charset/node_modules/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==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-display-values/node_modules/postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-normalize-display-values/node_modules/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==", + "dev": true + }, + "node_modules/postcss-normalize-display-values/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-normalize-display-values/node_modules/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==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-positions/node_modules/postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-normalize-positions/node_modules/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==", + "dev": true + }, + "node_modules/postcss-normalize-positions/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-normalize-positions/node_modules/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==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-repeat-style/node_modules/postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-normalize-repeat-style/node_modules/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==", + "dev": true + }, + "node_modules/postcss-normalize-repeat-style/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-normalize-repeat-style/node_modules/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==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-string/node_modules/postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-normalize-string/node_modules/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==", + "dev": true + }, + "node_modules/postcss-normalize-string/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-normalize-string/node_modules/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==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-timing-functions/node_modules/postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-normalize-timing-functions/node_modules/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==", + "dev": true + }, + "node_modules/postcss-normalize-timing-functions/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-normalize-timing-functions/node_modules/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==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-unicode/node_modules/postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-normalize-unicode/node_modules/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==", + "dev": true + }, + "node_modules/postcss-normalize-unicode/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-normalize-unicode/node_modules/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==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-url/node_modules/postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-normalize-url/node_modules/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==", + "dev": true + }, + "node_modules/postcss-normalize-url/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-normalize-url/node_modules/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==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-whitespace/node_modules/postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-normalize-whitespace/node_modules/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==", + "dev": true + }, + "node_modules/postcss-normalize-whitespace/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-normalize-whitespace/node_modules/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==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-ordered-values/node_modules/postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-ordered-values/node_modules/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==", + "dev": true + }, + "node_modules/postcss-ordered-values/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-ordered-values/node_modules/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==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-reduce-initial/node_modules/postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-reduce-initial/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-reduce-initial/node_modules/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==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-reduce-transforms/node_modules/postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-reduce-transforms/node_modules/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==", + "dev": true + }, + "node_modules/postcss-reduce-transforms/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-reduce-transforms/node_modules/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==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz", + "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-svgo": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.3.tgz", + "integrity": "sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-svgo/node_modules/postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-svgo/node_modules/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==", + "dev": true + }, + "node_modules/postcss-svgo/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-svgo/node_modules/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==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-unique-selectors/node_modules/postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-unique-selectors/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-unique-selectors/node_modules/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==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/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==", + "dev": true + }, + "node_modules/preact": { + "version": "10.5.14", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.5.14.tgz", + "integrity": "sha512-KojoltCrshZ099ksUZ2OQKfbH66uquFoxHSbnwKbTJHeQNvx42EmC7wQVWNuDt6vC5s3nudRHFtKbpY4ijKlaQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/preact" + } + }, + "node_modules/preact-cli": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/preact-cli/-/preact-cli-3.2.2.tgz", + "integrity": "sha512-42aUanAb/AqHHvnfb/IwJw9UhY5iuHkGRBv3TrTsQMrq0Ee8Z84r+HS8wjGI0aHHb0R8tnHI0hhllWgmNhjB/Q==", + "dev": true, + "dependencies": { + "@babel/core": "^7.13.16", + "@babel/plugin-proposal-class-properties": "^7.13.0", + "@babel/plugin-proposal-decorators": "^7.13.15", + "@babel/plugin-proposal-object-rest-spread": "^7.13.8", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-object-assign": "^7.12.13", + "@babel/plugin-transform-react-jsx": "^7.13.12", + "@babel/preset-env": "^7.13.15", + "@babel/preset-typescript": "^7.13.0", + "@preact/async-loader": "^3.0.1", + "@prefresh/babel-plugin": "^0.4.1", + "@prefresh/webpack": "^3.2.2", + "autoprefixer": "^10.2.5", + "babel-esm-plugin": "^0.9.0", + "babel-loader": "^8.2.2", + "babel-plugin-macros": "^3.1.0", + "babel-plugin-transform-react-remove-prop-types": "^0.4.24", + "browserlist": "^1.0.1", + "browserslist": "^4.16.4", + "compression-webpack-plugin": "^6.0.4", + "console-clear": "^1.0.0", + "copy-webpack-plugin": "^6.2.1", + "critters-webpack-plugin": "^2.5.0", + "cross-spawn-promise": "^0.10.1", + "css-loader": "^5.2.4", + "ejs-loader": "^0.5.0", + "envinfo": "^7.8.1", + "esm": "^3.2.25", + "fast-async": "^6.3.7", + "file-loader": "^6.2.0", + "fork-ts-checker-webpack-plugin": "^4.0.4", + "get-port": "^5.0.0", + "gittar": "^0.1.0", + "glob": "^7.1.4", + "html-webpack-exclude-assets-plugin": "0.0.7", + "html-webpack-plugin": "^3.2.0", + "ip": "^1.1.5", + "isomorphic-unfetch": "^3.1.0", + "kleur": "^4.1.4", + "loader-utils": "^2.0.0", + "mini-css-extract-plugin": "^1.5.0", + "minimatch": "^3.0.3", + "native-url": "0.3.4", + "optimize-css-assets-webpack-plugin": "^6.0.0", + "ora": "^5.4.0", + "pnp-webpack-plugin": "^1.6.4", + "postcss": "^8.2.10", + "postcss-load-config": "^3.0.1", + "postcss-loader": "^4.0.4", + "progress-bar-webpack-plugin": "^2.1.0", + "promise-polyfill": "^8.2.0", + "prompts": "^2.4.1", + "raw-loader": "^4.0.2", + "react-refresh": "0.10.0", + "rimraf": "^3.0.2", + "sade": "^1.7.4", + "size-plugin": "^3.0.0", + "source-map": "^0.7.2", + "stack-trace": "0.0.10", + "style-loader": "^2.0.0", + "terser-webpack-plugin": "^4.2.3", + "typescript": "^4.2.4", + "update-notifier": "^5.1.0", + "url-loader": "^4.1.1", + "validate-npm-package-name": "^3.0.0", + "webpack": "^4.38.0", + "webpack-bundle-analyzer": "^4.4.2", + "webpack-dev-server": "^3.11.2", + "webpack-fix-style-only-entries": "^0.6.1", + "webpack-merge": "^5.3.0", + "webpack-plugin-replace": "^1.2.0", + "which": "^2.0.2", + "workbox-cacheable-response": "^6.1.5", + "workbox-core": "^6.1.5", + "workbox-precaching": "^6.1.5", + "workbox-routing": "^6.1.5", + "workbox-strategies": "^6.1.5", + "workbox-webpack-plugin": "^6.1.5" + }, + "bin": { + "preact": "lib/index.js" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "less-loader": "^7.3.0", + "preact": "*", + "preact-render-to-string": "*", + "sass-loader": "^10.2.0", + "stylus-loader": "^4.3.3" + }, + "peerDependenciesMeta": { + "less-loader": { + "optional": true + }, + "sass-loader": { + "optional": true + }, + "stylus-loader": { + "optional": true + } + } + }, + "node_modules/preact-cli-plugin-fast-async": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/preact-cli-plugin-fast-async/-/preact-cli-plugin-fast-async-1.0.1.tgz", + "integrity": "sha512-r725LMb7S6iY6HAKspzdzmNM4N9Wa0mRkDrl5b3USjw2rlOMq+krjvNevP5PXZJED/Ym2kipnRHMaR4gtHzQ6A==", + "dependencies": { + "fast-async": "^6.3.0" + } + }, + "node_modules/preact-cli/node_modules/@babel/runtime": { + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.6.tgz", + "integrity": "sha512-/PCB2uJ7oM44tz8YhC4Z/6PeOKXp4K588f+5M3clr1M4zbqztlo0XEfJ2LEzj/FgwfgGcIdl8n7YYjTCI0BYwg==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/preact-cli/node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, + "node_modules/preact-cli/node_modules/browserslist": { + "version": "4.16.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", + "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", + "dev": true, + "dependencies": { + "caniuse-lite": "^1.0.30001219", + "colorette": "^1.2.2", + "electron-to-chromium": "^1.3.723", + "escalade": "^3.1.1", + "node-releases": "^1.1.71" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "node_modules/preact-cli/node_modules/caniuse-lite": { + "version": "1.0.30001245", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001245.tgz", + "integrity": "sha512-768fM9j1PKXpOCKws6eTo3RHmvTUsG9UrpT4WoREFeZgJBTi4/X9g565azS/rVUGtqb8nt7FjLeF5u4kukERnA==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "node_modules/preact-cli/node_modules/electron-to-chromium": { + "version": "1.3.776", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.776.tgz", + "integrity": "sha512-V0w7eFSBoFPpdw4xexjVPZ770UDZIevSwkkj4W97XbE3IsCsTRFpa7/yXGZ88EOQAUEA09JMMsWK0xsw0kRAYw==", + "dev": true + }, + "node_modules/preact-cli/node_modules/node-releases": { + "version": "1.1.73", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz", + "integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==", + "dev": true + }, + "node_modules/preact-cli/node_modules/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==", + "dev": true + }, + "node_modules/preact-cli/node_modules/resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "dependencies": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/preact-cli/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/preact-cli/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/preact-cli/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/preact-i18n": { + "version": "2.4.0-preactx", + "resolved": "https://registry.npmjs.org/preact-i18n/-/preact-i18n-2.4.0-preactx.tgz", + "integrity": "sha512-XJ15wZKdJrpuz2KBs8BkDB9gl85MjIkER5tx8r6RM1+j53hw3/XzUq2DMnkMoLVQiS0VSPI6bXk41CioKwTJIA==", + "dependencies": { + "dlv": "^1.1.3", + "preact-markup": "^2.0.0" + }, + "peerDependencies": { + "preact": ">=10" + } + }, + "node_modules/preact-markup": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/preact-markup/-/preact-markup-2.1.1.tgz", + "integrity": "sha512-8JL2p36mzK8XkspOyhBxUSPjYwMxDM0L5BWBZWxsZMVW8WsGQrYQDgVuDKkRspt2hwrle+Cxr/053hpc9BJwfw==", + "peerDependencies": { + "preact": ">=10" + } + }, + "node_modules/preact-render-spy": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/preact-render-spy/-/preact-render-spy-1.3.0.tgz", + "integrity": "sha512-6gdi9mCMlhNPv4JRoQNSKu2kEbhStfJT/bN+n3gb/NwGKNmFg9q8eac9qFTSCswsOWmkdDk2WJiUoHZImIPSyA==", + "dev": true, + "dependencies": { + "lodash.isequal": "^4.5.0", + "object.entries": "^1.0.4", + "preact-render-to-string": "^3.6.3" + }, + "peerDependencies": { + "preact": "^8.1.0" + } + }, + "node_modules/preact-render-to-string": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/preact-render-to-string/-/preact-render-to-string-3.8.2.tgz", + "integrity": "sha512-przuZPajiurStGgxMoJP0EJeC4xj5CgHv+M7GfF3YxAdhGgEWAkhOSE0xympAFN20uMayntBZpttIZqqLl77fw==", + "dev": true, + "dependencies": { + "pretty-format": "^3.5.1" + }, + "peerDependencies": { + "preact": "*" + } + }, + "node_modules/preact-render-to-string/node_modules/pretty-format": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-3.8.0.tgz", + "integrity": "sha1-v77VbV6ad2ZF9LH/eqGjrE+jw4U=", + "dev": true + }, + "node_modules/preact-router": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/preact-router/-/preact-router-3.2.1.tgz", + "integrity": "sha512-KEN2VN1DxUlTwzW5IFkF13YIA2OdQ2OvgJTkQREF+AA2NrHRLaGbB68EjS4IeZOa1shvQ1FvEm3bSLta4sXBhg==", + "peerDependencies": { + "preact": ">=10" + } + }, + "node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/prettier": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", + "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pretty-bytes": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-4.0.2.tgz", + "integrity": "sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/pretty-error": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz", + "integrity": "sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==", + "dev": true, + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^2.0.4" + } + }, + "node_modules/pretty-error/node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/pretty-format": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-21.2.1.tgz", + "integrity": "sha512-ZdWPGYAnYfcVP8yKA3zFjCn8s4/17TeYH28MXuC8vTp0o21eXjbFGcOAXZEaDaOFJjc3h2qa7HQNHNshhvoh2A==", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0", + "ansi-styles": "^3.2.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/progress-bar-webpack-plugin": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/progress-bar-webpack-plugin/-/progress-bar-webpack-plugin-2.1.0.tgz", + "integrity": "sha512-UtlZbnxpYk1wufEWfhIjRn2U52zlY38uvnzFhs8rRxJxC1hSqw88JNR2Mbpqq9Kix8L1nGb3uQ+/1BiUWbigAg==", + "dev": true, + "dependencies": { + "chalk": "^3.0.0", + "progress": "^2.0.3" + }, + "peerDependencies": { + "webpack": "^1.3.0 || ^2 || ^3 || ^4 || ^5" + } + }, + "node_modules/progress-bar-webpack-plugin/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/progress-bar-webpack-plugin/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/progress-bar-webpack-plugin/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/progress-bar-webpack-plugin/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/progress-bar-webpack-plugin/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/progress-bar-webpack-plugin/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "node_modules/promise-polyfill": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.2.0.tgz", + "integrity": "sha512-k/TC0mIcPVF6yHhUvwAp7cvL6I2fFV7TzF1DuGPI8mBh4QQazf36xCKEHKTZKRysEoTQoQdKyP25J8MPJp7j5g==", + "dev": true + }, + "node_modules/prompts": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.1.tgz", + "integrity": "sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ==", + "dev": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prompts/node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "node_modules/psl": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.4.0.tgz", + "integrity": "sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw==", + "dev": true + }, + "node_modules/public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "dependencies": { + "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" + } + }, + "node_modules/public-encrypt/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "dependencies": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "node_modules/pumpify/node_modules/pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pupa": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", + "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", + "dev": true, + "dependencies": { + "escape-goat": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true, + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "node_modules/qrcode": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.4.4.tgz", + "integrity": "sha512-oLzEC5+NKFou9P0bMj5+v6Z40evexeE29Z9cummZXZ9QXyMr3lphkURzxjXgPJC5azpxcshoDWV1xE46z+/c3Q==", + "dependencies": { + "buffer": "^5.4.3", + "buffer-alloc": "^1.2.0", + "buffer-from": "^1.1.1", + "dijkstrajs": "^1.0.1", + "isarray": "^2.0.1", + "pngjs": "^3.3.0", + "yargs": "^13.2.4" + }, + "bin": { + "qrcode": "bin/qrcode" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/query-string": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.0.1.tgz", + "integrity": "sha512-uIw3iRvHnk9to1blJCG3BTc+Ro56CBowJXKmNNAm3RulvPBzWLRqKSiiDk+IplJhsydwtuNMHi8UGQFcCLVfkA==", + "dependencies": { + "decode-uri-component": "^0.2.0", + "filter-obj": "^1.1.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ramda": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.25.0.tgz", + "integrity": "sha512-GXpfrYVPwx3K7RQ6aYT8KPS8XViSXUVJT1ONhoKPE9VAleW42YE+U+8VEyGWt41EnEQW7gwecYJriTI0pKoecQ==", + "dev": true + }, + "node_modules/randomatic": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", + "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", + "dev": true, + "dependencies": { + "is-number": "^4.0.0", + "kind-of": "^6.0.0", + "math-random": "^1.0.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/randomatic/node_modules/is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/randomatic/node_modules/kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "dependencies": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "dev": true, + "dependencies": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-loader": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.2.tgz", + "integrity": "sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/raw-loader/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/raw-loader/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/raw-loader/node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/raw-loader/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/raw-loader/node_modules/schema-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", + "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.7", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/rc/node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/react-big-calendar": { + "version": "0.22.1", + "resolved": "https://registry.npmjs.org/react-big-calendar/-/react-big-calendar-0.22.1.tgz", + "integrity": "sha512-Pd0x0W4vjs5oDzPl3kvIlJok4ESO7p/+jpxKil0xkJ5sfsYlB/lZMCht7htEy9/WInnnJQGcXx+tLIcEzDbV8g==", + "dependencies": { + "@babel/runtime": "^7.1.5", + "clsx": "^1.0.4", + "date-arithmetic": "^4.0.1", + "dom-helpers": "^5.1.0", + "invariant": "^2.2.4", + "lodash": "^4.17.11", + "lodash-es": "^4.17.11", + "memoize-one": "^4.0.3", + "prop-types": "^15.6.2", + "react-overlays": "^2.0.0-0", + "uncontrollable": "^7.0.0", + "warning": "^4.0.2" + }, + "peerDependencies": { + "react": "^16.6.1", + "react-dom": "^16.6.1" + } + }, + "node_modules/react-datepicker": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/react-datepicker/-/react-datepicker-3.8.0.tgz", + "integrity": "sha512-iFVNEp8DJoX5yEvEiciM7sJKmLGrvE70U38KhpG13XrulNSijeHw1RZkhd/0UmuXR71dcZB/kdfjiidifstZjw==", + "dependencies": { + "classnames": "^2.2.6", + "date-fns": "^2.0.1", + "prop-types": "^15.7.2", + "react-onclickoutside": "^6.10.0", + "react-popper": "^1.3.8" + }, + "peerDependencies": { + "react": "^16.9.0 || ^17", + "react-dom": "^16.9.0 || ^17" + } + }, + "node_modules/react-input-autosize": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/react-input-autosize/-/react-input-autosize-3.0.0.tgz", + "integrity": "sha512-nL9uS7jEs/zu8sqwFE5MAPx6pPkNAriACQ2rGLlqmKr2sPGtN7TXTyDdQt4lbNXVx7Uzadb40x8qotIuru6Rhg==", + "dependencies": { + "prop-types": "^15.5.8" + }, + "peerDependencies": { + "react": "^16.3.0 || ^17.0.0" + } + }, + "node_modules/react-is": { + "version": "16.11.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.11.0.tgz", + "integrity": "sha512-gbBVYR2p8mnriqAwWx9LbuUrShnAuSCNnuPGyc7GJrMVQtPDAh8iLpv7FRuMPFb56KkaVZIYSz1PrjI9q0QPCw==" + }, + "node_modules/react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" + }, + "node_modules/react-onclickoutside": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/react-onclickoutside/-/react-onclickoutside-6.10.0.tgz", + "integrity": "sha512-7i2L3ef+0ILXpL6P+Hg304eCQswh4jl3ynwR71BSlMU49PE2uk31k8B2GkP6yE9s2D4jTGKnzuSpzWxu4YxfQQ==", + "funding": { + "type": "individual", + "url": "https://github.com/Pomax/react-onclickoutside/blob/master/FUNDING.md" + }, + "peerDependencies": { + "react": "^15.5.x || ^16.x || ^17.x", + "react-dom": "^15.5.x || ^16.x || ^17.x" + } + }, + "node_modules/react-overlays": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/react-overlays/-/react-overlays-2.1.0.tgz", + "integrity": "sha512-tHPGTZosbQSo82yb9x4YCsmJJtspKvAPL5kXVnyoB2Z5UoAU3VetIuh2VblfVT408us5nLJd9uDtwI3xWDHS6w==", + "dependencies": { + "@babel/runtime": "^7.4.5", + "@restart/hooks": "^0.3.12", + "dom-helpers": "^5.1.0", + "popper.js": "^1.15.0", + "prop-types": "^15.7.2", + "uncontrollable": "^7.0.0", + "warning": "^4.0.3" + }, + "peerDependencies": { + "react": ">=16.3.0", + "react-dom": ">=16.3.0" + } + }, + "node_modules/react-popper": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-1.3.11.tgz", + "integrity": "sha512-VSA/bS+pSndSF2fiasHK/PTEEAyOpX60+H5EPAjoArr8JGm+oihu4UbrqcEBpQibJxBVCpYyjAX7abJ+7DoYVg==", + "dependencies": { + "@babel/runtime": "^7.1.2", + "@hypnosphi/create-react-context": "^0.3.1", + "deep-equal": "^1.1.1", + "popper.js": "^1.14.4", + "prop-types": "^15.6.1", + "typed-styles": "^0.0.7", + "warning": "^4.0.2" + }, + "peerDependencies": { + "react": "0.14.x || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/react-refresh": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.10.0.tgz", + "integrity": "sha512-PgidR3wST3dDYKr6b4pJoqQFpPGNKDSCDx4cZoshjXipw3LzO7mG1My2pwEzz2JVkF+inx3xRpDeQLFQGH/hsQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-select": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/react-select/-/react-select-4.3.1.tgz", + "integrity": "sha512-HBBd0dYwkF5aZk1zP81Wx5UsLIIT2lSvAY2JiJo199LjoLHoivjn9//KsmvQMEFGNhe58xyuOITjfxKCcGc62Q==", + "dependencies": { + "@babel/runtime": "^7.12.0", + "@emotion/cache": "^11.4.0", + "@emotion/react": "^11.1.1", + "memoize-one": "^5.0.0", + "prop-types": "^15.6.0", + "react-input-autosize": "^3.0.0", + "react-transition-group": "^4.3.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" + } + }, + "node_modules/react-select/node_modules/@babel/runtime": { + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.6.tgz", + "integrity": "sha512-/PCB2uJ7oM44tz8YhC4Z/6PeOKXp4K588f+5M3clr1M4zbqztlo0XEfJ2LEzj/FgwfgGcIdl8n7YYjTCI0BYwg==", + "dependencies": { + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/react-select/node_modules/memoize-one": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", + "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==" + }, + "node_modules/react-select/node_modules/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==" + }, + "node_modules/react-transition-group": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.2.tgz", + "integrity": "sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg==", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, + "node_modules/read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "dependencies": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "dependencies": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-pkg-up/node_modules/find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "dependencies": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-pkg-up/node_modules/path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "dependencies": { + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "optional": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "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==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", + "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==" + }, + "node_modules/regenerator-transform": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regenerator-transform/node_modules/@babel/runtime": { + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.6.tgz", + "integrity": "sha512-/PCB2uJ7oM44tz8YhC4Z/6PeOKXp4K588f+5M3clr1M4zbqztlo0XEfJ2LEzj/FgwfgGcIdl8n7YYjTCI0BYwg==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/regenerator-transform/node_modules/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==", + "dev": true + }, + "node_modules/regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "dependencies": { + "is-equal-shallow": "^0.1.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.2.0.tgz", + "integrity": "sha512-ztaw4M1VqgMwl9HlPpOuiYgItcHlunW0He2fE6eNfT6E/CF2FtYi9ofOYe4mKntstYk0Fyh/rDRBdS3AnxjlrA==", + "dependencies": { + "define-properties": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/regexpp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz", + "integrity": "sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/regexpu-core": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "dev": true, + "dependencies": { + "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" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/registry-auth-token": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", + "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", + "dev": true, + "dependencies": { + "rc": "^1.2.8" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/registry-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", + "dev": true, + "dependencies": { + "rc": "^1.2.8" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "dev": true + }, + "node_modules/regjsparser": { + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz", + "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/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=", + "dev": true + }, + "node_modules/renderkid": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.7.tgz", + "integrity": "sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==", + "dev": true, + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^3.0.1" + } + }, + "node_modules/renderkid/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/renderkid/node_modules/css-select": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", + "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^5.0.0", + "domhandler": "^4.2.0", + "domutils": "^2.6.0", + "nth-check": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/renderkid/node_modules/css-what": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.0.1.tgz", + "integrity": "sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/renderkid/node_modules/dom-serializer": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/renderkid/node_modules/domutils": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.7.0.tgz", + "integrity": "sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg==", + "dev": true, + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/renderkid/node_modules/nth-check": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz", + "integrity": "sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "dependencies": { + "is-finite": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "dev": true, + "dependencies": { + "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.0", + "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.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/request-progress": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", + "integrity": "sha1-TKdUCBx/7GP1BeT6qCWqBs1mnb4=", + "dev": true, + "dependencies": { + "throttleit": "^1.0.0" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "lodash": "^4.17.19" + }, + "engines": { + "node": ">=0.10.0" + }, + "peerDependencies": { + "request": "^2.34" + } + }, + "node_modules/request-promise-core/node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/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==", + "deprecated": "request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142", + "dev": true, + "dependencies": { + "request-promise-core": "1.1.4", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + }, + "engines": { + "node": ">=0.12.0" + }, + "peerDependencies": { + "request": "^2.34" + } + }, + "node_modules/request/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "node_modules/request/node_modules/tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, + "dependencies": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "node_modules/require-uncached": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", + "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", + "dev": true, + "dependencies": { + "caller-path": "^0.1.0", + "resolve-from": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "node_modules/resolve": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", + "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", + "dev": true, + "dependencies": { + "path-parse": "^1.0.6" + } + }, + "node_modules/resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "dependencies": { + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-from": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "deprecated": "https://github.com/lydell/resolve-url#deprecated", + "dev": true + }, + "node_modules/responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "dev": true, + "dependencies": { + "lowercase-keys": "^1.0.0" + } + }, + "node_modules/restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "dependencies": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", + "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", + "dev": true + }, + "node_modules/rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", + "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", + "dev": true + }, + "node_modules/rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/rollup": { + "version": "2.53.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.53.2.tgz", + "integrity": "sha512-1CtEYuS5CRCzFZ7SNW5528SlDlk4VDXIRGwbm/2POQxA/G4+7/crIqJwkmnj8Q/74hGx4oVlNvh4E1CJQ5hZ6w==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/rollup-plugin-terser": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" + }, + "peerDependencies": { + "rollup": "^2.0.0" + } + }, + "node_modules/rollup-plugin-terser/node_modules/@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/rollup-plugin-terser/node_modules/@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/rollup-plugin-terser/node_modules/serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/rollup/node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/rsvp": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-3.6.2.tgz", + "integrity": "sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw==", + "dev": true, + "engines": { + "node": "0.12.* || 4.* || 6.* || >= 7.*" + } + }, + "node_modules/run-async": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "dev": true, + "dependencies": { + "is-promise": "^2.1.0" + }, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "dependencies": { + "aproba": "^1.1.1" + } + }, + "node_modules/rx-lite": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", + "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", + "dev": true + }, + "node_modules/rx-lite-aggregates": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", + "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", + "dev": true, + "dependencies": { + "rx-lite": "*" + } + }, + "node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/sade": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.7.4.tgz", + "integrity": "sha512-y5yauMD93rX840MwUJr7C1ysLFBgMspsdTo4UVrDg3fXDvtwOyIqykhVAAm6fk/3au77773itJStObgK+LKaiA==", + "dev": true, + "dependencies": { + "mri": "^1.1.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "devOptional": true + }, + "node_modules/safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "dependencies": { + "ret": "~0.1.10" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/sane": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/sane/-/sane-2.5.2.tgz", + "integrity": "sha1-tNwYYcIbQn6SlQej51HiosuKs/o=", + "deprecated": "some dependency vulnerabilities fixed, support for node < 10 dropped, and newer ECMAScript syntax/features added", + "dev": true, + "dependencies": { + "anymatch": "^2.0.0", + "capture-exit": "^1.2.0", + "exec-sh": "^0.2.0", + "fb-watchman": "^2.0.0", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5", + "watch": "~0.18.0" + }, + "bin": { + "sane": "src/cli.js" + }, + "engines": { + "node": ">=0.6.0" + }, + "optionalDependencies": { + "fsevents": "^1.2.3" + } + }, + "node_modules/sane/node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/sane/node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "dependencies": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/expand-brackets/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/expand-brackets/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/expand-brackets/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/expand-brackets/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/expand-brackets/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "dependencies": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/extglob/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/sane/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "node_modules/saxes": { + "version": "3.1.11", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", + "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", + "dev": true, + "dependencies": { + "xmlchars": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/schema-utils/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/schema-utils/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/schema-utils/node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/schema-utils/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/secure-remote-password": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/secure-remote-password/-/secure-remote-password-0.3.1.tgz", + "integrity": "sha512-iEp/qLRfb9XYhfKFrPFfdeD7KVreCjhDKSTRP1G1nRIO0Sw1hjnVHD58ymOhiy9Zf5quHbDIbG9cTupji7qwnA==", + "dependencies": { + "array-buffer-to-hex": "^1.0.0", + "crypto-digest-sync": "^1.0.0", + "crypto-random-hex": "^1.0.0", + "encode-utf8": "^1.0.1", + "hex-to-array-buffer": "^1.1.0", + "jsbn": "^1.1.0", + "pad-start": "^1.0.2" + } + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "node_modules/selfsigned": { + "version": "1.10.11", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.11.tgz", + "integrity": "sha512-aVmbPOfViZqOZPgRBT0+3u4yZFHpmnIghLMlAcb5/xhp5ZtB/RVnKhz5vl2M32CLXAqR4kha9zfhNg0Lf/sxKA==", + "dev": true, + "dependencies": { + "node-forge": "^0.10.0" + } + }, + "node_modules/semiver": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/semiver/-/semiver-1.1.0.tgz", + "integrity": "sha512-QNI2ChmuioGC1/xjyYwyZYADILWyW6AmS1UH6gDj/SFUUUS4MBAWs/7mxnkRPc/F4iHezDP+O8t0dO8WHiEOdg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/semver-diff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", + "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "dev": true, + "dependencies": { + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semver-diff/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/send/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/send/node_modules/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==", + "dev": true + }, + "node_modules/serialize-javascript": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", + "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serialize-query-params": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/serialize-query-params/-/serialize-query-params-1.3.5.tgz", + "integrity": "sha512-BrLH1RqgzVxm6dco+KP9S6BodeFiUVvKwtY3GSWQlupIdblT19KCGTRkHZ2yIU6Bjy0Prjts0tYe11VpTMbAeQ==", + "dev": true, + "peerDependencies": { + "query-string": ">=5.1.1" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/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=", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/serve-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==", + "dev": true, + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "node_modules/set-value": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-3.0.2.tgz", + "integrity": "sha512-npjkVoz+ank0zjlV9F47Fdbjfj/PfXyVhZvGALWsyIYU/qrMzpi6avjKW3/7KeSU2Df3I46BrN1xOI1+6vW0hA==", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "node_modules/setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shallow-clone/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true + }, + "node_modules/signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "dev": true, + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/simple-swizzle/node_modules/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==", + "dev": true + }, + "node_modules/sirv": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.12.tgz", + "integrity": "sha512-+jQoCxndz7L2tqQL4ZyzfDhky0W/4ZJip3XoOuxyQWnAwMxindLl3Xv1qT4x1YX/re0leShvTm8Uk0kQspGhBg==", + "dev": true, + "dependencies": { + "@polka/url": "^1.0.0-next.15", + "mime": "^2.3.1", + "totalist": "^1.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/sirv-cli": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/sirv-cli/-/sirv-cli-1.0.12.tgz", + "integrity": "sha512-Rs5PvF3a48zuLmrl8vcqVv9xF/WWPES19QawVkpdzqx7vD5SMZS07+ece1gK4umbslXN43YeIksYtQM5csgIzQ==", + "dev": true, + "dependencies": { + "console-clear": "^1.1.0", + "get-port": "^3.2.0", + "kleur": "^3.0.0", + "local-access": "^1.0.1", + "sade": "^1.6.0", + "semiver": "^1.0.0", + "sirv": "^1.0.12", + "tinydate": "^1.0.0" + }, + "bin": { + "sirv": "bin.js" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/sirv-cli/node_modules/get-port": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/sirv-cli/node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "node_modules/size-plugin": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/size-plugin/-/size-plugin-3.0.0.tgz", + "integrity": "sha512-RPMSkgbvmS1e5XUwPNFZre7DLqcK9MhWARIm8UmGLgbUCAs173JLI6DPHco68wvo0cUdft8+GGRaJtNl5RWfew==", + "dev": true, + "dependencies": { + "axios": "^0.21.1", + "chalk": "^2.4.2", + "ci-env": "^1.9.0", + "escape-string-regexp": "^1.0.5", + "glob": "^7.1.4", + "minimatch": "^3.0.4", + "pretty-bytes": "^5.3.0", + "util.promisify": "^1.0.0" + }, + "peerDependencies": { + "webpack": "*" + } + }, + "node_modules/size-plugin/node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/slice-ansi": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", + "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "dependencies": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "dependencies": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "dependencies": { + "kind-of": "^3.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/snapdragon/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/socket.io-client": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.4.0.tgz", + "integrity": "sha512-M6xhnKQHuuZd4Ba9vltCLT9oa+YvTsP8j9NcEiLElfIg8KeYPyhWOes6x4t+LTAC8enQbE/995AdTem2uNyKKQ==", + "dependencies": { + "backo2": "1.0.2", + "component-bind": "1.0.0", + "component-emitter": "~1.3.0", + "debug": "~3.1.0", + "engine.io-client": "~3.5.0", + "has-binary2": "~1.0.2", + "indexof": "0.0.1", + "parseqs": "0.0.6", + "parseuri": "0.0.6", + "socket.io-parser": "~3.3.0", + "to-array": "0.1.4" + } + }, + "node_modules/socket.io-client/node_modules/component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + }, + "node_modules/socket.io-parser": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.2.tgz", + "integrity": "sha512-FJvDBuOALxdCI9qwRrO/Rfp9yfndRtc1jSgVgV8FDraihmSP/MLGD5PEuJrNfjALvcQ+vMDM/33AWOYP/JSjDg==", + "dependencies": { + "component-emitter": "~1.3.0", + "debug": "~3.1.0", + "isarray": "2.0.1" + } + }, + "node_modules/socket.io-parser/node_modules/component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + }, + "node_modules/sockjs": { + "version": "0.3.21", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz", + "integrity": "sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw==", + "dev": true, + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^3.4.0", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/sockjs-client": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.5.1.tgz", + "integrity": "sha512-VnVAb663fosipI/m6pqRXakEOw7nvd7TUgdr3PlR/8V2I95QIdwT8L4nMxhyU8SmDBHYXU1TOElaKOmKLfYzeQ==", + "dev": true, + "dependencies": { + "debug": "^3.2.6", + "eventsource": "^1.0.7", + "faye-websocket": "^0.11.3", + "inherits": "^2.0.4", + "json3": "^3.3.3", + "url-parse": "^1.5.1" + } + }, + "node_modules/sockjs-client/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/sockjs-client/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/sockjs/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "dev": true, + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/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==", + "dev": true + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", + "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "dev": true, + "dependencies": { + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "node_modules/source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "dependencies": { + "source-map": "^0.5.6" + } + }, + "node_modules/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=", + "dev": true + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "node_modules/spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "dev": true + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/spdy-transport/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/spdy-transport/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/spdy-transport/node_modules/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==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/spdy/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/spdy/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/split-on-first": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", + "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "node_modules/sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "dependencies": { + "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" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sshpk/node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "node_modules/ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "dev": true, + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, + "node_modules/stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "dependencies": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "node_modules/stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "dev": true + }, + "node_modules/strict-uri-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", + "integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY=", + "engines": { + "node": ">=4" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-length": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", + "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", + "dev": true, + "dependencies": { + "astral-regex": "^1.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/string-length/node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/string-length/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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==", + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimleft": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz", + "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.trimright": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz", + "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "dev": true, + "dependencies": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/stringify-object/node_modules/is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "dependencies": { + "is-utf8": "^0.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz", + "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/style-loader": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-2.0.0.tgz", + "integrity": "sha512-Z0gYUJmzZ6ZdRUqpg1r8GsaFKypE+3xAzuFeMuoHgjc9KZv3wMyCRjQIWEbhoFSq7+7yoHXySDJyyWQaPajeiQ==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/style-loader/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/style-loader/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/style-loader/node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/style-loader/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/style-loader/node_modules/schema-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", + "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.7", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/stylehacks/node_modules/postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/stylehacks/node_modules/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==", + "dev": true, + "dependencies": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/stylehacks/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stylehacks/node_modules/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==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/stylis": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.0.10.tgz", + "integrity": "sha512-m3k+dk7QeJw660eIKRRn3xPF6uuvHs/FFzjX3HQ5ove0qYsiygoAhwn5a3IYKaZPo5LrYD0rfVmtv1gNY1uYwg==" + }, + "node_modules/superstruct": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-0.8.4.tgz", + "integrity": "sha512-48Ors8IVWZm/tMr8r0Si6+mJiB7mkD7jqvIzktjJ4+EnP5tBp0qOpiM1J8sCUorKx+TXWrfb3i1UcjdD1YK/wA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2", + "tiny-invariant": "^1.0.6" + } + }, + "node_modules/superstruct/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/svg.draggable.js": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/svg.draggable.js/-/svg.draggable.js-2.2.2.tgz", + "integrity": "sha512-JzNHBc2fLQMzYCZ90KZHN2ohXL0BQJGQimK1kGk6AvSeibuKcIdDX9Kr0dT9+UJ5O8nYA0RB839Lhvk4CY4MZw==", + "dependencies": { + "svg.js": "^2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.easing.js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/svg.easing.js/-/svg.easing.js-2.0.0.tgz", + "integrity": "sha1-iqmUawqOJ4V6XEChDrpAkeVpHxI=", + "dependencies": { + "svg.js": ">=2.3.x" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.filter.js": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/svg.filter.js/-/svg.filter.js-2.0.2.tgz", + "integrity": "sha1-kQCOFROJ3ZIwd5/L5uLJo2LRwgM=", + "dependencies": { + "svg.js": "^2.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.js": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/svg.js/-/svg.js-2.7.1.tgz", + "integrity": "sha512-ycbxpizEQktk3FYvn/8BH+6/EuWXg7ZpQREJvgacqn46gIddG24tNNe4Son6omdXCnSOaApnpZw6MPCBA1dODA==" + }, + "node_modules/svg.pathmorphing.js": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/svg.pathmorphing.js/-/svg.pathmorphing.js-0.1.3.tgz", + "integrity": "sha512-49HWI9X4XQR/JG1qXkSDV8xViuTLIWm/B/7YuQELV5KMOPtXjiwH4XPJvr/ghEDibmLQ9Oc22dpWpG0vUDDNww==", + "dependencies": { + "svg.js": "^2.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.resize.js": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/svg.resize.js/-/svg.resize.js-1.4.3.tgz", + "integrity": "sha512-9k5sXJuPKp+mVzXNvxz7U0uC9oVMQrrf7cFsETznzUDDm0x8+77dtZkWdMfRlmbkEEYvUn9btKuZ3n41oNA+uw==", + "dependencies": { + "svg.js": "^2.6.5", + "svg.select.js": "^2.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.resize.js/node_modules/svg.select.js": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/svg.select.js/-/svg.select.js-2.1.2.tgz", + "integrity": "sha512-tH6ABEyJsAOVAhwcCjF8mw4crjXSI1aa7j2VQR8ZuJ37H2MBUbyeqYr5nEO7sSN3cy9AR9DUwNg0t/962HlDbQ==", + "dependencies": { + "svg.js": "^2.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.select.js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/svg.select.js/-/svg.select.js-3.0.1.tgz", + "integrity": "sha512-h5IS/hKkuVCbKSieR9uQCj9w+zLHoPh+ce19bBYyqF53g6mnPB8sAtIbe1s9dh2S2fCmYX2xel1Ln3PJBbK4kw==", + "dependencies": { + "svg.js": "^2.6.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "deprecated": "This SVGO version is no longer supported. Upgrade to v2.x.x.", + "dev": true, + "dependencies": { + "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" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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==", + "dev": true + }, + "node_modules/table": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", + "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", + "dev": true, + "dependencies": { + "ajv": "^5.2.3", + "ajv-keywords": "^2.1.0", + "chalk": "^2.1.0", + "lodash": "^4.17.4", + "slice-ansi": "1.0.0", + "string-width": "^2.1.1" + } + }, + "node_modules/table/node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/table/node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/table/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz", + "integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==", + "dev": true, + "dependencies": { + "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" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/tar/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/temp-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/tempy": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz", + "integrity": "sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==", + "dev": true, + "dependencies": { + "is-stream": "^2.0.0", + "temp-dir": "^2.0.0", + "type-fest": "^0.16.0", + "unique-string": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tempy/node_modules/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/tempy/node_modules/type-fest": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", + "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terser": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.7.1.tgz", + "integrity": "sha512-b3e+d5JbHAe/JSjwsC3Zn55wsBIM7AsHLjKxT31kGCldgbpFePaFo+PiddtO6uwRZWRw7sPXmAN8dTW61xmnSg==", + "dev": true, + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "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" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/terser-webpack-plugin/node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/terser-webpack-plugin/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", + "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.7", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/terser-webpack-plugin/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/terser/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/terser/node_modules/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==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/terser/node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/test-exclude": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.2.3.tgz", + "integrity": "sha512-SYbXgY64PT+4GAL2ocI3HwPa4Q4TBKm0cwAVeKOt/Aoc0gSpNRjJX8w0pA1LMKZ3LBmd8pYBqApFNQLII9kavA==", + "dev": true, + "dependencies": { + "arrify": "^1.0.1", + "micromatch": "^2.3.11", + "object-assign": "^4.1.0", + "read-pkg-up": "^1.0.1", + "require-main-filename": "^1.0.1" + } + }, + "node_modules/test-exclude/node_modules/require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "node_modules/throat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", + "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=", + "dev": true + }, + "node_modules/throttleit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", + "integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=", + "dev": true + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "node_modules/timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "dev": true, + "dependencies": { + "setimmediate": "^1.0.4" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", + "dev": true + }, + "node_modules/tiny-invariant": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.1.0.tgz", + "integrity": "sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw==", + "dev": true + }, + "node_modules/tinydate": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/tinydate/-/tinydate-1.3.0.tgz", + "integrity": "sha512-7cR8rLy2QhYHpsBDBVYnnWXm8uRTr38RoZakFSW7Bs7PzfMPNZthuMLkwqZv7MTu8lhQ91cOFYS5a7iFj2oR3w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/tmpl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", + "dev": true + }, + "node_modules/to-array": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", + "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=" + }, + "node_modules/to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "devOptional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "dependencies": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex-range/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/toposort": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz", + "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=", + "dev": true + }, + "node_modules/totalist": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz", + "integrity": "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "dev": true + }, + "node_modules/trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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==", + "dev": true, + "engines": { + "node": ">=6" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/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==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-styles": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/typed-styles/-/typed-styles-0.0.7.tgz", + "integrity": "sha512-pzP0PWoZUhsECYjABgCGQlRGL1n7tOHsgwYv3oIiEpJwGhFTuty/YNeduxQYzXXa3Ge5BdT6sHYIQYpl4uJ+5Q==" + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typescript": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", + "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/uglify-js": { + "version": "3.6.9", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.9.tgz", + "integrity": "sha512-pcnnhaoG6RtrvHJ1dFncAe8Od6Nuy30oaJ82ts6//sGSXOP5UjBMEthiProjXmMNHOfd93sqlkztifFMcb+4yw==", + "dev": true, + "optional": true, + "dependencies": { + "commander": "~2.20.3", + "source-map": "~0.6.1" + }, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/uglify-js/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unbox-primitive/node_modules/has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/uncontrollable": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.1.1.tgz", + "integrity": "sha512-EcPYhot3uWTS3w00R32R2+vS8Vr53tttrvMj/yA1uYRhf8hbTG2GyugGqWDY0qIskxn0uTTojVd6wPYW9ZEf8Q==", + "dependencies": { + "@babel/runtime": "^7.6.3", + "@types/react": "^16.9.11", + "invariant": "^2.2.4", + "react-lifecycles-compat": "^3.0.4" + }, + "peerDependencies": { + "react": ">=15.0.0" + } + }, + "node_modules/unfetch": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-4.2.0.tgz", + "integrity": "sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==", + "dev": true + }, + "node_modules/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==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/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==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/union-value/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/union-value/node_modules/get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/union-value/node_modules/set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "node_modules/uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", + "dev": true + }, + "node_modules/unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "dependencies": { + "unique-slug": "^2.0.0" + } + }, + "node_modules/unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4" + } + }, + "node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dev": true, + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/unistore": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/unistore/-/unistore-3.5.2.tgz", + "integrity": "sha512-2Aa4eX0Ua1umyiI3Eai6Li+wXYOHgaDBGOPB3Hvw7PAVuD30TAyh5kS4yNKb2fLDbQgizvPhKQRcYnOdfsm4VQ==", + "peerDependenciesMeta": { + "preact": { + "optional": true + }, + "react": { + "optional": true + } + } + }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", + "dev": true + }, + "node_modules/unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "dependencies": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "dependencies": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "node_modules/untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true, + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/update-notifier": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", + "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", + "dev": true, + "dependencies": { + "boxen": "^5.0.0", + "chalk": "^4.1.0", + "configstore": "^5.0.1", + "has-yarn": "^2.1.0", + "import-lazy": "^2.1.0", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.4.0", + "is-npm": "^5.0.0", + "is-yarn-global": "^0.3.0", + "latest-version": "^5.1.0", + "pupa": "^2.1.1", + "semver": "^7.3.4", + "semver-diff": "^3.1.1", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/yeoman/update-notifier?sponsor=1" + } + }, + "node_modules/update-notifier/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/update-notifier/node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/update-notifier/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "node_modules/update-notifier/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/update-notifier/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/update-notifier/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/update-notifier/node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/update-notifier/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/update-notifier/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/update-notifier/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/update-notifier/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", + "dev": true + }, + "node_modules/uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "deprecated": "Please see https://github.com/lydell/urix#deprecated", + "dev": true + }, + "node_modules/url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "dependencies": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "mime-types": "^2.1.27", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "file-loader": "*", + "webpack": "^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "file-loader": { + "optional": true + } + } + }, + "node_modules/url-loader/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/url-loader/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/url-loader/node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/url-loader/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/url-loader/node_modules/mime-db": { + "version": "1.48.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.48.0.tgz", + "integrity": "sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/url-loader/node_modules/mime-types": { + "version": "2.1.31", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.31.tgz", + "integrity": "sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==", + "dev": true, + "dependencies": { + "mime-db": "1.48.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/url-loader/node_modules/schema-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", + "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.7", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/url-parse": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.1.tgz", + "integrity": "sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q==", + "dev": true, + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "dev": true, + "dependencies": { + "prepend-http": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/url/node_modules/punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + }, + "node_modules/use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/useragent-parser-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/useragent-parser-js/-/useragent-parser-js-1.0.3.tgz", + "integrity": "sha1-N6l7MbA+N5ySibl5eQPGzncruv0=" + }, + "node_modules/util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "dependencies": { + "inherits": "2.0.3" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "node_modules/util.promisify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", + "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/util.promisify/node_modules/es-abstract": { + "version": "1.18.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.3.tgz", + "integrity": "sha512-nQIr12dxV7SSxE6r6f1l3DtAeEYdsGpps13dR0TwJg1S8gyp4ZPgy3FZcHBgbiQqnoqSTb+oC+kO4UQ0C/J8vw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "is-callable": "^1.2.3", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.3", + "is-string": "^1.0.6", + "object-inspect": "^1.10.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/util.promisify/node_modules/has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/util.promisify/node_modules/is-callable": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/util.promisify/node_modules/is-regex": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz", + "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/util.promisify/node_modules/object-inspect": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/util.promisify/node_modules/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==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/util/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "node_modules/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "dev": true + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", + "dev": true, + "dependencies": { + "builtins": "^1.0.3" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vendors": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/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==", + "dev": true + }, + "node_modules/vscode-json-languageservice": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/vscode-json-languageservice/-/vscode-json-languageservice-3.4.7.tgz", + "integrity": "sha512-y3MN2+/yph3yoIHGmHu4ScYpm285L58XVvfGkd49xTQzLja4apxSbwzsYcP9QsqS0W7KuvoyiPhqksiudoMwjg==", + "dev": true, + "dependencies": { + "jsonc-parser": "^2.2.0", + "vscode-languageserver-textdocument": "^1.0.0-next.4", + "vscode-languageserver-types": "^3.15.0-next.6", + "vscode-nls": "^4.1.1", + "vscode-uri": "^2.1.0" + } + }, + "node_modules/vscode-languageserver-textdocument": { + "version": "1.0.0-next.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.0-next.5.tgz", + "integrity": "sha512-1jp/zAidN/bF/sqPimhBX1orH5G4rzRw63k75TesukJDuxm8yW79ECStWbDSy41BHGOwSGN4M69QFvhancSr5A==", + "dev": true + }, + "node_modules/vscode-languageserver-types": { + "version": "3.15.0-next.8", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.15.0-next.8.tgz", + "integrity": "sha512-AEfWrSNyeamWMKPehh/kd3nBnKD9ZGCPhzfxMnW9YNqElSh28G2+Puk3knIQWyaWyV6Bzh28ok9BRJsPzXFCkQ==", + "dev": true + }, + "node_modules/vscode-nls": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/vscode-nls/-/vscode-nls-4.1.1.tgz", + "integrity": "sha512-4R+2UoUUU/LdnMnFjePxfLqNhBS8lrAFyX7pjb2ud/lqDkrUavFUTcG7wR0HBZFakae0Q6KLBFjMS6W93F403A==", + "dev": true + }, + "node_modules/vscode-uri": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-2.1.1.tgz", + "integrity": "sha512-eY9jmGoEnVf8VE8xr5znSah7Qt1P/xsCdErz+g8HYZtJ7bZqKH5E3d+6oVNm1AC/c6IHUDokbmVXKOi4qPAC9A==", + "dev": true + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "browser-process-hrtime": "^1.0.0" + } + }, + "node_modules/walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "dev": true, + "dependencies": { + "makeerror": "1.0.x" + } + }, + "node_modules/warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/watch": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/watch/-/watch-0.18.0.tgz", + "integrity": "sha1-KAlUdsbffJDJYxOJkMClQj60uYY=", + "dev": true, + "dependencies": { + "exec-sh": "^0.2.0", + "minimist": "^1.2.0" + }, + "bin": { + "watch": "cli.js" + }, + "engines": { + "node": ">=0.1.95" + } + }, + "node_modules/watch/node_modules/minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "node_modules/watchpack": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", + "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + }, + "optionalDependencies": { + "chokidar": "^3.4.1", + "watchpack-chokidar2": "^2.0.1" + } + }, + "node_modules/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==", + "dev": true, + "optional": true, + "dependencies": { + "chokidar": "^2.1.8" + } + }, + "node_modules/watchpack-chokidar2/node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "optional": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "deprecated": "Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.", + "dev": true, + "optional": true, + "dependencies": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "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" + }, + "optionalDependencies": { + "fsevents": "^1.2.7" + } + }, + "node_modules/watchpack-chokidar2/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "optional": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "optional": true, + "dependencies": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "optional": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/expand-brackets/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "optional": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "optional": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/expand-brackets/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "optional": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "optional": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/expand-brackets/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "optional": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/expand-brackets/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "optional": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "optional": true, + "dependencies": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "optional": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "optional": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "optional": true, + "dependencies": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/glob-parent/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "optional": true, + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "optional": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/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=", + "dev": true, + "optional": true, + "dependencies": { + "binary-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "optional": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "optional": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/is-descriptor/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/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==", + "dev": true, + "optional": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "optional": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "optional": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/micromatch/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "optional": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/micromatch/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "optional": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/micromatch/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "optional": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "dev": true, + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "node_modules/webpack": { + "version": "4.46.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", + "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==", + "dev": true, + "dependencies": { + "@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.5.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" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + }, + "webpack-command": { + "optional": true + } + } + }, + "node_modules/webpack-bundle-analyzer": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.4.2.tgz", + "integrity": "sha512-PIagMYhlEzFfhMYOzs5gFT55DkUdkyrJi/SxJp8EF3YMWhS+T9vvs2EoTetpk5qb6VsCq02eXTlRDOydRhDFAQ==", + "dev": true, + "dependencies": { + "acorn": "^8.0.4", + "acorn-walk": "^8.0.0", + "chalk": "^4.1.0", + "commander": "^6.2.0", + "gzip-size": "^6.0.0", + "lodash": "^4.17.20", + "opener": "^1.5.2", + "sirv": "^1.0.7", + "ws": "^7.3.1" + }, + "bin": { + "webpack-bundle-analyzer": "lib/bin/analyzer.js" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/acorn": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.4.1.tgz", + "integrity": "sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/acorn-walk": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.1.1.tgz", + "integrity": "sha512-FbJdceMlPHEAWJOILDk1fXD8lnTlEIWFkqtfk+MvmL5q/qlHfN7GEHcsFZWt/Tea9jRNPWUZG4G976nqAAmU9w==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/webpack-bundle-analyzer/node_modules/commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/webpack-bundle-analyzer/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-server": { + "version": "3.11.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.2.tgz", + "integrity": "sha512-A80BkuHRQfCiNtGBS1EMf2ChTUs0x+B3wGDFmOeT4rmJOHhHTCH2naNxIHhmkr0/UillP4U3yeIyv1pNp+QDLQ==", + "dev": true, + "dependencies": { + "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.8", + "semver": "^6.3.0", + "serve-index": "^1.9.1", + "sockjs": "^0.3.21", + "sockjs-client": "^1.5.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" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 6.11.5" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-server/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/webpack-dev-server/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "deprecated": "Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.", + "dev": true, + "dependencies": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "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" + }, + "optionalDependencies": { + "fsevents": "^1.2.7" + } + }, + "node_modules/webpack-dev-server/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/webpack-dev-server/node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "dependencies": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/expand-brackets/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/webpack-dev-server/node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/expand-brackets/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/expand-brackets/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/expand-brackets/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/expand-brackets/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "dependencies": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/webpack-dev-server/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "dependencies": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "node_modules/webpack-dev-server/node_modules/glob-parent/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-dev-server/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/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=", + "dev": true, + "dependencies": { + "binary-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/is-descriptor/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/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==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/webpack-dev-server/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/micromatch/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/micromatch/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/micromatch/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/webpack-dev-server/node_modules/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==", + "dev": true, + "dependencies": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/webpack-dev-server/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/webpack-dev-server/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/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==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/ws": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", + "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", + "dev": true, + "dependencies": { + "async-limiter": "~1.0.0" + } + }, + "node_modules/webpack-dev-server/node_modules/yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "dependencies": { + "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" + } + }, + "node_modules/webpack-dev-server/node_modules/yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "node_modules/webpack-fix-style-only-entries": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/webpack-fix-style-only-entries/-/webpack-fix-style-only-entries-0.6.1.tgz", + "integrity": "sha512-wyIhoxS3DD3Fr9JA8hQPA+ZmaWnqPxx12Nv166wcsI/0fbReqyEtiIk2llOFYIg57WVS3XX5cZJxw2ji70R0sA==", + "dev": true + }, + "node_modules/webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", + "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "dev": true, + "dependencies": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-plugin-replace": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/webpack-plugin-replace/-/webpack-plugin-replace-1.2.0.tgz", + "integrity": "sha512-1HA3etHpJW55qonJqv84o5w5GY7iqF8fqSHpTWdNwarj1llkkt4jT4QSvYs1hoaU8Lu5akDnq/spHHO5mXwo1w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "dependencies": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "node_modules/webpack-sources/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/webpack/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/webpack/node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dev": true, + "dependencies": { + "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" + } + }, + "node_modules/webpack/node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "node_modules/webpack/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/webpack/node_modules/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==", + "dev": true, + "dependencies": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/webpack/node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "dependencies": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/expand-brackets/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/expand-brackets/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/expand-brackets/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/expand-brackets/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/expand-brackets/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "dependencies": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/extglob/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/webpack/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/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==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/webpack/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/webpack/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/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==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/webpack/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/webpack/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/webpack/node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/webpack/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack/node_modules/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==", + "dev": true, + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack/node_modules/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==", + "dev": true, + "dependencies": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/webpack/node_modules/serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/webpack/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/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==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/webpack/node_modules/ssri": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", + "dev": true, + "dependencies": { + "figgy-pudding": "^3.5.1" + } + }, + "node_modules/webpack/node_modules/terser": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "dev": true, + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/webpack/node_modules/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==", + "dev": true, + "dependencies": { + "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" + }, + "engines": { + "node": ">= 6.9.0" + }, + "peerDependencies": { + "webpack": "^4.0.0" + } + }, + "node_modules/webpack/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "iconv-lite": "0.4.24" + } + }, + "node_modules/whatwg-fetch": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz", + "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==", + "dev": true + }, + "node_modules/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==", + "dev": true + }, + "node_modules/whatwg-url": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-4.8.0.tgz", + "integrity": "sha1-0pgaqRSMHgCkHFphMRZqtGg7vMA=", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/whatwg-url/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "dev": true + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-boxed-primitive/node_modules/has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-boxed-primitive/node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "node_modules/widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "dev": true, + "dependencies": { + "string-width": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/widest-line/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/widest-line/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/widest-line/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/widest-line/node_modules/string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/widest-line/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/workbox-background-sync": { + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.1.5.tgz", + "integrity": "sha512-VbUmPLsdz+sLzuNxHvMylzyRTiM4q+q7rwLBk3p2mtRL5NZozI8j/KgoGbno96vs84jx4b9zCZMEOIKEUTPf6w==", + "dev": true, + "dependencies": { + "workbox-core": "^6.1.5" + } + }, + "node_modules/workbox-broadcast-update": { + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.1.5.tgz", + "integrity": "sha512-zGrTTs+n4wHpYtqYMqBg6kl/x5j1UrczGCQnODSHTxIDV8GXLb/GtA1BCZdysNxpMmdVSeLmTcgIYAAqWFamrA==", + "dev": true, + "dependencies": { + "workbox-core": "^6.1.5" + } + }, + "node_modules/workbox-build": { + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-6.1.5.tgz", + "integrity": "sha512-P+fakR5QFVqJN9l9xHVXtmafga72gh9I+jM3A9HiB/6UNRmOAejXnDgD+RMegOHgQHPwnB44TalMToFaXKWIyA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.1", + "@babel/preset-env": "^7.11.0", + "@babel/runtime": "^7.11.2", + "@hapi/joi": "^16.1.8", + "@rollup/plugin-babel": "^5.2.0", + "@rollup/plugin-node-resolve": "^11.2.1", + "@rollup/plugin-replace": "^2.4.1", + "@surma/rollup-plugin-off-main-thread": "^1.4.1", + "common-tags": "^1.8.0", + "fast-json-stable-stringify": "^2.1.0", + "fs-extra": "^9.0.1", + "glob": "^7.1.6", + "lodash": "^4.17.20", + "pretty-bytes": "^5.3.0", + "rollup": "^2.43.1", + "rollup-plugin-terser": "^7.0.0", + "source-map": "^0.8.0-beta.0", + "source-map-url": "^0.4.0", + "stringify-object": "^3.3.0", + "strip-comments": "^2.0.1", + "tempy": "^0.6.0", + "upath": "^1.2.0", + "workbox-background-sync": "^6.1.5", + "workbox-broadcast-update": "^6.1.5", + "workbox-cacheable-response": "^6.1.5", + "workbox-core": "^6.1.5", + "workbox-expiration": "^6.1.5", + "workbox-google-analytics": "^6.1.5", + "workbox-navigation-preload": "^6.1.5", + "workbox-precaching": "^6.1.5", + "workbox-range-requests": "^6.1.5", + "workbox-recipes": "^6.1.5", + "workbox-routing": "^6.1.5", + "workbox-strategies": "^6.1.5", + "workbox-streams": "^6.1.5", + "workbox-sw": "^6.1.5", + "workbox-window": "^6.1.5" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/workbox-build/node_modules/@babel/runtime": { + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.6.tgz", + "integrity": "sha512-/PCB2uJ7oM44tz8YhC4Z/6PeOKXp4K588f+5M3clr1M4zbqztlo0XEfJ2LEzj/FgwfgGcIdl8n7YYjTCI0BYwg==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/workbox-build/node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/workbox-build/node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/workbox-build/node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/workbox-build/node_modules/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==", + "dev": true + }, + "node_modules/workbox-build/node_modules/source-map": { + "version": "0.8.0-beta.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", + "dev": true, + "dependencies": { + "whatwg-url": "^7.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/workbox-build/node_modules/tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/workbox-build/node_modules/whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "node_modules/workbox-cacheable-response": { + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.1.5.tgz", + "integrity": "sha512-x8DC71lO/JCgiaJ194l9le8wc8lFPLgUpDkLhp2si7mXV6S/wZO+8Osvw1LLgYa8YYTWGbhbFhFTXIkEMknIIA==", + "dev": true, + "dependencies": { + "workbox-core": "^6.1.5" + } + }, + "node_modules/workbox-core": { + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-6.1.5.tgz", + "integrity": "sha512-9SOEle7YcJzg3njC0xMSmrPIiFjfsFm9WjwGd5enXmI8Lwk8wLdy63B0nzu5LXoibEmS9k+aWF8EzaKtOWjNSA==", + "dev": true + }, + "node_modules/workbox-expiration": { + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.1.5.tgz", + "integrity": "sha512-6cN+FVbh8fNq56LFKPMchGNKCJeyboHsDuGBqmhDUPvD4uDjsegQpDQzn52VaE0cpywbSIsDF/BSq9E9Yjh5oQ==", + "dev": true, + "dependencies": { + "workbox-core": "^6.1.5" + } + }, + "node_modules/workbox-google-analytics": { + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.1.5.tgz", + "integrity": "sha512-LYsJ/VxTkYVLxM1uJKXZLz4cJdemidY7kPyAYtKVZ6EiDG89noASqis75/5lhqM1m3HwQfp2DtoPrelKSpSDBA==", + "dev": true, + "dependencies": { + "workbox-background-sync": "^6.1.5", + "workbox-core": "^6.1.5", + "workbox-routing": "^6.1.5", + "workbox-strategies": "^6.1.5" + } + }, + "node_modules/workbox-navigation-preload": { + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.1.5.tgz", + "integrity": "sha512-hDbNcWlffv0uvS21jCAC/mYk7NzaGRSWOQXv1p7bj2aONAX5l699D2ZK4D27G8TO0BaLHUmW/1A5CZcsvweQdg==", + "dev": true, + "dependencies": { + "workbox-core": "^6.1.5" + } + }, + "node_modules/workbox-precaching": { + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.1.5.tgz", + "integrity": "sha512-yhm1kb6wgi141JeM5X7z42XJxCry53tbMLB3NgrxktrZbwbrJF8JILzYy+RFKC9tHC6u2bPmL789GPLT2NCDzw==", + "dev": true, + "dependencies": { + "workbox-core": "^6.1.5", + "workbox-routing": "^6.1.5", + "workbox-strategies": "^6.1.5" + } + }, + "node_modules/workbox-range-requests": { + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.1.5.tgz", + "integrity": "sha512-iACChSapzB0yuIum3ascP/+cfBNuZi5DRrE+u4u5mCHigPlwfSWtlaY+y8p+a8EwcDTVTZVtnrGrRnF31SiLqQ==", + "dev": true, + "dependencies": { + "workbox-core": "^6.1.5" + } + }, + "node_modules/workbox-recipes": { + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.1.5.tgz", + "integrity": "sha512-MD1yabHca6O/oj1hrRdfj9cRwhKA5zqIE53rWOAg/dKMMzWQsf9nyRbXRgzK3a13iQvYKuQzURU4Cx58tdnR+Q==", + "dev": true, + "dependencies": { + "workbox-cacheable-response": "^6.1.5", + "workbox-core": "^6.1.5", + "workbox-expiration": "^6.1.5", + "workbox-precaching": "^6.1.5", + "workbox-routing": "^6.1.5", + "workbox-strategies": "^6.1.5" + } + }, + "node_modules/workbox-routing": { + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.1.5.tgz", + "integrity": "sha512-uC/Ctz+4GXGL42h1WxUNKxqKRik/38uS0NZ6VY/EHqL2F1ObLFqMHUZ4ZYvyQsKdyI82cxusvhJZHOrY0a2fIQ==", + "dev": true, + "dependencies": { + "workbox-core": "^6.1.5" + } + }, + "node_modules/workbox-strategies": { + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.1.5.tgz", + "integrity": "sha512-QhiOn9KT9YGBdbfWOmJT6pXZOIAxaVrs6J6AMYzRpkUegBTEcv36+ZhE/cfHoT0u2fxVtthHnskOQ/snEzaXQw==", + "dev": true, + "dependencies": { + "workbox-core": "^6.1.5" + } + }, + "node_modules/workbox-streams": { + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.1.5.tgz", + "integrity": "sha512-OI1kLvRHGFXV+soDvs6aEwfBwdAkvPB0mRryqdh3/K17qUj/1gRXc8QtpgU+83xqx/I/ar2bTCIj0KPzI/ChCQ==", + "dev": true, + "dependencies": { + "workbox-core": "^6.1.5", + "workbox-routing": "^6.1.5" + } + }, + "node_modules/workbox-sw": { + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.1.5.tgz", + "integrity": "sha512-IMDiqxYbKzPorZLGMUMacLB6r76iVQbdTzYthIZoPfy+uFURJFUtqiWQJKg1L+RMyuYXwKXTahCIGkgFs4jBeg==", + "dev": true + }, + "node_modules/workbox-webpack-plugin": { + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-6.1.5.tgz", + "integrity": "sha512-tsgeNAYiFP4STNPDxBVT58eiU8nGUmcv7Lq9FFJkQf5MMu6tPw1OLp+KpszhbCWP+R/nEdu85Gjexs6fY647Kg==", + "dev": true, + "dependencies": { + "fast-json-stable-stringify": "^2.1.0", + "pretty-bytes": "^5.4.1", + "source-map-url": "^0.4.0", + "upath": "^1.2.0", + "webpack-sources": "^1.4.3", + "workbox-build": "^6.1.5" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "webpack": "^4.4.0 || ^5.9.0" + } + }, + "node_modules/workbox-webpack-plugin/node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/workbox-webpack-plugin/node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/workbox-window": { + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-6.1.5.tgz", + "integrity": "sha512-akL0X6mAegai2yypnq78RgfazeqvKbsllRtEI4dnbhPcRINEY1NmecFmsQk8SD+zWLK1gw5OdwAOX+zHSRVmeA==", + "dev": true, + "dependencies": { + "workbox-core": "^6.1.5" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "errno": "~0.1.7" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "microevent.ts": "~0.1.1" + } + }, + "node_modules/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==", + "dependencies": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/write": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", + "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "dev": true, + "dependencies": { + "mkdirp": "^0.5.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "node_modules/ws": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xdg-basedir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/xml-name-validator": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz", + "integrity": "sha1-TYuPHszTQZqjYgYb7O9RXh5VljU=", + "dev": true + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "node_modules/xmlhttprequest-ssl": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.3.tgz", + "integrity": "sha512-3XfeQE/wNkvrIktn2Kf0869fC0BN6UpydVasGIeSm2B1Llihf7/0UfZM+eCkOw3P7bP4+qPgqhm7ZoxuJtFU0Q==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + }, + "node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "node_modules/yargs": { + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", + "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", + "dependencies": { + "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.1" + } + }, + "node_modules/yargs-parser": { + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", + "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "dev": true, + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/yeast": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=" + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + }, "dependencies": { "@babel/code-frame": { "version": "7.0.0-beta.44", @@ -16,13 +30731,13 @@ "version": "7.14.7", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.7.tgz", "integrity": "sha512-nS6dZaISCXJ3+518CWiBfEr//gHyMO02uDxBkXTKZDN5POruCnOZ1N4YBRZDCabwF8nZMWBpRxIicmXtBs+fvw==", - "dev": true + "devOptional": true }, "@babel/core": { "version": "7.14.6", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.6.tgz", "integrity": "sha512-gJnOEWSqTk96qG5BoIrl5bVtc23DCycmIePPYnamY9RboYdI4nFy5vAQMSl81O5K/W0sLDWfGysnOECC+KUUCA==", - "dev": true, + "devOptional": true, "requires": { "@babel/code-frame": "^7.14.5", "@babel/generator": "^7.14.5", @@ -45,7 +30760,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", - "dev": true, + "devOptional": true, "requires": { "@babel/highlight": "^7.14.5" } @@ -54,7 +30769,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz", "integrity": "sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==", - "dev": true, + "devOptional": true, "requires": { "@babel/types": "^7.14.5", "jsesc": "^2.5.1", @@ -65,7 +30780,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", - "dev": true, + "devOptional": true, "requires": { "@babel/helper-get-function-arity": "^7.14.5", "@babel/template": "^7.14.5", @@ -76,7 +30791,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", - "dev": true, + "devOptional": true, "requires": { "@babel/types": "^7.14.5" } @@ -85,7 +30800,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", - "dev": true, + "devOptional": true, "requires": { "@babel/types": "^7.14.5" } @@ -94,7 +30809,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "dev": true, + "devOptional": true, "requires": { "@babel/helper-validator-identifier": "^7.14.5", "chalk": "^2.0.0", @@ -105,7 +30820,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", - "dev": true, + "devOptional": true, "requires": { "@babel/code-frame": "^7.14.5", "@babel/parser": "^7.14.5", @@ -116,7 +30831,7 @@ "version": "7.14.7", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.7.tgz", "integrity": "sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ==", - "dev": true, + "devOptional": true, "requires": { "@babel/code-frame": "^7.14.5", "@babel/generator": "^7.14.5", @@ -133,7 +30848,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", - "dev": true, + "devOptional": true, "requires": { "@babel/helper-validator-identifier": "^7.14.5", "to-fast-properties": "^2.0.0" @@ -143,7 +30858,7 @@ "version": "4.3.2", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, + "devOptional": true, "requires": { "ms": "2.1.2" } @@ -152,7 +30867,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dev": true, + "devOptional": true, "requires": { "minimist": "^1.2.5" } @@ -161,19 +30876,19 @@ "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true + "devOptional": true }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "devOptional": true }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true + "devOptional": true } } }, @@ -237,7 +30952,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.14.5.tgz", "integrity": "sha512-v+QtZqXEiOnpO6EYvlImB6zCD2Lel06RzOPzmkz/D/XgQiUu3C/Jb1LOqSt/AIA34TYi/Q+KlT8vTQrgdxkbLw==", - "dev": true, + "devOptional": true, "requires": { "@babel/compat-data": "^7.14.5", "@babel/helper-validator-option": "^7.14.5", @@ -249,7 +30964,7 @@ "version": "4.16.6", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", - "dev": true, + "devOptional": true, "requires": { "caniuse-lite": "^1.0.30001219", "colorette": "^1.2.2", @@ -262,25 +30977,25 @@ "version": "1.0.30001245", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001245.tgz", "integrity": "sha512-768fM9j1PKXpOCKws6eTo3RHmvTUsG9UrpT4WoREFeZgJBTi4/X9g565azS/rVUGtqb8nt7FjLeF5u4kukERnA==", - "dev": true + "devOptional": true }, "electron-to-chromium": { "version": "1.3.776", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.776.tgz", "integrity": "sha512-V0w7eFSBoFPpdw4xexjVPZ770UDZIevSwkkj4W97XbE3IsCsTRFpa7/yXGZ88EOQAUEA09JMMsWK0xsw0kRAYw==", - "dev": true + "devOptional": true }, "node-releases": { "version": "1.1.73", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz", "integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==", - "dev": true + "devOptional": true }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true + "devOptional": true } } }, @@ -581,7 +31296,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz", "integrity": "sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ==", - "dev": true, + "devOptional": true, "requires": { "@babel/types": "^7.14.5" }, @@ -590,7 +31305,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", - "dev": true, + "devOptional": true, "requires": { "@babel/helper-validator-identifier": "^7.14.5", "to-fast-properties": "^2.0.0" @@ -602,7 +31317,7 @@ "version": "7.14.7", "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.14.7.tgz", "integrity": "sha512-TMUt4xKxJn6ccjcOW7c4hlwyJArizskAhoSTOCkA0uZ+KghIaci0Qg9R043kUMWI9mtQfgny+NQ5QATnZ+paaA==", - "dev": true, + "devOptional": true, "requires": { "@babel/types": "^7.14.5" }, @@ -611,7 +31326,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", - "dev": true, + "devOptional": true, "requires": { "@babel/helper-validator-identifier": "^7.14.5", "to-fast-properties": "^2.0.0" @@ -623,7 +31338,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.5.tgz", "integrity": "sha512-iXpX4KW8LVODuAieD7MzhNjmM6dzYY5tfRqT+R9HDXWl0jPn/djKmA+G9s/2C2T9zggw5tK1QNqZ70USfedOwA==", - "dev": true, + "devOptional": true, "requires": { "@babel/helper-module-imports": "^7.14.5", "@babel/helper-replace-supers": "^7.14.5", @@ -639,7 +31354,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", - "dev": true, + "devOptional": true, "requires": { "@babel/highlight": "^7.14.5" } @@ -648,7 +31363,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz", "integrity": "sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==", - "dev": true, + "devOptional": true, "requires": { "@babel/types": "^7.14.5", "jsesc": "^2.5.1", @@ -659,7 +31374,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", - "dev": true, + "devOptional": true, "requires": { "@babel/helper-get-function-arity": "^7.14.5", "@babel/template": "^7.14.5", @@ -670,7 +31385,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", - "dev": true, + "devOptional": true, "requires": { "@babel/types": "^7.14.5" } @@ -679,7 +31394,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", - "dev": true, + "devOptional": true, "requires": { "@babel/types": "^7.14.5" } @@ -688,7 +31403,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", - "dev": true, + "devOptional": true, "requires": { "@babel/types": "^7.14.5" } @@ -697,7 +31412,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "dev": true, + "devOptional": true, "requires": { "@babel/helper-validator-identifier": "^7.14.5", "chalk": "^2.0.0", @@ -708,7 +31423,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", - "dev": true, + "devOptional": true, "requires": { "@babel/code-frame": "^7.14.5", "@babel/parser": "^7.14.5", @@ -719,7 +31434,7 @@ "version": "7.14.7", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.7.tgz", "integrity": "sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ==", - "dev": true, + "devOptional": true, "requires": { "@babel/code-frame": "^7.14.5", "@babel/generator": "^7.14.5", @@ -736,7 +31451,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", - "dev": true, + "devOptional": true, "requires": { "@babel/helper-validator-identifier": "^7.14.5", "to-fast-properties": "^2.0.0" @@ -746,7 +31461,7 @@ "version": "4.3.2", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, + "devOptional": true, "requires": { "ms": "2.1.2" } @@ -755,7 +31470,7 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "devOptional": true } } }, @@ -763,7 +31478,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz", "integrity": "sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA==", - "dev": true, + "devOptional": true, "requires": { "@babel/types": "^7.14.5" }, @@ -772,7 +31487,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", - "dev": true, + "devOptional": true, "requires": { "@babel/helper-validator-identifier": "^7.14.5", "to-fast-properties": "^2.0.0" @@ -813,7 +31528,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.14.5.tgz", "integrity": "sha512-3i1Qe9/8x/hCHINujn+iuHy+mMRLoc77b2nI9TB0zjH1hvn9qGlXjWlggdwUcju36PkPCy/lpM7LLUdcTyH4Ow==", - "dev": true, + "devOptional": true, "requires": { "@babel/helper-member-expression-to-functions": "^7.14.5", "@babel/helper-optimise-call-expression": "^7.14.5", @@ -825,7 +31540,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", - "dev": true, + "devOptional": true, "requires": { "@babel/highlight": "^7.14.5" } @@ -834,7 +31549,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz", "integrity": "sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==", - "dev": true, + "devOptional": true, "requires": { "@babel/types": "^7.14.5", "jsesc": "^2.5.1", @@ -845,7 +31560,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", - "dev": true, + "devOptional": true, "requires": { "@babel/helper-get-function-arity": "^7.14.5", "@babel/template": "^7.14.5", @@ -856,7 +31571,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", - "dev": true, + "devOptional": true, "requires": { "@babel/types": "^7.14.5" } @@ -865,7 +31580,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", - "dev": true, + "devOptional": true, "requires": { "@babel/types": "^7.14.5" } @@ -874,7 +31589,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "dev": true, + "devOptional": true, "requires": { "@babel/helper-validator-identifier": "^7.14.5", "chalk": "^2.0.0", @@ -885,7 +31600,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", - "dev": true, + "devOptional": true, "requires": { "@babel/code-frame": "^7.14.5", "@babel/parser": "^7.14.5", @@ -896,7 +31611,7 @@ "version": "7.14.7", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.7.tgz", "integrity": "sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ==", - "dev": true, + "devOptional": true, "requires": { "@babel/code-frame": "^7.14.5", "@babel/generator": "^7.14.5", @@ -913,7 +31628,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", - "dev": true, + "devOptional": true, "requires": { "@babel/helper-validator-identifier": "^7.14.5", "to-fast-properties": "^2.0.0" @@ -923,7 +31638,7 @@ "version": "4.3.2", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, + "devOptional": true, "requires": { "ms": "2.1.2" } @@ -932,7 +31647,7 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "devOptional": true } } }, @@ -940,7 +31655,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.14.5.tgz", "integrity": "sha512-nfBN9xvmCt6nrMZjfhkl7i0oTV3yxR4/FztsbOASyTvVcoYd0TRHh7eMLdlEcCqobydC0LAF3LtC92Iwxo0wyw==", - "dev": true, + "devOptional": true, "requires": { "@babel/types": "^7.14.5" }, @@ -949,7 +31664,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", - "dev": true, + "devOptional": true, "requires": { "@babel/helper-validator-identifier": "^7.14.5", "to-fast-properties": "^2.0.0" @@ -991,13 +31706,13 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz", "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==", - "dev": true + "devOptional": true }, "@babel/helper-validator-option": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", - "dev": true + "devOptional": true }, "@babel/helper-wrap-function": { "version": "7.14.5", @@ -1130,7 +31845,7 @@ "version": "7.14.6", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.6.tgz", "integrity": "sha512-yesp1ENQBiLI+iYHSJdoZKUtRpfTlL1grDIX9NRlAVppljLw/4tTyYupIB7uIYmC3stW/imAv8EqaKaS/ibmeA==", - "dev": true, + "devOptional": true, "requires": { "@babel/template": "^7.14.5", "@babel/traverse": "^7.14.5", @@ -1141,7 +31856,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", - "dev": true, + "devOptional": true, "requires": { "@babel/highlight": "^7.14.5" } @@ -1150,7 +31865,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz", "integrity": "sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==", - "dev": true, + "devOptional": true, "requires": { "@babel/types": "^7.14.5", "jsesc": "^2.5.1", @@ -1161,7 +31876,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", - "dev": true, + "devOptional": true, "requires": { "@babel/helper-get-function-arity": "^7.14.5", "@babel/template": "^7.14.5", @@ -1172,7 +31887,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", - "dev": true, + "devOptional": true, "requires": { "@babel/types": "^7.14.5" } @@ -1181,7 +31896,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", - "dev": true, + "devOptional": true, "requires": { "@babel/types": "^7.14.5" } @@ -1190,7 +31905,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "dev": true, + "devOptional": true, "requires": { "@babel/helper-validator-identifier": "^7.14.5", "chalk": "^2.0.0", @@ -1201,7 +31916,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", - "dev": true, + "devOptional": true, "requires": { "@babel/code-frame": "^7.14.5", "@babel/parser": "^7.14.5", @@ -1212,7 +31927,7 @@ "version": "7.14.7", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.7.tgz", "integrity": "sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ==", - "dev": true, + "devOptional": true, "requires": { "@babel/code-frame": "^7.14.5", "@babel/generator": "^7.14.5", @@ -1229,7 +31944,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", - "dev": true, + "devOptional": true, "requires": { "@babel/helper-validator-identifier": "^7.14.5", "to-fast-properties": "^2.0.0" @@ -1239,7 +31954,7 @@ "version": "4.3.2", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, + "devOptional": true, "requires": { "ms": "2.1.2" } @@ -1248,7 +31963,7 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "devOptional": true } } }, @@ -1275,7 +31990,7 @@ "version": "7.14.7", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.7.tgz", "integrity": "sha512-X67Z5y+VBJuHB/RjwECp8kSl5uYi0BvRbNeWqkaJCVh+LiTPl19WBUfG627psSgp9rSf6ojuXghQM3ha6qHHdA==", - "dev": true + "devOptional": true }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { "version": "7.14.5", @@ -2326,26 +33041,6 @@ "query-string": "^7.0.0", "serialize-query-params": "^1.3.3", "superstruct": "^0.8.3" - }, - "dependencies": { - "query-string": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.0.1.tgz", - "integrity": "sha512-uIw3iRvHnk9to1blJCG3BTc+Ro56CBowJXKmNNAm3RulvPBzWLRqKSiiDk+IplJhsydwtuNMHi8UGQFcCLVfkA==", - "dev": true, - "requires": { - "decode-uri-component": "^0.2.0", - "filter-obj": "^1.1.0", - "split-on-first": "^1.0.0", - "strict-uri-encode": "^2.0.0" - } - }, - "strict-uri-encode": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", - "integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY=", - "dev": true - } } }, "@ctrlpanel/pbkdf2": { @@ -2738,7 +33433,8 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/@prefresh/core/-/core-1.3.2.tgz", "integrity": "sha512-Iv+uI698KDgWsrKpLvOgN3hmAMyvhVgn09mcnhZ98BUNdg/qrxE7tcUf5yFCImkgqED5/Dcn8G5hFy4IikEDvg==", - "dev": true + "dev": true, + "requires": {} }, "@prefresh/utils": { "version": "1.1.1", @@ -2997,7 +33693,8 @@ "@restart/hooks": { "version": "0.3.15", "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.3.15.tgz", - "integrity": "sha512-rVNba1A2oMzKBg16fCrrHmCf4JjOzFhT9TWR8J+Y8iOcY4zffxtP3ke7mEsakvghHZT+9//uDOPSSeuBDW41GQ==" + "integrity": "sha512-rVNba1A2oMzKBg16fCrrHmCf4JjOzFhT9TWR8J+Y8iOcY4zffxtP3ke7mEsakvghHZT+9//uDOPSSeuBDW41GQ==", + "requires": {} }, "@rollup/plugin-babel": { "version": "5.3.0", @@ -3394,7 +34091,8 @@ "@yaireo/tagify": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/@yaireo/tagify/-/tagify-4.5.0.tgz", - "integrity": "sha512-fYy9IVFt0i41KuTX3kwJ1sEzGeYhFe9b6GGDGIz/La9pyG1VaGJPFyKEtsDkkyNKptRU83yXSPtM6laldF1q1A==" + "integrity": "sha512-fYy9IVFt0i41KuTX3kwJ1sEzGeYhFe9b6GGDGIz/La9pyG1VaGJPFyKEtsDkkyNKptRU83yXSPtM6laldF1q1A==", + "requires": {} }, "abab": { "version": "1.0.4", @@ -3493,13 +34191,15 @@ "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==", - "dev": true + "dev": true, + "requires": {} }, "ajv-keywords": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", - "dev": true + "dev": true, + "requires": {} }, "alphanum-sort": { "version": "1.0.2", @@ -5506,7 +36206,7 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, + "devOptional": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -5517,7 +36217,7 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, + "devOptional": true, "requires": { "has-flag": "^3.0.0" } @@ -5991,7 +36691,7 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", - "dev": true + "devOptional": true }, "colors": { "version": "1.1.2", @@ -6336,212 +37036,214 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "requires": {} + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "schema-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", - "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.7", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "configstore": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", - "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", - "dev": true, - "requires": { - "dot-prop": "^5.2.0", - "graceful-fs": "^4.1.2", - "make-dir": "^3.0.0", - "unique-string": "^2.0.0", - "write-file-atomic": "^3.0.0", - "xdg-basedir": "^4.0.0" - }, - "dependencies": { - "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==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - } - } - }, - "connect-history-api-fallback": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", - "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", - "dev": true - }, - "console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", - "dev": true - }, - "console-clear": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/console-clear/-/console-clear-1.1.1.tgz", - "integrity": "sha512-pMD+MVR538ipqkG5JXeOEbKWS5um1H4LUUccUQG68qpeqBYbzYy79Gh55jkd2TtPdRfUaLWdv6LPP//5Zt0aPQ==", - "dev": true - }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", - "dev": true - }, - "content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", - "dev": true, - "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==", - "dev": true - }, - "content-type-parser": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/content-type-parser/-/content-type-parser-1.0.2.tgz", - "integrity": "sha512-lM4l4CnMEwOLHAHr/P6MEZwZFPJFtAAKgL6pogbXmVZggIqXhdB6RbBtPOTsw2FcXwYhehRGERJmRrjOiIB8pQ==", - "dev": true - }, - "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==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "convert-units": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/convert-units/-/convert-units-2.3.4.tgz", - "integrity": "sha512-ERHfdA0UhHJp1IpwE6PnFJx8LqG7B1ZjJ20UvVCmopEnVCfER68Tbe3kvN63dLbYXDA2xFWRE6zd4Wsf0w7POg==", - "dev": true, - "requires": { - "lodash.foreach": "2.3.x", - "lodash.keys": "2.3.x" - } - }, - "cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", - "dev": true - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", - "dev": true - }, - "copy-concurrently": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", - "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", - "dev": true, - "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" - } - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true - }, - "copy-webpack-plugin": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-6.4.1.tgz", - "integrity": "sha512-MXyPCjdPVx5iiWyl40Va3JGh27bKzOTNY3NjUTrosD2q7dR/cLD0013uqJ3BpFbUjyONINjb6qI7nDIJujrMbA==", - "dev": true, - "requires": { - "cacache": "^15.0.5", - "fast-glob": "^3.2.4", - "find-cache-dir": "^3.3.1", - "glob-parent": "^5.1.1", - "globby": "^11.0.1", - "loader-utils": "^2.0.0", - "normalize-path": "^3.0.0", - "p-limit": "^3.0.2", - "schema-utils": "^3.0.0", - "serialize-javascript": "^5.0.1", - "webpack-sources": "^1.4.3" - }, - "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true - }, + "schema-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", + "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.7", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" + }, + "dependencies": { + "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==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + } + } + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "console-clear": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/console-clear/-/console-clear-1.1.1.tgz", + "integrity": "sha512-pMD+MVR538ipqkG5JXeOEbKWS5um1H4LUUccUQG68qpeqBYbzYy79Gh55jkd2TtPdRfUaLWdv6LPP//5Zt0aPQ==", + "dev": true + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "dev": true, + "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==", + "dev": true + }, + "content-type-parser": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/content-type-parser/-/content-type-parser-1.0.2.tgz", + "integrity": "sha512-lM4l4CnMEwOLHAHr/P6MEZwZFPJFtAAKgL6pogbXmVZggIqXhdB6RbBtPOTsw2FcXwYhehRGERJmRrjOiIB8pQ==", + "dev": true + }, + "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==", + "devOptional": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "convert-units": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/convert-units/-/convert-units-2.3.4.tgz", + "integrity": "sha512-ERHfdA0UhHJp1IpwE6PnFJx8LqG7B1ZjJ20UvVCmopEnVCfER68Tbe3kvN63dLbYXDA2xFWRE6zd4Wsf0w7POg==", + "dev": true, + "requires": { + "lodash.foreach": "2.3.x", + "lodash.keys": "2.3.x" + } + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "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" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "copy-webpack-plugin": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-6.4.1.tgz", + "integrity": "sha512-MXyPCjdPVx5iiWyl40Va3JGh27bKzOTNY3NjUTrosD2q7dR/cLD0013uqJ3BpFbUjyONINjb6qI7nDIJujrMbA==", + "dev": true, + "requires": { + "cacache": "^15.0.5", + "fast-glob": "^3.2.4", + "find-cache-dir": "^3.3.1", + "glob-parent": "^5.1.1", + "globby": "^11.0.1", + "loader-utils": "^2.0.0", + "normalize-path": "^3.0.0", + "p-limit": "^3.0.2", + "schema-utils": "^3.0.0", + "serialize-javascript": "^5.0.1", + "webpack-sources": "^1.4.3" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "requires": {} + }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -7114,7 +37816,8 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true + "dev": true, + "requires": {} }, "fast-deep-equal": { "version": "3.1.3", @@ -7425,7 +38128,8 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-2.0.1.tgz", "integrity": "sha512-i8vLRZTnEH9ubIyfdZCAdIdgnHAUeQeByEeQ2I7oTilvP9oHO6RScpeq3GsFUVqeB8uZgOQ9pw8utofNn32hhQ==", - "dev": true + "dev": true, + "requires": {} }, "csso": { "version": "4.2.0", @@ -8580,7 +39284,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true + "devOptional": true }, "escape-goat": { "version": "2.1.1", @@ -8598,7 +39302,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true + "devOptional": true }, "escodegen": { "version": "1.12.0", @@ -9345,7 +40049,8 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true + "dev": true, + "requires": {} }, "fast-deep-equal": { "version": "3.1.3", @@ -10387,24 +41092,24 @@ "dev": true, "optional": true }, - "string-width": { - "version": "1.0.2", + "string_decoder": { + "version": "1.1.1", "bundled": true, "dev": true, "optional": true, "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "safe-buffer": "~5.1.0" } }, - "string_decoder": { - "version": "1.1.1", + "string-width": { + "version": "1.0.2", "bundled": true, "dev": true, "optional": true, "requires": { - "safe-buffer": "~5.1.0" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, "strip-ansi": { @@ -10481,7 +41186,7 @@ "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true + "devOptional": true }, "get-caller-file": { "version": "2.0.5", @@ -10678,7 +41383,7 @@ "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true + "devOptional": true }, "globby": { "version": "11.0.4", @@ -10892,7 +41597,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true + "devOptional": true }, "has-symbols": { "version": "1.0.0", @@ -11641,7 +42346,8 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true + "dev": true, + "requires": {} }, "identity-obj-proxy": { "version": "3.0.0", @@ -13364,7 +44070,7 @@ "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true + "devOptional": true }, "json-buffer": { "version": "3.0.0", @@ -14407,7 +45113,8 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true + "dev": true, + "requires": {} }, "fast-deep-equal": { "version": "3.1.3", @@ -15448,25 +46155,29 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.0.1.tgz", "integrity": "sha512-lgZBPTDvWrbAYY1v5GYEv8fEO/WhKOu/hmZqmCYfrpD6eyDWWzAOsl2rF29lpvziKO02Gc5GJQtlpkTmakwOWg==", - "dev": true + "dev": true, + "requires": {} }, "postcss-discard-duplicates": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.1.tgz", "integrity": "sha512-svx747PWHKOGpAXXQkCc4k/DsWo+6bc5LsVrAsw+OU+Ibi7klFZCyX54gjYzX4TH+f2uzXjRviLARxkMurA2bA==", - "dev": true + "dev": true, + "requires": {} }, "postcss-discard-empty": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.0.1.tgz", "integrity": "sha512-vfU8CxAQ6YpMxV2SvMcMIyF2LX1ZzWpy0lqHDsOdaKKLQVQGVP1pzhrI9JlsO65s66uQTfkQBKBD/A5gp9STFw==", - "dev": true + "dev": true, + "requires": {} }, "postcss-discard-overridden": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.0.1.tgz", "integrity": "sha512-Y28H7y93L2BpJhrdUR2SR2fnSsT+3TVx1NmVQLbcnZWwIUpJ7mfcTC6Za9M2PG6w8j7UQRfzxqn8jU2VwFxo3Q==", - "dev": true + "dev": true, + "requires": {} }, "postcss-merge-longhand": { "version": "5.0.2", @@ -15539,7 +46250,8 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.0.1.tgz", "integrity": "sha512-6J40l6LNYnBdPSk+BHZ8SF+HAkS4q2twe5jnocgd+xWpz/mx/5Sa32m3W1AA8uE8XaXN+eg8trIlfu8V9x61eg==", - "dev": true + "dev": true, + "requires": {} }, "postcss-normalize-display-values": { "version": "5.0.1", @@ -16660,7 +47372,8 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true + "dev": true, + "requires": {} }, "fast-deep-equal": { "version": "3.1.3", @@ -17003,7 +47716,8 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", - "dev": true + "dev": true, + "requires": {} }, "postcss-modules-local-by-default": { "version": "4.0.0", @@ -17868,7 +48582,8 @@ "preact-markup": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/preact-markup/-/preact-markup-2.1.1.tgz", - "integrity": "sha512-8JL2p36mzK8XkspOyhBxUSPjYwMxDM0L5BWBZWxsZMVW8WsGQrYQDgVuDKkRspt2hwrle+Cxr/053hpc9BJwfw==" + "integrity": "sha512-8JL2p36mzK8XkspOyhBxUSPjYwMxDM0L5BWBZWxsZMVW8WsGQrYQDgVuDKkRspt2hwrle+Cxr/053hpc9BJwfw==", + "requires": {} }, "preact-render-spy": { "version": "1.3.0", @@ -17901,7 +48616,8 @@ "preact-router": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/preact-router/-/preact-router-3.2.1.tgz", - "integrity": "sha512-KEN2VN1DxUlTwzW5IFkF13YIA2OdQ2OvgJTkQREF+AA2NrHRLaGbB68EjS4IeZOa1shvQ1FvEm3bSLta4sXBhg==" + "integrity": "sha512-KEN2VN1DxUlTwzW5IFkF13YIA2OdQ2OvgJTkQREF+AA2NrHRLaGbB68EjS4IeZOa1shvQ1FvEm3bSLta4sXBhg==", + "requires": {} }, "prelude-ls": { "version": "1.1.2", @@ -18219,9 +48935,9 @@ "dev": true }, "query-string": { - "version": "6.14.1", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.14.1.tgz", - "integrity": "sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.0.1.tgz", + "integrity": "sha512-uIw3iRvHnk9to1blJCG3BTc+Ro56CBowJXKmNNAm3RulvPBzWLRqKSiiDk+IplJhsydwtuNMHi8UGQFcCLVfkA==", "requires": { "decode-uri-component": "^0.2.0", "filter-obj": "^1.1.0", @@ -18355,7 +49071,8 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true + "dev": true, + "requires": {} }, "fast-deep-equal": { "version": "3.1.3", @@ -18460,7 +49177,8 @@ "react-onclickoutside": { "version": "6.10.0", "resolved": "https://registry.npmjs.org/react-onclickoutside/-/react-onclickoutside-6.10.0.tgz", - "integrity": "sha512-7i2L3ef+0ILXpL6P+Hg304eCQswh4jl3ynwR71BSlMU49PE2uk31k8B2GkP6yE9s2D4jTGKnzuSpzWxu4YxfQQ==" + "integrity": "sha512-7i2L3ef+0ILXpL6P+Hg304eCQswh4jl3ynwR71BSlMU49PE2uk31k8B2GkP6yE9s2D4jTGKnzuSpzWxu4YxfQQ==", + "requires": {} }, "react-overlays": { "version": "2.1.0", @@ -19221,7 +49939,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "devOptional": true }, "safe-regex": { "version": "1.1.0", @@ -19588,7 +50306,8 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true + "dev": true, + "requires": {} }, "fast-deep-equal": { "version": "3.1.3", @@ -19727,7 +50446,8 @@ "version": "1.3.5", "resolved": "https://registry.npmjs.org/serialize-query-params/-/serialize-query-params-1.3.5.tgz", "integrity": "sha512-BrLH1RqgzVxm6dco+KP9S6BodeFiUVvKwtY3GSWQlupIdblT19KCGTRkHZ2yIU6Bjy0Prjts0tYe11VpTMbAeQ==", - "dev": true + "dev": true, + "requires": {} }, "serve-index": { "version": "1.9.1", @@ -20474,6 +51194,15 @@ "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", "integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY=" }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, "string-length": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", @@ -20551,15 +51280,6 @@ "define-properties": "^1.1.3" } }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, "stringify-object": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", @@ -20646,7 +51366,8 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true + "dev": true, + "requires": {} }, "fast-deep-equal": { "version": "3.1.3", @@ -21026,7 +51747,8 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true + "dev": true, + "requires": {} }, "fast-deep-equal": { "version": "3.1.3", @@ -21186,7 +51908,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true + "devOptional": true }, "to-object-path": { "version": "0.3.0", @@ -21796,7 +52518,8 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true + "dev": true, + "requires": {} }, "fast-deep-equal": { "version": "3.1.3", @@ -22620,7 +53343,8 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true + "dev": true, + "requires": {} }, "arr-diff": { "version": "4.0.0", @@ -23273,7 +53997,8 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true + "dev": true, + "requires": {} }, "ansi-regex": { "version": "2.1.1", @@ -24309,7 +55034,8 @@ "ws": { "version": "7.4.6", "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==" + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "requires": {} }, "xdg-basedir": { "version": "4.0.0", diff --git a/server/package-lock.json b/server/package-lock.json index a40f1c9440..8ee0288e9e 100644 --- a/server/package-lock.json +++ b/server/package-lock.json @@ -1,7 +1,12690 @@ { "name": "gladys-server", + "lockfileVersion": 2, "requires": true, - "lockfileVersion": 1, + "packages": { + "": { + "name": "gladys-server", + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@gladysassistant/gladys-gateway-js": "^3.5.0", + "@hapi/joi": "^17.1.0", + "@hapi/joi-date": "^2.0.1", + "axios": "^0.21.1", + "bcrypt": "^5.0.1", + "bluebird": "^3.5.3", + "compression": "^1.7.4", + "cross-env": "^5.2.0", + "dayjs": "^1.10.4", + "dockerode": "^3.2.1", + "downsample": "^1.4.0", + "express": "^4.16.4", + "express-rate-limit": "^4.0.3", + "form-data": "^2.3.3", + "fs-extra": "^8.0.1", + "get-value": "^3.0.1", + "handlebars": "^4.7.7", + "joi": "^14.3.1", + "jsonwebtoken": "^8.4.0", + "lodash.clonedeep": "^4.5.0", + "node-nlp": "^4.19.7", + "node-schedule": "^1.3.2", + "node-webcrypto-ossl": "^1.0.48", + "path-to-regexp": "^3.0.0", + "query-string": "^7.0.1", + "queue": "^6.0.0", + "semver": "^6.1.1", + "sequelize": "^6.5.0", + "sequelize-cli": "^6.2.0", + "set-value": "^3.0.2", + "simple-oauth2": "^4.2.0", + "sqlite3": "^5.0.2", + "suncalc": "^1.8.0", + "tracer": "^1.1.4", + "umzug": "^2.2.0", + "uuid": "^3.3.2", + "ws": "^6.2.1" + }, + "devDependencies": { + "apidoc": "^0.17.7", + "chai": "^4.2.0", + "chai-as-promised": "^7.1.1", + "dotenv": "^6.2.0", + "eslint": "^7.22.0", + "eslint-config-airbnb": "^17.1.0", + "eslint-config-prettier": "^4.3.0", + "eslint-plugin-import": "^2.22.1", + "eslint-plugin-jsdoc": "^4.1.0", + "eslint-plugin-no-call": "^1.2.5", + "eslint-plugin-require-jsdoc": "^1.0.4", + "jsdoc": "^3.6.7", + "mocha": "^8.3.2", + "mock-express-request": "^0.2.2", + "mock-http-server": "^1.4.5", + "nock": "^13.0.11", + "nodemon": "^2.0.7", + "npm-run-all": "^4.1.5", + "nyc": "^15.1.0", + "oauth2-mock-server": "^4.1.1", + "prettier": "^1.17.1", + "proxyquire": "^2.1.0", + "shx": "^0.3.2", + "sinon": "^7.2.4", + "supertest": "^3.4.2" + }, + "engines": { + "node": "14.x", + "npm": "6.x" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.12.tgz", + "integrity": "sha512-3eJJ841uKxeV8dcN/2yGEUy+RfgQspPEgQat85umsE1rotuquQ2AbIub4S6j7c50a2d+4myc+zSlnXeIHrOnhQ==", + "dev": true + }, + "node_modules/@babel/core": { + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.10.tgz", + "integrity": "sha512-bfIYcT0BdKeAZrovpMqX2Mx5NrgAckGbwT982AkdS5GNfn3KMGiprlBAtmBcFZRUmpaufS6WZFP8trvx8ptFDw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.13.9", + "@babel/helper-compilation-targets": "^7.13.10", + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helpers": "^7.13.10", + "@babel/parser": "^7.13.10", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "semver": "^6.3.0", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.12.13" + } + }, + "node_modules/@babel/core/node_modules/@babel/generator": { + "version": "7.13.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", + "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.13.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "node_modules/@babel/core/node_modules/@babel/helper-function-name": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", + "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", + "dev": true, + "dependencies": { + "@babel/helper-get-function-arity": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/core/node_modules/@babel/helper-get-function-arity": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", + "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/core/node_modules/@babel/helper-split-export-declaration": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", + "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/core/node_modules/@babel/highlight": { + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", + "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "node_modules/@babel/core/node_modules/@babel/parser": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.12.tgz", + "integrity": "sha512-4T7Pb244rxH24yR116LAuJ+adxXXnHhZaLJjegJVKSdoNCe4x1eDBaud5YIcQFcqzsaD5BHvJw5BQ0AZapdCRw==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/core/node_modules/@babel/template": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/core/node_modules/@babel/traverse": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.0.tgz", + "integrity": "sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.13.0", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/parser": "^7.13.0", + "@babel/types": "^7.13.0", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "node_modules/@babel/core/node_modules/@babel/types": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz", + "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "node_modules/@babel/core/node_modules/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==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/@babel/core/node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/core/node_modules/json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/core/node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/@babel/core/node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/@babel/core/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@babel/core/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.10.tgz", + "integrity": "sha512-/Xju7Qg1GQO4mHZ/Kcs6Au7gfafgZnwm+a7sy/ow/tV1sHeraRUHbjdat8/UvDor4Tez+siGKDk6zIKtCPKVJA==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.13.8", + "@babel/helper-validator-option": "^7.12.17", + "browserslist": "^4.14.5", + "semver": "^6.3.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", + "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.13.12" + } + }, + "node_modules/@babel/helper-member-expression-to-functions/node_modules/@babel/types": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz", + "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions/node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", + "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.13.12" + } + }, + "node_modules/@babel/helper-module-imports/node_modules/@babel/types": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz", + "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "node_modules/@babel/helper-module-imports/node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.12.tgz", + "integrity": "sha512-7zVQqMO3V+K4JOOj40kxiCrMf6xlQAkewBB0eu2b03OO/Q21ZutOzjpfD79A5gtE/2OWi1nv625MrDlGlkbknQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.13.12", + "@babel/helper-replace-supers": "^7.13.12", + "@babel/helper-simple-access": "^7.13.12", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-validator-identifier": "^7.12.11", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.12" + } + }, + "node_modules/@babel/helper-module-transforms/node_modules/@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.12.13" + } + }, + "node_modules/@babel/helper-module-transforms/node_modules/@babel/generator": { + "version": "7.13.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", + "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.13.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "node_modules/@babel/helper-module-transforms/node_modules/@babel/helper-function-name": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", + "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", + "dev": true, + "dependencies": { + "@babel/helper-get-function-arity": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-module-transforms/node_modules/@babel/helper-get-function-arity": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", + "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-module-transforms/node_modules/@babel/helper-split-export-declaration": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", + "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-module-transforms/node_modules/@babel/highlight": { + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", + "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "node_modules/@babel/helper-module-transforms/node_modules/@babel/parser": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.12.tgz", + "integrity": "sha512-4T7Pb244rxH24yR116LAuJ+adxXXnHhZaLJjegJVKSdoNCe4x1eDBaud5YIcQFcqzsaD5BHvJw5BQ0AZapdCRw==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/helper-module-transforms/node_modules/@babel/template": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-module-transforms/node_modules/@babel/traverse": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.0.tgz", + "integrity": "sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.13.0", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/parser": "^7.13.0", + "@babel/types": "^7.13.0", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "node_modules/@babel/helper-module-transforms/node_modules/@babel/types": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz", + "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "node_modules/@babel/helper-module-transforms/node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/helper-module-transforms/node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/@babel/helper-module-transforms/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@babel/helper-module-transforms/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", + "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-optimise-call-expression/node_modules/@babel/types": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz", + "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression/node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", + "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", + "dev": true, + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.13.12", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.12" + } + }, + "node_modules/@babel/helper-replace-supers/node_modules/@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.12.13" + } + }, + "node_modules/@babel/helper-replace-supers/node_modules/@babel/generator": { + "version": "7.13.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", + "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.13.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "node_modules/@babel/helper-replace-supers/node_modules/@babel/helper-function-name": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", + "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", + "dev": true, + "dependencies": { + "@babel/helper-get-function-arity": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-replace-supers/node_modules/@babel/helper-get-function-arity": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", + "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-replace-supers/node_modules/@babel/helper-split-export-declaration": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", + "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-replace-supers/node_modules/@babel/highlight": { + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", + "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "node_modules/@babel/helper-replace-supers/node_modules/@babel/parser": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.12.tgz", + "integrity": "sha512-4T7Pb244rxH24yR116LAuJ+adxXXnHhZaLJjegJVKSdoNCe4x1eDBaud5YIcQFcqzsaD5BHvJw5BQ0AZapdCRw==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/helper-replace-supers/node_modules/@babel/template": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-replace-supers/node_modules/@babel/traverse": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.0.tgz", + "integrity": "sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.13.0", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/parser": "^7.13.0", + "@babel/types": "^7.13.0", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "node_modules/@babel/helper-replace-supers/node_modules/@babel/types": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz", + "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "node_modules/@babel/helper-replace-supers/node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/helper-replace-supers/node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/@babel/helper-replace-supers/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@babel/helper-replace-supers/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", + "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.13.12" + } + }, + "node_modules/@babel/helper-simple-access/node_modules/@babel/types": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz", + "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "node_modules/@babel/helper-simple-access/node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/@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==", + "dev": true + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", + "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==", + "dev": true + }, + "node_modules/@babel/helpers": { + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.10.tgz", + "integrity": "sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==", + "dev": true, + "dependencies": { + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/helpers/node_modules/@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.12.13" + } + }, + "node_modules/@babel/helpers/node_modules/@babel/generator": { + "version": "7.13.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", + "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.13.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "node_modules/@babel/helpers/node_modules/@babel/helper-function-name": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", + "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", + "dev": true, + "dependencies": { + "@babel/helper-get-function-arity": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helpers/node_modules/@babel/helper-get-function-arity": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", + "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helpers/node_modules/@babel/helper-split-export-declaration": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", + "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helpers/node_modules/@babel/highlight": { + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", + "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "node_modules/@babel/helpers/node_modules/@babel/parser": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.12.tgz", + "integrity": "sha512-4T7Pb244rxH24yR116LAuJ+adxXXnHhZaLJjegJVKSdoNCe4x1eDBaud5YIcQFcqzsaD5BHvJw5BQ0AZapdCRw==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/helpers/node_modules/@babel/template": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helpers/node_modules/@babel/traverse": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.0.tgz", + "integrity": "sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.13.0", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/parser": "^7.13.0", + "@babel/types": "^7.13.0", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "node_modules/@babel/helpers/node_modules/@babel/types": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz", + "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "node_modules/@babel/helpers/node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/helpers/node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/@babel/helpers/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@babel/helpers/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.2.tgz", + "integrity": "sha512-IoVDIHpsgE/fu7eXBeRWt8zLbDrSvD7H1gpomOkPpBoEN8KCruCqSDdqo8dddwQQrui30KSvQBaMUOJiuFu6QQ==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@ctrlpanel/pbkdf2": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@ctrlpanel/pbkdf2/-/pbkdf2-1.0.0.tgz", + "integrity": "sha512-NC/J3R2tRUciBPQKcJJ8rz9BGIJYVCPbl699fblp6fBXCHWwAnrOu1oEdDqKhspxsKDj/yZTTDlnSLkmO+ovfA==" + }, + "node_modules/@eslint/eslintrc": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.0.tgz", + "integrity": "sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog==", + "dev": true, + "dependencies": { + "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", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/@eslint/eslintrc/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@eslint/eslintrc/node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@eslint/eslintrc/node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "dependencies": { + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@eslint/eslintrc/node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@gladysassistant/gladys-gateway-js": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@gladysassistant/gladys-gateway-js/-/gladys-gateway-js-3.5.0.tgz", + "integrity": "sha512-4nd1ueZW4izHnl7tx1zPHib2RDQDNIb9B2sF7sJPJ+4Kvj1CCAr/BlYnQbhT2vZsHvdspm7lUsE3foniS9hHTA==", + "dependencies": { + "@ctrlpanel/pbkdf2": "^1.0.0", + "array-buffer-to-hex": "^1.0.0", + "auto-bind": "^2.1.0", + "axios": "^0.21.1", + "encode-utf8": "^1.0.2", + "hex-to-array-buffer": "^1.1.0", + "secure-remote-password": "^0.3.1", + "socket.io-client": "^2.3.0" + } + }, + "node_modules/@hapi/address": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@hapi/address/-/address-4.0.0.tgz", + "integrity": "sha512-GDDpkCdSUfkQCznmWUHh9dDN85BWf/V8TFKQ2JLuHdGB4Yy3YTEGBzZxoBNxfNBEvreSR/o+ZxBBSNNEVzY+lQ==", + "deprecated": "Moved to 'npm install @sideway/address'", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@hapi/boom": { + "version": "9.1.4", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-9.1.4.tgz", + "integrity": "sha512-Ls1oH8jaN1vNsqcaHVYJrKmgMcKsC1wcp8bujvXrHaAqD2iDYq3HoOwsxwo09Cuda5R5nC0o0IxlrlTuvPuzSw==", + "dependencies": { + "@hapi/hoek": "9.x.x" + } + }, + "node_modules/@hapi/bourne": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-2.0.0.tgz", + "integrity": "sha512-WEezM1FWztfbzqIUbsDzFRVMxSoLy3HugVcux6KDDtTqzPsLE8NDRHfXvev66aH1i2oOKKar3/XDjbvh/OUBdg==" + }, + "node_modules/@hapi/formula": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@hapi/formula/-/formula-2.0.0.tgz", + "integrity": "sha512-V87P8fv7PI0LH7LiVi8Lkf3x+KCO7pQozXRssAHNXXL9L1K+uyu4XypLXwxqVDKgyQai6qj3/KteNlrqDx4W5A==", + "deprecated": "Moved to 'npm install @sideway/formula'" + }, + "node_modules/@hapi/hoek": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.0.3.tgz", + "integrity": "sha512-jKtjLLDiH95b002sJVc5c74PE6KKYftuyVdVmsuYId5stTaWcRFqE+5ukZI4gDUKjGn8wv2C3zPn3/nyjEI7gg==", + "deprecated": "This version has been deprecated and is no longer supported or maintained" + }, + "node_modules/@hapi/joi": { + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-17.1.0.tgz", + "integrity": "sha512-ob67RcPlwRWxBzLCnWvcwx5qbwf88I3ykD7gcJLWOTRfLLgosK7r6aeChz4thA3XRvuBfI0KB1tPVl2EQFlPXw==", + "deprecated": "Switch to 'npm install joi'", + "dependencies": { + "@hapi/address": "^4.0.0", + "@hapi/formula": "^2.0.0", + "@hapi/hoek": "^9.0.0", + "@hapi/pinpoint": "^2.0.0", + "@hapi/topo": "^5.0.0" + } + }, + "node_modules/@hapi/joi-date": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@hapi/joi-date/-/joi-date-2.0.1.tgz", + "integrity": "sha512-8be8JUEC8Wm1Do3ryJy+TXmkAL13b2JwXn7gILBoor8LopY/M+hJskodzOOxfJdckkfWnbmbnMEyJW3d/gZMfA==", + "dependencies": { + "moment": "2.x.x" + } + }, + "node_modules/@hapi/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@hapi/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-vzXR5MY7n4XeIvLpfl3HtE3coZYO4raKXW766R6DZw/6aLqR26iuZ109K7a0NtF2Db0jxqh7xz2AxkUwpUFybw==", + "deprecated": "Moved to 'npm install @sideway/pinpoint'" + }, + "node_modules/@hapi/topo": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.0.0.tgz", + "integrity": "sha512-tFJlT47db0kMqVm3H4nQYgn6Pwg10GTZHb1pwmSiv1K4ks6drQOtfEF5ZnPjkvC+y4/bUPHK+bc87QvLcL+WMw==", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@hapi/wreck": { + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/@hapi/wreck/-/wreck-17.1.0.tgz", + "integrity": "sha512-nx6sFyfqOpJ+EFrHX+XWwJAxs3ju4iHdbB/bwR8yTNZOiYmuhA8eCe7lYPtYmb4j7vyK/SlbaQsmTtUrMvPEBw==", + "dependencies": { + "@hapi/boom": "9.x.x", + "@hapi/bourne": "2.x.x", + "@hapi/hoek": "9.x.x" + } + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@mapbox/node-pre-gyp": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.1.tgz", + "integrity": "sha512-CUBdThIZMoLEQQxACwhLsPg/puxBca0abTH3ixuvBQkhjJ80Hdp99jmVjxFCOa52/tZqN9d70IbGUf+OuKDHGA==", + "dependencies": { + "detect-libc": "^1.0.3", + "http-proxy-agent": "^4.0.1", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.1", + "nopt": "^5.0.0", + "npmlog": "^4.1.2", + "rimraf": "^3.0.2", + "semver": "^7.3.4", + "tar": "^6.1.0" + }, + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "engines": { + "node": ">=10" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/minipass": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", + "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/tar": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz", + "integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==", + "dependencies": { + "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" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/@microsoft/recognizers-text": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@microsoft/recognizers-text/-/recognizers-text-1.3.0.tgz", + "integrity": "sha512-0gUhtS/0qSF6veB3Olu55IuJ0Skwg4u1IbJX9KFj1QeK8z6cw69/p637IPD2NgXLlXCy2HEqLvUW/mgbDp3rWg==", + "engines": { + "node": ">=10.3.0" + } + }, + "node_modules/@microsoft/recognizers-text-choice": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@microsoft/recognizers-text-choice/-/recognizers-text-choice-1.3.0.tgz", + "integrity": "sha512-I2LQAJJ9TJthJYWZNzooJD6+5KUkr+H+m54XpjY+vKjR81DPVFUL/SWZVyv+cC7eePFwrDv3gUnkXYS+Lp0hmA==", + "dependencies": { + "@microsoft/recognizers-text": "~1.3.0", + "grapheme-splitter": "^1.0.2" + }, + "engines": { + "node": ">=10.3.0" + } + }, + "node_modules/@microsoft/recognizers-text-data-types-timex-expression": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@microsoft/recognizers-text-data-types-timex-expression/-/recognizers-text-data-types-timex-expression-1.3.0.tgz", + "integrity": "sha512-REHUXmMUI1jL3b9v+aSdzKxLxRdejsfg9McYRxY3LW0Gu4UbwD7Q+K6mtSo40cwg8uh6fiV9GY8hDuKXHH6dVA==", + "engines": { + "node": ">=10.3.0" + } + }, + "node_modules/@microsoft/recognizers-text-date-time": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@microsoft/recognizers-text-date-time/-/recognizers-text-date-time-1.3.0.tgz", + "integrity": "sha512-bgw4TS726maTg53M6SQRHQOzOH0za0zmBWnnGo0wQdbDfK+bgq5aeDSD4k/HhXvfkOD6zzRd3+tG3Dqyp/kFaQ==", + "dependencies": { + "@microsoft/recognizers-text": "~1.3.0", + "@microsoft/recognizers-text-number": "~1.3.0", + "@microsoft/recognizers-text-number-with-unit": "~1.3.0", + "lodash.isequal": "^4.5.0", + "lodash.tonumber": "^4.0.3" + }, + "engines": { + "node": ">=10.3.0" + } + }, + "node_modules/@microsoft/recognizers-text-number": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@microsoft/recognizers-text-number/-/recognizers-text-number-1.3.0.tgz", + "integrity": "sha512-KVFxvaXW9E7UkuF0EYCghvCn0u+N5L7bBXeP4IKB6fXkQd6GAZ9zNA2Acdm9lJzCRxcsBYFbRLcRMrPHwAa32w==", + "dependencies": { + "@microsoft/recognizers-text": "~1.3.0", + "bignumber.js": "^7.2.1", + "lodash.escaperegexp": "^4.1.2", + "lodash.sortby": "^4.7.0", + "lodash.trimend": "^4.5.1" + }, + "engines": { + "node": ">=10.3.0" + } + }, + "node_modules/@microsoft/recognizers-text-number-with-unit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@microsoft/recognizers-text-number-with-unit/-/recognizers-text-number-with-unit-1.3.0.tgz", + "integrity": "sha512-FxBD1ZQLvr4c+ssVyqUjblg+i21GbzIsDEHd5VWon5wg+2qrqixlmP1mXsXG+iGRV3qqeZCtTFdqkwJ3MWhovA==", + "dependencies": { + "@microsoft/recognizers-text": "~1.3.0", + "@microsoft/recognizers-text-number": "~1.3.0", + "lodash.escaperegexp": "^4.1.2", + "lodash.last": "^3.0.0", + "lodash.max": "^4.0.1" + }, + "engines": { + "node": ">=10.3.0" + } + }, + "node_modules/@microsoft/recognizers-text-sequence": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@microsoft/recognizers-text-sequence/-/recognizers-text-sequence-1.3.0.tgz", + "integrity": "sha512-LXZ9AakClrdPVfEphCJFETjw6n8w/LwW1Yoj9ZKcGI9PGvH6RR+haS4GSZuHeMhEacmaa3NkzD+I44qYIvym8Q==", + "dependencies": { + "@microsoft/recognizers-text": "~1.3.0", + "grapheme-splitter": "^1.0.2" + }, + "engines": { + "node": ">=10.3.0" + } + }, + "node_modules/@microsoft/recognizers-text-suite": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@microsoft/recognizers-text-suite/-/recognizers-text-suite-1.3.0.tgz", + "integrity": "sha512-uqG4vzy5N2CmBaeINny0bLdnGp0jDbT1moNoLC+Yim3G8kHOU9lpDfwA6VN6HTYaDM5854SNMEzLjJdS1TPFTw==", + "dependencies": { + "@microsoft/recognizers-text": "~1.3.0", + "@microsoft/recognizers-text-choice": "~1.3.0", + "@microsoft/recognizers-text-data-types-timex-expression": "~1.3.0", + "@microsoft/recognizers-text-date-time": "~1.3.0", + "@microsoft/recognizers-text-number": "~1.3.0", + "@microsoft/recognizers-text-number-with-unit": "~1.3.0", + "@microsoft/recognizers-text-sequence": "~1.3.0" + }, + "engines": { + "node": ">=10.3.0" + } + }, + "node_modules/@nlpjs/builtin-duckling": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@nlpjs/builtin-duckling/-/builtin-duckling-4.19.1.tgz", + "integrity": "sha512-XrmVAxMTfZ+a7D0cHLpP1gFz5KxAhCMzm43DrnHP1aVSFW9uLtGffWEkCa04uIWNv6yqSf3AIc58n0xssn0YqQ==", + "dependencies": { + "@nlpjs/core": "^4.19.1" + } + }, + "node_modules/@nlpjs/builtin-microsoft": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@nlpjs/builtin-microsoft/-/builtin-microsoft-4.19.1.tgz", + "integrity": "sha512-dYLTGgpb0wpRAS4MHe3pTHt8jGBslSm/dsGB/jwPY9QaEngw8DdwOIjOngMVpb5g6NPUUzQowbrGOya6oRdkCA==", + "dependencies": { + "@microsoft/recognizers-text-suite": "1.3.0", + "@nlpjs/core": "^4.19.1" + } + }, + "node_modules/@nlpjs/core": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@nlpjs/core/-/core-4.19.1.tgz", + "integrity": "sha512-ClJaYE0ZfJzTGlx8QMFsyUHIdICjN/Q/Hpy0lCG3uyrf3+QfEQe3JeNogEyv0Wxrq0LvdWpYu3p8wYnZTPv34g==" + }, + "node_modules/@nlpjs/core-loader": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@nlpjs/core-loader/-/core-loader-4.19.1.tgz", + "integrity": "sha512-Vn4SbA4YESHimjpyRBRuvtbfLJQ9+RkGyot10WvM3nuIVvoeVBz3ijbGLU+I+jAgN6e8V55tE30AXGN7i4XhoA==", + "dependencies": { + "@nlpjs/core": "^4.19.1", + "@nlpjs/request": "^4.17.0" + } + }, + "node_modules/@nlpjs/emoji": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@nlpjs/emoji/-/emoji-4.19.1.tgz", + "integrity": "sha512-nNjGsh+lYGDy9e+aLbb9qpmbszPkaER0rOOZA7Qz6CWu57SMWAUHAqwMiRcQUupVVnUUhTx8b5+XQzoOW+AJsQ==", + "dependencies": { + "@nlpjs/core": "^4.19.1" + } + }, + "node_modules/@nlpjs/evaluator": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/@nlpjs/evaluator/-/evaluator-4.17.1.tgz", + "integrity": "sha512-dHaqDyfM6B6QmbNehG5lMukMWOZwcd/WwiC7jAh3eG/X73jNsPz9p66H3XyYpc3s9kfpxWIgc+S789Sar4uT/Q==", + "dependencies": { + "escodegen": "^2.0.0", + "esprima": "^4.0.1" + } + }, + "node_modules/@nlpjs/lang-all": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-all/-/lang-all-4.19.1.tgz", + "integrity": "sha512-vUmz36sH8rhPYcxR/10+X/hH47Vi9X8MrE/dIb2Omq2N+dMLkEBqBmAFiaFGOF3+8PzHea8mgVJm5QVBaxmSwA==", + "dependencies": { + "@nlpjs/core": "^4.19.1", + "@nlpjs/lang-ar": "^4.19.1", + "@nlpjs/lang-bn": "^4.19.1", + "@nlpjs/lang-ca": "^4.19.1", + "@nlpjs/lang-cs": "^4.19.1", + "@nlpjs/lang-da": "^4.19.1", + "@nlpjs/lang-de": "^4.19.1", + "@nlpjs/lang-el": "^4.19.1", + "@nlpjs/lang-en": "^4.19.1", + "@nlpjs/lang-es": "^4.19.1", + "@nlpjs/lang-eu": "^4.19.1", + "@nlpjs/lang-fa": "^4.19.1", + "@nlpjs/lang-fi": "^4.19.1", + "@nlpjs/lang-fr": "^4.19.1", + "@nlpjs/lang-ga": "^4.19.1", + "@nlpjs/lang-gl": "^4.19.1", + "@nlpjs/lang-hi": "^4.19.1", + "@nlpjs/lang-hu": "^4.19.1", + "@nlpjs/lang-hy": "^4.19.1", + "@nlpjs/lang-id": "^4.19.1", + "@nlpjs/lang-it": "^4.19.1", + "@nlpjs/lang-ja": "^4.19.1", + "@nlpjs/lang-ko": "^4.19.1", + "@nlpjs/lang-lt": "^4.19.1", + "@nlpjs/lang-ms": "^4.19.1", + "@nlpjs/lang-ne": "^4.19.1", + "@nlpjs/lang-nl": "^4.19.1", + "@nlpjs/lang-no": "^4.19.1", + "@nlpjs/lang-pl": "^4.19.1", + "@nlpjs/lang-pt": "^4.19.1", + "@nlpjs/lang-ro": "^4.19.1", + "@nlpjs/lang-ru": "^4.19.1", + "@nlpjs/lang-sl": "^4.19.1", + "@nlpjs/lang-sr": "^4.19.1", + "@nlpjs/lang-sv": "^4.19.1", + "@nlpjs/lang-ta": "^4.19.1", + "@nlpjs/lang-th": "^4.19.1", + "@nlpjs/lang-tl": "^4.19.1", + "@nlpjs/lang-tr": "^4.19.1", + "@nlpjs/lang-uk": "^4.19.1", + "@nlpjs/lang-zh": "^4.19.1" + } + }, + "node_modules/@nlpjs/lang-ar": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-ar/-/lang-ar-4.19.1.tgz", + "integrity": "sha512-+7HZ64eFqOS6ztvi/gZ7UjHchf9dRa/0IwO+5dX70CigmO2lSQPR8dFdLvYzwduekmzTd9OfqY0dXWCnuKJzDg==", + "dependencies": { + "@nlpjs/core": "^4.19.1" + } + }, + "node_modules/@nlpjs/lang-bn": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-bn/-/lang-bn-4.19.1.tgz", + "integrity": "sha512-uWZ6ocxQHmQRXBjRbmb+7mwScbTqeaixP/+YAb84OasdQ8pBNXNYBbpC/i1jzzHGYMnDBu6iE71Q02LQZUsatw==", + "dependencies": { + "@nlpjs/core": "^4.19.1" + } + }, + "node_modules/@nlpjs/lang-ca": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-ca/-/lang-ca-4.19.1.tgz", + "integrity": "sha512-KYQsFKhLjMC3otT/rTh/9Gc3QbhAKBzTVNSLHwY3IaOMUmQEK0CI+KLtSirzL/NUwJZ6XO0ngNyjlYzZW3sBGg==", + "dependencies": { + "@nlpjs/core": "^4.19.1" + } + }, + "node_modules/@nlpjs/lang-cs": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-cs/-/lang-cs-4.19.1.tgz", + "integrity": "sha512-sfEwCwy94zEGMeTI/YDBXiSCjypHK9qVKtZvw2C/jJTvZOU+ra5t0PK1lj877JLW1d33wQvLq6TxwivXvbSdEA==", + "dependencies": { + "@nlpjs/core": "^4.19.1" + } + }, + "node_modules/@nlpjs/lang-da": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-da/-/lang-da-4.19.1.tgz", + "integrity": "sha512-2Fjb3iEesrrKrJSZpfojYltkn0VIaf/zDdAFYwRZi7DeHM2W0l6nqDXROqv3s741fKbPtz2Y1oS8Q/6z7VYwZA==", + "dependencies": { + "@nlpjs/core": "^4.19.1" + } + }, + "node_modules/@nlpjs/lang-de": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-de/-/lang-de-4.19.1.tgz", + "integrity": "sha512-mSpigSN+qtW46XctBjJeZO1VwzFCd5ieOZCFJLm8sdsc0BTzi8ycbTLpbmKAowL2Cy6vxYEA6DYJeV11q2Ymxw==", + "dependencies": { + "@nlpjs/core": "^4.19.1" + } + }, + "node_modules/@nlpjs/lang-el": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-el/-/lang-el-4.19.1.tgz", + "integrity": "sha512-Rf5D/Tw/ZsSzi2eMLKGHiEc9RcLdZfu4GzFgKJWvoYQHcZu+a2ieCQWr4/AlUCEoRkhiKxKyKGXXZGRWL3YiQw==", + "dependencies": { + "@nlpjs/core": "^4.19.1" + } + }, + "node_modules/@nlpjs/lang-en": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-en/-/lang-en-4.19.1.tgz", + "integrity": "sha512-/WymRzeEf9TXTmHkcCe3hbH4lKMjeqJBN3x6DF/pn9v8IXNQREUCxmdGgEkNvoqmenvHzxs5jsqb2M4q5/HeoQ==", + "dependencies": { + "@nlpjs/core": "^4.19.1", + "@nlpjs/lang-en-min": "^4.19.1" + } + }, + "node_modules/@nlpjs/lang-en-min": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-en-min/-/lang-en-min-4.19.1.tgz", + "integrity": "sha512-HGfTrOrnou2qlUu5KD7xPGZWhS9jxIZgGeq3CEW8SEvVtjaqB9roCKIvurkTCEdSK7dwINamo2db2VcdSS4Tzw==", + "dependencies": { + "@nlpjs/core": "^4.19.1" + } + }, + "node_modules/@nlpjs/lang-es": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-es/-/lang-es-4.19.1.tgz", + "integrity": "sha512-LkQUQWBD7F8O7uF9mYyp/xxKU43RLRNZkmrM2flhFtMF/lLU0kKTLDicpcbpuurzmKmjdRTYWhrFrbZQg2tM2g==", + "dependencies": { + "@nlpjs/core": "^4.19.1" + } + }, + "node_modules/@nlpjs/lang-eu": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-eu/-/lang-eu-4.19.1.tgz", + "integrity": "sha512-NwwZnT/vn/CVcyllwKsME1rkoVPg0mA5VNAVIuqR1m0RX/SYfYDtA+SWY4Hy/Ncf+Yb7WVHTRD6yoM/qWaCKXQ==", + "dependencies": { + "@nlpjs/core": "^4.19.1" + } + }, + "node_modules/@nlpjs/lang-fa": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-fa/-/lang-fa-4.19.1.tgz", + "integrity": "sha512-XajQ3HsCydZK+AAtX+d4Ous/9Gee74eJP9mgPZQ/I4LJ9/kIQ2r4QcJK/wEsPZPU0bRP3JAnwoOeD80fmRk7BQ==", + "dependencies": { + "@nlpjs/core": "^4.19.1" + } + }, + "node_modules/@nlpjs/lang-fi": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-fi/-/lang-fi-4.19.1.tgz", + "integrity": "sha512-V3gDI5D1rPUJV0ojO2QojVCamArqa/R12iuyDV/Gj4j5CKfw0SoesXCaVQO7BKlfcAjUKs7oWmQMogmmPDd4Bw==", + "dependencies": { + "@nlpjs/core": "^4.19.1" + } + }, + "node_modules/@nlpjs/lang-fr": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-fr/-/lang-fr-4.19.1.tgz", + "integrity": "sha512-rXdAsCtJe+Pw3IvhtSSQZYSpPa1LCFw57b8d6n8udzECPgnzP42nnrzsj3jglTzIEE5MFls2/dhFvMOEeKIPfQ==", + "dependencies": { + "@nlpjs/core": "^4.19.1" + } + }, + "node_modules/@nlpjs/lang-ga": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-ga/-/lang-ga-4.19.1.tgz", + "integrity": "sha512-ujzU+a3Km24sWWjk52HlxYZdnv61vzF9OzU/t+9sSWvphfNYqg2Ej2FL8j3y49KgwBZMILsGleNKhq8cy2Ljug==", + "dependencies": { + "@nlpjs/core": "^4.19.1" + } + }, + "node_modules/@nlpjs/lang-gl": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-gl/-/lang-gl-4.19.1.tgz", + "integrity": "sha512-0WGJwwoByfWvwlrzECNQOuAP8EqPC+Ztj1ephTcqvqezluUcDX3Xza05N6s2PpqpJMgnpeQMJk+coKcSS7I2bA==", + "dependencies": { + "@nlpjs/core": "^4.19.1" + } + }, + "node_modules/@nlpjs/lang-hi": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-hi/-/lang-hi-4.19.1.tgz", + "integrity": "sha512-4dr4ZTKw0BBKbpU6VvDUZMiyfBDgAXpCJYrbqZjTsjbQPKDK2vBUD3A8sWtp+kT0WxHQsLDuBbFhXLEvGaXdYg==", + "dependencies": { + "@nlpjs/core": "^4.19.1" + } + }, + "node_modules/@nlpjs/lang-hu": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-hu/-/lang-hu-4.19.1.tgz", + "integrity": "sha512-pnTirJ95+8d035FPNt7pSenBUT6++xCvVoyjlp6Dj7X7emr7Oj2TJaS2pPZzx7wRNEkULpFrHjo32WNsuFehdA==", + "dependencies": { + "@nlpjs/core": "^4.19.1" + } + }, + "node_modules/@nlpjs/lang-hy": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-hy/-/lang-hy-4.19.1.tgz", + "integrity": "sha512-32evM4Y2M/ljZQm603hH0eYC5NvKvB1lyExTInwKbtEjQzUBJ0PQEUQvKzD8pmqpUP5j5CIpRfIAPGrfYu9b2A==", + "dependencies": { + "@nlpjs/core": "^4.19.1" + } + }, + "node_modules/@nlpjs/lang-id": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-id/-/lang-id-4.19.1.tgz", + "integrity": "sha512-u0HheO4vn1L/iXCn5+RREIBMoz96fpFoTbqErsXnbomt88H0OoParfmQOr0ueyi0Akhq9cyHkgsecq123yx47Q==", + "dependencies": { + "@nlpjs/core": "^4.19.1" + } + }, + "node_modules/@nlpjs/lang-it": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-it/-/lang-it-4.19.1.tgz", + "integrity": "sha512-1hn/5qbameBKdQogDcSA7R/lrS2P1eXtNW6PYKopZwY1VFfatBuNOvbB2+X+X0naZdAnPIli6d82cOrZ+CR+Kg==", + "dependencies": { + "@nlpjs/core": "^4.19.1" + } + }, + "node_modules/@nlpjs/lang-ja": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-ja/-/lang-ja-4.19.1.tgz", + "integrity": "sha512-tfHxCoHEgyF3wU+4Hkb8MGwFYx7ZVFAYUiq3D9L6ncwl6ZKxIsEZBel6XjlfhWv1alBGZgZNSm9x5+Vqa2RmQQ==", + "dependencies": { + "@nlpjs/core": "^4.19.1", + "kuromoji": "^0.1.2" + } + }, + "node_modules/@nlpjs/lang-ko": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-ko/-/lang-ko-4.19.1.tgz", + "integrity": "sha512-xj44BX+UDRWoelFtCqAlFrsGj3bf7qO5fJpuXW82NT4X6YptjkInze97LTNEWkTJWVasZm4M0lLmN68iT9zKqg==", + "dependencies": { + "@nlpjs/core": "^4.19.1" + } + }, + "node_modules/@nlpjs/lang-lt": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-lt/-/lang-lt-4.19.1.tgz", + "integrity": "sha512-sE/N3R4kXYE74ZbH192pfF4+lCMXp1wAo12iKDtTvzI3KtgUa7AAR7lQg80obGDNkQ4b065ZxGy8rudqO/kCnw==", + "dependencies": { + "@nlpjs/core": "^4.19.1" + } + }, + "node_modules/@nlpjs/lang-ms": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-ms/-/lang-ms-4.19.1.tgz", + "integrity": "sha512-AKNb5chebVKRd4tpu4TNRNCUxhVpHglSfixqQrJ/aAlvT4YUHU8ZqVTYntZlEyhRPMSfsvfgI0+eaNU0TKtxtw==", + "dependencies": { + "@nlpjs/core": "^4.19.1", + "@nlpjs/lang-id": "^4.19.1" + } + }, + "node_modules/@nlpjs/lang-ne": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-ne/-/lang-ne-4.19.1.tgz", + "integrity": "sha512-QLwalf1jv+vgudKUiMY6RRc99zAPuEciuPvMRJmJKVqRinhXJyb+EEsGOZgWaVCfebIftdB3pMY96R8Ca+XwTg==", + "dependencies": { + "@nlpjs/core": "^4.19.1" + } + }, + "node_modules/@nlpjs/lang-nl": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-nl/-/lang-nl-4.19.1.tgz", + "integrity": "sha512-R6LnIy/oHb8Uw67WB5X3ebDPGFj1cYZLIe/kgdCEzFkZE/vA2a6S5F65tLgtarNtTQ9REVB2JEkajKHbCUFfPg==", + "dependencies": { + "@nlpjs/core": "^4.19.1" + } + }, + "node_modules/@nlpjs/lang-no": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-no/-/lang-no-4.19.1.tgz", + "integrity": "sha512-95g4OhSZqjlJMFbcIhqrRSOoL1JO/L/YZqZPVqOJd0xZZix24FEx8JDATmGfD0owMeZGxgxd5Lb3oTgFU6VR8A==", + "dependencies": { + "@nlpjs/core": "^4.19.1" + } + }, + "node_modules/@nlpjs/lang-pl": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-pl/-/lang-pl-4.19.1.tgz", + "integrity": "sha512-BHPbvbPx9e/uxAxJkLNyvjbqIwcUpTHnCA1lOKuTUqCkDJ0p7d0l6Cf2cIoN5gcV2XHcJmE/qMJwMmS8hmu/BQ==", + "dependencies": { + "@nlpjs/core": "^4.19.1" + } + }, + "node_modules/@nlpjs/lang-pt": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-pt/-/lang-pt-4.19.1.tgz", + "integrity": "sha512-YWivCQPX05FZmQVZxXH/TtpHqrz7vGNWD1li9KAP/2JL4zR+vE1Ec3ZiuJ0agPHpTcvbwGejfiW+s7YkWqCrcA==", + "dependencies": { + "@nlpjs/core": "^4.19.1" + } + }, + "node_modules/@nlpjs/lang-ro": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-ro/-/lang-ro-4.19.1.tgz", + "integrity": "sha512-xxmTU1GlszoSQtteziTs1072W5QkOLDTe4RO/phxxCjCEaFQvHDlKrVLO9pYoVUeQtKUbwb7wyrRkCDqPSmNNA==", + "dependencies": { + "@nlpjs/core": "^4.19.1" + } + }, + "node_modules/@nlpjs/lang-ru": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-ru/-/lang-ru-4.19.1.tgz", + "integrity": "sha512-Nqff30jwLeZA4WI9d9bgfVc1yBiNlTlsCdNQBlvBP7/TCizsYZBo3b+SLmzA87TsVfW0NyZpdhbmkeXW4TVC+Q==", + "dependencies": { + "@nlpjs/core": "^4.19.1" + } + }, + "node_modules/@nlpjs/lang-sl": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-sl/-/lang-sl-4.19.1.tgz", + "integrity": "sha512-JzqdPMx1moUE6GHZL+huhK/W9BHCv6GxLZSND6EjM+5/hfwc97xeQjnGdC3M5Z+a06rqjzTIXj4vtv61EhdrwA==", + "dependencies": { + "@nlpjs/core": "^4.19.1" + } + }, + "node_modules/@nlpjs/lang-sr": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-sr/-/lang-sr-4.19.1.tgz", + "integrity": "sha512-46zkBYyfTg8GUG6eBSCh8MRc3ZsEe6x4iSxu95Hs/aaYeADrkkPwreTg9xKCoFVLGXBPjiK6ukkPhborhoJLcw==", + "dependencies": { + "@nlpjs/core": "^4.19.1" + } + }, + "node_modules/@nlpjs/lang-sv": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-sv/-/lang-sv-4.19.1.tgz", + "integrity": "sha512-lC+QndPWivcQ1zNY5tUoX3hcfBFP4s4F+dgRo3QoDp1sLKhXIfevTB8XxDFmklKZ2iUhEvoe+fENdz2Iva8KQw==", + "dependencies": { + "@nlpjs/core": "^4.19.1" + } + }, + "node_modules/@nlpjs/lang-ta": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-ta/-/lang-ta-4.19.1.tgz", + "integrity": "sha512-2hpDU6HlzCH8T5DTmViuqsImp/oiZ3y4cHwYiv6a8lLmL/RE1t2p5wcAXhtSHHA4mc8n/ReMXHHZBuevwIaAJg==", + "dependencies": { + "@nlpjs/core": "^4.19.1" + } + }, + "node_modules/@nlpjs/lang-th": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-th/-/lang-th-4.19.1.tgz", + "integrity": "sha512-nWi7crXkR5pZbVvXMk7sCkHDxZWaq/mQMWSB/CoZWdARlbLiuX8xNXdbtLq9pCTENCRwZMzl1mY67O6enYOSBQ==", + "dependencies": { + "@nlpjs/core": "^4.19.1" + } + }, + "node_modules/@nlpjs/lang-tl": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-tl/-/lang-tl-4.19.1.tgz", + "integrity": "sha512-gRDPPOZSf7DAT4CxHsEEgWg5Nk2luQgzgaQZCcaex0DJqt0wtzvPcLACipzrwu7EgT0jNdKaR/rDU9wJbDn1sA==", + "dependencies": { + "@nlpjs/core": "^4.19.1" + } + }, + "node_modules/@nlpjs/lang-tr": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-tr/-/lang-tr-4.19.1.tgz", + "integrity": "sha512-o1Zj7QMG92HRKVJ7gIdmSA1QX5XYNqb7WJPWngCwys3HpfHHYRKIWDC20cs8DRo6nopr8p6xv6j9d0qvQ9Jzxg==", + "dependencies": { + "@nlpjs/core": "^4.19.1" + } + }, + "node_modules/@nlpjs/lang-uk": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-uk/-/lang-uk-4.19.1.tgz", + "integrity": "sha512-vFXxw7Mq4NRb1rlGmnaYUe7ymhS+xw2FTOAZIaoRc6Hy4Dv2RmkfPLjZlt3KwGLoK1cyG1cGl2tHgfzLUT+SSg==", + "dependencies": { + "@nlpjs/core": "^4.19.1" + } + }, + "node_modules/@nlpjs/lang-zh": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-zh/-/lang-zh-4.19.1.tgz", + "integrity": "sha512-2nF+2oxpWfiErkM/Kza4oTzQ+vjz6yTKM79FTKZOfKxRntGflwZyCkyQbDHn5iIXcC2hvH8hl3qMoYVPJT4oNw==", + "dependencies": { + "@nlpjs/core": "^4.19.1" + } + }, + "node_modules/@nlpjs/language": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/@nlpjs/language/-/language-4.17.0.tgz", + "integrity": "sha512-oYIztvs2c0NX9edQC0X3GMh/00L0iREU2j3cTagDm+CtWxV7+UsfrxxJHMVm4g+Dr6vDMVgQvfksGDRPAIgTsQ==" + }, + "node_modules/@nlpjs/language-min": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/@nlpjs/language-min/-/language-min-4.17.0.tgz", + "integrity": "sha512-MBmG28YyPY24q5mKlzufmZNNwiynmcjWT0r4mSI6hEKjiAhGLLakgAEtJNmOC1827G5bNqspR1PUGBaCxr/XeQ==" + }, + "node_modules/@nlpjs/ner": { + "version": "4.19.7", + "resolved": "https://registry.npmjs.org/@nlpjs/ner/-/ner-4.19.7.tgz", + "integrity": "sha512-UiqoTFuDo844tKmsc+q74PNi2qelpRqaKhdNXMy+5MxYf9zr/25sPik7SOMzy3VApoTmGIcejiyYZye+ypXWrQ==", + "dependencies": { + "@nlpjs/core": "^4.19.1", + "@nlpjs/language-min": "^4.17.0", + "@nlpjs/similarity": "^4.17.0" + } + }, + "node_modules/@nlpjs/neural": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/@nlpjs/neural/-/neural-4.17.0.tgz", + "integrity": "sha512-3LUfHPRs27Z4W22O2AIq3e4y8NUDtKUVoMKT4N/4T/Hoy+PrL0aJRkorcu90w5CvkJwKMpLv8Dx0+dgQBsFH5g==" + }, + "node_modules/@nlpjs/nlg": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@nlpjs/nlg/-/nlg-4.19.1.tgz", + "integrity": "sha512-lAkJ82e2IjXuJD3MFpLEJCQSALS8JqsEfsvBoqwm2Ev54asirUrsXyQ7m/MTfyfNCn+nMFWf5vPFWIVKQhtF1g==", + "dependencies": { + "@nlpjs/core": "^4.19.1" + } + }, + "node_modules/@nlpjs/nlp": { + "version": "4.19.7", + "resolved": "https://registry.npmjs.org/@nlpjs/nlp/-/nlp-4.19.7.tgz", + "integrity": "sha512-Orc+dC2dgcgJp9djunOH12z7DydfYSjBm7TRZOvL9MRS3wNbS/SZKf0f02y0H+gQ904YpzHKnGUbOmefeBGs3Q==", + "dependencies": { + "@nlpjs/core": "^4.19.1", + "@nlpjs/ner": "^4.19.7", + "@nlpjs/nlg": "^4.19.1", + "@nlpjs/nlu": "^4.19.1", + "@nlpjs/sentiment": "^4.19.1", + "@nlpjs/slot": "^4.19.0" + } + }, + "node_modules/@nlpjs/nlu": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@nlpjs/nlu/-/nlu-4.19.1.tgz", + "integrity": "sha512-S5xfv0vpj2U7Y3g4yRtXMvO6IbyjBJl5qHHwbcojhTvIZ44kReO8qzVQjxx55nULdPKQwuZtghDrI0cRIuL6Vw==", + "dependencies": { + "@nlpjs/core": "^4.19.1", + "@nlpjs/language-min": "^4.17.0", + "@nlpjs/neural": "^4.17.0", + "@nlpjs/similarity": "^4.17.0" + } + }, + "node_modules/@nlpjs/request": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/@nlpjs/request/-/request-4.17.0.tgz", + "integrity": "sha512-9LIdTcY5pAA+hPlX0qekeA699ux8JzcMe9Odjd2t2NEH0cVZSvrtNi+KHn/Eclk732H1erP7ciVncnT+hv9lAw==", + "dependencies": { + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0" + } + }, + "node_modules/@nlpjs/sentiment": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@nlpjs/sentiment/-/sentiment-4.19.1.tgz", + "integrity": "sha512-8Swmw7cDf6kUoOGWmTm1FORj01BmV98x4pjiJCvqFpLBDMfg8QniO6ejNKD++Bk4nu0Vtolp641ULEhYwn5l2w==", + "dependencies": { + "@nlpjs/core": "^4.19.1", + "@nlpjs/language-min": "^4.17.0", + "@nlpjs/neural": "^4.17.0" + } + }, + "node_modules/@nlpjs/similarity": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/@nlpjs/similarity/-/similarity-4.17.0.tgz", + "integrity": "sha512-LCLlT2FuWtNtSpGtiwqv6n9n0i125jxcRHeyyVouMPlEGfsEgnRIe0AQH8N65PUNOChK1DG2NHjPPDMSUByfNg==" + }, + "node_modules/@nlpjs/slot": { + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@nlpjs/slot/-/slot-4.19.0.tgz", + "integrity": "sha512-iIUrFPh9NGkhrF1Kf0IEKw6086sjlWrfJGf+JDN2Yomw1c6QJJjDGaBQh4Au5+7pD00kdA22xa+vLDGChhIp4A==" + }, + "node_modules/@nlpjs/xtables": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/@nlpjs/xtables/-/xtables-4.17.0.tgz", + "integrity": "sha512-AA7OZlxQ8Dgis4kVii5YZ13BrWdvIwiDxmKuPTIgkdOjZ4m5MmJdA72DpOSKV/oG/TtH4mPkOz9/yva/0fiA0Q==", + "dependencies": { + "xlsx": "^0.16.2" + } + }, + "node_modules/@sideway/address": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.2.tgz", + "integrity": "sha512-idTz8ibqWFrPU8kMirL0CoPH/A29XOzzAzpyN3zQ4kAWnzmNfFmRaoMNN6VI8ske5M73HZyhIaW4OuSFIdM4oA==", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@sideway/formula": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", + "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==" + }, + "node_modules/@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" + }, + "node_modules/@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sinonjs/commons": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.6.0.tgz", + "integrity": "sha512-w4/WHG7C4WWFyE5geCieFJF6MZkbW4VAriol5KlmQXpAQdxvV0p26sqNZOW6Qyw6Y0l9K4g+cHvvczR2sEEpqg==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/formatio": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-3.2.2.tgz", + "integrity": "sha512-B8SEsgd8gArBLMD6zpRw3juQ2FVSsmdd7qlevyDqzS9WTCtvF55/gAL+h6gue8ZvPYcdiPdvueM/qm//9XzyTQ==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^1", + "@sinonjs/samsam": "^3.1.0" + } + }, + "node_modules/@sinonjs/samsam": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-3.3.3.tgz", + "integrity": "sha512-bKCMKZvWIjYD0BLGnNrxVuw4dkWCYsLqFOUWw8VgKF/+5Y+mE7LfHWPIYoDXowH+3a9LsWDMo0uAP8YDosPvHQ==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^1.3.0", + "array-from": "^2.1.1", + "lodash": "^4.17.15" + } + }, + "node_modules/@sinonjs/text-encoding": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz", + "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==", + "dev": true + }, + "node_modules/@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "dev": true, + "dependencies": { + "defer-to-connect": "^1.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "dev": true + }, + "node_modules/@types/node": { + "version": "14.14.32", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.32.tgz", + "integrity": "sha512-/Ctrftx/zp4m8JOujM5ZhwzlWLx22nbQJiVqz8/zE15gOeEW+uly3FSX4fGFpcfEvFzXcMCJwq9lGVWgyARXhg==" + }, + "node_modules/@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==" + }, + "node_modules/@types/react": { + "version": "16.14.8", + "resolved": "https://registry.npmjs.org/@types/react/-/react-16.14.8.tgz", + "integrity": "sha512-QN0/Qhmx+l4moe7WJuTxNiTsjBwlBGHqKGvInSQCBdo7Qio0VtOqwsC0Wq7q3PbJlB0cR4Y4CVo1OOe6BOsOmA==", + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/scheduler": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.1.tgz", + "integrity": "sha512-EaCxbanVeyxDRTQBkdLb3Bvl/HK7PBK6UJjsSixB0iHKoWxE5uu2Q/DgtpOhPIojN0Zl1whvOd7PoHs2P0s5eA==" + }, + "node_modules/@ungap/promise-all-settled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", + "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", + "dev": true + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "node_modules/accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "dependencies": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-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==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/adler-32": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.2.0.tgz", + "integrity": "sha1-aj5r8KY5ALoVZSgIyxXGgT0aXyU=", + "dependencies": { + "exit-on-epipe": "~1.0.1", + "printj": "~1.1.0" + }, + "bin": { + "adler32": "bin/adler32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/after": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", + "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=" + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agent-base/node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/agent-base/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "node_modules/ansi-align": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", + "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==", + "dev": true, + "dependencies": { + "string-width": "^3.0.0" + } + }, + "node_modules/ansi-align/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-align/node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "node_modules/ansi-align/node_modules/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=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ansi-align/node_modules/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==", + "dev": true, + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-align/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/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==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=" + }, + "node_modules/anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/apidoc": { + "version": "0.17.7", + "resolved": "https://registry.npmjs.org/apidoc/-/apidoc-0.17.7.tgz", + "integrity": "sha512-9Wf4bRPwCuWOIOxR42dDnsXnFw+rhJg5VrMQK+KmNxJwyIh30UqX6gvjjXSG6YO74MqE87F18bbQXUENK9dPGg==", + "dev": true, + "dependencies": { + "apidoc-core": "~0.8.2", + "commander": "^2.19.0", + "fs-extra": "^7.0.0", + "lodash": "^4.17.10", + "markdown-it": "^8.3.1", + "winston": "^3.0.0" + }, + "bin": { + "apidoc": "bin/apidoc" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/apidoc-core": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/apidoc-core/-/apidoc-core-0.8.3.tgz", + "integrity": "sha1-2dY1RYKd8lDSzKBJaDqH53U2S5Y=", + "dev": true, + "dependencies": { + "fs-extra": "^3.0.1", + "glob": "^7.1.1", + "iconv-lite": "^0.4.17", + "klaw-sync": "^2.1.0", + "lodash": "~4.17.4", + "semver": "~5.3.0" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/apidoc-core/node_modules/fs-extra": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", + "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^3.0.0", + "universalify": "^0.1.0" + } + }, + "node_modules/apidoc-core/node_modules/jsonfile": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", + "integrity": "sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/apidoc-core/node_modules/semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/apidoc/node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "node_modules/archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "dev": true + }, + "node_modules/are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/array-buffer-to-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-to-hex/-/array-buffer-to-hex-1.0.0.tgz", + "integrity": "sha512-arycdkxgK1cj6s03GDb96tlCxOl1n3kg9M2OHseUc6Pqyqp+lgfceFPmG507eI5V+oxOSEnlOw/dFc7LXBXF4Q==" + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "node_modules/array-from": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz", + "integrity": "sha1-z+nYwmYoudxa7MYqn12PHzUsEZU=", + "dev": true + }, + "node_modules/array-includes": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz", + "integrity": "sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2", + "get-intrinsic": "^1.1.1", + "is-string": "^1.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes/node_modules/es-abstract": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", + "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "is-callable": "^1.2.3", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.2", + "is-string": "^1.0.5", + "object-inspect": "^1.9.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes/node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes/node_modules/has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes/node_modules/is-callable": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes/node_modules/is-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", + "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-symbols": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes/node_modules/object-inspect": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", + "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes/node_modules/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==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat/node_modules/es-abstract": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", + "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "is-callable": "^1.2.3", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.2", + "is-string": "^1.0.5", + "object-inspect": "^1.9.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat/node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat/node_modules/has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat/node_modules/is-callable": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat/node_modules/is-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", + "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-symbols": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat/node_modules/object-inspect": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", + "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat/node_modules/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==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.slice": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", + "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==" + }, + "node_modules/asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "optional": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/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==" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "node_modules/auto-bind": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-2.1.1.tgz", + "integrity": "sha512-NUwV1i9D3vxxY1KnfZgSZ716d6ovY7o8LfOwLhGIPFBowIb6Ln6DBW64+jCqPzUznel2hRSkQnYQqvh7/ldw8A==", + "dependencies": { + "@types/react": "^16.8.12" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/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=", + "optional": true, + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "optional": true + }, + "node_modules/axios": { + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", + "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", + "dependencies": { + "follow-redirects": "^1.10.0" + } + }, + "node_modules/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=", + "dependencies": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "node_modules/backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" + }, + "node_modules/balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "node_modules/base64-arraybuffer": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz", + "integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI=", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dev": true, + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/bcrypt": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.0.1.tgz", + "integrity": "sha512-9BTgmrhZM2t1bNuDtrtIMVSmmxZBrJ71n8Wg+YgdjHuIWYF7SjjmCPZFB+/5i/o/PIeRpwVJR3P+NrpIItUjqw==", + "hasInstallScript": true, + "dependencies": { + "@mapbox/node-pre-gyp": "^1.0.0", + "node-addon-api": "^3.1.0" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/bignumber.js": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-7.2.1.tgz", + "integrity": "sha512-S4XzBk5sMB+Rcb/LNcpzXr57VRTxgAvaAEDAl1AwRx27j00hT84O6OkteE7u8UB3NuaaygCRrEpqox4uDOrbdQ==", + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/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==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/blob": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", + "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==" + }, + "node_modules/block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "optional": true, + "dependencies": { + "inherits": "~2.0.0" + }, + "engines": { + "node": "0.4 || >=0.5.8" + } + }, + "node_modules/bluebird": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.1.tgz", + "integrity": "sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg==" + }, + "node_modules/body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "dependencies": { + "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" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/boxen": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz", + "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==", + "dev": true, + "dependencies": { + "ansi-align": "^3.0.0", + "camelcase": "^5.3.1", + "chalk": "^3.0.0", + "cli-boxes": "^2.2.0", + "string-width": "^4.1.0", + "term-size": "^2.1.0", + "type-fest": "^0.8.1", + "widest-line": "^3.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boxen/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/boxen/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/boxen/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/boxen/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/boxen/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/boxen/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/boxen/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/boxen/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/boxen/node_modules/string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/boxen/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/boxen/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "node_modules/browserslist": { + "version": "4.16.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", + "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", + "dev": true, + "dependencies": { + "caniuse-lite": "^1.0.30001181", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.649", + "escalade": "^3.1.1", + "node-releases": "^1.1.70" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "dev": true, + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cacheable-request/node_modules/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==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cacheable-request/node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001204", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001204.tgz", + "integrity": "sha512-JUdjWpcxfJ9IPamy2f5JaRDCaqJOxDzOSKtbdx4rH9VivMd1vIzoPumsJa9LoMIi4Fx2BV2KZOxWhNkBjaYivQ==", + "dev": true + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "optional": true + }, + "node_modules/catharsis": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz", + "integrity": "sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A==", + "dev": true, + "dependencies": { + "lodash": "^4.17.15" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/cfb": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/cfb/-/cfb-1.2.0.tgz", + "integrity": "sha512-sXMvHsKCICVR3Naq+J556K+ExBo9n50iKl6LGarlnvuA2035uMlGA/qVrc0wQtow5P1vJEw9UyrKLCbtIKz+TQ==", + "dependencies": { + "adler-32": "~1.2.0", + "crc-32": "~1.2.0", + "printj": "~1.1.2" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/chai": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", + "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", + "dev": true, + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^3.0.1", + "get-func-name": "^2.0.0", + "pathval": "^1.1.0", + "type-detect": "^4.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chai-as-promised": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz", + "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==", + "dev": true, + "dependencies": { + "check-error": "^1.0.2" + }, + "peerDependencies": { + "chai": ">= 2.1.2 < 5" + } + }, + "node_modules/chai/node_modules/deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "dev": true, + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/chokidar": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.1", + "braces": "~3.0.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" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.1" + } + }, + "node_modules/chownr": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.3.tgz", + "integrity": "sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw==" + }, + "node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-boxes": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-color": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-1.4.0.tgz", + "integrity": "sha512-xu6RvQqqrWEo6MPR1eixqGPywhYBHRs653F9jfXB2Hx4jdM/3WxiNE1vppRmxtMIfl16SFYTpYlrnqH/HsK/2w==", + "dependencies": { + "ansi-regex": "^2.1.1", + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "memoizee": "^0.4.14", + "timers-ext": "^0.1.5" + } + }, + "node_modules/cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dependencies": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "node_modules/cliui/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "node_modules/cliui/node_modules/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=", + "engines": { + "node": ">=4" + } + }, + "node_modules/cliui/node_modules/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==", + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "dev": true, + "dependencies": { + "mimic-response": "^1.0.0" + } + }, + "node_modules/code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/codepage": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/codepage/-/codepage-1.14.0.tgz", + "integrity": "sha1-jL4lSBMjVZ19MHVxsP/5HnodL5k=", + "dependencies": { + "commander": "~2.14.1", + "exit-on-epipe": "~1.0.1" + }, + "bin": { + "codepage": "bin/codepage.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/codepage/node_modules/commander": { + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.14.1.tgz", + "integrity": "sha512-+YR16o3rK53SmWHU3rEM3tPAh2rwb1yPcQX5irVn7mb0gXbwuCCrnkbV5+PBfETdfg1vui07nM6PCG1zndcjQw==" + }, + "node_modules/color": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/color/-/color-3.0.0.tgz", + "integrity": "sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.1", + "color-string": "^1.5.2" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "node_modules/color-string": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", + "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", + "dev": true, + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/colorette": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", + "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "dev": true + }, + "node_modules/colornames": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/colornames/-/colornames-1.1.1.tgz", + "integrity": "sha1-+IiQMGhcfE/54qVZ9Qd+t2qBb5Y=", + "dev": true + }, + "node_modules/colors": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz", + "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/colorspace": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.2.tgz", + "integrity": "sha512-vt+OoIP2d76xLhjwbBaucYlNSpPsrJWPlBTtwCpQKIu6/CSMutyzX93O/Do0qzpH3YoHEes8YEFXyZ797rEhzQ==", + "dev": true, + "dependencies": { + "color": "3.0.x", + "text-hex": "1.0.x" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/comment-parser": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-0.5.5.tgz", + "integrity": "sha512-oB3TinFT+PV3p8UwDQt71+HkG03+zwPwikDlKU6ZDmql6QX2zFlQ+G0GGSDqyJhdZi4PSlzFBm+YJ+ebOX3Vgw==", + "dev": true + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "node_modules/component-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", + "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=" + }, + "node_modules/component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "node_modules/component-inherit": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", + "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=" + }, + "node_modules/compressible": { + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.17.tgz", + "integrity": "sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw==", + "dependencies": { + "mime-db": ">= 1.40.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "node_modules/config-chain": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", + "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "dev": true, + "dependencies": { + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/confusing-browser-globals": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz", + "integrity": "sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw==", + "dev": true + }, + "node_modules/connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/connect/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + }, + "node_modules/contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "node_modules/cookiejar": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz", + "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==", + "dev": true + }, + "node_modules/core-js": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", + "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==", + "deprecated": "core-js@<3.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.", + "hasInstallScript": true + }, + "node_modules/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=" + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/crc-32": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz", + "integrity": "sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA==", + "dependencies": { + "exit-on-epipe": "~1.0.1", + "printj": "~1.1.0" + }, + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/cron-parser": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-2.13.0.tgz", + "integrity": "sha512-UWeIpnRb0eyoWPVk+pD3TDpNx3KCFQeezO224oJIkktBrcW6RoAPOx5zIKprZGfk6vcYSmA8yQXItejSaDBhbQ==", + "dependencies": { + "is-nan": "^1.2.1", + "moment-timezone": "^0.5.25" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/cross-env": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-5.2.1.tgz", + "integrity": "sha512-1yHhtcfAd1r4nwQgknowuUNfIT9E8dOMMspC36g45dN+iD1blloi7xp8X/xAIDnjHWyt1uQ8PHk2fkNaym7soQ==", + "dependencies": { + "cross-spawn": "^6.0.5" + }, + "bin": { + "cross-env": "dist/bin/cross-env.js", + "cross-env-shell": "dist/bin/cross-env-shell.js" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/cross-spawn/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/crypto-digest-sync": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/crypto-digest-sync/-/crypto-digest-sync-1.0.0.tgz", + "integrity": "sha512-UQBOB5z+HF4iA8shKQ3PPwhCmdFAihwcytD1Qh4uiz78x04cZZmKtZ1F1VyAjkrA8uEZqXt2tMXfj3dJHtcbng==" + }, + "node_modules/crypto-random-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-hex/-/crypto-random-hex-1.0.0.tgz", + "integrity": "sha512-1DuZQ03El13TRgfrqbbjW40Gvi4OKInny/Wxqj23/JMXe214C/3Tlz92bKXWDW3NZT5RjXUGdYW4qiIOUPf+cA==", + "dependencies": { + "array-buffer-to-hex": "^1.0.0" + } + }, + "node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/csstype": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.8.tgz", + "integrity": "sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw==" + }, + "node_modules/d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dependencies": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "optional": true, + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/dateformat": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", + "engines": { + "node": "*" + } + }, + "node_modules/dayjs": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.10.4.tgz", + "integrity": "sha512-RI/Hh4kqRc1UKLOAf/T5zdMMX5DQIlDxwUe3wSyMMnEbGunnpENCdbUgM+dW7kXidZqCttBrmw7BhN4TMddkCw==" + }, + "node_modules/debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "dev": true, + "dependencies": { + "mimic-response": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/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=" + }, + "node_modules/defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", + "dev": true + }, + "node_modules/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==", + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + }, + "node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/diagnostics": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/diagnostics/-/diagnostics-1.1.1.tgz", + "integrity": "sha512-8wn1PmdunLJ9Tqbx+Fx/ZEuHfJf4NKSN2ZBj7SJC/OWRWha843+WsTjqMe1B5E3p28jqBlp+mJ2fPVxPyNgYKQ==", + "dev": true, + "dependencies": { + "colorspace": "1.1.x", + "enabled": "1.0.x", + "kuler": "1.0.x" + } + }, + "node_modules/diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/docker-modem": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/docker-modem/-/docker-modem-2.1.4.tgz", + "integrity": "sha512-vDTzZjjO1sXMY7m0xKjGdFMMZL7vIUerkC3G4l6rnrpOET2M6AOufM8ajmQoOB+6RfSn6I/dlikCUq/Y91Q1sQ==", + "dependencies": { + "debug": "^4.1.1", + "readable-stream": "^3.5.0", + "split-ca": "^1.0.1", + "ssh2": "^0.8.7" + }, + "engines": { + "node": ">= 8.0" + } + }, + "node_modules/docker-modem/node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/docker-modem/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/docker-modem/node_modules/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==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/dockerode": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/dockerode/-/dockerode-3.2.1.tgz", + "integrity": "sha512-XsSVB5Wu5HWMg1aelV5hFSqFJaKS5x1aiV/+sT7YOzOq1IRl49I/UwV8Pe4x6t0iF9kiGkWu5jwfvbkcFVupBw==", + "dependencies": { + "docker-modem": "^2.1.0", + "tar-fs": "~2.0.1" + }, + "engines": { + "node": ">= 8.0" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dotenv": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.2.0.tgz", + "integrity": "sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/dottie": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.2.tgz", + "integrity": "sha512-fmrwR04lsniq/uSr8yikThDTrM7epXHBAAjH9TbeH3rEA8tdCO7mRzB9hdmdGyJCxF8KERo9CITcm3kGuoyMhg==" + }, + "node_modules/doublearray": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/doublearray/-/doublearray-0.0.2.tgz", + "integrity": "sha1-Yxhv6NNEEydtNiH2qg7F954ifvk=" + }, + "node_modules/downsample": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/downsample/-/downsample-1.4.0.tgz", + "integrity": "sha512-teYPhUPxqwtyICt47t1mP/LjhbRV/ghuKb/LmFDbcZ0CjqFD31tn6rVLZoeCEa1xr8+f2skW8UjRiLiGIKQE4w==" + }, + "node_modules/duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "dev": true + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "optional": true, + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/ecc-jsbn/node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "optional": true + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/editorconfig": { + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", + "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", + "dependencies": { + "commander": "^2.19.0", + "lru-cache": "^4.1.5", + "semver": "^5.6.0", + "sigmund": "^1.0.1" + }, + "bin": { + "editorconfig": "bin/editorconfig" + } + }, + "node_modules/editorconfig/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "node_modules/electron-to-chromium": { + "version": "1.3.700", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.700.tgz", + "integrity": "sha512-wQtaxVZzpOeCjW1CGuC5W3bYjE2jglvk076LcTautBOB9UtHztty7wNzjVsndiMcSsdUsdMy5w76w5J1U7OPTQ==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/enabled": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/enabled/-/enabled-1.0.2.tgz", + "integrity": "sha1-ll9lE9LC0cX0ZStkouM5ZGf8L5M=", + "dev": true, + "dependencies": { + "env-variable": "0.0.x" + } + }, + "node_modules/encode-utf8": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz", + "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/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==", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/engine.io-client": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.5.2.tgz", + "integrity": "sha512-QEqIp+gJ/kMHeUun7f5Vv3bteRHppHH/FMBQX/esFj/fuYfjyUKWGMo3VCvIP/V8bE9KcjHmRZrhIz2Z9oNsDA==", + "dependencies": { + "component-emitter": "~1.3.0", + "component-inherit": "0.0.3", + "debug": "~3.1.0", + "engine.io-parser": "~2.2.0", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "parseqs": "0.0.6", + "parseuri": "0.0.6", + "ws": "~7.4.2", + "xmlhttprequest-ssl": "~1.6.2", + "yeast": "0.1.2" + } + }, + "node_modules/engine.io-client/node_modules/component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + }, + "node_modules/engine.io-client/node_modules/ws": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/engine.io-parser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.1.tgz", + "integrity": "sha512-x+dN/fBH8Ro8TFwJ+rkB2AmuVw9Yu2mockR/p3W8f8YtExwFgDvBDi0GWyb4ZLkpahtDGZgtr3zLovanJghPqg==", + "dependencies": { + "after": "0.8.2", + "arraybuffer.slice": "~0.0.7", + "base64-arraybuffer": "0.1.4", + "blob": "0.0.5", + "has-binary2": "~1.0.2" + } + }, + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "node_modules/env-variable": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/env-variable/-/env-variable-0.0.5.tgz", + "integrity": "sha512-zoB603vQReOFvTg5xMl9I1P2PnHsHQQKTEowsKKD7nseUfJq6UWzK+4YtlWUO1nhiQUxe6XMkk+JleSZD1NZFA==", + "dev": true + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.16.0.tgz", + "integrity": "sha512-xdQnfykZ9JMEiasTAJZJdMWCQ1Vm00NBw79/AWi7ELfZuuPCSOMDZbT9mkOfSctVtfhb+sAAzrm+j//GjjLHLg==", + "dev": true, + "dependencies": { + "es-to-primitive": "^1.2.0", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.0", + "is-callable": "^1.1.4", + "is-regex": "^1.0.4", + "object-inspect": "^1.6.0", + "object-keys": "^1.1.1", + "string.prototype.trimleft": "^2.1.0", + "string.prototype.trimright": "^2.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", + "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es5-ext": { + "version": "0.10.53", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", + "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "dependencies": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" + } + }, + "node_modules/es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/es6-object-assign": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz", + "integrity": "sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw=", + "dev": true + }, + "node_modules/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==", + "dependencies": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "node_modules/es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-goat": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", + "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/escodegen": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint": { + "version": "7.22.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.22.0.tgz", + "integrity": "sha512-3VawOtjSJUQiiqac8MQc+w457iGLfuNGLFn8JmF051tTKbh5/x/0vlcEj8OgDCaw7Ysa2Jn8paGshV7x2abKXg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^13.6.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.21", + "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" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-airbnb": { + "version": "17.1.1", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-17.1.1.tgz", + "integrity": "sha512-xCu//8a/aWqagKljt+1/qAM62BYZeNq04HmdevG5yUGWpja0I/xhqd6GdLRch5oetEGFiJAnvtGuTEAese53Qg==", + "dev": true, + "dependencies": { + "eslint-config-airbnb-base": "^13.2.0", + "object.assign": "^4.1.0", + "object.entries": "^1.1.0" + }, + "engines": { + "node": ">= 4" + }, + "peerDependencies": { + "eslint": "^4.19.1 || ^5.3.0", + "eslint-plugin-import": "^2.18.0", + "eslint-plugin-jsx-a11y": "^6.2.3", + "eslint-plugin-react": "^7.14.2" + } + }, + "node_modules/eslint-config-airbnb-base": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-13.2.0.tgz", + "integrity": "sha512-1mg/7eoB4AUeB0X1c/ho4vb2gYkNH8Trr/EgCT/aGmKhhG+F6vF5s8+iRBlWAzFIAphxIdp3YfEKgEl0f9Xg+w==", + "dev": true, + "dependencies": { + "confusing-browser-globals": "^1.0.5", + "object.assign": "^4.1.0", + "object.entries": "^1.1.0" + }, + "engines": { + "node": ">= 4" + }, + "peerDependencies": { + "eslint": "^4.19.1 || ^5.3.0", + "eslint-plugin-import": "^2.17.2" + } + }, + "node_modules/eslint-config-prettier": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-4.3.0.tgz", + "integrity": "sha512-sZwhSTHVVz78+kYD3t5pCWSYEdVSBR0PXnwjDRsUs8ytIrK8PLXw+6FKp8r3Z7rx4ZszdetWlXYKOHoUrrwPlA==", + "dev": true, + "dependencies": { + "get-stdin": "^6.0.0" + }, + "bin": { + "eslint-config-prettier-check": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=3.14.1" + } + }, + "node_modules/eslint-config-prettier/node_modules/get-stdin": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", + "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "debug": "^2.6.9", + "resolve": "^1.13.1" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "dependencies": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "debug": "^2.6.9", + "pkg-dir": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/eslint-module-utils/node_modules/pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "dependencies": { + "find-up": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "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" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "dev": true, + "dependencies": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "node_modules/eslint-plugin-import/node_modules/resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "dependencies": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-jsdoc": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-4.8.4.tgz", + "integrity": "sha512-VDP+BI2hWpKNNdsJDSPofSQ9q7jGLgWbDMI0LzOeEcfsTjSS7jQtHDUuVLQ5E+OV2MPyQPk/3lnVcHfStXk5yA==", + "dev": true, + "dependencies": { + "comment-parser": "^0.5.4", + "jsdoctypeparser": "3.1.0", + "lodash": "^4.17.11" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": ">=4.14.0" + } + }, + "node_modules/eslint-plugin-no-call": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-no-call/-/eslint-plugin-no-call-1.2.5.tgz", + "integrity": "sha512-LU8PYvpCNQDZrb8sijEl3Ovrf6J472+uIAqw2Vprhu6zbzZF6d0s1Y1JlXQVX0K8rtJ73YR8kfBOydPAEvb1EA==", + "dev": true, + "dependencies": { + "requireindex": "1.2.0" + }, + "engines": { + "node": ">=6.12.2" + } + }, + "node_modules/eslint-plugin-require-jsdoc": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-require-jsdoc/-/eslint-plugin-require-jsdoc-1.0.4.tgz", + "integrity": "sha1-Ayq+m+HzatDmbNTxSbS/q2/NTp0=", + "dev": true, + "peerDependencies": { + "eslint": ">=0.8.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/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==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/@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==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/eslint/node_modules/@babel/highlight": { + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", + "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "node_modules/eslint/node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/chalk/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/eslint/node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/eslint/node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.7.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.7.0.tgz", + "integrity": "sha512-Aipsz6ZKRxa/xQkZhNg0qIWXT6x6rD46f6x/PCnBomlttdIyAPak4YD9jTmKpZ72uROSMU87qJtcgpgHaVchiA==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/eslint/node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/eslint/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/eslint/node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/eslint/node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/eslint/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/eslint/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "dependencies": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "node_modules/exit-on-epipe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz", + "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "dependencies": { + "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" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express-rate-limit": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-4.0.4.tgz", + "integrity": "sha512-DLRj2vMO7Xgai8qWKU9O6ZztF2bdDmfFNFi9k3G9BPzJ+7MG7eWaaBikbe0eBpNGSxU8JziwW0PQKG78aNWa6g==" + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "node_modules/ext": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", + "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", + "dependencies": { + "type": "^2.0.0" + } + }, + "node_modules/ext/node_modules/type": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.5.0.tgz", + "integrity": "sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw==" + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "devOptional": true + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "engines": [ + "node >=0.6.0" + ], + "optional": true + }, + "node_modules/fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "devOptional": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + }, + "node_modules/fast-safe-stringify": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz", + "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==", + "dev": true + }, + "node_modules/fecha": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-2.3.3.tgz", + "integrity": "sha512-lUGBnIamTAwk4znq5BcqsDaxSmZ9nDVJaij6NvRt/Tg4R69gERA+otPKbS86ROw9nxVMw2/mp1fnaiWqbs6Sdg==", + "dev": true + }, + "node_modules/fflate": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.3.11.tgz", + "integrity": "sha512-Rr5QlUeGN1mbOHlaqcSYMKVpPbgLy0AWT/W0EHxA6NGI12yO1jpoui2zBBvU2G824ltM6Ut8BFgfHSBGfkmS0A==" + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-keys": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fill-keys/-/fill-keys-1.0.2.tgz", + "integrity": "sha1-mo+jb06K1jTjv2tPPIiCVRRS6yA=", + "dev": true, + "dependencies": { + "is-object": "~1.0.1", + "merge-descriptors": "~1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/filter-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", + "integrity": "sha1-mzERErxsYSehbgFsbF1/GeCAXFs=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/find-up/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/find-up/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/find-up/node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/find-up/node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "bin": { + "flat": "cli.js" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flat-cache/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/flatted": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", + "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.0.tgz", + "integrity": "sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + } + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "optional": true, + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/formidable": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.1.tgz", + "integrity": "sha512-Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg==", + "deprecated": "Please upgrade to latest, formidable@v2 or formidable@v3! Check these notes: https://bit.ly/2ZEqIau", + "dev": true + }, + "node_modules/forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/frac": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/frac/-/frac-1.1.2.tgz", + "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fromentries": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", + "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, + "node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "dependencies": { + "minipass": "^2.6.0" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "optional": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + }, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/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=", + "dev": true + }, + "node_modules/gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dependencies": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic/node_modules/has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/get-value": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-3.0.1.tgz", + "integrity": "sha512-mKZj9JLQrwMBtj5wxi6MH8Z5eSKaERpAwjg43dPtlGI1ZVEgH/qC7T8/6R2OBSUA+zzHBZgICsVJaEIV2tKTDA==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "optional": true, + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/glob": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.5.tgz", + "integrity": "sha512-J9dlskqUXK1OeTOYBEn5s8aMukWMwWfs+rPTn/jn50Ux4MNXVhubL1wu/j2t+H4NVI+cXEcCaYellqaPVGXNqQ==", + "dependencies": { + "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" + }, + "engines": { + "node": "*" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/global-dirs": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.1.0.tgz", + "integrity": "sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==", + "dev": true, + "dependencies": { + "ini": "1.3.7" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/global-dirs/node_modules/ini": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", + "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==", + "dev": true + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "dev": true, + "dependencies": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==" + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==" + }, + "node_modules/growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true, + "engines": { + "node": ">=4.x" + } + }, + "node_modules/handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/handlebars/node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "optional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", + "optional": true, + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/har-validator/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "optional": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/har-validator/node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "optional": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-binary2": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", + "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", + "dependencies": { + "isarray": "2.0.1" + } + }, + "node_modules/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=" + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + }, + "node_modules/has-yarn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/hex-to-array-buffer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hex-to-array-buffer/-/hex-to-array-buffer-1.1.0.tgz", + "integrity": "sha512-vvl3IM8FfT1uOnHtEqyjkDK9Luqz6MQrH82qIvVnjyXxRhkeaEZyRRPiBgf2yym3nweRVEfayxt/1SoTXZYd4Q==" + }, + "node_modules/hoek": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-6.1.3.tgz", + "integrity": "sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ==", + "deprecated": "This module has moved and is now available at @hapi/hoek. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues." + }, + "node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "dev": true + }, + "node_modules/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==", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-errors/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http-proxy-agent/node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/http-proxy-agent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "optional": true, + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent/node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/https-proxy-agent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", + "dev": true + }, + "node_modules/ignore-walk": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", + "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", + "dependencies": { + "minimatch": "^3.0.4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" + }, + "node_modules/inflection": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.12.0.tgz", + "integrity": "sha1-ogCTVlbW9fa8TcdQLhrstwMihBY=", + "engines": [ + "node >= 0.4.0" + ] + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "node_modules/interpret": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", + "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", + "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "node_modules/is-bigint": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.1.tgz", + "integrity": "sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.0.tgz", + "integrity": "sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-installed-globally": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", + "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", + "dev": true, + "dependencies": { + "global-dirs": "^2.0.1", + "is-path-inside": "^3.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-nan": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.0.tgz", + "integrity": "sha512-z7bbREymOqt2CCaZVly8aC4ML3Xhfi0ekuOnjO2L8vKdl+CttdVoGZQhd4adMFAsxQ5VeRVwORs4tU8RH+HFtQ==", + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-npm": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz", + "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", + "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", + "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=", + "dev": true + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dev": true, + "dependencies": { + "has": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", + "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "devOptional": true + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-yarn-global": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", + "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", + "dev": true + }, + "node_modules/isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" + }, + "node_modules/isemail": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/isemail/-/isemail-3.2.0.tgz", + "integrity": "sha512-zKqkK+O+dGqevc93KNsbZ/TqTUFd46MwWjYOoMrjIMZ51eU7DtQG3Wmd9SQQT7i7RVnuTPEiYEWHU3MSbxC1Tg==", + "dependencies": { + "punycode": "2.x.x" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "optional": true + }, + "node_modules/istanbul-lib-processinfo": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz", + "integrity": "sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw==", + "dev": true, + "dependencies": { + "archy": "^1.0.0", + "cross-spawn": "^7.0.0", + "istanbul-lib-coverage": "^3.0.0-alpha.1", + "make-dir": "^3.0.0", + "p-map": "^3.0.0", + "rimraf": "^3.0.0", + "uuid": "^3.3.3" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-processinfo/node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/istanbul-lib-processinfo/node_modules/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-processinfo/node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/istanbul-lib-processinfo/node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-processinfo/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/istanbul-lib-processinfo/node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-processinfo/node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-processinfo/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/joi": { + "version": "14.3.1", + "resolved": "https://registry.npmjs.org/joi/-/joi-14.3.1.tgz", + "integrity": "sha512-LQDdM+pkOrpAn4Lp+neNIFV3axv1Vna3j38bisbQhETPMANYRbFJFUyOZcOClYvM/hppMhGWuKSFEK9vjrB+bQ==", + "deprecated": "This module has moved and is now available at @hapi/joi. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues.", + "dependencies": { + "hoek": "6.x.x", + "isemail": "3.x.x", + "topo": "3.x.x" + } + }, + "node_modules/jose": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/jose/-/jose-4.3.7.tgz", + "integrity": "sha512-S7Xfsy8nN9Iw/AZxk+ZxEbd5ImIwJPM0TfAo8zI8FF+3lidQ2yiK4dqzsaPKSbZD0woNVSY0KCql6rlKc5V7ug==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/panva" + } + }, + "node_modules/js-beautify": { + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.13.5.tgz", + "integrity": "sha512-MsXlH6Z/BiRYSkSRW3clNDqDjSpiSNOiG8xYVUBXt4k0LnGvDhlTGOlHX1VFtAdoLmtwjxMG5qiWKy/g+Ipv5w==", + "dependencies": { + "config-chain": "^1.1.12", + "editorconfig": "^0.15.3", + "glob": "^7.1.3", + "mkdirp": "^1.0.4", + "nopt": "^5.0.0" + }, + "bin": { + "css-beautify": "js/bin/css-beautify.js", + "html-beautify": "js/bin/html-beautify.js", + "js-beautify": "js/bin/js-beautify.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/js-beautify/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/js-beautify/node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/js2xmlparser": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.1.tgz", + "integrity": "sha512-KrPTolcw6RocpYjdC7pL7v62e55q7qOMHvLX1UCLc5AAS8qeJ6nukarEJAF2KL2PZxlbGueEbINqZR2bDe/gUw==", + "dev": true, + "dependencies": { + "xmlcreate": "^2.0.3" + } + }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha1-sBMHyym2GKHtJux56RH4A8TaAEA=" + }, + "node_modules/jsdoc": { + "version": "3.6.7", + "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-3.6.7.tgz", + "integrity": "sha512-sxKt7h0vzCd+3Y81Ey2qinupL6DpRSZJclS04ugHDNmRUXGzqicMJ6iwayhSA0S0DwwX30c5ozyUthr1QKF6uw==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.9.4", + "bluebird": "^3.7.2", + "catharsis": "^0.9.0", + "escape-string-regexp": "^2.0.0", + "js2xmlparser": "^4.0.1", + "klaw": "^3.0.0", + "markdown-it": "^10.0.0", + "markdown-it-anchor": "^5.2.7", + "marked": "^2.0.3", + "mkdirp": "^1.0.4", + "requizzle": "^0.2.3", + "strip-json-comments": "^3.1.0", + "taffydb": "2.6.2", + "underscore": "~1.13.1" + }, + "bin": { + "jsdoc": "jsdoc.js" + }, + "engines": { + "node": ">=8.15.0" + } + }, + "node_modules/jsdoc/node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "node_modules/jsdoc/node_modules/entities": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz", + "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==", + "dev": true + }, + "node_modules/jsdoc/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jsdoc/node_modules/markdown-it": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-10.0.0.tgz", + "integrity": "sha512-YWOP1j7UbDNz+TumYP1kpwnP0aEa711cJjrAQrzd0UXlbJfc5aAq0F/PZHjiioqDC1NKgvIMX+o+9Bk7yuM2dg==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "entities": "~2.0.0", + "linkify-it": "^2.0.0", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "bin": { + "markdown-it": "bin/markdown-it.js" + } + }, + "node_modules/jsdoc/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jsdoc/node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jsdoctypeparser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsdoctypeparser/-/jsdoctypeparser-3.1.0.tgz", + "integrity": "sha512-JNbkKpDFqbYjg+IU3FNo7qjX7Opy7CwjHywT32zgAcz/d4lX6Umn5jOHVETUdnNNgGrMk0nEx1gvP0F4M0hzlQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", + "dev": true + }, + "node_modules/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==", + "dev": true + }, + "node_modules/json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "optional": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "devOptional": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "node_modules/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=", + "devOptional": true + }, + "node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/json5/node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonwebtoken": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", + "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", + "dependencies": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=4", + "npm": ">=1.4.28" + } + }, + "node_modules/jsonwebtoken/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/jsonwebtoken/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "engines": [ + "node >=0.6.0" + ], + "optional": true, + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "node_modules/just-extend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.0.2.tgz", + "integrity": "sha512-FrLwOgm+iXrPV+5zDU6Jqu4gCRXbWEQg2O3SKONsWE4w7AXFRkryS53bpWdaL9cNol+AmR3AEYz6kn+o0fCPnw==", + "dev": true + }, + "node_modules/jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "dependencies": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.0" + } + }, + "node_modules/klaw": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz", + "integrity": "sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.9" + } + }, + "node_modules/klaw-sync": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-2.1.0.tgz", + "integrity": "sha1-PTvNhgDnv971MjHHOf8FOu1WDkQ=", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.11" + } + }, + "node_modules/kuler": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/kuler/-/kuler-1.0.1.tgz", + "integrity": "sha512-J9nVUucG1p/skKul6DU3PUZrhs0LPulNaeUOox0IyXDi8S4CztTHs1gQphhuZmzXG7VOQSf6NJfKuzteQLv9gQ==", + "dev": true, + "dependencies": { + "colornames": "^1.1.1" + } + }, + "node_modules/kuromoji": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/kuromoji/-/kuromoji-0.1.2.tgz", + "integrity": "sha512-V0dUf+C2LpcPEXhoHLMAop/bOht16Dyr+mDiIE39yX3vqau7p80De/koFqpiTcL1zzdZlc3xuHZ8u5gjYRfFaQ==", + "dependencies": { + "async": "^2.0.1", + "doublearray": "0.0.2", + "zlibjs": "^0.3.1" + } + }, + "node_modules/latest-version": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", + "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", + "dev": true, + "dependencies": { + "package-json": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/linkify-it": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz", + "integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==", + "dev": true, + "dependencies": { + "uc.micro": "^1.0.1" + } + }, + "node_modules/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=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/locate-path/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "engines": { + "node": ">=4" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=" + }, + "node_modules/lodash.escaperegexp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", + "integrity": "sha1-ZHYsSGGAglGKw99Mz11YhtriA0c=" + }, + "node_modules/lodash.flattendeep": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", + "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", + "dev": true + }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=" + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" + }, + "node_modules/lodash.last": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash.last/-/lodash.last-3.0.0.tgz", + "integrity": "sha1-JC9mMRLdTG5jcoxgo8kJ0b2tvUw=" + }, + "node_modules/lodash.max": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.max/-/lodash.max-4.0.1.tgz", + "integrity": "sha1-hzVWbGGLNan3YFILSHrnllivE2o=" + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" + }, + "node_modules/lodash.set": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", + "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=", + "dev": true + }, + "node_modules/lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" + }, + "node_modules/lodash.tonumber": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/lodash.tonumber/-/lodash.tonumber-4.0.3.tgz", + "integrity": "sha1-C5azGzVnJ5Prf1pj7nkfG56QJdk=" + }, + "node_modules/lodash.trimend": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/lodash.trimend/-/lodash.trimend-4.5.1.tgz", + "integrity": "sha1-EoBENyhrmMrYmWt5QU4RMAEUCC8=" + }, + "node_modules/log-symbols": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", + "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/logform": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.1.2.tgz", + "integrity": "sha512-+lZh4OpERDBLqjiwDLpAWNQu6KMjnlXH2ByZwCuSqVPJletw0kTWJf5CgSNAUKn1KUkv3m2cUz/LK8zyEy7wzQ==", + "dev": true, + "dependencies": { + "colors": "^1.2.1", + "fast-safe-stringify": "^2.0.4", + "fecha": "^2.3.3", + "ms": "^2.1.1", + "triple-beam": "^1.3.0" + } + }, + "node_modules/logform/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/lolex": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-4.2.0.tgz", + "integrity": "sha512-gKO5uExCXvSm6zbF562EvM+rd1kQDnB9AZBbiQVzf1ZmdDpxUSvpnAaVOP83N/31mRK8Ml8/VE8DMvsAZQ+7wg==", + "dev": true + }, + "node_modules/long-timeout": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/long-timeout/-/long-timeout-0.1.1.tgz", + "integrity": "sha1-lyHXiLR+C8taJMLivuGg2lXatRQ=" + }, + "node_modules/lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/lru-cache/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + }, + "node_modules/lru-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", + "integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=", + "dependencies": { + "es5-ext": "~0.10.2" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/markdown-it": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-8.4.2.tgz", + "integrity": "sha512-GcRz3AWTqSUphY3vsUqQSFMbgR38a4Lh3GWlHRh/7MRwz8mcu9n2IO7HOh+bXHrR9kOPDl5RNCaEsrneb+xhHQ==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "entities": "~1.1.1", + "linkify-it": "^2.0.0", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "bin": { + "markdown-it": "bin/markdown-it.js" + } + }, + "node_modules/markdown-it-anchor": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-5.3.0.tgz", + "integrity": "sha512-/V1MnLL/rgJ3jkMWo84UR+K+jF1cxNG1a+KwqeXqTIJ+jtA8aWSHuigx8lTzauiIjBDbwF3NcWQMotd0Dm39jA==", + "dev": true, + "peerDependencies": { + "markdown-it": "*" + } + }, + "node_modules/marked": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/marked/-/marked-2.0.3.tgz", + "integrity": "sha512-5otztIIcJfPc2qGTN8cVtOJEjNJZ0jwa46INMagrYfk0EvqtRuEHLsEe0LrFS0/q+ZRKT0+kXK7P2T1AN5lWRA==", + "dev": true, + "bin": { + "marked": "bin/marked" + }, + "engines": { + "node": ">= 8.16.2" + } + }, + "node_modules/mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=", + "dev": true + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memoizee": { + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz", + "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==", + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.53", + "es6-weak-map": "^2.0.3", + "event-emitter": "^0.3.5", + "is-promise": "^2.2.2", + "lru-queue": "^0.1.0", + "next-tick": "^1.1.0", + "timers-ext": "^0.1.7" + } + }, + "node_modules/memoizee/node_modules/is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" + }, + "node_modules/memoizee/node_modules/next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" + }, + "node_modules/memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", + "dev": true, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.40.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", + "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.24", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", + "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", + "dependencies": { + "mime-db": "1.40.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "node_modules/minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "dependencies": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "node_modules/minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "dependencies": { + "minipass": "^2.9.0" + } + }, + "node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" + }, + "node_modules/mocha": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.3.2.tgz", + "integrity": "sha512-UdmISwr/5w+uXLPKspgoV7/RXZwKRTiTjJ2/AC5ZiEztIoOYdfKb19+9jNmEInzx5pBsCyJQzarAxqIGBNYJhg==", + "dev": true, + "dependencies": { + "@ungap/promise-all-settled": "1.1.2", + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.1", + "debug": "4.3.1", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.1.6", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "4.0.0", + "log-symbols": "4.0.0", + "minimatch": "3.0.4", + "ms": "2.1.3", + "nanoid": "3.1.20", + "serialize-javascript": "5.0.1", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "which": "2.0.2", + "wide-align": "1.1.3", + "workerpool": "6.1.0", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha" + }, + "engines": { + "node": ">= 10.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mochajs" + } + }, + "node_modules/mocha/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/mocha/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/mocha/node_modules/anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/mocha/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/mocha/node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/mocha/node_modules/chokidar": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.1", + "braces": "~3.0.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" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.1" + } + }, + "node_modules/mocha/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/mocha/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/mocha/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/mocha/node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/mocha/node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/mocha/node_modules/diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/mocha/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/mocha/node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "dependencies": { + "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" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mocha/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/mocha/node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mocha/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/mocha/node_modules/js-yaml": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz", + "integrity": "sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/mocha/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/mocha/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/mocha/node_modules/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==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/mocha/node_modules/string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mocha/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mocha/node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/mocha/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/mocha/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/mocha/node_modules/y18n": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz", + "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/mocha/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mocha/node_modules/yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/mock-express-request": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/mock-express-request/-/mock-express-request-0.2.2.tgz", + "integrity": "sha512-EymHjY1k1jWIsaVaCsPdFterWO18gcNwQMb99OryhSBtIA33SZJujOLeOe03Rf2DTV997xLPyl2I098WCFm/mA==", + "dev": true, + "dependencies": { + "accepts": "^1.3.4", + "fresh": "^0.5.2", + "lodash": "^4.17.4", + "mock-req": "^0.2.0", + "parseurl": "^1.3.2", + "range-parser": "^1.2.0", + "type-is": "^1.6.15" + } + }, + "node_modules/mock-http-server": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/mock-http-server/-/mock-http-server-1.4.5.tgz", + "integrity": "sha512-7WZx7RJmMQEvTxJTOJt9U6+gLFl0JFaPHLSsAngfLaOgr3UH+ci7PW8049quyXwZGI4mh3W8oAch6w406ccyRQ==", + "dev": true, + "dependencies": { + "body-parser": "^1.18.1", + "connect": "^3.4.0", + "multiparty": "^4.1.2", + "underscore": "^1.8.3" + } + }, + "node_modules/mock-req": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/mock-req/-/mock-req-0.2.0.tgz", + "integrity": "sha1-dJRGgE0sAGFpNC7nvmu6HP/VNMI=", + "dev": true + }, + "node_modules/module-not-found-error": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/module-not-found-error/-/module-not-found-error-1.0.1.tgz", + "integrity": "sha1-z4tP9PKWQGdNbN0CsOO8UjwrvcA=", + "dev": true + }, + "node_modules/moment": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", + "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==", + "engines": { + "node": "*" + } + }, + "node_modules/moment-timezone": { + "version": "0.5.27", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.27.tgz", + "integrity": "sha512-EIKQs7h5sAsjhPCqN6ggx6cEbs94GK050254TIJySD1bzoM5JTYDwAU1IoVOeTOL6Gm27kYJ51/uuvq1kIlrbw==", + "dependencies": { + "moment": ">= 2.9.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "node_modules/multiparty": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/multiparty/-/multiparty-4.2.2.tgz", + "integrity": "sha512-NtZLjlvsjcoGrzojtwQwn/Tm90aWJ6XXtPppYF4WmOk/6ncdwMMKggFY2NlRRN9yiCEIVxpOfPWahVEG2HAG8Q==", + "dev": true, + "dependencies": { + "http-errors": "~1.8.0", + "safe-buffer": "5.2.1", + "uid-safe": "2.1.5" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/multiparty/node_modules/http-errors": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.0.tgz", + "integrity": "sha512-4I8r0C5JDhT5VkvI47QktDW75rNlGVsUf/8hzjCC/wkWI/jdTRmBb9aI7erSG82r1bjKY3F6k28WnsVxB1C73A==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/multiparty/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/multiparty/node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/nan": { + "version": "2.13.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.13.2.tgz", + "integrity": "sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw==" + }, + "node_modules/nanoid": { + "version": "3.1.20", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz", + "integrity": "sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "node_modules/needle": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.4.0.tgz", + "integrity": "sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==", + "dependencies": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 4.4.x" + } + }, + "node_modules/needle/node_modules/debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/needle/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + }, + "node_modules/next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + }, + "node_modules/nise": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/nise/-/nise-1.5.2.tgz", + "integrity": "sha512-/6RhOUlicRCbE9s+94qCUsyE+pKlVJ5AhIv+jEE7ESKwnbXqulKZ1FYU+XAtHHWE9TinYvAxDUJAb912PwPoWA==", + "dev": true, + "dependencies": { + "@sinonjs/formatio": "^3.2.1", + "@sinonjs/text-encoding": "^0.7.1", + "just-extend": "^4.0.2", + "lolex": "^4.1.0", + "path-to-regexp": "^1.7.0" + } + }, + "node_modules/nise/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "node_modules/nise/node_modules/path-to-regexp": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", + "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", + "dev": true, + "dependencies": { + "isarray": "0.0.1" + } + }, + "node_modules/nock": { + "version": "13.0.11", + "resolved": "https://registry.npmjs.org/nock/-/nock-13.0.11.tgz", + "integrity": "sha512-sKZltNkkWblkqqPAsjYW0bm3s9DcHRPiMOyKO/PkfJ+ANHZ2+LA2PLe22r4lLrKgXaiSaDQwW3qGsJFtIpQIeQ==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "json-stringify-safe": "^5.0.1", + "lodash.set": "^4.3.2", + "propagate": "^2.0.0" + }, + "engines": { + "node": ">= 10.13" + } + }, + "node_modules/nock/node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/nock/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/node-addon-api": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.1.0.tgz", + "integrity": "sha512-flmrDNB06LIl5lywUz7YlNGZH/5p0M7W28k8hzd9Lshtdh1wshD2Y+U4h9LD6KObOy1f+fEVdgprPrEymjM5uw==" + }, + "node_modules/node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", + "engines": { + "node": "4.x || >=6.0.0" + } + }, + "node_modules/node-gyp": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", + "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", + "optional": true, + "dependencies": { + "fstream": "^1.0.0", + "glob": "^7.0.3", + "graceful-fs": "^4.1.2", + "mkdirp": "^0.5.0", + "nopt": "2 || 3", + "npmlog": "0 || 1 || 2 || 3 || 4", + "osenv": "0", + "request": "^2.87.0", + "rimraf": "2", + "semver": "~5.3.0", + "tar": "^2.0.0", + "which": "1" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/node-gyp/node_modules/nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "optional": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + } + }, + "node_modules/node-gyp/node_modules/semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "optional": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/node-gyp/node_modules/tar": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", + "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", + "deprecated": "This version of tar is no longer supported, and will not receive security updates. Please upgrade asap.", + "optional": true, + "dependencies": { + "block-stream": "*", + "fstream": "^1.0.12", + "inherits": "2" + } + }, + "node_modules/node-nlp": { + "version": "4.19.7", + "resolved": "https://registry.npmjs.org/node-nlp/-/node-nlp-4.19.7.tgz", + "integrity": "sha512-/UXLzJazHZj15hbtj2efP8kekA75pPX37MrQ7torRCNSqDmryAQc3pm8XPm+1GZFvBC3go903I6Oe8LenEmyXg==", + "dependencies": { + "@nlpjs/builtin-duckling": "^4.19.1", + "@nlpjs/builtin-microsoft": "^4.19.1", + "@nlpjs/core-loader": "^4.19.1", + "@nlpjs/emoji": "^4.19.1", + "@nlpjs/evaluator": "^4.17.1", + "@nlpjs/lang-all": "^4.19.1", + "@nlpjs/language": "^4.17.0", + "@nlpjs/neural": "^4.17.0", + "@nlpjs/nlg": "^4.19.1", + "@nlpjs/nlp": "^4.19.7", + "@nlpjs/nlu": "^4.19.1", + "@nlpjs/request": "^4.17.0", + "@nlpjs/sentiment": "^4.19.1", + "@nlpjs/similarity": "^4.17.0", + "@nlpjs/xtables": "^4.17.0" + } + }, + "node_modules/node-preload": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", + "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", + "dev": true, + "dependencies": { + "process-on-spawn": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/node-releases": { + "version": "1.1.71", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", + "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", + "dev": true + }, + "node_modules/node-schedule": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/node-schedule/-/node-schedule-1.3.2.tgz", + "integrity": "sha512-GIND2pHMHiReSZSvS6dpZcDH7pGPGFfWBIEud6S00Q8zEIzAs9ommdyRK1ZbQt8y1LyZsJYZgPnyi7gpU2lcdw==", + "dependencies": { + "cron-parser": "^2.7.3", + "long-timeout": "0.1.1", + "sorted-array-functions": "^1.0.0" + } + }, + "node_modules/node-webcrypto-ossl": { + "version": "1.0.48", + "resolved": "https://registry.npmjs.org/node-webcrypto-ossl/-/node-webcrypto-ossl-1.0.48.tgz", + "integrity": "sha512-MWUkQ/5wrs7lpAr+fhsLMfjdxKGd3dQFVqWbNMkyYyCMRW8E7ScailqtCZYDLTnJtU6B+91rXxCJNyZvbYaSOg==", + "deprecated": "node-webcrypto-ossl has been deprecated. This module was created in 2015 because at the time the Node team did not feel the need to have two crypto interfaces and they already had one before WebCrypto was defined", + "hasInstallScript": true, + "dependencies": { + "mkdirp": "^0.5.1", + "nan": "^2.13.2", + "tslib": "^1.9.3", + "webcrypto-core": "^0.1.26" + } + }, + "node_modules/nodemon": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.7.tgz", + "integrity": "sha512-XHzK69Awgnec9UzHr1kc8EomQh4sjTQ8oRf8TsGrSmHDx9/UmiGG9E/mM3BuTfNeFwdNBvrqQq/RHL0xIeyFOA==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "chokidar": "^3.2.2", + "debug": "^3.2.6", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.0.4", + "pstree.remy": "^1.1.7", + "semver": "^5.7.1", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.3", + "update-notifier": "^4.1.0" + }, + "bin": { + "nodemon": "bin/nodemon.js" + }, + "engines": { + "node": ">=8.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nodemon" + } + }, + "node_modules/nodemon/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/nodemon/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/nodemon/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/nopt": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "dependencies": { + "abbrev": "1", + "osenv": "^0.1.4" + }, + "bin": { + "nopt": "bin/nopt.js" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", + "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm-bundled": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.6.tgz", + "integrity": "sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==" + }, + "node_modules/npm-packlist": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.6.tgz", + "integrity": "sha512-u65uQdb+qwtGvEJh/DgQgW1Xg7sqeNbmxYyrvlNznaVTjV3E5P6F/EFjM+BVHXl7JJlsdG8A64M0XI8FI/IOlg==", + "dependencies": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "node_modules/npm-run-all": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", + "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "memorystream": "^0.3.1", + "minimatch": "^3.0.4", + "pidtree": "^0.3.0", + "read-pkg": "^3.0.0", + "shell-quote": "^1.6.1", + "string.prototype.padend": "^3.0.0" + }, + "bin": { + "npm-run-all": "bin/npm-run-all/index.js", + "run-p": "bin/run-p/index.js", + "run-s": "bin/run-s/index.js" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/npm-run-all/node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "dependencies": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dependencies": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nyc": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", + "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==", + "dev": true, + "dependencies": { + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "caching-transform": "^4.0.0", + "convert-source-map": "^1.7.0", + "decamelize": "^1.2.0", + "find-cache-dir": "^3.2.0", + "find-up": "^4.1.0", + "foreground-child": "^2.0.0", + "get-package-type": "^0.1.0", + "glob": "^7.1.6", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-hook": "^3.0.0", + "istanbul-lib-instrument": "^4.0.0", + "istanbul-lib-processinfo": "^2.0.2", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "make-dir": "^3.0.0", + "node-preload": "^0.2.1", + "p-map": "^3.0.0", + "process-on-spawn": "^1.0.0", + "resolve-from": "^5.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "spawn-wrap": "^2.0.0", + "test-exclude": "^6.0.0", + "yargs": "^15.0.2" + }, + "bin": { + "nyc": "bin/nyc.js" + }, + "engines": { + "node": ">=8.9" + } + }, + "node_modules/nyc/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/nyc/node_modules/append-transform": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", + "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", + "dev": true, + "dependencies": { + "default-require-extensions": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/caching-transform": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", + "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", + "dev": true, + "dependencies": { + "hasha": "^5.0.0", + "make-dir": "^3.0.0", + "package-hash": "^4.0.0", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/nyc/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/nyc/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/nyc/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/nyc/node_modules/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==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/nyc/node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/nyc/node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/nyc/node_modules/default-require-extensions": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz", + "integrity": "sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==", + "dev": true, + "dependencies": { + "strip-bom": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/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==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/nyc/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/foreground-child": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", + "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/nyc/node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "dependencies": { + "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" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/nyc/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/hasha": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", + "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", + "dev": true, + "dependencies": { + "is-stream": "^2.0.0", + "type-fest": "^0.8.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nyc/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/istanbul-lib-hook": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", + "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", + "dev": true, + "dependencies": { + "append-transform": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/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==", + "dev": true, + "dependencies": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/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==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/istanbul-reports": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", + "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nyc/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/nyc/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/package-hash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", + "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.15", + "hasha": "^5.0.0", + "lodash.flattendeep": "^4.4.0", + "release-zalgo": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/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==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/nyc/node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/spawn-wrap": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", + "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", + "dev": true, + "dependencies": { + "foreground-child": "^2.0.0", + "is-windows": "^1.0.2", + "make-dir": "^3.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "which": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/nyc/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/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==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/nyc/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "optional": true, + "engines": { + "node": "*" + } + }, + "node_modules/oauth2-mock-server": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/oauth2-mock-server/-/oauth2-mock-server-4.1.1.tgz", + "integrity": "sha512-fvlQ9VkYVS8gddnxTEiZ4YBrSzuxHWbHdNI247+YAW3Au9IV2wbi1LIsh9LkV8GO5W9kDdYZqGQEF+AvLTXg9A==", + "dev": true, + "dependencies": { + "basic-auth": "^2.0.1", + "cors": "^2.8.5", + "express": "^4.17.1", + "jose": "^4.3.6", + "lodash.isplainobject": "^4.0.6", + "uuid": "^8.3.2" + }, + "bin": { + "oauth2-mock-server": "dist/oauth2-mock-server.js" + }, + "engines": { + "node": "^12.20 || ^14.15 || ^16", + "yarn": "^1.15.2" + } + }, + "node_modules/oauth2-mock-server/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz", + "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==", + "dev": true + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.entries": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.0.tgz", + "integrity": "sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.12.0", + "function-bind": "^1.1.1", + "has": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.3.tgz", + "integrity": "sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2", + "has": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values/node_modules/es-abstract": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", + "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "is-callable": "^1.2.3", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.2", + "is-string": "^1.0.5", + "object-inspect": "^1.9.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values/node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values/node_modules/has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values/node_modules/is-callable": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values/node_modules/is-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", + "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-symbols": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values/node_modules/object-inspect": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", + "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values/node_modules/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==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/one-time": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/one-time/-/one-time-0.0.4.tgz", + "integrity": "sha1-+M33eISCb+Tf+T46nMN7HkSAdC4=", + "dev": true + }, + "node_modules/optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.4", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "wordwrap": "~1.0.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/optionator/node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" + }, + "node_modules/os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dependencies": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "node_modules/p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-limit": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", + "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/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==", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "dev": true, + "dependencies": { + "got": "^9.6.0", + "registry-auth-token": "^4.0.0", + "registry-url": "^5.0.0", + "semver": "^6.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pad-start": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pad-start/-/pad-start-1.0.2.tgz", + "integrity": "sha1-I+W6s+lkRrYoFs/28VCXXwQNGxQ=" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "dependencies": { + "error-ex": "^1.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parseqs": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz", + "integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==" + }, + "node_modules/parseuri": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz", + "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==" + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "engines": { + "node": ">=4" + } + }, + "node_modules/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==" + }, + "node_modules/path-to-regexp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.1.0.tgz", + "integrity": "sha512-PtHLisEvUOepjc+sStXxJ/pDV/s5UBTOKWJY2SOz3e6E/iN/jLknY9WL72kTwRrwXDUbZTEAtSnJbz2fF127DA==" + }, + "node_modules/path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "dependencies": { + "pify": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pathval": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", + "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "optional": true + }, + "node_modules/picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pidtree": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.0.tgz", + "integrity": "sha512-9CT4NFlDcosssyg8KVFltgokyKZIFjoBxw8CTGy+5F38Y1eQWrt8tRayiUOXE+zVKQnYu5BR8JjCtvK3BcnBhg==", + "dev": true, + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/prettier": { + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.18.2.tgz", + "integrity": "sha512-OeHeMc0JhFE9idD4ZdtNibzY0+TPHSpSSb9h8FqtP+YnoZZ1sl8Vc9b1sasjfymH3SonAF4QcA2+mzHPhMvIiw==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/printj": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz", + "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==", + "bin": { + "printj": "bin/printj.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/process-on-spawn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", + "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", + "dev": true, + "dependencies": { + "fromentries": "^1.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/propagate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz", + "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=" + }, + "node_modules/proxy-addr": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", + "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", + "dependencies": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxyquire": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/proxyquire/-/proxyquire-2.1.3.tgz", + "integrity": "sha512-BQWfCqYM+QINd+yawJz23tbBM40VIGXOdDw3X344KcclI/gtBbdWF6SlQ4nK/bYhF9d27KYug9WzljHC6B9Ysg==", + "dev": true, + "dependencies": { + "fill-keys": "^1.0.2", + "module-not-found-error": "^1.0.1", + "resolve": "^1.11.1" + } + }, + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + }, + "node_modules/psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "optional": true + }, + "node_modules/pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", + "dev": true + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/pupa": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", + "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", + "dev": true, + "dependencies": { + "escape-goat": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/query-string": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.0.1.tgz", + "integrity": "sha512-uIw3iRvHnk9to1blJCG3BTc+Ro56CBowJXKmNNAm3RulvPBzWLRqKSiiDk+IplJhsydwtuNMHi8UGQFcCLVfkA==", + "dependencies": { + "decode-uri-component": "^0.2.0", + "filter-obj": "^1.1.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/queue": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.1.tgz", + "integrity": "sha512-AJBQabRCCNr9ANq8v77RJEv73DPbn55cdTb+Giq4X0AVnNVZvMHlYp7XlQiN+1npCZj1DuSmaA2hYVUUDgxFDg==", + "dependencies": { + "inherits": "~2.0.3" + } + }, + "node_modules/random-bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", + "integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/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==", + "dependencies": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "node_modules/read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "dependencies": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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=", + "dev": true, + "dependencies": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + }, + "node_modules/regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/registry-auth-token": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", + "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", + "dev": true, + "dependencies": { + "rc": "^1.2.8" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/registry-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", + "dev": true, + "dependencies": { + "rc": "^1.2.8" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/release-zalgo": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", + "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", + "dev": true, + "dependencies": { + "es6-error": "^4.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "optional": true, + "dependencies": { + "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" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/request/node_modules/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==", + "optional": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/request/node_modules/qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "optional": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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==" + }, + "node_modules/requireindex": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", + "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==", + "dev": true, + "engines": { + "node": ">=0.10.5" + } + }, + "node_modules/requizzle": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.3.tgz", + "integrity": "sha512-YanoyJjykPxGHii0fZP0uUPEXpvqfBDxWV7s6GKAiiOsiqhX6vHNyW3Qzdmqp/iq/ExbhaGbVrjB4ruEVSM4GQ==", + "dev": true, + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/resolve": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", + "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", + "dependencies": { + "path-parse": "^1.0.6" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "dev": true, + "dependencies": { + "lowercase-keys": "^1.0.0" + } + }, + "node_modules/retry-as-promised": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-3.2.0.tgz", + "integrity": "sha512-CybGs60B7oYU/qSQ6kuaFmRd9sTZ6oXSc0toqePvV74Ac6/IFZSI1ReFQmtCN+uvW1Mtqdwpvt/LGOiCBAY2Mg==", + "dependencies": { + "any-promise": "^1.3.0" + } + }, + "node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "node_modules/secure-remote-password": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/secure-remote-password/-/secure-remote-password-0.3.1.tgz", + "integrity": "sha512-iEp/qLRfb9XYhfKFrPFfdeD7KVreCjhDKSTRP1G1nRIO0Sw1hjnVHD58ymOhiy9Zf5quHbDIbG9cTupji7qwnA==", + "dependencies": { + "array-buffer-to-hex": "^1.0.0", + "crypto-digest-sync": "^1.0.0", + "crypto-random-hex": "^1.0.0", + "encode-utf8": "^1.0.1", + "hex-to-array-buffer": "^1.1.0", + "jsbn": "^1.1.0", + "pad-start": "^1.0.2" + } + }, + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/semver-diff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", + "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "dev": true, + "dependencies": { + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "dependencies": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "node_modules/send/node_modules/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==" + }, + "node_modules/sequelize": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-6.5.0.tgz", + "integrity": "sha512-owBt8fnzVy8E1OvyCyfCdVk7OOLyPVrBCMEf+CvRReC5oCyo+UqeXCtwaex9L6LM9ifZ1i3TG3sFeM5MgLK0CQ==", + "dependencies": { + "debug": "^4.1.1", + "dottie": "^2.0.0", + "inflection": "1.12.0", + "lodash": "^4.17.20", + "moment": "^2.26.0", + "moment-timezone": "^0.5.31", + "retry-as-promised": "^3.2.0", + "semver": "^7.3.2", + "sequelize-pool": "^6.0.0", + "toposort-class": "^1.0.1", + "uuid": "^8.1.0", + "validator": "^10.11.0", + "wkx": "^0.5.0" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependenciesMeta": { + "mariadb": { + "optional": true + }, + "mysql2": { + "optional": true + }, + "pg": { + "optional": true + }, + "pg-hstore": { + "optional": true + }, + "sqlite3": { + "optional": true + }, + "tedious": { + "optional": true + } + } + }, + "node_modules/sequelize-cli": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/sequelize-cli/-/sequelize-cli-6.2.0.tgz", + "integrity": "sha512-6WQ2x91hg30dUn66mXHnzvHATZ4pyI1GHSNbS/TNN/vRR4BLRSLijadeMgC8zqmKDsL0VqzVVopJWfJakuP++Q==", + "dependencies": { + "cli-color": "^1.4.0", + "fs-extra": "^7.0.1", + "js-beautify": "^1.8.8", + "lodash": "^4.17.5", + "resolve": "^1.5.0", + "umzug": "^2.3.0", + "yargs": "^13.1.0" + }, + "bin": { + "sequelize": "lib/sequelize", + "sequelize-cli": "lib/sequelize" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/sequelize-cli/node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, + "node_modules/sequelize-cli/node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/sequelize-cli/node_modules/umzug": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/umzug/-/umzug-2.3.0.tgz", + "integrity": "sha512-Z274K+e8goZK8QJxmbRPhl89HPO1K+ORFtm6rySPhFKfKc5GHhqdzD0SGhSWHkzoXasqJuItdhorSvY7/Cgflw==", + "dependencies": { + "bluebird": "^3.7.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/sequelize-pool": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/sequelize-pool/-/sequelize-pool-6.1.0.tgz", + "integrity": "sha512-4YwEw3ZgK/tY/so+GfnSgXkdwIJJ1I32uZJztIEgZeAO6HMgj64OzySbWLgxj+tXhZCJnzRfkY9gINw8Ft8ZMg==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/sequelize/node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/sequelize/node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/sequelize/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/sequelize/node_modules/moment": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", + "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==", + "engines": { + "node": "*" + } + }, + "node_modules/sequelize/node_modules/moment-timezone": { + "version": "0.5.33", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.33.tgz", + "integrity": "sha512-PTc2vcT8K9J5/9rDEPe5czSIKgLoGsH8UNpA4qZTVw0Vd/Uz19geE9abbIOQKaAQFcnQ3v5YEXrbSc5BpshH+w==", + "dependencies": { + "moment": ">= 2.9.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/sequelize/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/sequelize/node_modules/semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/sequelize/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/sequelize/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/serialize-javascript": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", + "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/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==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "node_modules/set-value": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-3.0.2.tgz", + "integrity": "sha512-npjkVoz+ank0zjlV9F47Fdbjfj/PfXyVhZvGALWsyIYU/qrMzpi6avjKW3/7KeSU2Df3I46BrN1xOI1+6vW0hA==", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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==", + "dev": true + }, + "node_modules/shelljs": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.3.tgz", + "integrity": "sha512-fc0BKlAWiLpwZljmOvAOTE/gXawtCoNrP5oaY7KIaQbbyHeQVg01pSEuEGvGh3HEdBU4baCD7wQBwADmM/7f7A==", + "dev": true, + "dependencies": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + }, + "bin": { + "shjs": "bin/shjs" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/shx": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/shx/-/shx-0.3.2.tgz", + "integrity": "sha512-aS0mWtW3T2sHAenrSrip2XGv39O9dXIFUqxAEWHEOS1ePtGIBavdPJY1kE2IHl14V/4iCbUiNDPGdyYTtmhSoA==", + "dev": true, + "dependencies": { + "es6-object-assign": "^1.0.3", + "minimist": "^1.2.0", + "shelljs": "^0.8.1" + }, + "bin": { + "shx": "lib/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/shx/node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=" + }, + "node_modules/signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, + "node_modules/simple-oauth2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/simple-oauth2/-/simple-oauth2-4.2.0.tgz", + "integrity": "sha512-AV62tGdq9JfLd/uveKpeNtQl+VVm89a35QKlwGuvisYIjCoz2ZmTGRGuSIGiYr+QUhSKJ5kYN1jq2BBa/ac/GQ==", + "dependencies": { + "@hapi/hoek": "^9.0.4", + "@hapi/wreck": "^17.0.0", + "debug": "^4.1.1", + "joi": "^17.3.0" + } + }, + "node_modules/simple-oauth2/node_modules/@hapi/hoek": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.1.tgz", + "integrity": "sha512-gfta+H8aziZsm8pZa0vj04KO6biEiisppNgA1kbJvFrrWu9Vm7eaUEy76DIxsuTaWvti5fkJVhllWc6ZTE+Mdw==" + }, + "node_modules/simple-oauth2/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/simple-oauth2/node_modules/joi": { + "version": "17.4.2", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.4.2.tgz", + "integrity": "sha512-Lm56PP+n0+Z2A2rfRvsfWVDXGEWjXxatPopkQ8qQ5mxCEhwHG+Ettgg5o98FFaxilOxozoa14cFhrE/hOzh/Nw==", + "dependencies": { + "@hapi/hoek": "^9.0.0", + "@hapi/topo": "^5.0.0", + "@sideway/address": "^4.1.0", + "@sideway/formula": "^3.0.0", + "@sideway/pinpoint": "^2.0.0" + } + }, + "node_modules/simple-oauth2/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "dev": true, + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/simple-swizzle/node_modules/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==", + "dev": true + }, + "node_modules/sinon": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.5.0.tgz", + "integrity": "sha512-AoD0oJWerp0/rY9czP/D6hDTTUYGpObhZjMpd7Cl/A6+j0xBE+ayL/ldfggkBXUs0IkvIiM1ljM8+WkOc5k78Q==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^1.4.0", + "@sinonjs/formatio": "^3.2.1", + "@sinonjs/samsam": "^3.3.3", + "diff": "^3.5.0", + "lolex": "^4.2.0", + "nise": "^1.5.2", + "supports-color": "^5.5.0" + } + }, + "node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/slice-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/socket.io-client": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.4.0.tgz", + "integrity": "sha512-M6xhnKQHuuZd4Ba9vltCLT9oa+YvTsP8j9NcEiLElfIg8KeYPyhWOes6x4t+LTAC8enQbE/995AdTem2uNyKKQ==", + "dependencies": { + "backo2": "1.0.2", + "component-bind": "1.0.0", + "component-emitter": "~1.3.0", + "debug": "~3.1.0", + "engine.io-client": "~3.5.0", + "has-binary2": "~1.0.2", + "indexof": "0.0.1", + "parseqs": "0.0.6", + "parseuri": "0.0.6", + "socket.io-parser": "~3.3.0", + "to-array": "0.1.4" + } + }, + "node_modules/socket.io-client/node_modules/component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + }, + "node_modules/socket.io-parser": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.2.tgz", + "integrity": "sha512-FJvDBuOALxdCI9qwRrO/Rfp9yfndRtc1jSgVgV8FDraihmSP/MLGD5PEuJrNfjALvcQ+vMDM/33AWOYP/JSjDg==", + "dependencies": { + "component-emitter": "~1.3.0", + "debug": "~3.1.0", + "isarray": "2.0.1" + } + }, + "node_modules/socket.io-parser/node_modules/component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + }, + "node_modules/sorted-array-functions": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/sorted-array-functions/-/sorted-array-functions-1.2.0.tgz", + "integrity": "sha512-sWpjPhIZJtqO77GN+LD8dDsDKcWZ9GCOJNqKzi1tvtjGIzwfoyuRH8S0psunmc6Z5P+qfDqztSbwYR5X/e1UTg==" + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "dev": true + }, + "node_modules/split-ca": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split-ca/-/split-ca-1.0.1.tgz", + "integrity": "sha1-bIOv82kvphJW4M0ZfgXp3hV2kaY=" + }, + "node_modules/split-on-first": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", + "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "node_modules/sqlite3": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.0.2.tgz", + "integrity": "sha512-1SdTNo+BVU211Xj1csWa8lV6KM0CtucDwRyA0VHl91wEH1Mgh7RxUpI4rVvG7OhHrzCSGaVyW5g8vKvlrk9DJA==", + "hasInstallScript": true, + "dependencies": { + "node-addon-api": "^3.0.0", + "node-pre-gyp": "^0.11.0" + }, + "optionalDependencies": { + "node-gyp": "3.x" + }, + "peerDependencies": { + "node-gyp": "3.x" + }, + "peerDependenciesMeta": { + "node-gyp": { + "optional": true + } + } + }, + "node_modules/sqlite3/node_modules/node-pre-gyp": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz", + "integrity": "sha512-TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q==", + "deprecated": "Please upgrade to @mapbox/node-pre-gyp: the non-scoped node-pre-gyp package is deprecated and only the @mapbox scoped package will recieve updates in the future", + "dependencies": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + }, + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" + } + }, + "node_modules/sqlite3/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/ssf": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/ssf/-/ssf-0.11.2.tgz", + "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==", + "dependencies": { + "frac": "~1.1.2" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/ssh2": { + "version": "0.8.9", + "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-0.8.9.tgz", + "integrity": "sha512-GmoNPxWDMkVpMFa9LVVzQZHF6EW3WKmBwL+4/GeILf2hFmix5Isxm7Amamo8o7bHiU0tC+wXsGcUXOxp8ChPaw==", + "dependencies": { + "ssh2-streams": "~0.4.10" + }, + "engines": { + "node": ">=5.2.0" + } + }, + "node_modules/ssh2-streams": { + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/ssh2-streams/-/ssh2-streams-0.4.10.tgz", + "integrity": "sha512-8pnlMjvnIZJvmTzUIIA5nT4jr2ZWNNVHwyXfMGdRJbug9TpI3kd99ffglgfSWqujVv/0gxwMsDn9j9RVst8yhQ==", + "dependencies": { + "asn1": "~0.2.0", + "bcrypt-pbkdf": "^1.0.2", + "streamsearch": "~0.1.2" + }, + "engines": { + "node": ">=5.2.0" + } + }, + "node_modules/sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "optional": true, + "dependencies": { + "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" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sshpk/node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "optional": true + }, + "node_modules/stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/streamsearch": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", + "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/strict-uri-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", + "integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY=", + "engines": { + "node": ">=4" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string.prototype.padend": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.0.0.tgz", + "integrity": "sha1-86rvfBcZ8XDF6rHDK/eA2W4h8vA=", + "dev": true, + "dependencies": { + "define-properties": "^1.1.2", + "es-abstract": "^1.4.3", + "function-bind": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimleft": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz", + "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.trimright": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz", + "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/suncalc": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/suncalc/-/suncalc-1.8.0.tgz", + "integrity": "sha1-HZiYEJVjB4dQ9JlKlZ5lTYdqy/U=" + }, + "node_modules/superagent": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz", + "integrity": "sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==", + "dev": true, + "dependencies": { + "component-emitter": "^1.2.0", + "cookiejar": "^2.1.0", + "debug": "^3.1.0", + "extend": "^3.0.0", + "form-data": "^2.3.1", + "formidable": "^1.2.0", + "methods": "^1.1.1", + "mime": "^1.4.1", + "qs": "^6.5.1", + "readable-stream": "^2.3.5" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/supertest": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/supertest/-/supertest-3.4.2.tgz", + "integrity": "sha512-WZWbwceHUo2P36RoEIdXvmqfs47idNNZjCuJOqDz6rvtkk8ym56aU5oglORCpPeXGxT7l9rkJ41+O1lffQXYSA==", + "dev": true, + "dependencies": { + "methods": "^1.1.2", + "superagent": "^3.8.3" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/table": { + "version": "6.0.7", + "resolved": "https://registry.npmjs.org/table/-/table-6.0.7.tgz", + "integrity": "sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==", + "dev": true, + "dependencies": { + "ajv": "^7.0.2", + "lodash": "^4.17.20", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table/node_modules/ajv": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.2.3.tgz", + "integrity": "sha512-idv5WZvKVXDqKralOImQgPM9v6WOdLNa0IY3B3doOjw/YxRGT8I+allIJ6kd7Uaj+SF1xZUSU+nPM5aDNBVtnw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/table/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/table/node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/table/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/table/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/table/node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/table/node_modules/string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/table/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/taffydb": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz", + "integrity": "sha1-fLy2S1oUG2ou/CxdLGe04VCyomg=", + "dev": true + }, + "node_modules/tar": { + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", + "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", + "dependencies": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + }, + "engines": { + "node": ">=4.5" + } + }, + "node_modules/tar-fs": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.0.1.tgz", + "integrity": "sha512-6tzWDMeroL87uF/+lin46k+Q+46rAJ0SyPGz7OW7wTgblI273hsBqk2C1j0/xNadNLKDTUL9BukSjB7cwgmlPA==", + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.0.0" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar-stream/node_modules/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==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/term-size": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", + "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/text-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", + "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==", + "dev": true + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "node_modules/timers-ext": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", + "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==", + "dependencies": { + "es5-ext": "~0.10.46", + "next-tick": "1" + } + }, + "node_modules/tinytim": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/tinytim/-/tinytim-0.1.1.tgz", + "integrity": "sha1-yWih5VWa2VUyJO92J7qzTjyu+Kg=", + "engines": { + "node": ">= 0.2.0" + } + }, + "node_modules/to-array": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", + "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=" + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/topo": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/topo/-/topo-3.0.3.tgz", + "integrity": "sha512-IgpPtvD4kjrJ7CRA3ov2FhWQADwv+Tdqbsf1ZnPUSAtCJ9e1Z44MmoSGDXGk4IppoZA7jd/QRkNddlLJWlUZsQ==", + "deprecated": "This module has moved and is now available at @hapi/topo. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues.", + "dependencies": { + "hoek": "6.x.x" + } + }, + "node_modules/toposort-class": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz", + "integrity": "sha1-f/0feMi+KMO6Rc1OGj9e4ZO9mYg=" + }, + "node_modules/touch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "dev": true, + "dependencies": { + "nopt": "~1.0.10" + }, + "bin": { + "nodetouch": "bin/nodetouch.js" + } + }, + "node_modules/touch/node_modules/nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", + "dev": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/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==", + "optional": true, + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tracer": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/tracer/-/tracer-1.1.4.tgz", + "integrity": "sha512-43Ws4c/V6VK9i2MLjmeYVtXZ+YUHU/qFXznJqYgI8F5nNrIQ4v9ImBAk+JjfPHS4StlpmaHzgR5qpBydbD9TkA==", + "dependencies": { + "colors": "1.4.0", + "dateformat": "3.0.3", + "mkdirp": "^1.0.4", + "tinytim": "0.1.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/tracer/node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/tracer/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/triple-beam": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", + "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==", + "dev": true + }, + "node_modules/tsconfig-paths": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", + "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.0", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/tslib": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "optional": true, + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + }, + "node_modules/type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + }, + "node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/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==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", + "dev": true + }, + "node_modules/uglify-js": { + "version": "3.13.2", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.13.2.tgz", + "integrity": "sha512-SbMu4D2Vo95LMC/MetNaso1194M1htEA+JrqE9Hk+G2DhI+itfS9TRu9ZKeCahLDNa/J3n4MqUJ/fOHMzQpRWw==", + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/uid-safe": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", + "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==", + "dev": true, + "dependencies": { + "random-bytes": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/umzug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/umzug/-/umzug-2.2.0.tgz", + "integrity": "sha512-xZLW76ax70pND9bx3wqwb8zqkFGzZIK8dIHD9WdNy/CrNfjWcwQgQkGCuUqcuwEBvUm+g07z+qWvY+pxDmMEEw==", + "dependencies": { + "babel-runtime": "^6.23.0", + "bluebird": "^3.5.3" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unbox-primitive/node_modules/has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undefsafe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.3.tgz", + "integrity": "sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A==", + "dev": true, + "dependencies": { + "debug": "^2.2.0" + } + }, + "node_modules/undefsafe/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/underscore": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz", + "integrity": "sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g==", + "dev": true + }, + "node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dev": true, + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-notifier": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.3.tgz", + "integrity": "sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A==", + "dev": true, + "dependencies": { + "boxen": "^4.2.0", + "chalk": "^3.0.0", + "configstore": "^5.0.1", + "has-yarn": "^2.1.0", + "import-lazy": "^2.1.0", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.3.1", + "is-npm": "^4.0.0", + "is-yarn-global": "^0.3.0", + "latest-version": "^5.0.0", + "pupa": "^2.0.1", + "semver-diff": "^3.1.1", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/yeoman/update-notifier?sponsor=1" + } + }, + "node_modules/update-notifier/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/update-notifier/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/update-notifier/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/update-notifier/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/update-notifier/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/update-notifier/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "devOptional": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "dev": true, + "dependencies": { + "prepend-http": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", + "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/validator": { + "version": "10.11.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-10.11.0.tgz", + "integrity": "sha512-X/p3UZerAIsbBfN/IwahhYaBbY68EN/UQBWHtsbXGT5bfrH/p4NQzUCG1kF/rtKaNpnJ7jAu6NGTdSNtyNIXMw==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "engines": [ + "node >=0.6.0" + ], + "optional": true, + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/webcrypto-core": { + "version": "0.1.26", + "resolved": "https://registry.npmjs.org/webcrypto-core/-/webcrypto-core-0.1.26.tgz", + "integrity": "sha512-BZVgJZkkHyuz8loKvsaOKiBDXDpmMZf5xG4QAOlSeYdXlFUl9c1FRrVnAXcOdb4fTHMG+TRu81odJwwSfKnWTA==", + "dependencies": { + "tslib": "^1.7.1" + } + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-boxed-primitive/node_modules/has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-boxed-primitive/node_modules/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==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "node_modules/wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dependencies": { + "string-width": "^1.0.2 || 2" + } + }, + "node_modules/widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "dev": true, + "dependencies": { + "string-width": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/widest-line/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/widest-line/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/widest-line/node_modules/string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/widest-line/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/winston": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.2.1.tgz", + "integrity": "sha512-zU6vgnS9dAWCEKg/QYigd6cgMVVNwyTzKs81XZtTFuRwJOcDdBg7AU0mXVyNbs7O5RH2zdv+BdNZUlx7mXPuOw==", + "dev": true, + "dependencies": { + "async": "^2.6.1", + "diagnostics": "^1.1.1", + "is-stream": "^1.1.0", + "logform": "^2.1.1", + "one-time": "0.0.4", + "readable-stream": "^3.1.1", + "stack-trace": "0.0.x", + "triple-beam": "^1.3.0", + "winston-transport": "^4.3.0" + }, + "engines": { + "node": ">= 6.4.0" + } + }, + "node_modules/winston-transport": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.3.0.tgz", + "integrity": "sha512-B2wPuwUi3vhzn/51Uukcao4dIduEiPOcOt9HJ3QeaXgkJ5Z7UwpBzxS4ZGNHtrxrUvTwemsQiSys0ihOf8Mp1A==", + "dev": true, + "dependencies": { + "readable-stream": "^2.3.6", + "triple-beam": "^1.2.0" + }, + "engines": { + "node": ">= 6.4.0" + } + }, + "node_modules/winston/node_modules/readable-stream": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", + "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/wkx": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/wkx/-/wkx-0.5.0.tgz", + "integrity": "sha512-Xng/d4Ichh8uN4l0FToV/258EjMGU9MGcA0HV2d9B/ZpZB3lqQm7nkOdZdm5GhKtLLhAE7PiVQwN4eN+2YJJUg==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/wmf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wmf/-/wmf-1.0.2.tgz", + "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/word": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/word/-/word-0.3.0.tgz", + "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" + }, + "node_modules/workerpool": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.0.tgz", + "integrity": "sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg==", + "dev": true + }, + "node_modules/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==", + "dependencies": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/wrap-ansi/node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "node_modules/wrap-ansi/node_modules/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=", + "engines": { + "node": ">=4" + } + }, + "node_modules/wrap-ansi/node_modules/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==", + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "dependencies": { + "async-limiter": "~1.0.0" + } + }, + "node_modules/xdg-basedir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/xlsx": { + "version": "0.16.9", + "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.16.9.tgz", + "integrity": "sha512-gxi1I3EasYvgCX1vN9pGyq920Ron4NO8PNfhuoA3Hpq6Y8f0ECXiy4OLrK4QZBnj1jx3QD+8Fq5YZ/3mPZ5iXw==", + "dependencies": { + "adler-32": "~1.2.0", + "cfb": "^1.1.4", + "codepage": "~1.14.0", + "commander": "~2.17.1", + "crc-32": "~1.2.0", + "exit-on-epipe": "~1.0.1", + "fflate": "^0.3.8", + "ssf": "~0.11.2", + "wmf": "~1.0.1", + "word": "~0.3.0" + }, + "bin": { + "xlsx": "bin/xlsx.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/xlsx/node_modules/commander": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==" + }, + "node_modules/xmlcreate": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.3.tgz", + "integrity": "sha512-HgS+X6zAztGa9zIK3Y3LXuJes33Lz9x+YyTxgrkIdabu2vqcGOWwdfCpf1hWLRrd553wd4QCDf6BBO6FfdsRiQ==", + "dev": true + }, + "node_modules/xmlhttprequest-ssl": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.3.tgz", + "integrity": "sha512-3XfeQE/wNkvrIktn2Kf0869fC0BN6UpydVasGIeSm2B1Llihf7/0UfZM+eCkOw3P7bP4+qPgqhm7ZoxuJtFU0Q==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/y18n": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", + "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==" + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "node_modules/yargs": { + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", + "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", + "dependencies": { + "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.1" + } + }, + "node_modules/yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "node_modules/yargs-parser/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "dependencies": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-unparser/node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yargs/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "node_modules/yargs/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/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=", + "engines": { + "node": ">=4" + } + }, + "node_modules/yargs/node_modules/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==", + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yeast": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=" + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zlibjs": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/zlibjs/-/zlibjs-0.3.1.tgz", + "integrity": "sha1-UBl+2yihxCymWcyLTmqd3W1ERVQ=", + "engines": { + "node": "*" + } + } + }, "dependencies": { "@babel/compat-data": { "version": "7.13.12", @@ -1789,15 +14472,6 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.32.tgz", "integrity": "sha512-/Ctrftx/zp4m8JOujM5ZhwzlWLx22nbQJiVqz8/zE15gOeEW+uly3FSX4fGFpcfEvFzXcMCJwq9lGVWgyARXhg==" }, - "@types/node-jose": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/@types/node-jose/-/node-jose-1.1.8.tgz", - "integrity": "sha512-AFcArbplUaO+DqGVEPaiz/guw3uUA+dRHjaj26EEDF0DmTEPUd3dEdfdJMUx4kD65EAR3TnI1iHIcb31+Ko87Q==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, "@types/prop-types": { "version": "15.7.3", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz", @@ -1848,7 +14522,8 @@ "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==", - "dev": true + "dev": true, + "requires": {} }, "adler-32": { "version": "1.2.0", @@ -2390,12 +15065,6 @@ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" }, - "base64url": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz", - "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==", - "dev": true - }, "basic-auth": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", @@ -3575,7 +16244,8 @@ "ws": { "version": "7.4.6", "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==" + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "requires": {} } } }, @@ -3682,12 +16352,6 @@ "integrity": "sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw=", "dev": true }, - "es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", - "dev": true - }, "es6-symbol": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", @@ -4224,7 +16888,8 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/eslint-plugin-require-jsdoc/-/eslint-plugin-require-jsdoc-1.0.4.tgz", "integrity": "sha1-Ayq+m+HzatDmbNTxSbS/q2/NTp0=", - "dev": true + "dev": true, + "requires": {} }, "eslint-scope": { "version": "5.1.1", @@ -4422,7 +17087,8 @@ "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "devOptional": true }, "extsprintf": { "version": "1.3.0", @@ -4439,7 +17105,8 @@ "fast-json-stable-stringify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "devOptional": true }, "fast-levenshtein": { "version": "2.0.6", @@ -5378,7 +18045,8 @@ "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "devOptional": true }, "is-windows": { "version": "1.0.2", @@ -5513,6 +18181,12 @@ "topo": "3.x.x" } }, + "jose": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/jose/-/jose-4.3.7.tgz", + "integrity": "sha512-S7Xfsy8nN9Iw/AZxk+ZxEbd5ImIwJPM0TfAo8zI8FF+3lidQ2yiK4dqzsaPKSbZD0woNVSY0KCql6rlKc5V7ug==", + "dev": true + }, "js-beautify": { "version": "1.13.5", "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.13.5.tgz", @@ -5670,7 +18344,8 @@ "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==" + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "devOptional": true }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", @@ -5681,7 +18356,8 @@ "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=" + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "devOptional": true }, "json5": { "version": "1.0.1", @@ -6054,12 +18730,6 @@ "integrity": "sha512-gKO5uExCXvSm6zbF562EvM+rd1kQDnB9AZBbiQVzf1ZmdDpxUSvpnAaVOP83N/31mRK8Ml8/VE8DMvsAZQ+7wg==", "dev": true }, - "long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", - "dev": true - }, "long-timeout": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/long-timeout/-/long-timeout-0.1.1.tgz", @@ -6120,7 +18790,8 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-5.3.0.tgz", "integrity": "sha512-/V1MnLL/rgJ3jkMWo84UR+K+jF1cxNG1a+KwqeXqTIJ+jtA8aWSHuigx8lTzauiIjBDbwF3NcWQMotd0Dm39jA==", - "dev": true + "dev": true, + "requires": {} }, "marked": { "version": "2.0.3", @@ -6599,9 +19270,9 @@ } }, "mock-http-server": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/mock-http-server/-/mock-http-server-1.4.2.tgz", - "integrity": "sha512-41bkFnTv2+gOffvfH3kNK9yatHEvKnlTH0aCshQrPvuu67urtI9d0l2hUxK5YrdvDJEI01GR+9Gjn2l90Z5xkA==", + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/mock-http-server/-/mock-http-server-1.4.5.tgz", + "integrity": "sha512-7WZx7RJmMQEvTxJTOJt9U6+gLFl0JFaPHLSsAngfLaOgr3UH+ci7PW8049quyXwZGI4mh3W8oAch6w406ccyRQ==", "dev": true, "requires": { "body-parser": "^1.18.1", @@ -6809,12 +19480,6 @@ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" }, - "node-forge": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", - "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", - "dev": true - }, "node-gyp": { "version": "3.8.0", "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", @@ -6863,23 +19528,6 @@ } } }, - "node-jose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/node-jose/-/node-jose-2.0.0.tgz", - "integrity": "sha512-j8zoFze1gijl8+DK/dSXXqX7+o2lMYv1XS+ptnXgGV/eloQaqq1YjNtieepbKs9jBS4WTnMOqyKSaQuunJzx0A==", - "dev": true, - "requires": { - "base64url": "^3.0.1", - "buffer": "^5.5.0", - "es6-promise": "^4.2.8", - "lodash": "^4.17.15", - "long": "^4.0.0", - "node-forge": "^0.10.0", - "pako": "^1.0.11", - "process": "^0.11.10", - "uuid": "^3.3.3" - } - }, "node-nlp": { "version": "4.19.7", "resolved": "https://registry.npmjs.org/node-nlp/-/node-nlp-4.19.7.tgz", @@ -7622,19 +20270,16 @@ "optional": true }, "oauth2-mock-server": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/oauth2-mock-server/-/oauth2-mock-server-3.2.0.tgz", - "integrity": "sha512-L0GPEqsri4uW6pZSTS2CE4/T0dOvUkmoxpQCGhStqrGUs0VzgzLAqT5qGmMrDWsI0CzC+GK9dSaJsWh8kCEqxw==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/oauth2-mock-server/-/oauth2-mock-server-4.1.1.tgz", + "integrity": "sha512-fvlQ9VkYVS8gddnxTEiZ4YBrSzuxHWbHdNI247+YAW3Au9IV2wbi1LIsh9LkV8GO5W9kDdYZqGQEF+AvLTXg9A==", "dev": true, "requires": { - "@types/node-jose": "^1.1.5", "basic-auth": "^2.0.1", - "body-parser": "^1.19.0", "cors": "^2.8.5", "express": "^4.17.1", - "jsonwebtoken": "^8.5.1", + "jose": "^4.3.6", "lodash.isplainobject": "^4.0.6", - "node-jose": "^2.0.0", "uuid": "^8.3.2" }, "dependencies": { @@ -7894,12 +20539,6 @@ "resolved": "https://registry.npmjs.org/pad-start/-/pad-start-1.0.2.tgz", "integrity": "sha1-I+W6s+lkRrYoFs/28VCXXwQNGxQ=" }, - "pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true - }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -8020,12 +20659,6 @@ "resolved": "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz", "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==" }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "dev": true - }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -8123,9 +20756,9 @@ "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" }, "query-string": { - "version": "6.14.1", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.14.1.tgz", - "integrity": "sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.0.1.tgz", + "integrity": "sha512-uIw3iRvHnk9to1blJCG3BTc+Ro56CBowJXKmNNAm3RulvPBzWLRqKSiiDk+IplJhsydwtuNMHi8UGQFcCLVfkA==", "requires": { "decode-uri-component": "^0.2.0", "filter-obj": "^1.1.0", @@ -9041,6 +21674,14 @@ "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", "integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY=" }, + "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" + } + }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", @@ -9102,14 +21743,6 @@ "define-properties": "^1.1.3" } }, - "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", @@ -9690,6 +22323,7 @@ "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "devOptional": true, "requires": { "punycode": "^2.1.0" } From 9a80f0ae862496979318445e64b8151ed494634e Mon Sep 17 00:00:00 2001 From: Euguuu Date: Tue, 14 Dec 2021 22:29:47 +0100 Subject: [PATCH 017/164] fix test --- server/test/lib/oauth2/oauth2manager.test.js | 15 ++++ .../withings/lib/withings.poll.test.js | 87 +++++++++++++++++++ 2 files changed, 102 insertions(+) diff --git a/server/test/lib/oauth2/oauth2manager.test.js b/server/test/lib/oauth2/oauth2manager.test.js index 1cd973ebb1..b24e9c600f 100755 --- a/server/test/lib/oauth2/oauth2manager.test.js +++ b/server/test/lib/oauth2/oauth2manager.test.js @@ -125,3 +125,18 @@ describe('oauth2manager failled test', () => { return assert.equal(result.success, false); }); }); + +describe('oauth2manager failled test', () => { + // check error + const manager = new OAuth2Manager(gladys); + + it('oauth manager get error on refresh token test ', async () => { + const queryType = 'get'; + const queryUrl = `${testUrl}/userinfo`; + const queryParams = 'param1=testParam'; + + const result = await manager.executeOauth2HTTPQuery(testServiceId, testUserId, queryType, queryUrl, queryParams); + + return assert.equal(result, null); + }); +}); diff --git a/server/test/services/withings/lib/withings.poll.test.js b/server/test/services/withings/lib/withings.poll.test.js index 26ab045865..bc59001cef 100644 --- a/server/test/services/withings/lib/withings.poll.test.js +++ b/server/test/services/withings/lib/withings.poll.test.js @@ -312,5 +312,92 @@ describe('WithingsHandler poll', () => { // 18 feature - 1 feature unknown = 17 state to save assert.callCount(gladys.device.saveHistoricalState, 17); assert.calledWith(gladys.device.saveHistoricalState, deviceDef); + + const deviceToPoll2 = { + id: 'gdfgdfgd-7207-4e55-b893-gfdgdfgkjliu', + name: 'Withings - string', + model: 'string', + poll_frequency: 86400000, + selector: 'withings-string-9f66c962-7207-4e55-b893-712642f5e043', + service_id: '55f177d7-bc35-4560-a1f0-4c58b9e9f2c4', + should_poll: true, + external_id: '9f66c962-7207-4e55-b893-712642f5e043', + params: [ + { + name: 'withingsDeviceId', + value: 'withingsDevideId2', + }, + ], + }; + deviceToPoll2.features = [ + { + id: '832fd6ce-9c2b-4806-bd0f-fbc9bb2432a4', + type: DEVICE_FEATURE_TYPES.SENSOR.INTEGER, + last_value_changed: new Date(), + }, + ]; + await withingsHandler.poll(deviceToPoll2); + + deviceDef.params = [{ name: 'withingsDeviceId', value: 'withingsDevideId2' }]; + deviceDef.features = deviceToPoll2.features; + assert.calledWith(gladys.device.saveHistoricalState, deviceDef); + + const deviceToPoll3 = { + id: 'gdfgdfgd-7207-4e55-b893-gfdgdfgkjliu', + name: 'Withings - string', + model: 'string', + poll_frequency: 86400000, + selector: 'withings-string-9f66c962-7207-4e55-b893-712642f5e043', + service_id: '55f177d7-bc35-4560-a1f0-4c58b9e9f2c4', + should_poll: true, + external_id: '9f66c962-7207-4e55-b893-712642f5e043', + params: [ + { + name: 'withingsDeviceId', + value: 'withingsDevideId3', + }, + ], + }; + deviceToPoll3.features = [ + { + id: '832fd6ce-9c2b-4806-bd0f-fbc9bb2432a4', + type: DEVICE_FEATURE_TYPES.SENSOR.INTEGER, + last_value_changed: new Date(), + }, + ]; + await withingsHandler.poll(deviceToPoll3); + + deviceDef.params = [{ name: 'withingsDeviceId', value: 'withingsDevideId3' }]; + deviceDef.features = deviceToPoll3.features; + assert.calledWith(gladys.device.saveHistoricalState, deviceDef); + + const deviceToPoll4 = { + id: 'gdfgdfgd-7207-4e55-b893-gfdgdfgkjliu', + name: 'Withings - string', + model: 'string', + poll_frequency: 86400000, + selector: 'withings-string-9f66c962-7207-4e55-b893-712642f5e043', + service_id: '55f177d7-bc35-4560-a1f0-4c58b9e9f2c4', + should_poll: true, + external_id: '9f66c962-7207-4e55-b893-712642f5e043', + params: [ + { + name: 'withingsDeviceId', + value: 'withingsDevideId4', + }, + ], + }; + deviceToPoll4.features = [ + { + id: '832fd6ce-9c2b-4806-bd0f-fbc9bb2432a4', + type: DEVICE_FEATURE_TYPES.SENSOR.INTEGER, + last_value_changed: new Date(), + }, + ]; + await withingsHandler.poll(deviceToPoll4); + + deviceDef.params = [{ name: 'withingsDeviceId', value: 'withingsDevideId4' }]; + deviceDef.features = deviceToPoll4.features; + assert.calledWith(gladys.device.saveHistoricalState, deviceDef); }); }); From aa1f0b60439f6ee7336b7a7fe5a38054c3276b45 Mon Sep 17 00:00:00 2001 From: Euguuu Date: Mon, 3 Jan 2022 23:39:25 +0100 Subject: [PATCH 018/164] fix for review --- .../withings/devices/WithingsDeviceList.js | 17 +++-- .../all/withings/device-page/Device.jsx | 2 +- .../all/withings/device-page/actions.js | 62 ++++++++++--------- .../device/device.destroyBySelectorPattern.js | 61 ------------------ .../lib/device/device.destroyByServiceId.js | 36 +++++++++++ .../lib/device/device.saveHistoricalState.js | 15 +---- server/lib/device/index.js | 4 +- .../withings/lib/withings.deleteDevices.js | 2 +- server/services/withings/lib/withings.init.js | 2 +- server/services/withings/lib/withings.poll.js | 6 +- ...t.js => device.destroyByServiceId.test.js} | 6 +- .../lib/withings.deleteDevices.test.js | 2 +- .../withings/lib/withings.init.test.js | 10 +-- .../withings/lib/withings.poll.test.js | 18 +++--- 14 files changed, 108 insertions(+), 135 deletions(-) delete mode 100755 server/lib/device/device.destroyBySelectorPattern.js create mode 100755 server/lib/device/device.destroyByServiceId.js rename server/test/lib/device/{device.destroyBySelectorPattern.test.js => device.destroyByServiceId.test.js} (82%) diff --git a/front/cypress/integration/routes/integration/withings/devices/WithingsDeviceList.js b/front/cypress/integration/routes/integration/withings/devices/WithingsDeviceList.js index 65ebf70036..626c0564cf 100644 --- a/front/cypress/integration/routes/integration/withings/devices/WithingsDeviceList.js +++ b/front/cypress/integration/routes/integration/withings/devices/WithingsDeviceList.js @@ -1,6 +1,7 @@ describe('Withings device list', () => { const deviceBody = { name: 'Withings - Body', + model: 'Body', external_id: 'c43dbbbd-1091-44e7-b122-68911483d28b', selector: 'withings-body-c43dbbbd-1091-44e7-b122-68911483d28b', should_poll: 1, @@ -37,6 +38,7 @@ describe('Withings device list', () => { const deviceBodyPlus = { name: 'Withings - Body+', + model: 'Body+', external_id: 'c43dbbbd-1091-44e7-b144-68911483d28b', selector: 'withings-body+-c43dbbbd-1091-44e7-b144-68911483d28b', should_poll: 1, @@ -139,6 +141,7 @@ describe('Withings device list', () => { const deviceBodyCardio = { name: 'Withings - Body Cardio', + model: 'Body Cardio', external_id: 'c43dbbbd-1091-44e7-b166-68911483d28b', selector: 'withings-body+-c43dbbbd-1091-44e7-b166-68911483d28b', should_poll: 1, @@ -252,8 +255,9 @@ describe('Withings device list', () => { ] }; - const deviceSleep1 = { + const deviceScale = { name: 'Withings - Withings WBS01', + model: 'Withings WBS01', external_id: 'c43dbbbd-1091-44e7-b177-68911483d28b', selector: 'withings-body-c43dbbbd-1091-44e7-b177-68911483d28b', should_poll: 1, @@ -277,6 +281,7 @@ describe('Withings device list', () => { const deviceBPM1 = { name: 'Withings - BPM Core', + model: 'BPM Core', external_id: 'c43dbbbd-1091-44e7-b199-68911483d28b', selector: 'withings-bpm-c43dbbbd-1091-44e7-b199-68911483d28b', should_poll: 1, @@ -314,6 +319,7 @@ describe('Withings device list', () => { const deviceBPM2 = { name: 'Withings - BPM Connect', + model: 'BPM Connect', external_id: 'c43dbbbd-1091-44e7-b120-68911483d28b', selector: 'withings-bpm-c43dbbbd-1091-44e7-b120-68911483d28b', should_poll: 1, @@ -379,6 +385,7 @@ describe('Withings device list', () => { const deviceThermo = { name: 'Withings - Thermo', + model: 'Thermo', external_id: 'c43dbbbd-1091-44e7-b121-68911483d28b', selector: 'withings-thermo-c43dbbbd-1091-44e7-b121-68911483d28b', should_poll: 1, @@ -436,7 +443,7 @@ describe('Withings device list', () => { cy.createDevice(deviceBodyPlus, 'withings'); cy.createDevice(deviceBodyCardio, 'withings'); - cy.createDevice(deviceSleep1, 'withings'); + cy.createDevice(deviceScale, 'withings'); cy.createDevice(deviceBPM1, 'withings'); cy.createDevice(deviceBPM2, 'withings'); @@ -493,12 +500,12 @@ describe('Withings device list', () => { }); }); - it('Check Withings - Sleep device', () => { - cy.contains('.card-header', deviceSleep1.name) + it('Check Withings - Scale device', () => { + cy.contains('.card-header', deviceScale.name) .should('exist') .parent('.card') .within(() => { - cy.get('img').should('have.attr', 'src', '/assets/images/withings/sleep-analyzer-single.png'); + cy.get('img').should('have.attr', 'src', '/assets/images/withings/body-plus-black-kg.jpg'); cy.get('select').should('have.value', ''); cy.get('span').should('exist'); cy.get('.fe-activity').should('exist'); diff --git a/front/src/routes/integration/all/withings/device-page/Device.jsx b/front/src/routes/integration/all/withings/device-page/Device.jsx index 00d8ca0a3d..0c163d3bde 100644 --- a/front/src/routes/integration/all/withings/device-page/Device.jsx +++ b/front/src/routes/integration/all/withings/device-page/Device.jsx @@ -81,7 +81,7 @@ class WithingsDeviceBox extends Component { {<Text} /> diff --git a/front/src/routes/integration/all/withings/device-page/actions.js b/front/src/routes/integration/all/withings/device-page/actions.js index 71dc8eaee9..ed80f6da1b 100755 --- a/front/src/routes/integration/all/withings/device-page/actions.js +++ b/front/src/routes/integration/all/withings/device-page/actions.js @@ -45,38 +45,42 @@ const actions = store => ({ const withingsDevicesReceived = await state.httpClient.get('/api/v1/service/withings/device', options); // Build map of device image by device name - const mapOfDeviceImgByName = new Map(); - mapOfDeviceImgByName.set('Withings - Withings WBS01', 'sleep-analyzer-single.png'); - mapOfDeviceImgByName.set('Withings - WS30', 'sleep-analyzer-single.png'); - mapOfDeviceImgByName.set('Withings - Kid Scale', 'KidScale.jpg'); - mapOfDeviceImgByName.set('Withings - Smart Body Analyzer', 'body-plus-black-kg.jpg'); - mapOfDeviceImgByName.set('Withings - Body+', 'body-plus-black-kg.jpg'); - mapOfDeviceImgByName.set('Withings - Body Cardio', 'body-cardio-black-kg.jpg'); - mapOfDeviceImgByName.set('Withings - Body', 'body-black-kg.jpg'); - mapOfDeviceImgByName.set('Withings - Smart Baby Monitor', 'SmartBabyMonitor.jpg'); - mapOfDeviceImgByName.set('Withings - Withings Home', 'home.jpg'); - mapOfDeviceImgByName.set('Withings - Withings Blood Pressure Monitor V1', 'bpm-connect.jpg'); - mapOfDeviceImgByName.set('Withings - Withings Blood Pressure Monitor V2', 'bpm-connect.jpg'); - mapOfDeviceImgByName.set('Withings - Withings Blood Pressure Monitor V3', 'bpm-connect.jpg'); - mapOfDeviceImgByName.set('Withings - BPM Core', 'bpm-core.jpg'); - mapOfDeviceImgByName.set('Withings - BPM Connect', 'bpm-connect.jpg'); - mapOfDeviceImgByName.set('Withings - Pulse', 'pulse-hr-black.jpg'); - mapOfDeviceImgByName.set('Withings - Activite', 'go.jpg'); - mapOfDeviceImgByName.set('Withings - Activite (Pop, Steel)', 'steel-white.jpg'); - mapOfDeviceImgByName.set('Withings - Withings Go', 'go.jpg'); - mapOfDeviceImgByName.set('Withings - Activite Steel HR', 'steel-hr-36b.jpg'); - mapOfDeviceImgByName.set('Withings - Activite Steel HR Sport Edition', 'steel-hr-sport-40b.jpg'); - mapOfDeviceImgByName.set('Withings - Pulse HR', 'pulse-hr-black.jpg'); - mapOfDeviceImgByName.set('Withings - Move', 'move-ecg-white-kg.jpg'); - mapOfDeviceImgByName.set('Withings - Move ECG', 'move-ecg-white-kg.jpg'); - mapOfDeviceImgByName.set('Withings - Aura Dock', 'Aura_2.jpg'); - mapOfDeviceImgByName.set('Withings - Aura Sensor', 'Aura_2.jpg'); - mapOfDeviceImgByName.set('Withings - Aura Sensor V2', 'Aura_2.jpg'); - mapOfDeviceImgByName.set('Withings - Thermo', 'thermo-c.jpg'); + const mapOfDeviceImgByModel = new Map(); + mapOfDeviceImgByModel.set('Kid Scale', 'KidScale.jpg'); + mapOfDeviceImgByModel.set('WBS08', 'body-cardio-black-kg.jpg'); + mapOfDeviceImgByModel.set('WBS10', 'body-cardio-black-kg.jpg'); + mapOfDeviceImgByModel.set('WBS11', 'body-cardio-black-kg.jpg'); + mapOfDeviceImgByModel.set('WS30', 'body-cardio-black-kg.jpg'); + mapOfDeviceImgByModel.set('Smart Body Analyzer', 'body-cardio-black-kg.jpg'); + mapOfDeviceImgByModel.set('Withings WBS01', 'body-plus-black-kg.jpg'); + mapOfDeviceImgByModel.set('Body+', 'body-plus-black-kg.jpg'); + mapOfDeviceImgByModel.set('Body Cardio', 'body-cardio-black-kg.jpg'); + mapOfDeviceImgByModel.set('Body', 'body-black-kg.jpg'); + mapOfDeviceImgByModel.set('Smart Baby Monitor', 'SmartBabyMonitor.jpg'); + mapOfDeviceImgByModel.set('Withings Home', 'home.jpg'); + mapOfDeviceImgByModel.set('Withings Blood Pressure Monitor V1', 'bpm-connect.jpg'); + mapOfDeviceImgByModel.set('Withings Blood Pressure Monitor V2', 'bpm-connect.jpg'); + mapOfDeviceImgByModel.set('Withings Blood Pressure Monitor V3', 'bpm-connect.jpg'); + mapOfDeviceImgByModel.set('BPM Core', 'bpm-core.jpg'); + mapOfDeviceImgByModel.set('BPM Connect', 'bpm-connect.jpg'); + mapOfDeviceImgByModel.set('BPM Connect Pro', 'bpm-connect.jpg'); + mapOfDeviceImgByModel.set('Pulse', 'pulse-hr-black.jpg'); + mapOfDeviceImgByModel.set('Activite', 'go.jpg'); + mapOfDeviceImgByModel.set('Activite (Pop, Steel)', 'steel-white.jpg'); + mapOfDeviceImgByModel.set('Withings Go', 'go.jpg'); + mapOfDeviceImgByModel.set('Activite Steel HR', 'steel-hr-36b.jpg'); + mapOfDeviceImgByModel.set('Activite Steel HR Sport Edition', 'steel-hr-sport-40b.jpg'); + mapOfDeviceImgByModel.set('Pulse HR', 'pulse-hr-black.jpg'); + mapOfDeviceImgByModel.set('Move', 'move-ecg-white-kg.jpg'); + mapOfDeviceImgByModel.set('Move ECG', 'move-ecg-white-kg.jpg'); + mapOfDeviceImgByModel.set('Aura Dock', 'Aura_2.jpg'); + mapOfDeviceImgByModel.set('Aura Sensor', 'Aura_2.jpg'); + mapOfDeviceImgByModel.set('Aura Sensor V2', 'Aura_2.jpg'); + mapOfDeviceImgByModel.set('Thermo', 'thermo-c.jpg'); store.setState({ withingsGetStatus: RequestStatus.Success, - withingsImgMap: mapOfDeviceImgByName, + withingsImgMap: mapOfDeviceImgByModel, withingsDevices: withingsDevicesReceived }); } catch (e) { diff --git a/server/lib/device/device.destroyBySelectorPattern.js b/server/lib/device/device.destroyBySelectorPattern.js deleted file mode 100755 index 1db88c4b79..0000000000 --- a/server/lib/device/device.destroyBySelectorPattern.js +++ /dev/null @@ -1,61 +0,0 @@ -const { Op } = require('sequelize'); -const db = require('../../models'); -const { DEVICE_POLL_FREQUENCIES } = require('../../utils/constants'); - -/** - * @description Destroy a device by selectr pattern. - * @param {string} selector - Device selector patter. - * @example - * device.destroyBySelectorPattern('test'); - */ -async function destroyBySelectorPattern(selector) { - const devices = await db.Device.findAll({ - include: [ - { - model: db.DeviceParam, - as: 'params', - }, - { - model: db.DeviceFeature, - as: 'features', - }, - ], - where: { - selector: { [Op.like]: `${selector}%` }, - }, - }); - - devices.map(async (device) => { - device.destroy(); - // removing from ram cache - this.stateManager.deleteState('device', device.selector, device); - this.stateManager.deleteState('deviceByExternalId', device.external_id, device); - this.stateManager.deleteState('deviceById', device.id, device); - device.features.forEach((feature) => { - this.stateManager.deleteState('deviceFeature', feature.selector, feature); - this.stateManager.deleteState('deviceFeatureByExternalId', feature.external_id, feature); - }); - - // remove from poll devices - // foreach frequency - Object.keys(DEVICE_POLL_FREQUENCIES).forEach((frequency) => { - // if the frequency exist - if (this.devicesByPollFrequency[DEVICE_POLL_FREQUENCIES[frequency]]) { - // we see if the device is member of the group without being member - const index = this.devicesByPollFrequency[DEVICE_POLL_FREQUENCIES[frequency]].findIndex( - (d) => d.selector === device.selector, - ); - // if yes, we remove it - if (index !== -1) { - this.devicesByPollFrequency[DEVICE_POLL_FREQUENCIES[frequency]].splice(index, 1); - } - } - }); - }); - - return null; -} - -module.exports = { - destroyBySelectorPattern, -}; diff --git a/server/lib/device/device.destroyByServiceId.js b/server/lib/device/device.destroyByServiceId.js new file mode 100755 index 0000000000..90160004be --- /dev/null +++ b/server/lib/device/device.destroyByServiceId.js @@ -0,0 +1,36 @@ +const { Op } = require('sequelize'); +const db = require('../../models'); + +/** + * @description Destroy a device by service id. + * @param {string} serviceId - Device service id. + * @example + * device.destroyByServiceId('serviceId'); + */ +async function destroyByServiceId(serviceId) { + const devices = await db.Device.findAll({ + include: [ + { + model: db.DeviceParam, + as: 'params', + }, + { + model: db.DeviceFeature, + as: 'features', + }, + ], + where: { + service_id: { [Op.eq]: `${serviceId}` }, + }, + }); + + devices.map(async (device) => { + device.destroy(device.selector); + }); + + return null; +} + +module.exports = { + destroyByServiceId, +}; diff --git a/server/lib/device/device.saveHistoricalState.js b/server/lib/device/device.saveHistoricalState.js index 8c35cab930..15fabb7581 100644 --- a/server/lib/device/device.saveHistoricalState.js +++ b/server/lib/device/device.saveHistoricalState.js @@ -1,6 +1,6 @@ const db = require('../../models'); const logger = require('../../utils/logger'); -const { EVENTS, WEBSOCKET_MESSAGE_TYPES } = require('../../utils/constants'); +const { EVENTS } = require('../../utils/constants'); /** * @description Save hstorical device feature state in DB. @@ -40,7 +40,6 @@ async function saveHistoricalState(device, deviceFeature, historicalState) { await db.DeviceFeature.update( { last_value: historicalState.value, - last_value_string: historicalState.value, last_value_changed: historicalState.created_at, }, { @@ -51,23 +50,11 @@ async function saveHistoricalState(device, deviceFeature, historicalState) { ); deviceFeature.last_value = historicalState.value; - deviceFeature.last_value_string = deviceFeature.last_value_string; deviceFeature.last_value_changed = historicalState.updated_at; // save local state in RAM this.stateManager.setState('deviceFeature', deviceFeature.selector, deviceFeature); - // send websocket event - this.eventManager.emit(EVENTS.WEBSOCKET.SEND_ALL, { - type: WEBSOCKET_MESSAGE_TYPES.DEVICE.NEW_STRING_STATE, - payload: { - device: device.selector, - last_value: historicalState.value, - last_value_string: historicalState.value, - last_value_changed: historicalState.updated_at, - }, - }); - // check if there is a trigger matching this.eventManager.emit(EVENTS.TRIGGERS.CHECK, { type: EVENTS.DEVICE.NEW_STATE, diff --git a/server/lib/device/index.js b/server/lib/device/index.js index 00edb8a0a5..b4796d1dce 100644 --- a/server/lib/device/index.js +++ b/server/lib/device/index.js @@ -14,7 +14,7 @@ const { addParam } = require('./device.addParam'); const { create } = require('./device.create'); const { calculateAggregate } = require('./device.calculateAggregate'); const { destroy } = require('./device.destroy'); -const { destroyBySelectorPattern } = require('./device.destroyBySelectorPattern'); +const { destroyByServiceId } = require('./device.destroyByServiceId'); const { init } = require('./device.init'); const { get } = require('./device.get'); const { getBySelector } = require('./device.getBySelector'); @@ -75,7 +75,7 @@ DeviceManager.prototype.addParam = addParam; DeviceManager.prototype.create = create; DeviceManager.prototype.calculateAggregate = calculateAggregate; DeviceManager.prototype.destroy = destroy; -DeviceManager.prototype.destroyBySelectorPattern = destroyBySelectorPattern; +DeviceManager.prototype.destroyByServiceId = destroyByServiceId; DeviceManager.prototype.init = init; DeviceManager.prototype.get = get; DeviceManager.prototype.getBySelector = getBySelector; diff --git a/server/services/withings/lib/withings.deleteDevices.js b/server/services/withings/lib/withings.deleteDevices.js index a44380b62d..119af9ad5c 100755 --- a/server/services/withings/lib/withings.deleteDevices.js +++ b/server/services/withings/lib/withings.deleteDevices.js @@ -5,7 +5,7 @@ * withings.deleteDevices(); */ async function deleteDevices() { - await this.gladys.device.destroyBySelectorPattern('withings'); + await this.gladys.device.destroyByServiceId(this.serviceId); return { success: true }; } diff --git a/server/services/withings/lib/withings.init.js b/server/services/withings/lib/withings.init.js index 733f9d2624..bbfcd9d556 100755 --- a/server/services/withings/lib/withings.init.js +++ b/server/services/withings/lib/withings.init.js @@ -24,7 +24,7 @@ function buildNewDevice(withingsDevice, serviceId) { // Build params for all device const newParams = [ { - name: 'withingsDeviceId', + name: 'WITHINGS_DEVICE_ID', value: withingsDevice.deviceid, }, ]; diff --git a/server/services/withings/lib/withings.poll.js b/server/services/withings/lib/withings.poll.js index 000ed0f7ba..8799076fc1 100755 --- a/server/services/withings/lib/withings.poll.js +++ b/server/services/withings/lib/withings.poll.js @@ -19,20 +19,20 @@ async function poll(device) { logger.debug('Features : ', device.features); const oauth2Manager = new OAuth2Manager(this.gladys); - const withingsDeviceId = device.params.find((oneParam) => oneParam.name === 'withingsDeviceId').value; + const withingsDeviceId = device.params.find((oneParam) => oneParam.name === 'WITHINGS_DEVICE_ID').value; // Get all users of gladys const users = await this.gladys.user.get(); await Promise.map( users, async (user) => { - const withingsClienId = await this.gladys.variable.getValue( + const withingsClientId = await this.gladys.variable.getValue( `${OAUTH2.VARIABLE.CLIENT_ID}`, this.serviceId, user.id, ); - if (withingsClienId) { + if (withingsClientId) { await Promise.each(device.features, async (feature) => { // Convert type to int wihings // (cf https://developer.withings.com/oauth2/#tag/measure%2Fpaths%2Fhttps%3A~1~1wbsapi.withings.net~1measure%3Faction%3Dgetmeas%2Fget) diff --git a/server/test/lib/device/device.destroyBySelectorPattern.test.js b/server/test/lib/device/device.destroyByServiceId.test.js similarity index 82% rename from server/test/lib/device/device.destroyBySelectorPattern.test.js rename to server/test/lib/device/device.destroyByServiceId.test.js index 09d457c8e3..dbf28fa76e 100644 --- a/server/test/lib/device/device.destroyBySelectorPattern.test.js +++ b/server/test/lib/device/device.destroyByServiceId.test.js @@ -12,15 +12,15 @@ describe('Device', () => { stateManager.setState('device', 'test-device', { id: 'cfsmb47f-4d25-4381-8923-2633b23192sm', name: 'test', - selector: 'test-delete', + service_id: 'test-delete', }); const device = new Device(event, {}, stateManager); device.devicesByPollFrequency[60000] = [ { - selector: 'test-delete', + service_id: 'test-delete', }, ]; - await device.destroyBySelectorPattern('test-delete'); + await device.destroyByServiceId('test-delete'); }); }); diff --git a/server/test/services/withings/lib/withings.deleteDevices.test.js b/server/test/services/withings/lib/withings.deleteDevices.test.js index f567ca107e..08c06e13c5 100644 --- a/server/test/services/withings/lib/withings.deleteDevices.test.js +++ b/server/test/services/withings/lib/withings.deleteDevices.test.js @@ -3,7 +3,7 @@ const { fake } = require('sinon'); const WithingsHandler = require('../../../../services/withings/lib'); const gladys = { - device: { destroyBySelectorPattern: fake.returns(null) }, + device: { destroyByServiceId: fake.returns(null) }, }; describe('WithingsHandler deleteDevices', () => { diff --git a/server/test/services/withings/lib/withings.init.test.js b/server/test/services/withings/lib/withings.init.test.js index 16fa80fda5..5c14ccf47b 100644 --- a/server/test/services/withings/lib/withings.init.test.js +++ b/server/test/services/withings/lib/withings.init.test.js @@ -10,7 +10,7 @@ const server = new ServerMock({ host: 'localhost', port: 9192 }, null); const gladys = { device: { create: fake.returns(null), - destroyBySelectorPattern: fake.returns(null), + destroyByServiceId: fake.returns(null), saveHistoricalState: function shs(device, featureBattery, featureState) { device.featureBattery = featureBattery; device.featureBattery = featureState; @@ -317,25 +317,25 @@ describe('WithingsHandler init', () => { let paramCreated = firstResult.value.params; await assert.equal(paramCreated.length, 1); - await assert.equal(paramCreated[0].name, 'withingsDeviceId'); + await assert.equal(paramCreated[0].name, 'WITHINGS_DEVICE_ID'); await assert.equal(paramCreated[0].value, 'withingsDevideId'); await assert.equal(secondResult.value.name, 'Withings - string'); paramCreated = secondResult.value.params; await assert.equal(paramCreated.length, 1); - await assert.equal(paramCreated[0].name, 'withingsDeviceId'); + await assert.equal(paramCreated[0].name, 'WITHINGS_DEVICE_ID'); await assert.equal(paramCreated[0].value, 'withingsDevideId2'); await assert.equal(thirdResult.value.name, 'Withings - string'); paramCreated = thirdResult.value.params; await assert.equal(paramCreated.length, 1); - await assert.equal(paramCreated[0].name, 'withingsDeviceId'); + await assert.equal(paramCreated[0].name, 'WITHINGS_DEVICE_ID'); await assert.equal(paramCreated[0].value, 'withingsDevideId3'); await assert.equal(fourResult.value.name, 'Withings - string'); paramCreated = fourResult.value.params; await assert.equal(paramCreated.length, 1); - await assert.equal(paramCreated[0].name, 'withingsDeviceId'); + await assert.equal(paramCreated[0].name, 'WITHINGS_DEVICE_ID'); await assert.equal(paramCreated[0].value, 'withingsDevideId4'); }); }); diff --git a/server/test/services/withings/lib/withings.poll.test.js b/server/test/services/withings/lib/withings.poll.test.js index bc59001cef..6cf3cd78e2 100644 --- a/server/test/services/withings/lib/withings.poll.test.js +++ b/server/test/services/withings/lib/withings.poll.test.js @@ -58,7 +58,7 @@ const gladys = { }, device: { create: fake.resolves(null), - destroyBySelectorPattern: fake.resolves(null), + destroyByServiceId: fake.resolves(null), saveHistoricalState: fake.resolves(null), }, user: { @@ -193,7 +193,7 @@ describe('WithingsHandler poll', () => { external_id: '9f66c962-7207-4e55-b893-712642f5e043', params: [ { - name: 'withingsDeviceId', + name: 'WITHINGS_DEVICE_ID', value: 'withingsDevideId', }, ], @@ -305,7 +305,7 @@ describe('WithingsHandler poll', () => { service_id: '55f177d7-bc35-4560-a1f0-4c58b9e9f2c4', should_poll: true, external_id: '9f66c962-7207-4e55-b893-712642f5e043', - params: [{ name: 'withingsDeviceId', value: 'withingsDevideId' }], + params: [{ name: 'WITHINGS_DEVICE_ID', value: 'withingsDevideId' }], features: deviceToPoll.features, }; @@ -324,7 +324,7 @@ describe('WithingsHandler poll', () => { external_id: '9f66c962-7207-4e55-b893-712642f5e043', params: [ { - name: 'withingsDeviceId', + name: 'WITHINGS_DEVICE_ID', value: 'withingsDevideId2', }, ], @@ -338,7 +338,7 @@ describe('WithingsHandler poll', () => { ]; await withingsHandler.poll(deviceToPoll2); - deviceDef.params = [{ name: 'withingsDeviceId', value: 'withingsDevideId2' }]; + deviceDef.params = [{ name: 'WITHINGS_DEVICE_ID', value: 'withingsDevideId2' }]; deviceDef.features = deviceToPoll2.features; assert.calledWith(gladys.device.saveHistoricalState, deviceDef); @@ -353,7 +353,7 @@ describe('WithingsHandler poll', () => { external_id: '9f66c962-7207-4e55-b893-712642f5e043', params: [ { - name: 'withingsDeviceId', + name: 'WITHINGS_DEVICE_ID', value: 'withingsDevideId3', }, ], @@ -367,7 +367,7 @@ describe('WithingsHandler poll', () => { ]; await withingsHandler.poll(deviceToPoll3); - deviceDef.params = [{ name: 'withingsDeviceId', value: 'withingsDevideId3' }]; + deviceDef.params = [{ name: 'WITHINGS_DEVICE_ID', value: 'withingsDevideId3' }]; deviceDef.features = deviceToPoll3.features; assert.calledWith(gladys.device.saveHistoricalState, deviceDef); @@ -382,7 +382,7 @@ describe('WithingsHandler poll', () => { external_id: '9f66c962-7207-4e55-b893-712642f5e043', params: [ { - name: 'withingsDeviceId', + name: 'WITHINGS_DEVICE_ID', value: 'withingsDevideId4', }, ], @@ -396,7 +396,7 @@ describe('WithingsHandler poll', () => { ]; await withingsHandler.poll(deviceToPoll4); - deviceDef.params = [{ name: 'withingsDeviceId', value: 'withingsDevideId4' }]; + deviceDef.params = [{ name: 'WITHINGS_DEVICE_ID', value: 'withingsDevideId4' }]; deviceDef.features = deviceToPoll4.features; assert.calledWith(gladys.device.saveHistoricalState, deviceDef); }); From 737eea09de29bec12b4d18b07aa00de47f152eb7 Mon Sep 17 00:00:00 2001 From: Euguuu Date: Sun, 6 Feb 2022 19:12:04 +0100 Subject: [PATCH 019/164] fix for review --- .../withings/settings/WithingsSettings.js | 2 - front/src/components/oauth2/OAuth2Config.jsx | 16 ++- front/src/components/oauth2/actions.js | 2 - front/src/config/i18n/en.json | 11 +- front/src/config/i18n/fr.json | 13 +- .../all/withings/device-page/Device.jsx | 111 ++++++++++++------ .../withings/device-page/WithingsDevices.jsx | 9 +- .../all/withings/device-page/actions.js | 89 ++++++++------ .../all/withings/device-page/index.js | 1 + .../all/withings/settings-page/actions.js | 26 +++- .../all/withings/settings-page/index.js | 40 ++++++- .../lib/device/device.destroyByServiceId.js | 13 +- server/lib/oauth2/oauth2.deleteClient.js | 3 +- .../withings/api/withings.controller.js | 3 +- .../withings/lib/withings.deleteDevices.js | 2 - server/services/withings/lib/withings.init.js | 38 ++++-- server/services/withings/lib/withings.poll.js | 2 +- server/test/lib/oauth2/oauth2manager.test.js | 17 ++- .../lib/withings.deleteDevices.test.js | 8 +- .../withings/lib/withings.deleteVar.test.js | 11 +- .../withings/lib/withings.init.test.js | 33 +++--- 21 files changed, 295 insertions(+), 155 deletions(-) diff --git a/front/cypress/integration/routes/integration/withings/settings/WithingsSettings.js b/front/cypress/integration/routes/integration/withings/settings/WithingsSettings.js index 8dcb314497..aa78353153 100644 --- a/front/cypress/integration/routes/integration/withings/settings/WithingsSettings.js +++ b/front/cypress/integration/routes/integration/withings/settings/WithingsSettings.js @@ -44,8 +44,6 @@ describe('Withings settings page', () => { cy.get('.alert-info').contains('FakeClientId'); - cy.get('.alert-info').i18n('integration.withings.settings.afterIntegration'); - cy.get('.alert-info').i18n('integration.withings.settings.instructionsToUse'); cy.contains('p', 'integration.oauth2.delete').should('exist'); diff --git a/front/src/components/oauth2/OAuth2Config.jsx b/front/src/components/oauth2/OAuth2Config.jsx index a520fbb804..43127f7047 100755 --- a/front/src/components/oauth2/OAuth2Config.jsx +++ b/front/src/components/oauth2/OAuth2Config.jsx @@ -10,6 +10,11 @@ const OAuth2Config = ({ integrationImg, integrationName, children, ...props }) =
+
+

+ +

+
{props.oauth2GetStatus !== RequestStatus.Getting && !props.clientIdInDb && (
-

- -

{props.oauth2ErrorMsg && (
@@ -73,9 +75,6 @@ const OAuth2Config = ({ integrationImg, integrationName, children, ...props }) = )} {props.oauth2GetStatus === RequestStatus.Success && props.clientIdInDb && (
-

- -

@@ -86,9 +85,6 @@ const OAuth2Config = ({ integrationImg, integrationName, children, ...props }) = {props.clientIdInDb}

-

- -

@@ -103,6 +99,8 @@ const OAuth2Config = ({ integrationImg, integrationName, children, ...props }) =
+ + {children}
)}
diff --git a/front/src/components/oauth2/actions.js b/front/src/components/oauth2/actions.js index 5e07c63bcb..f6ed0f9a27 100755 --- a/front/src/components/oauth2/actions.js +++ b/front/src/components/oauth2/actions.js @@ -27,9 +27,7 @@ const actions = store => ({ const returnGetConfig = await state.httpClient.get('/api/v1/service/oauth2/client', { serviceId: returnServiceId }); - if (returnGetConfig) { - // Case of config found store.setState({ clientIdInDb: returnGetConfig.clientId, oauth2ErrorMsg: null, diff --git a/front/src/config/i18n/en.json b/front/src/config/i18n/en.json index aa0aa50424..d0ed966396 100644 --- a/front/src/config/i18n/en.json +++ b/front/src/config/i18n/en.json @@ -871,13 +871,13 @@ "withings": { "settings": { "title": "Withings Settings", - "menu": "Settings", + "menu": "Discover", "introduction": "To connect Withings account to Gladys, you first need to create a Withings user account in this link.

To connect Withings measures to Gladys, you need to create a Withings partner account in this link
(in callback url field put http://gladys.local/dashboard/integration/health/withings/settings, in environmnet field choose Dev, you can use Prod with gladys plus url and https protocol, reefer to Documentation link for more details).
", - "instructionsToUse": "To use this integration, go to the dashboard and create a health box.", + "instructionsToUse": "To use this integration, go to the dashboard and create a device box or chart.", "configurationError": "We were not able to configure your account. Are you sure your client_id and secret_id are valid?", "complete": "Your account is now linked to Gladys with those parameters:", "clientId": "Client Id:", - "afterIntegration": "Go to devices page to see all devices automatically created." + "chooseDevice": "Choose withings devices to connect in the list below:" }, "device": { "title": "Withings Devices", @@ -890,7 +890,10 @@ "roomLabel": "Room", "featuresLabel": "Features", "noFeatures": "No features", - "saveButton": "Save" + "saveButton": "Save", + "deleteButton": "Delete", + "createDeviceInGladys": "Connect in Gladys", + "deleteDeviceInGladys": "Disconnect of Gladys" }, "title": "Withings", "description": "Sync your Withings devices.", diff --git a/front/src/config/i18n/fr.json b/front/src/config/i18n/fr.json index b0d903550d..7753b85925 100644 --- a/front/src/config/i18n/fr.json +++ b/front/src/config/i18n/fr.json @@ -865,19 +865,19 @@ "clientId": "Client id du compte", "secret": "Client secret du compte", "instructions": "À cette étape, veuillez remplir les champs client id et client secret ci-dessous et cliquez sur le bouton de connexion.", - "delete": "Pour supprimer vos configuration de compte cliquer sur le bouton 'Déconneter' (toutes les données associées seront supprimées).", + "delete": "Pour supprimer vos configurations de compte cliquer sur le bouton 'Déconneter' (toutes les données associées seront supprimées).", "unconnectButton": "Déconnecter" }, "withings": { "settings": { "title": "Withings Configuration", - "menu": "Configuration", + "menu": "Découverte", "introduction": "Pour connecter le compte Withings à Gladys, vous devez d'abord créer un compte d'utilisateur Withings à ce lien.

Pour relier les mesures Withings à Gladys, vous devez créer un compte partenaire Withings à ce lien
(dans le champ url de callback mettre http://gladys.local/dashboard/integration/health/withings/settings, dans le champs environnement choisir Dev, vous pouvez utiliser Prod avec gladys plus url et le protocole https, voir le lien Documentation pour plus de détails).
", - "instructionsToUse": "Pour utiliser cette intégration, rendez-vous sur le tableau de bord et créez une box de santé.", + "instructionsToUse": "Pour utiliser cette intégration, rendez-vous sur le tableau de bord et créez une box d'appareil ou de graphique.", "configurationError": "Nous n'avons pas pu configurer votre compte. Êtes-vous sûr que votre client_id et votre secret_id sont corrects ?", "complete": "Votre compte est maintenant lié à Gladys avec ces paramètres:", "clientId": "Client Id:", - "afterIntegration": "Allez à la page des appareils pour voir tous les appareils créés automatiquement." + "chooseDevice": "Choisissez les appareils withings à connecter dans la liste plus bas:" }, "device": { "title": "Appareils Withings", @@ -890,7 +890,10 @@ "roomLabel": "Pièce", "featuresLabel": "Fonctionnalités", "noFeatures": "Aucune fonctionnalité", - "saveButton": "Sauvegarder" + "saveButton": "Sauvegarder", + "deleteButton": "Supprimer", + "createDeviceInGladys": "Connecter dans Gladys", + "deleteDeviceInGladys": "Déconnecter de Gladys" }, "title": "Withings", "description": "Synchronisez vos appareils Withings.", diff --git a/front/src/routes/integration/all/withings/device-page/Device.jsx b/front/src/routes/integration/all/withings/device-page/Device.jsx index 0c163d3bde..e0eb4f1c7a 100644 --- a/front/src/routes/integration/all/withings/device-page/Device.jsx +++ b/front/src/routes/integration/all/withings/device-page/Device.jsx @@ -16,7 +16,7 @@ class WithingsDeviceBox extends Component { return null; } const batteryLevelDeviceFeature = this.props.device.features.find( - deviceFeature => deviceFeature.type === DEVICE_FEATURE_CATEGORIES.BATTERY + deviceFeature => deviceFeature.category === DEVICE_FEATURE_CATEGORIES.BATTERY ); const batteryLevel = get(batteryLevelDeviceFeature, 'last_value'); let mostRecentValueAt = null; @@ -39,9 +39,23 @@ class WithingsDeviceBox extends Component { } this.setState({ loading: false }); }; + deleteDevice = async () => { + this.setState({ loading: true }); + try { + if (this.props.forConnect) { + await this.props.deleteDevice(this.props.device, null); + } else { + await this.props.deleteDevice(this.props.device, this.props.deviceIndex); + } + } catch (e) { + this.setState({ error: RequestStatus.Error }); + } + this.setState({ loading: false }); + }; updateRoom = e => { this.props.updateDeviceProperty(this.props.deviceIndex, 'room_id', e.target.value); }; + componentWillMount() { this.refreshDeviceProperty(); } @@ -87,26 +101,28 @@ class WithingsDeviceBox extends Component { )}
-
- - -
+ {!props.forConnect && ( +
+ + +
+ )}
-

- {mostRecentValueAt ? ( - - ) : ( - - )} -

+ {!props.forConnect && ( +

+ {mostRecentValueAt ? ( + + ) : ( + + )} +

+ )}
- + {props.forConnect && props.device.inDB && ( + + )} + {props.forConnect && !props.device.inDB && ( + + )} + {!props.forConnect && ( + <> + + + + )}
diff --git a/front/src/routes/integration/all/withings/device-page/WithingsDevices.jsx b/front/src/routes/integration/all/withings/device-page/WithingsDevices.jsx index 5132e3835a..ddd95076ce 100755 --- a/front/src/routes/integration/all/withings/device-page/WithingsDevices.jsx +++ b/front/src/routes/integration/all/withings/device-page/WithingsDevices.jsx @@ -13,6 +13,11 @@ const WithingsDevices = ({ children, ...props }) => (
+
+

+ +

+
( >
-

- -

( houses={props.houses} updateDeviceProperty={props.updateDeviceProperty} saveDevice={props.saveDevice} + deleteDevice={props.deleteDevice} user={props.user} /> ))} diff --git a/front/src/routes/integration/all/withings/device-page/actions.js b/front/src/routes/integration/all/withings/device-page/actions.js index ed80f6da1b..c494501020 100755 --- a/front/src/routes/integration/all/withings/device-page/actions.js +++ b/front/src/routes/integration/all/withings/device-page/actions.js @@ -14,8 +14,60 @@ const actions = store => ({ }); store.setState(newState); }, + updateWithingsDeviceImg() { + // Build map of device image by device name + const mapOfDeviceImgByModel = new Map(); + mapOfDeviceImgByModel.set('Kid Scale', 'KidScale.jpg'); + mapOfDeviceImgByModel.set('WBS08', 'body-cardio-black-kg.jpg'); + mapOfDeviceImgByModel.set('WBS10', 'body-cardio-black-kg.jpg'); + mapOfDeviceImgByModel.set('WBS11', 'body-cardio-black-kg.jpg'); + mapOfDeviceImgByModel.set('WS30', 'body-cardio-black-kg.jpg'); + mapOfDeviceImgByModel.set('Smart Body Analyzer', 'body-cardio-black-kg.jpg'); + mapOfDeviceImgByModel.set('Withings WBS01', 'body-plus-black-kg.jpg'); + mapOfDeviceImgByModel.set('Body+', 'body-plus-black-kg.jpg'); + mapOfDeviceImgByModel.set('Body Cardio', 'body-cardio-black-kg.jpg'); + mapOfDeviceImgByModel.set('Body', 'body-black-kg.jpg'); + mapOfDeviceImgByModel.set('Smart Baby Monitor', 'SmartBabyMonitor.jpg'); + mapOfDeviceImgByModel.set('Withings Home', 'home.jpg'); + mapOfDeviceImgByModel.set('Withings Blood Pressure Monitor V1', 'bpm-connect.jpg'); + mapOfDeviceImgByModel.set('Withings Blood Pressure Monitor V2', 'bpm-connect.jpg'); + mapOfDeviceImgByModel.set('Withings Blood Pressure Monitor V3', 'bpm-connect.jpg'); + mapOfDeviceImgByModel.set('BPM Core', 'bpm-core.jpg'); + mapOfDeviceImgByModel.set('BPM Connect', 'bpm-connect.jpg'); + mapOfDeviceImgByModel.set('BPM Connect Pro', 'bpm-connect.jpg'); + mapOfDeviceImgByModel.set('Pulse', 'pulse-hr-black.jpg'); + mapOfDeviceImgByModel.set('Activite', 'go.jpg'); + mapOfDeviceImgByModel.set('Activite (Pop, Steel)', 'steel-white.jpg'); + mapOfDeviceImgByModel.set('Withings Go', 'go.jpg'); + mapOfDeviceImgByModel.set('Activite Steel HR', 'steel-hr-36b.jpg'); + mapOfDeviceImgByModel.set('Activite Steel HR Sport Edition', 'steel-hr-sport-40b.jpg'); + mapOfDeviceImgByModel.set('Pulse HR', 'pulse-hr-black.jpg'); + mapOfDeviceImgByModel.set('Move', 'move-ecg-white-kg.jpg'); + mapOfDeviceImgByModel.set('Move ECG', 'move-ecg-white-kg.jpg'); + mapOfDeviceImgByModel.set('Aura Dock', 'Aura_2.jpg'); + mapOfDeviceImgByModel.set('Aura Sensor', 'Aura_2.jpg'); + mapOfDeviceImgByModel.set('Aura Sensor V2', 'Aura_2.jpg'); + mapOfDeviceImgByModel.set('Thermo', 'thermo-c.jpg'); + store.setState({ + withingsImgMap: mapOfDeviceImgByModel + }); + }, async saveDevice(state, device) { - await state.httpClient.post('/api/v1/device', device); + const deviceSaved = await state.httpClient.post('/api/v1/device', device); + device.inDB = true; + device.selector = deviceSaved.selector; + }, + async deleteDevice(state, device, index) { + await state.httpClient.delete(`/api/v1/device/${device.selector}`); + device.inDB = false; + if (!(index === null)) { + const newState = update(state, { + withingsDevices: { + $splice: [[index, 1]] + } + }); + store.setState(newState); + } }, async getHouses(state) { store.setState({ @@ -44,43 +96,8 @@ const actions = store => ({ const options = {}; const withingsDevicesReceived = await state.httpClient.get('/api/v1/service/withings/device', options); - // Build map of device image by device name - const mapOfDeviceImgByModel = new Map(); - mapOfDeviceImgByModel.set('Kid Scale', 'KidScale.jpg'); - mapOfDeviceImgByModel.set('WBS08', 'body-cardio-black-kg.jpg'); - mapOfDeviceImgByModel.set('WBS10', 'body-cardio-black-kg.jpg'); - mapOfDeviceImgByModel.set('WBS11', 'body-cardio-black-kg.jpg'); - mapOfDeviceImgByModel.set('WS30', 'body-cardio-black-kg.jpg'); - mapOfDeviceImgByModel.set('Smart Body Analyzer', 'body-cardio-black-kg.jpg'); - mapOfDeviceImgByModel.set('Withings WBS01', 'body-plus-black-kg.jpg'); - mapOfDeviceImgByModel.set('Body+', 'body-plus-black-kg.jpg'); - mapOfDeviceImgByModel.set('Body Cardio', 'body-cardio-black-kg.jpg'); - mapOfDeviceImgByModel.set('Body', 'body-black-kg.jpg'); - mapOfDeviceImgByModel.set('Smart Baby Monitor', 'SmartBabyMonitor.jpg'); - mapOfDeviceImgByModel.set('Withings Home', 'home.jpg'); - mapOfDeviceImgByModel.set('Withings Blood Pressure Monitor V1', 'bpm-connect.jpg'); - mapOfDeviceImgByModel.set('Withings Blood Pressure Monitor V2', 'bpm-connect.jpg'); - mapOfDeviceImgByModel.set('Withings Blood Pressure Monitor V3', 'bpm-connect.jpg'); - mapOfDeviceImgByModel.set('BPM Core', 'bpm-core.jpg'); - mapOfDeviceImgByModel.set('BPM Connect', 'bpm-connect.jpg'); - mapOfDeviceImgByModel.set('BPM Connect Pro', 'bpm-connect.jpg'); - mapOfDeviceImgByModel.set('Pulse', 'pulse-hr-black.jpg'); - mapOfDeviceImgByModel.set('Activite', 'go.jpg'); - mapOfDeviceImgByModel.set('Activite (Pop, Steel)', 'steel-white.jpg'); - mapOfDeviceImgByModel.set('Withings Go', 'go.jpg'); - mapOfDeviceImgByModel.set('Activite Steel HR', 'steel-hr-36b.jpg'); - mapOfDeviceImgByModel.set('Activite Steel HR Sport Edition', 'steel-hr-sport-40b.jpg'); - mapOfDeviceImgByModel.set('Pulse HR', 'pulse-hr-black.jpg'); - mapOfDeviceImgByModel.set('Move', 'move-ecg-white-kg.jpg'); - mapOfDeviceImgByModel.set('Move ECG', 'move-ecg-white-kg.jpg'); - mapOfDeviceImgByModel.set('Aura Dock', 'Aura_2.jpg'); - mapOfDeviceImgByModel.set('Aura Sensor', 'Aura_2.jpg'); - mapOfDeviceImgByModel.set('Aura Sensor V2', 'Aura_2.jpg'); - mapOfDeviceImgByModel.set('Thermo', 'thermo-c.jpg'); - store.setState({ withingsGetStatus: RequestStatus.Success, - withingsImgMap: mapOfDeviceImgByModel, withingsDevices: withingsDevicesReceived }); } catch (e) { diff --git a/front/src/routes/integration/all/withings/device-page/index.js b/front/src/routes/integration/all/withings/device-page/index.js index f22f53521f..d77d488376 100755 --- a/front/src/routes/integration/all/withings/device-page/index.js +++ b/front/src/routes/integration/all/withings/device-page/index.js @@ -12,6 +12,7 @@ import { RequestStatus } from '../../../../../utils/consts'; class WithingsDevicePage extends Component { componentWillMount() { this.props.getWithingsDevice(); + this.props.updateWithingsDeviceImg(); this.props.getHouses(); } diff --git a/front/src/routes/integration/all/withings/settings-page/actions.js b/front/src/routes/integration/all/withings/settings-page/actions.js index 8b4c71eb0f..b78a8fe8ba 100755 --- a/front/src/routes/integration/all/withings/settings-page/actions.js +++ b/front/src/routes/integration/all/withings/settings-page/actions.js @@ -5,7 +5,8 @@ import { RequestStatus } from '../../../../../utils/consts'; const actions = store => ({ async initWithingsDevices(state) { store.setState({ - oauth2GetStatus: RequestStatus.Getting + oauth2GetStatus: RequestStatus.Getting, + withingsGetStatus: RequestStatus.Getting }); try { // check if this call is a return of oauth2 authorize code @@ -13,17 +14,34 @@ const actions = store => ({ const queryParams = queryString.parse(state.currentUrl.substring(state.currentUrl.indexOf('?'))); if (queryParams && queryParams.code) { const serviceId = (await state.httpClient.get(`/api/v1/service/withings`)).id; - await state.httpClient.post('/api/v1/service/oauth2/client/access-token-uri', { integrationName: 'withings', authorizationCode: queryParams.code, serviceId }); - await state.httpClient.post('/api/v1/service/withings/init'); - route('/dashboard/integration/health/withings/settings'); } + + const returnServiceId = (await state.httpClient.get('/api/v1/service/withings')).id; + + const returnGetConfig = await state.httpClient.get('/api/v1/service/oauth2/client', { + serviceId: returnServiceId + }); + // Case of config found + let withingsDevices; + if (returnGetConfig.clientId) { + const result = await state.httpClient.post('/api/v1/service/withings/init'); + if (result) { + withingsDevices = result.withingsDevices; + } + + store.setState({ + oauth2GetStatus: RequestStatus.Success, + withingsGetStatus: RequestStatus.Success, + withingsDevices + }); + } } } catch (e) { store.setState({ diff --git a/front/src/routes/integration/all/withings/settings-page/index.js b/front/src/routes/integration/all/withings/settings-page/index.js index 67ff7e3d98..605ef801b0 100755 --- a/front/src/routes/integration/all/withings/settings-page/index.js +++ b/front/src/routes/integration/all/withings/settings-page/index.js @@ -1,28 +1,62 @@ import { Component } from 'preact'; import { connect } from 'unistore/preact'; +import { Text } from 'preact-i18n'; import actions from './actions'; +import actionsWithingsDevice from '../device-page/actions'; import actionsOAuth2 from '../../../../../components/oauth2/actions'; import WithingsPage from '../WithingsPage'; import OAuth2Config from '../../../../../components/oauth2/OAuth2Config'; import { RequestStatus } from '../../../../../utils/consts'; import { combineActions } from '../../../../../utils/combineActions'; +import Device from '../device-page/Device'; @connect( - 'user,session,clientIdInDb,withingsSaveStatus,oauth2GetStatus,oauth2ErrorMsg', - combineActions(actions, actionsOAuth2) + 'user,session,clientIdInDb,withingsSaveStatus,oauth2GetStatus,oauth2ErrorMsg,houses,withingsClientId,withingsGetStatus,withingsImgMap,withingsDevices', + combineActions(actions, actionsOAuth2, actionsWithingsDevice) ) class WithingsSettingsPage extends Component { componentWillMount() { this.props.updateIntegrationName('withings'); this.props.getCurrentConfig(); this.props.initWithingsDevices(); + this.props.updateWithingsDeviceImg(); } render(props, {}) { const loading = props.oauth2GetStatus === RequestStatus.Getting; return ( - + + {props.withingsDevices && ( +
+
+

+ +

+
+
+
+ +
+
+ {props.withingsDevices.map((withingsDevice, index) => ( + + ))} +
+
+
+ )} +
); } diff --git a/server/lib/device/device.destroyByServiceId.js b/server/lib/device/device.destroyByServiceId.js index 90160004be..53ef5952ee 100755 --- a/server/lib/device/device.destroyByServiceId.js +++ b/server/lib/device/device.destroyByServiceId.js @@ -1,4 +1,4 @@ -const { Op } = require('sequelize'); +const Promise = require('bluebird'); const db = require('../../models'); /** @@ -20,14 +20,15 @@ async function destroyByServiceId(serviceId) { }, ], where: { - service_id: { [Op.eq]: `${serviceId}` }, + service_id: serviceId, }, }); - devices.map(async (device) => { - device.destroy(device.selector); - }); - + if (devices) { + await Promise.each(devices, async (device) => { + await device.destroy(device.selector); + }); + } return null; } diff --git a/server/lib/oauth2/oauth2.deleteClient.js b/server/lib/oauth2/oauth2.deleteClient.js index a9f361b409..947021d828 100755 --- a/server/lib/oauth2/oauth2.deleteClient.js +++ b/server/lib/oauth2/oauth2.deleteClient.js @@ -1,5 +1,6 @@ const logger = require('../../utils/logger'); const { OAUTH2 } = require('../../utils/constants'); +const { Error500 } = require('../../utils/httpErrors'); /** * @description Delete client_id and secrei_id of current oauth2 integration. @@ -20,7 +21,7 @@ async function deleteClient(serviceId, userId) { await this.gladys.variable.destroy(`${OAUTH2.VARIABLE.ACCESS_TOKEN}`, serviceId, userId); } catch (error) { logger.error(error.message); - return { success: false, errorMsg: error.message }; + throw new Error500(error); } return { success: true }; diff --git a/server/services/withings/api/withings.controller.js b/server/services/withings/api/withings.controller.js index e49e6ea8dd..5128421a97 100755 --- a/server/services/withings/api/withings.controller.js +++ b/server/services/withings/api/withings.controller.js @@ -10,8 +10,7 @@ module.exports = function WithingsController(withingsHandler) { async function init(req, res) { const resultInit = await withingsHandler.init(req.user.id); res.json({ - success: true, - result: resultInit, + withingsDevices: resultInit, }); } diff --git a/server/services/withings/lib/withings.deleteDevices.js b/server/services/withings/lib/withings.deleteDevices.js index 119af9ad5c..90ee4c3c9e 100755 --- a/server/services/withings/lib/withings.deleteDevices.js +++ b/server/services/withings/lib/withings.deleteDevices.js @@ -1,12 +1,10 @@ /** * @description Delete all devices (and variables) of withings integration. - * @returns {Promise} Resolve with succes result. * @example * withings.deleteDevices(); */ async function deleteDevices() { await this.gladys.device.destroyByServiceId(this.serviceId); - return { success: true }; } module.exports = { diff --git a/server/services/withings/lib/withings.init.js b/server/services/withings/lib/withings.init.js index bbfcd9d556..e131219716 100755 --- a/server/services/withings/lib/withings.init.js +++ b/server/services/withings/lib/withings.init.js @@ -8,6 +8,8 @@ const { DEVICE_FEATURE_UNITS, } = require('../../../utils/constants'); +const withingsDeviceIdName = 'WITHINGS_DEVICE_ID'; + /** * @description Build a new gladys device from withings device. * @@ -24,7 +26,7 @@ function buildNewDevice(withingsDevice, serviceId) { // Build params for all device const newParams = [ { - name: 'WITHINGS_DEVICE_ID', + name: withingsDeviceIdName, value: withingsDevice.deviceid, }, ]; @@ -327,19 +329,39 @@ async function init(userId) { }); }); - // Save device with feature + // get device in db to know device already connected const { gladys } = this; + const devicesInDB = await gladys.device.get({ service: 'withings' }); + + // Save device with feature + const devicesResult = []; await mapOfDeviceByWithingsDeviceId.forEach((value, key) => { if (key) { - const arrayOfFeatures = mapOfFeatureByWithingsDeviceId.get(key); - // Assign features to device - value.features = value.features.concat(arrayOfFeatures); - // Save all device (with feature) - gladys.device.create(value); + let matchDeviceInDB; + if (devicesInDB) { + const currentDeviceParam = value.params.filter((element) => element.name === withingsDeviceIdName); + if (currentDeviceParam) { + const currentWithingsDeviceId = currentDeviceParam.value; + + matchDeviceInDB = devicesInDB.find( + (element) => + element.params.find((param) => param.name === withingsDeviceIdName).VALUE === currentWithingsDeviceId, + ); + } + } + if (matchDeviceInDB) { + matchDeviceInDB.inDB = true; + devicesResult.push(matchDeviceInDB); + } else { + const arrayOfFeatures = mapOfFeatureByWithingsDeviceId.get(key); + // Assign features to device + value.features = value.features.concat(arrayOfFeatures); + devicesResult.push(value); + } } }); - return mapOfDeviceByWithingsDeviceId.values(); + return devicesResult; } module.exports = { diff --git a/server/services/withings/lib/withings.poll.js b/server/services/withings/lib/withings.poll.js index 8799076fc1..079a4043d4 100755 --- a/server/services/withings/lib/withings.poll.js +++ b/server/services/withings/lib/withings.poll.js @@ -111,7 +111,7 @@ async function poll(device) { if (measureResult.data.body.measuregrps) { const mapOfMeasuresGrpsByWithingsDeviceId = new Map(); - await Promise.each(measureResult.data.body.measuregrps, async (element) => { + measureResult.data.body.measuregrps.forEach((element) => { if (element) { // Build map of measuregrps by withings device id const measureList = mapOfMeasuresGrpsByWithingsDeviceId.get(element.deviceid) || []; diff --git a/server/test/lib/oauth2/oauth2manager.test.js b/server/test/lib/oauth2/oauth2manager.test.js index b24e9c600f..3b0bbe4589 100755 --- a/server/test/lib/oauth2/oauth2manager.test.js +++ b/server/test/lib/oauth2/oauth2manager.test.js @@ -1,10 +1,11 @@ const { OAuth2Server } = require('oauth2-mock-server'); -const { assert } = require('chai'); +const { assert, expect } = require('chai'); const { fake } = require('sinon'); const OAuth2Manager = require('../../../lib/oauth2'); const logger = require('../../../utils/logger'); const { OAUTH2 } = require('../../../utils/constants'); +const { Error500 } = require('../../../utils/httpErrors'); const server = new OAuth2Server(); @@ -108,7 +109,7 @@ describe('oauth2manager test', () => { return assert.equal(result, null); }); - it('oauth manager get error deleteVar test ', async () => { + it('oauth manager deleteClient test ', async () => { const result = await manager.deleteClient(testServiceId, testUserId); logger.debug(result); return assert.equal(result.success, true); @@ -119,10 +120,14 @@ describe('oauth2manager failled test', () => { // check error const manager = new OAuth2Manager(null); - it('oauth manager get error deleteVar failled test ', async () => { - const result = await manager.deleteClient(testServiceId, testUserId); - logger.debug(result); - return assert.equal(result.success, false); + it('oauth manager get error deleteClient failled test ', async () => { + try { + const result = await manager.deleteClient(testServiceId, testUserId); + logger.debug(result); + assert.fail('should have Error500 error'); + } catch (e) { + expect(e).to.be.instanceOf(Error500); + } }); }); diff --git a/server/test/services/withings/lib/withings.deleteDevices.test.js b/server/test/services/withings/lib/withings.deleteDevices.test.js index 08c06e13c5..0d7a674c5e 100644 --- a/server/test/services/withings/lib/withings.deleteDevices.test.js +++ b/server/test/services/withings/lib/withings.deleteDevices.test.js @@ -1,5 +1,5 @@ -const { expect } = require('chai'); -const { fake } = require('sinon'); +const { fake, assert } = require('sinon'); + const WithingsHandler = require('../../../../services/withings/lib'); const gladys = { @@ -10,7 +10,7 @@ describe('WithingsHandler deleteDevices', () => { const withingsHandler = new WithingsHandler(gladys, null, null, null); it('delete devices', async () => { - const result = await withingsHandler.deleteDevices(); - expect(result).to.eql({ success: true }); + await withingsHandler.deleteDevices(); + assert.calledWith(gladys.device.destroyByServiceId, withingsHandler.serviceId); }); }); diff --git a/server/test/services/withings/lib/withings.deleteVar.test.js b/server/test/services/withings/lib/withings.deleteVar.test.js index b8db3b82c4..5a8f689864 100644 --- a/server/test/services/withings/lib/withings.deleteVar.test.js +++ b/server/test/services/withings/lib/withings.deleteVar.test.js @@ -1,6 +1,7 @@ -const { expect } = require('chai'); +const { expect, assert } = require('chai'); const { fake } = require('sinon'); const WithingsHandler = require('../../../../services/withings/lib'); +const { Error500 } = require('../../../../utils/httpErrors'); const gladysOk = { variable: { destroy: fake.resolves(null) }, @@ -20,7 +21,11 @@ describe('WithingsHandler deleteVar', () => { it('fails to delete oauth2 vars', async () => { const withingsHandler = new WithingsHandler(gladysKo, null, null, null); - const result = await withingsHandler.deleteVar('req', undefined); - expect(result).to.eql({ success: false, errorMsg: 'Fail to delete' }); + try { + await withingsHandler.deleteVar('req', undefined); + assert.fail('should have Error500 error'); + } catch (e) { + expect(e).to.be.instanceOf(Error500); + } }); }); diff --git a/server/test/services/withings/lib/withings.init.test.js b/server/test/services/withings/lib/withings.init.test.js index 5c14ccf47b..7fc58ff555 100644 --- a/server/test/services/withings/lib/withings.init.test.js +++ b/server/test/services/withings/lib/withings.init.test.js @@ -11,6 +11,7 @@ const gladys = { device: { create: fake.returns(null), destroyByServiceId: fake.returns(null), + get: fake.returns(null), saveHistoricalState: function shs(device, featureBattery, featureState) { device.featureBattery = featureBattery; device.featureBattery = featureState; @@ -302,38 +303,38 @@ describe('WithingsHandler init', () => { const result = await withingsHandler.init('0cd30aef-9c4e-4a23-88e3-3547971296e5'); - const firstResult = result.next(); - const secondResult = result.next(); - const thirdResult = result.next(); - const fourResult = result.next(); + const firstResult = result[0]; + const secondResult = result[1]; + const thirdResult = result[2]; + const fourResult = result[3]; - await assert.equal(firstResult.value.name, 'Withings - string'); - await assert.equal(firstResult.value.service_id, '55f177d7-bc35-4560-a1f0-4c58b9e9f2c4'); - await assert.equal(firstResult.value.should_poll, true); - await assert.equal(firstResult.value.poll_frequency, 86400000); + await assert.equal(firstResult.name, 'Withings - string'); + await assert.equal(firstResult.service_id, '55f177d7-bc35-4560-a1f0-4c58b9e9f2c4'); + await assert.equal(firstResult.should_poll, true); + await assert.equal(firstResult.poll_frequency, 86400000); - const featureCreated = firstResult.value.features; + const featureCreated = firstResult.features; await assert.equal(featureCreated.length, 18); - let paramCreated = firstResult.value.params; + let paramCreated = firstResult.params; await assert.equal(paramCreated.length, 1); await assert.equal(paramCreated[0].name, 'WITHINGS_DEVICE_ID'); await assert.equal(paramCreated[0].value, 'withingsDevideId'); - await assert.equal(secondResult.value.name, 'Withings - string'); - paramCreated = secondResult.value.params; + await assert.equal(secondResult.name, 'Withings - string'); + paramCreated = secondResult.params; await assert.equal(paramCreated.length, 1); await assert.equal(paramCreated[0].name, 'WITHINGS_DEVICE_ID'); await assert.equal(paramCreated[0].value, 'withingsDevideId2'); - await assert.equal(thirdResult.value.name, 'Withings - string'); - paramCreated = thirdResult.value.params; + await assert.equal(thirdResult.name, 'Withings - string'); + paramCreated = thirdResult.params; await assert.equal(paramCreated.length, 1); await assert.equal(paramCreated[0].name, 'WITHINGS_DEVICE_ID'); await assert.equal(paramCreated[0].value, 'withingsDevideId3'); - await assert.equal(fourResult.value.name, 'Withings - string'); - paramCreated = fourResult.value.params; + await assert.equal(fourResult.name, 'Withings - string'); + paramCreated = fourResult.params; await assert.equal(paramCreated.length, 1); await assert.equal(paramCreated[0].name, 'WITHINGS_DEVICE_ID'); await assert.equal(paramCreated[0].value, 'withingsDevideId4'); From 5bff196713068840088a22bcff17e6ca176b4b3b Mon Sep 17 00:00:00 2001 From: Euguuu Date: Sun, 6 Feb 2022 20:12:13 +0100 Subject: [PATCH 020/164] fix cypress --- .../withings/settings/WithingsSettings.js | 35 ++++++++++++------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/front/cypress/integration/routes/integration/withings/settings/WithingsSettings.js b/front/cypress/integration/routes/integration/withings/settings/WithingsSettings.js index aa78353153..783eb49a8b 100644 --- a/front/cypress/integration/routes/integration/withings/settings/WithingsSettings.js +++ b/front/cypress/integration/routes/integration/withings/settings/WithingsSettings.js @@ -1,5 +1,27 @@ describe('Withings settings page', () => { before(() => { + const serverUrl = Cypress.env('serverUrl'); + cy.intercept( + { + method: 'POST', + url: `${serverUrl}/api/v1/service/oauth2/client/authorization-uri` + }, + req => { + req.reply(res => { + res.body.authorizationUri = `/dashboard/integration/health/withings/settings`; + }); + } + ); + cy.intercept( + { + method: 'POST', + url: `${serverUrl}/api/v1/service/withings/init` + }, + { + body: [] + } + ); + cy.login(); cy.visit('/dashboard/integration/health/withings/settings'); @@ -20,19 +42,6 @@ describe('Withings settings page', () => { .clear() .type('FakeSecret'); - const serverUrl = Cypress.env('serverUrl'); - cy.intercept( - { - method: 'POST', - url: `${serverUrl}/api/v1/service/oauth2/client/authorization-uri` - }, - req => { - req.reply(res => { - res.body.authorizationUri = `/dashboard/integration/health/withings/settings`; - }); - } - ); - cy.contains('button', 'integration.oauth2.buttonConnect').click(); // Check redirected to settings page From e935bee17b35bafd3bffa8b48ede344c4cdbd244 Mon Sep 17 00:00:00 2001 From: Euguuu Date: Mon, 28 Feb 2022 17:08:47 +0100 Subject: [PATCH 021/164] fix for review --- front/src/components/oauth2/actions.js | 3 +- .../all/withings/device-page/actions.js | 1 + server/api/controllers/oauth2.controller.js | 43 +++--- server/lib/device/device.create.js | 10 -- .../lib/device/device.saveHistoricalState.js | 9 -- server/package-lock.json | 14 +- server/package.json | 2 +- .../withings/api/withings.controller.js | 16 +- server/services/withings/index.js | 4 +- server/services/withings/lib/withings.init.js | 145 ++++++++---------- server/services/withings/lib/withings.poll.js | 9 +- .../oauth2/oauth2.controller.test.js | 16 +- .../withings/api/withings.controller.test.js | 12 ++ 13 files changed, 138 insertions(+), 146 deletions(-) diff --git a/front/src/components/oauth2/actions.js b/front/src/components/oauth2/actions.js index f6ed0f9a27..1447a310c1 100755 --- a/front/src/components/oauth2/actions.js +++ b/front/src/components/oauth2/actions.js @@ -75,7 +75,8 @@ const actions = store => ({ integrationName: state.integrationName, serviceId }); - if (returnValue.success === true) { + + if (returnValue.authorizationUri) { window.location = returnValue.authorizationUri; } else { store.setState({ diff --git a/front/src/routes/integration/all/withings/device-page/actions.js b/front/src/routes/integration/all/withings/device-page/actions.js index c494501020..1514aad3ad 100755 --- a/front/src/routes/integration/all/withings/device-page/actions.js +++ b/front/src/routes/integration/all/withings/device-page/actions.js @@ -56,6 +56,7 @@ const actions = store => ({ const deviceSaved = await state.httpClient.post('/api/v1/device', device); device.inDB = true; device.selector = deviceSaved.selector; + await state.httpClient.get('/api/v1/service/withings/poll'); }, async deleteDevice(state, device, index) { await state.httpClient.delete(`/api/v1/device/${device.selector}`); diff --git a/server/api/controllers/oauth2.controller.js b/server/api/controllers/oauth2.controller.js index f2f12bc874..c188cb931a 100644 --- a/server/api/controllers/oauth2.controller.js +++ b/server/api/controllers/oauth2.controller.js @@ -2,6 +2,7 @@ const { AuthorizationCode } = require('simple-oauth2'); const logger = require('../../utils/logger'); const asyncMiddleware = require('../middlewares/asyncMiddleware'); const { OAUTH2 } = require('../../utils/constants'); +const { Error500 } = require('../../utils/httpErrors'); module.exports = function OAuth2Controller(gladys) { /** @@ -46,7 +47,6 @@ module.exports = function OAuth2Controller(gladys) { }); res.json({ - success: true, authorizationUri: authorizationUriResult, }); } @@ -93,6 +93,7 @@ module.exports = function OAuth2Controller(gladys) { code: authorizationCode, client_id: clientId, client_secret: secret, + action: 'requesttoken', grant_type: grantType, redirect_uri: `${req.headers.referer}${redirectUriSuffix}`, }; @@ -101,25 +102,30 @@ module.exports = function OAuth2Controller(gladys) { const client = new AuthorizationCode(credentials); const authResult = await client.getToken(tokenConfig, { json: true }); - // Save accessToken - await gladys.variable.setValue( - `${OAUTH2.VARIABLE.ACCESS_TOKEN}`, - JSON.stringify(authResult), - req.body.serviceId, - req.user.id, - ); - - res.json({ - success: true, - result: authResult, - }); + if (authResult.token) { + if (authResult.token.status && authResult.token.status !== 0) { + throw new Error500('Oauth2 get token response is not with status 0'); + } + + let jsonResult; + if (authResult.token.body) { + jsonResult = JSON.stringify(authResult.token.body); + } else { + jsonResult = JSON.stringify(authResult.token); + } + + // Save accessToken + await gladys.variable.setValue(`${OAUTH2.VARIABLE.ACCESS_TOKEN}`, jsonResult, req.body.serviceId, req.user.id); + + res.json({ + result: authResult, + }); + } } catch (error) { + await gladys.variable.destroy(`${OAUTH2.VARIABLE.CLIENT_ID}`, req.body.serviceId, req.user.id); + await gladys.variable.destroy(`${OAUTH2.VARIABLE.CLIENT_SECRET}`, req.body.serviceId, req.user.id); logger.error(error); - - res.json({ - success: false, - result: error.message, - }); + throw new Error500(error); } } @@ -135,7 +141,6 @@ module.exports = function OAuth2Controller(gladys) { const resultClientId = await gladys.variable.getValue(`${OAUTH2.VARIABLE.CLIENT_ID}`, serviceId, req.user.id); res.json({ - success: true, clientId: resultClientId, }); } diff --git a/server/lib/device/device.create.js b/server/lib/device/device.create.js index a47c89519b..a41bb6334f 100644 --- a/server/lib/device/device.create.js +++ b/server/lib/device/device.create.js @@ -120,16 +120,6 @@ async function create(device) { feature.device_id = deviceToReturn.id; const featureCreated = await db.DeviceFeature.create(feature, { transaction }); - // if feature state are attached, save feature state - if (feature.feature_state) { - feature.feature_state.forEach(async (state) => { - if (state.created_at) { - state.device_feature_id = featureCreated.id; - db.DeviceFeatureState.create(state, { transaction }); - } - }); - } - return featureCreated.get({ plain: true }); }); deviceToReturn.features = newFeatures; diff --git a/server/lib/device/device.saveHistoricalState.js b/server/lib/device/device.saveHistoricalState.js index 15fabb7581..de8dadb162 100644 --- a/server/lib/device/device.saveHistoricalState.js +++ b/server/lib/device/device.saveHistoricalState.js @@ -1,6 +1,5 @@ const db = require('../../models'); const logger = require('../../utils/logger'); -const { EVENTS } = require('../../utils/constants'); /** * @description Save hstorical device feature state in DB. @@ -54,14 +53,6 @@ async function saveHistoricalState(device, deviceFeature, historicalState) { // save local state in RAM this.stateManager.setState('deviceFeature', deviceFeature.selector, deviceFeature); - - // check if there is a trigger matching - this.eventManager.emit(EVENTS.TRIGGERS.CHECK, { - type: EVENTS.DEVICE.NEW_STATE, - device_feature: deviceFeature.selector, - last_value: historicalState.value, - last_value_changed: historicalState.updated_at, - }); } } diff --git a/server/package-lock.json b/server/package-lock.json index 8ee0288e9e..674e21e5ab 100644 --- a/server/package-lock.json +++ b/server/package-lock.json @@ -38,7 +38,7 @@ "sequelize": "^6.5.0", "sequelize-cli": "^6.2.0", "set-value": "^3.0.2", - "simple-oauth2": "^4.2.0", + "simple-oauth2": "^4.3.0", "sqlite3": "^5.0.2", "suncalc": "^1.8.0", "tracer": "^1.1.4", @@ -10891,9 +10891,9 @@ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" }, "node_modules/simple-oauth2": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/simple-oauth2/-/simple-oauth2-4.2.0.tgz", - "integrity": "sha512-AV62tGdq9JfLd/uveKpeNtQl+VVm89a35QKlwGuvisYIjCoz2ZmTGRGuSIGiYr+QUhSKJ5kYN1jq2BBa/ac/GQ==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/simple-oauth2/-/simple-oauth2-4.3.0.tgz", + "integrity": "sha512-gjLIfy7M7WZSf3k5IZCQfEozbQwmW80zR9YMH4ph/WWG6S4U6sGhPujz8X6Hj6sZ8l7acSAxiyM4tF0vIN+E+A==", "dependencies": { "@hapi/hoek": "^9.0.4", "@hapi/wreck": "^17.0.0", @@ -21351,9 +21351,9 @@ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" }, "simple-oauth2": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/simple-oauth2/-/simple-oauth2-4.2.0.tgz", - "integrity": "sha512-AV62tGdq9JfLd/uveKpeNtQl+VVm89a35QKlwGuvisYIjCoz2ZmTGRGuSIGiYr+QUhSKJ5kYN1jq2BBa/ac/GQ==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/simple-oauth2/-/simple-oauth2-4.3.0.tgz", + "integrity": "sha512-gjLIfy7M7WZSf3k5IZCQfEozbQwmW80zR9YMH4ph/WWG6S4U6sGhPujz8X6Hj6sZ8l7acSAxiyM4tF0vIN+E+A==", "requires": { "@hapi/hoek": "^9.0.4", "@hapi/wreck": "^17.0.0", diff --git a/server/package.json b/server/package.json index a06a33e21d..b408220679 100644 --- a/server/package.json +++ b/server/package.json @@ -105,7 +105,7 @@ "sequelize": "^6.5.0", "sequelize-cli": "^6.2.0", "set-value": "^3.0.2", - "simple-oauth2": "^4.2.0", + "simple-oauth2": "^4.3.0", "sqlite3": "^5.0.2", "suncalc": "^1.8.0", "tracer": "^1.1.4", diff --git a/server/services/withings/api/withings.controller.js b/server/services/withings/api/withings.controller.js index 5128421a97..6e069b04c8 100755 --- a/server/services/withings/api/withings.controller.js +++ b/server/services/withings/api/withings.controller.js @@ -3,7 +3,7 @@ const asyncMiddleware = require('../../../api/middlewares/asyncMiddleware'); module.exports = function WithingsController(withingsHandler) { /** * @description Init gladys devices with withings devices. - * @api {post} /api/v1/service/withings/init Init gladys devices ith withings devices. + * @api {post} /api/v1/service/withings/init Init gladys devices with withings devices. * @apiName init * @apiGroup Withings */ @@ -14,6 +14,16 @@ module.exports = function WithingsController(withingsHandler) { }); } + /** + * @description Poll withings devices (used to initialize featuer state on gladys device creation). + * @api {get} /api/v1/service/withings/poll Poll withings devices. + * @apiName poll + * @apiGroup Withings + */ + async function poll(req, res) { + await withingsHandler.poll(); + } + /** * @description Delete clientId and secret of withings oauth2 api. * @api {get} /api/v1/service/withings/deleteConfig Delete clientId and secret of withings oauth2 api. @@ -37,5 +47,9 @@ module.exports = function WithingsController(withingsHandler) { authenticated: true, controller: asyncMiddleware(deleteConfig), }, + 'get /api/v1/service/withings/poll': { + authenticated: true, + controller: asyncMiddleware(poll), + }, }; }; diff --git a/server/services/withings/index.js b/server/services/withings/index.js index c146a7899c..a64ef1aada 100755 --- a/server/services/withings/index.js +++ b/server/services/withings/index.js @@ -19,8 +19,8 @@ module.exports = function WithingsService(gladys, serviceId) { const tokenHost = await gladys.variable.getValue(`${OAUTH2.VARIABLE.TOKEN_HOST}`, serviceId); if (!tokenHost) { // Init variable in db - await gladys.variable.setValue(`${OAUTH2.VARIABLE.TOKEN_HOST}`, 'https://account.withings.com', serviceId); - await gladys.variable.setValue(`${OAUTH2.VARIABLE.TOKEN_PATH}`, '/oauth2/token', serviceId); + await gladys.variable.setValue(`${OAUTH2.VARIABLE.TOKEN_HOST}`, 'https://wbsapi.withings.net', serviceId); + await gladys.variable.setValue(`${OAUTH2.VARIABLE.TOKEN_PATH}`, '/v2/oauth2', serviceId); await gladys.variable.setValue(`${OAUTH2.VARIABLE.AUTHORIZE_HOST}`, 'https://account.withings.com', serviceId); await gladys.variable.setValue(`${OAUTH2.VARIABLE.AUTHORIZE_PATH}`, '/oauth2_user/authorize2', serviceId); await gladys.variable.setValue( diff --git a/server/services/withings/lib/withings.init.js b/server/services/withings/lib/withings.init.js index e131219716..ad43c8c41d 100755 --- a/server/services/withings/lib/withings.init.js +++ b/server/services/withings/lib/withings.init.js @@ -239,25 +239,6 @@ function buildFeature(currentGroup, device, currentFeatures) { }; } - // Build a feature state - const uniqueSateId = uuid.v4(); - const createDate = new Date(currentGroup.created * 1000); - const featureState = { - id: uniqueSateId, - device_feature_id: tmpFeature.id, - value: (element.value * 10 ** element.unit).toFixed(2), - created_at: createDate, - updated_at: new Date(), - }; - - tmpFeature.feature_state.push(featureState); - - if (!tmpFeature.last_value || tmpFeature.last_value_changed < createDate) { - tmpFeature.last_value_changed = createDate; - tmpFeature.last_value = featureState.value; - tmpFeature.last_value_string = `${featureState.value}`; - } - if (isNewFeature) { features.push(tmpFeature); } @@ -287,79 +268,81 @@ async function init(userId) { ); const devices = []; + const devicesResult = []; const mapOfDeviceByWithingsDeviceId = new Map(); - await userResult.data.body.devices.forEach((element) => { - if (element) { - // Build one gladys device for each withings device found - const newDevice = buildNewDevice(element, serviceId); - devices.push(newDevice); - mapOfDeviceByWithingsDeviceId.set(element.deviceid, newDevice); - } - }); + if (userResult.data.body.devices) { + await userResult.data.body.devices.forEach((element) => { + if (element) { + // Build one gladys device for each withings device found + const newDevice = buildNewDevice(element, serviceId); + devices.push(newDevice); + mapOfDeviceByWithingsDeviceId.set(element.deviceid, newDevice); + } + }); - const measureResult = await oauth2Manager.executeOauth2HTTPQuery( - serviceId, - userId, - 'get', - `${this.withingsUrl}/measure`, - 'action=getmeas', - ); + const measureResult = await oauth2Manager.executeOauth2HTTPQuery( + serviceId, + userId, + 'get', + `${this.withingsUrl}/measure`, + 'action=getmeas', + ); - const mapOfMeasuresGrpsByWithingsDeviceId = new Map(); - await measureResult.data.body.measuregrps.forEach((element) => { - if (element) { - // Build map of measuregrps by withings device id - const measureList = mapOfMeasuresGrpsByWithingsDeviceId.get(element.deviceid) || []; - measureList.push(element); - mapOfMeasuresGrpsByWithingsDeviceId.set(element.deviceid, measureList); - } - }); + const mapOfMeasuresGrpsByWithingsDeviceId = new Map(); + await measureResult.data.body.measuregrps.forEach((element) => { + if (element) { + // Build map of measuregrps by withings device id + const measureList = mapOfMeasuresGrpsByWithingsDeviceId.get(element.deviceid) || []; + measureList.push(element); + mapOfMeasuresGrpsByWithingsDeviceId.set(element.deviceid, measureList); + } + }); - const mapOfFeatureByWithingsDeviceId = new Map(); - await mapOfMeasuresGrpsByWithingsDeviceId.forEach((value, key) => { - value.forEach((currentGroup) => { - if (key) { - const currentFeatures = mapOfFeatureByWithingsDeviceId.get(key); - const features = buildFeature(currentGroup, mapOfDeviceByWithingsDeviceId.get(key), currentFeatures); - if (features) { - mapOfFeatureByWithingsDeviceId.delete(key); - mapOfFeatureByWithingsDeviceId.set(key, features); + const mapOfFeatureByWithingsDeviceId = new Map(); + await mapOfMeasuresGrpsByWithingsDeviceId.forEach((value, key) => { + value.forEach((currentGroup) => { + if (key) { + const currentFeatures = mapOfFeatureByWithingsDeviceId.get(key); + const features = buildFeature(currentGroup, mapOfDeviceByWithingsDeviceId.get(key), currentFeatures); + if (features) { + mapOfFeatureByWithingsDeviceId.delete(key); + mapOfFeatureByWithingsDeviceId.set(key, features); + } } - } + }); }); - }); - // get device in db to know device already connected - const { gladys } = this; - const devicesInDB = await gladys.device.get({ service: 'withings' }); + // get device in db to know device already connected + const { gladys } = this; + const devicesInDB = await gladys.device.get({ service: 'withings' }); - // Save device with feature - const devicesResult = []; - await mapOfDeviceByWithingsDeviceId.forEach((value, key) => { - if (key) { - let matchDeviceInDB; - if (devicesInDB) { - const currentDeviceParam = value.params.filter((element) => element.name === withingsDeviceIdName); - if (currentDeviceParam) { - const currentWithingsDeviceId = currentDeviceParam.value; + // Save device with feature + await mapOfDeviceByWithingsDeviceId.forEach((value, key) => { + if (key) { + let matchDeviceInDB; + if (devicesInDB) { + const currentDeviceParam = value.params.filter((element) => element.name === withingsDeviceIdName); + if (currentDeviceParam) { + const currentWithingsDeviceId = currentDeviceParam.value; - matchDeviceInDB = devicesInDB.find( - (element) => - element.params.find((param) => param.name === withingsDeviceIdName).VALUE === currentWithingsDeviceId, - ); + matchDeviceInDB = devicesInDB.find( + (element) => + element.params.find((param) => param.name === withingsDeviceIdName).VALUE === currentWithingsDeviceId, + ); + } + } + if (matchDeviceInDB) { + matchDeviceInDB.inDB = true; + devicesResult.push(matchDeviceInDB); + } else { + const arrayOfFeatures = mapOfFeatureByWithingsDeviceId.get(key); + // Assign features to device + value.features = value.features.concat(arrayOfFeatures); + devicesResult.push(value); } } - if (matchDeviceInDB) { - matchDeviceInDB.inDB = true; - devicesResult.push(matchDeviceInDB); - } else { - const arrayOfFeatures = mapOfFeatureByWithingsDeviceId.get(key); - // Assign features to device - value.features = value.features.concat(arrayOfFeatures); - devicesResult.push(value); - } - } - }); + }); + } return devicesResult; } diff --git a/server/services/withings/lib/withings.poll.js b/server/services/withings/lib/withings.poll.js index 079a4043d4..2ada0236bb 100755 --- a/server/services/withings/lib/withings.poll.js +++ b/server/services/withings/lib/withings.poll.js @@ -99,14 +99,17 @@ async function poll(device) { if (withingsType > 0) { logger.debug('Current feature last value changed: ', feature.last_value_changed); + // Fix date to start poll in tmestamp + let dateToPoll = 0; + if (feature.last_value_changed) { + dateToPoll = feature.last_value_changed.getTime(); + } const measureResult = await oauth2Manager.executeOauth2HTTPQuery( this.serviceId, user.id, 'get', `${this.withingsUrl}/measure`, - `action=getmeas&meastype=${withingsType}&category=1&lastupdate=${feature.last_value_changed.getTime() / - 1000 + - 1}`, + `action=getmeas&meastype=${withingsType}&category=1&lastupdate=${dateToPoll / 1000 + 1}`, ); if (measureResult.data.body.measuregrps) { diff --git a/server/test/controllers/oauth2/oauth2.controller.test.js b/server/test/controllers/oauth2/oauth2.controller.test.js index eb7e801b65..c19a68e8eb 100755 --- a/server/test/controllers/oauth2/oauth2.controller.test.js +++ b/server/test/controllers/oauth2/oauth2.controller.test.js @@ -37,7 +37,6 @@ describe('POST /api/v1/service/oauth2/client/authorization-uri', () => { .expect('Content-Type', /json/) .expect(200) .then((res) => { - expect(res.body).to.have.property('success'); expect(res.body).to.have.property('authorizationUri'); }); }); @@ -71,16 +70,15 @@ describe('POST /api/v1/service/oauth2/client/access-token-uri', () => { .expect('Content-Type', /json/) .expect(200) .then((res) => { - expect(res.body).to.have.property('success'); expect(res.body).to.have.property('result'); - assert.equal(res.body.success, true); + assert.equal(res.body.result.expires_in, 3600); }); }); }); // failled call describe('POST /api/v1/service/oauth2/client/access-token-uri', () => { - it('should get token access uri', async () => { + it('should get 500 HTTP error on token access uri', async () => { const req = { integrationName: 'test', serviceId: 'a810b8db-6d04-4697-bed3-c4b72c996279', @@ -91,12 +89,7 @@ describe('POST /api/v1/service/oauth2/client/access-token-uri', () => { .post('/api/v1/service/oauth2/client/access-token-uri') .send(req) .expect('Content-Type', /json/) - .expect(200) - .then((res) => { - expect(res.body).to.have.property('success'); - expect(res.body).to.have.property('result'); - assert.equal(res.body.success, false); - }); + .expect(500); }); }); @@ -127,9 +120,8 @@ describe('GET /api/v1/service/oauth2/client', () => { .expect('Content-Type', /json/) .expect(200) .then((res) => { - expect(res.body).to.have.property('success'); expect(res.body).to.have.property('clientId'); - assert.equal(res.body.success, true); + assert.equal(res.body.clientId, 'OAUTH2_CLIENT_ID'); }); }); }); diff --git a/server/test/services/withings/api/withings.controller.test.js b/server/test/services/withings/api/withings.controller.test.js index a1bf90773f..2dc77e8924 100644 --- a/server/test/services/withings/api/withings.controller.test.js +++ b/server/test/services/withings/api/withings.controller.test.js @@ -3,6 +3,7 @@ const WithingsController = require('../../../../services/withings/api/withings.c const withingsHandler = { init: fake.resolves({ device: { name: 'testServiceID' } }), + poll: fake.resolves({}), deleteVar: fake.resolves({ success: true }), deleteDevices: fake.resolves({ success: true }), }; @@ -20,6 +21,17 @@ describe('WithingsController POST /api/v1/service/withings/init', () => { }); }); +describe('WithingsController GET /api/v1/service/withings/poll', () => { + const controller = WithingsController(withingsHandler); + + it('should poll', async () => { + const res = { json: fake.returns(null) }; + + await controller['get /api/v1/service/withings/poll'].controller({}, res); + assert.calledOnce(withingsHandler.poll); + }); +}); + describe('WithingsController GET /api/v1/service/withings/deleteConfig', () => { const controller = WithingsController(withingsHandler); From c264fd23512cfee4ebe4ea8714eeb39a0168ceac Mon Sep 17 00:00:00 2001 From: Euguuu Date: Tue, 1 Mar 2022 17:44:30 +0100 Subject: [PATCH 022/164] fix for review --- server/api/controllers/oauth2.controller.js | 8 ++- server/seeders/20190226025931-variable.js | 16 ++++++ server/services/withings/index.js | 5 ++ server/services/withings/lib/withings.init.js | 12 ++-- .../device/device.destroyByServiceId.test.js | 56 ++++++++++++++----- server/test/services/withings/index.test.js | 2 +- .../withings/lib/withings.init.test.js | 15 ++++- server/utils/constants.js | 1 + 8 files changed, 93 insertions(+), 22 deletions(-) diff --git a/server/api/controllers/oauth2.controller.js b/server/api/controllers/oauth2.controller.js index c188cb931a..98bec8089d 100644 --- a/server/api/controllers/oauth2.controller.js +++ b/server/api/controllers/oauth2.controller.js @@ -64,6 +64,10 @@ module.exports = function OAuth2Controller(gladys) { const authorizeHost = await gladys.variable.getValue(`${OAUTH2.VARIABLE.AUTHORIZE_HOST}`, req.body.serviceId); const authorizePath = await gladys.variable.getValue(`${OAUTH2.VARIABLE.AUTHORIZE_PATH}`, req.body.serviceId); const grantType = await gladys.variable.getValue(`${OAUTH2.VARIABLE.GRANT_TYPE}`, req.body.serviceId); + const additionalAccesTokenRequestAxtionParam = await gladys.variable.getValue( + `${OAUTH2.VARIABLE.ADDITIONAL_ACCESS_TOKEN_REQUEST_ACTION_PARAM}`, + req.body.serviceId, + ); const redirectUriSuffix = await gladys.variable.getValue( `${OAUTH2.VARIABLE.REDIRECT_URI_SUFFIX}`, req.body.serviceId, @@ -93,10 +97,12 @@ module.exports = function OAuth2Controller(gladys) { code: authorizationCode, client_id: clientId, client_secret: secret, - action: 'requesttoken', grant_type: grantType, redirect_uri: `${req.headers.referer}${redirectUriSuffix}`, }; + if (additionalAccesTokenRequestAxtionParam) { + tokenConfig.action = additionalAccesTokenRequestAxtionParam; + } try { const client = new AuthorizationCode(credentials); diff --git a/server/seeders/20190226025931-variable.js b/server/seeders/20190226025931-variable.js index 6a123706e5..666f6e0b35 100644 --- a/server/seeders/20190226025931-variable.js +++ b/server/seeders/20190226025931-variable.js @@ -111,6 +111,22 @@ module.exports = { created_at: '2019-02-12 07:49:07.556 +00:00', updated_at: '2019-02-12 07:49:07.556 +00:00', }, + { + id: '837seg11-1932-4695-b137-2d0182868f07', + name: 'OAUTH2_AUTHORIZE_PATH', + service_id: 'a810b8db-6d04-4697-bed3-c4b72c996279', + value: '/authorize2', + created_at: '2019-02-12 07:49:07.556 +00:00', + updated_at: '2019-02-12 07:49:07.556 +00:00', + }, + { + id: '837seg11-1932-4695-b137-2d0182868rt7', + name: 'ADDITIONAL_ACCESS_TOKEN_REQUEST_ACTION_PARAM', + service_id: 'a810b8db-6d04-4697-bed3-c4b72c996279', + value: 'requesttoken', + created_at: '2019-02-12 07:49:07.556 +00:00', + updated_at: '2019-02-12 07:49:07.556 +00:00', + }, ], {}, ), diff --git a/server/services/withings/index.js b/server/services/withings/index.js index a64ef1aada..93a205eede 100755 --- a/server/services/withings/index.js +++ b/server/services/withings/index.js @@ -23,6 +23,11 @@ module.exports = function WithingsService(gladys, serviceId) { await gladys.variable.setValue(`${OAUTH2.VARIABLE.TOKEN_PATH}`, '/v2/oauth2', serviceId); await gladys.variable.setValue(`${OAUTH2.VARIABLE.AUTHORIZE_HOST}`, 'https://account.withings.com', serviceId); await gladys.variable.setValue(`${OAUTH2.VARIABLE.AUTHORIZE_PATH}`, '/oauth2_user/authorize2', serviceId); + await gladys.variable.setValue( + `${OAUTH2.VARIABLE.ADDITIONAL_ACCESS_TOKEN_REQUEST_ACTION_PARAM}`, + 'requesttoken', + serviceId, + ); await gladys.variable.setValue( `${OAUTH2.VARIABLE.INTEGRATION_SCOPE}`, 'user.info,user.metrics,user.activity,user.sleepevents', diff --git a/server/services/withings/lib/withings.init.js b/server/services/withings/lib/withings.init.js index ad43c8c41d..fe436bb040 100755 --- a/server/services/withings/lib/withings.init.js +++ b/server/services/withings/lib/withings.init.js @@ -322,15 +322,17 @@ async function init(userId) { let matchDeviceInDB; if (devicesInDB) { const currentDeviceParam = value.params.filter((element) => element.name === withingsDeviceIdName); - if (currentDeviceParam) { - const currentWithingsDeviceId = currentDeviceParam.value; + if (currentDeviceParam && currentDeviceParam.length > 0) { + const currentWithingsDeviceId = currentDeviceParam[0].value; - matchDeviceInDB = devicesInDB.find( - (element) => - element.params.find((param) => param.name === withingsDeviceIdName).VALUE === currentWithingsDeviceId, + matchDeviceInDB = devicesInDB.find((element) => + element.params.find( + (param) => param.name === withingsDeviceIdName && param.value === currentWithingsDeviceId, + ), ); } } + if (matchDeviceInDB) { matchDeviceInDB.inDB = true; devicesResult.push(matchDeviceInDB); diff --git a/server/test/lib/device/device.destroyByServiceId.test.js b/server/test/lib/device/device.destroyByServiceId.test.js index dbf28fa76e..0c92b38737 100644 --- a/server/test/lib/device/device.destroyByServiceId.test.js +++ b/server/test/lib/device/device.destroyByServiceId.test.js @@ -1,26 +1,54 @@ const EventEmitter = require('events'); +const sinon = require('sinon'); const Device = require('../../../lib/device'); - const StateManager = require('../../../lib/state'); +const ServiceManager = require('../../../lib/service'); +const db = require('../../../models'); const event = new EventEmitter(); +const serviceName = 'fake-service'; describe('Device', () => { - it('save test param', async () => { - const stateManager = new StateManager(event); - stateManager.setState('device', 'test-device', { - id: 'cfsmb47f-4d25-4381-8923-2633b23192sm', - name: 'test', - service_id: 'test-delete', - }); + let serviceImpl; + let stateManager; + + beforeEach(async () => { + serviceImpl = { + id: 3030383, + selector: serviceName, + name: serviceName, + version: '0.1.0', + }; + + stateManager = new StateManager(); + stateManager.setState('service', serviceName, serviceImpl); - const device = new Device(event, {}, stateManager); - device.devicesByPollFrequency[60000] = [ - { - service_id: 'test-delete', + await db.Service.create(serviceImpl); + }); + + afterEach(async () => { + const serviceInDb = await db.Service.findOne({ + where: { + name: serviceName, }, - ]; - await device.destroyByServiceId('test-delete'); + }); + + await serviceInDb.destroy(); + + sinon.reset(); + }); + + it('should destroy device', async () => { + const serviceManager = new ServiceManager({}, stateManager); + const device = new Device(event, {}, stateManager, serviceManager); + await device.create({ + name: 'test-device-destroyByServiceId', + external_id: 'test-device-new-destroyByServiceId', + service_id: serviceImpl.id, + selector: 'test-device-destroyByServiceId', + }); + + await device.destroyByServiceId(serviceImpl.id); }); }); diff --git a/server/test/services/withings/index.test.js b/server/test/services/withings/index.test.js index 65ead586a5..631a3aa831 100755 --- a/server/test/services/withings/index.test.js +++ b/server/test/services/withings/index.test.js @@ -50,7 +50,7 @@ describe('withingsService', () => { ); it('should start service (without db var)', async () => { await withingsServiceWithoutDBVar.start(); - assert.equal(countSetValueCount, 7); + assert.equal(countSetValueCount, 8); }); it('should stop service (without db var)', async () => { await withingsServiceWithoutDBVar.stop(); diff --git a/server/test/services/withings/lib/withings.init.test.js b/server/test/services/withings/lib/withings.init.test.js index 7fc58ff555..d99eb62ec1 100644 --- a/server/test/services/withings/lib/withings.init.test.js +++ b/server/test/services/withings/lib/withings.init.test.js @@ -7,11 +7,24 @@ const { OAUTH2 } = require('../../../../utils/constants.js'); const serverOauth2 = new OAuth2Server(); const server = new ServerMock({ host: 'localhost', port: 9192 }, null); + const gladys = { device: { create: fake.returns(null), destroyByServiceId: fake.returns(null), - get: fake.returns(null), + get: function getFakeDevice() { + return [ + { + name: 'Withings - string', + params: [ + { + name: 'WITHINGS_DEVICE_ID', + value: 'withingsDevideId4', + }, + ], + }, + ]; + }, saveHistoricalState: function shs(device, featureBattery, featureState) { device.featureBattery = featureBattery; device.featureBattery = featureState; diff --git a/server/utils/constants.js b/server/utils/constants.js index fb6b71f0a6..1ce24862b9 100644 --- a/server/utils/constants.js +++ b/server/utils/constants.js @@ -609,6 +609,7 @@ const OAUTH2 = { TOKEN_PATH: 'OAUTH2_TOKEN_PATH', AUTHORIZE_HOST: 'OAUTH2_AUTHORIZE_HOST', AUTHORIZE_PATH: 'OAUTH2_AUTHORIZE_PATH', + ADDITIONAL_ACCESS_TOKEN_REQUEST_ACTION_PARAM: 'OAUTH2_ADDITIONAL_ACCESS_TOKEN_REQUEST_ACTION_PARAM', INTEGRATION_SCOPE: 'OAUTH2_INTEGRATION_SCOPE', GRANT_TYPE: 'OAUTH2_GRANT_TYPE', REDIRECT_URI_SUFFIX: 'OAUTH2_REDIRECT_URI_SUFFIX', From 7cc69900bebd72ddf17e81846a579c0875e7b665 Mon Sep 17 00:00:00 2001 From: Euguuu Date: Tue, 1 Mar 2022 18:57:03 +0100 Subject: [PATCH 023/164] fix test error --- server/seeders/20190226025931-variable.js | 8 -------- 1 file changed, 8 deletions(-) diff --git a/server/seeders/20190226025931-variable.js b/server/seeders/20190226025931-variable.js index 666f6e0b35..09b8135afc 100644 --- a/server/seeders/20190226025931-variable.js +++ b/server/seeders/20190226025931-variable.js @@ -111,14 +111,6 @@ module.exports = { created_at: '2019-02-12 07:49:07.556 +00:00', updated_at: '2019-02-12 07:49:07.556 +00:00', }, - { - id: '837seg11-1932-4695-b137-2d0182868f07', - name: 'OAUTH2_AUTHORIZE_PATH', - service_id: 'a810b8db-6d04-4697-bed3-c4b72c996279', - value: '/authorize2', - created_at: '2019-02-12 07:49:07.556 +00:00', - updated_at: '2019-02-12 07:49:07.556 +00:00', - }, { id: '837seg11-1932-4695-b137-2d0182868rt7', name: 'ADDITIONAL_ACCESS_TOKEN_REQUEST_ACTION_PARAM', From 3ae98ef9a84cd85fe0e6894ee4a1a2c95707614d Mon Sep 17 00:00:00 2001 From: Euguuu Date: Tue, 1 Mar 2022 21:08:35 +0100 Subject: [PATCH 024/164] fix for review --- front/src/components/oauth2/actions.js | 8 +- .../all/withings/settings-page/actions.js | 10 +- server/api/controllers/oauth2.controller.js | 226 +++++++++--------- .../lib/device/device.destroyByServiceId.js | 2 +- server/lib/oauth2/oauth2.deleteClient.js | 6 +- .../oauth2/oauth2.executeOauth2HTTPQuery.js | 20 +- server/services/withings/index.js | 4 +- server/services/withings/lib/withings.poll.js | 2 +- server/services/withings/package.json | 2 +- .../oauth2/oauth2.controller.test.js | 24 +- server/test/lib/oauth2/oauth2manager.test.js | 4 +- .../withings/lib/withings.init.test.js | 4 +- .../withings/lib/withings.poll.test.js | 6 +- 13 files changed, 162 insertions(+), 156 deletions(-) diff --git a/front/src/components/oauth2/actions.js b/front/src/components/oauth2/actions.js index 1447a310c1..377a8d3a9f 100755 --- a/front/src/components/oauth2/actions.js +++ b/front/src/components/oauth2/actions.js @@ -25,11 +25,11 @@ const actions = store => ({ const returnServiceId = (await state.httpClient.get(`/api/v1/service/${state.integrationName}`)).id; const returnGetConfig = await state.httpClient.get('/api/v1/service/oauth2/client', { - serviceId: returnServiceId + service_id: returnServiceId }); if (returnGetConfig) { store.setState({ - clientIdInDb: returnGetConfig.clientId, + clientIdInDb: returnGetConfig.client_id, oauth2ErrorMsg: null, oauth2GetStatus: RequestStatus.Success }); @@ -72,8 +72,8 @@ const actions = store => ({ const returnValue = await state.httpClient.post('/api/v1/service/oauth2/client/authorization-uri', { clientId: state.clientId, secret: state.secret, - integrationName: state.integrationName, - serviceId + integration_name: state.integrationName, + service_id: serviceId }); if (returnValue.authorizationUri) { diff --git a/front/src/routes/integration/all/withings/settings-page/actions.js b/front/src/routes/integration/all/withings/settings-page/actions.js index b78a8fe8ba..34e8d72eed 100755 --- a/front/src/routes/integration/all/withings/settings-page/actions.js +++ b/front/src/routes/integration/all/withings/settings-page/actions.js @@ -16,8 +16,8 @@ const actions = store => ({ const serviceId = (await state.httpClient.get(`/api/v1/service/withings`)).id; await state.httpClient.post('/api/v1/service/oauth2/client/access-token-uri', { integrationName: 'withings', - authorizationCode: queryParams.code, - serviceId + authorization_code: queryParams.code, + service_id: serviceId }); route('/dashboard/integration/health/withings/settings'); @@ -26,13 +26,13 @@ const actions = store => ({ const returnServiceId = (await state.httpClient.get('/api/v1/service/withings')).id; const returnGetConfig = await state.httpClient.get('/api/v1/service/oauth2/client', { - serviceId: returnServiceId + service_id: returnServiceId }); // Case of config found let withingsDevices; - if (returnGetConfig.clientId) { + if (returnGetConfig.client_id) { const result = await state.httpClient.post('/api/v1/service/withings/init'); - if (result) { + if (result) { withingsDevices = result.withingsDevices; } diff --git a/server/api/controllers/oauth2.controller.js b/server/api/controllers/oauth2.controller.js index 98bec8089d..f76b8d3437 100644 --- a/server/api/controllers/oauth2.controller.js +++ b/server/api/controllers/oauth2.controller.js @@ -12,43 +12,45 @@ module.exports = function OAuth2Controller(gladys) { * @apiGroup OAuth2 */ async function buildAuthorizationUri(req, res) { - // Find provider configuration - const tokenHost = await gladys.variable.getValue(`${OAUTH2.VARIABLE.TOKEN_HOST}`, req.body.serviceId); - const authorizeHost = await gladys.variable.getValue(`${OAUTH2.VARIABLE.AUTHORIZE_HOST}`, req.body.serviceId); - const authorizePath = await gladys.variable.getValue(`${OAUTH2.VARIABLE.AUTHORIZE_PATH}`, req.body.serviceId); - const integrationScope = await gladys.variable.getValue(`${OAUTH2.VARIABLE.INTEGRATION_SCOPE}`, req.body.serviceId); - const redirectUriSuffix = await gladys.variable.getValue( - `${OAUTH2.VARIABLE.REDIRECT_URI_SUFFIX}`, - req.body.serviceId, - ); - - // Get variale client id and client secret - const clientId = await gladys.variable.getValue(`${OAUTH2.VARIABLE.CLIENT_ID}`, req.body.serviceId, req.user.id); - const secret = await gladys.variable.getValue(`${OAUTH2.VARIABLE.CLIENT_SECRET}`, req.body.serviceId, req.user.id); - - // Init credentials based on integration name - const credentials = { - client: { - id: clientId, - secret, - }, - auth: { - tokenHost, - authorizeHost, - authorizePath, - }, - }; - - const client = new AuthorizationCode(credentials); - const authorizationUriResult = await client.authorizeURL({ - redirect_uri: `${req.headers.referer}${redirectUriSuffix}`, - scope: integrationScope, - state: `gladys_state_${req.body.integrationName}`, - }); - - res.json({ - authorizationUri: authorizationUriResult, - }); + if(req.body && req.body.service_id && req.user && req.user.id){ + // Find provider configuration + const tokenHost = await gladys.variable.getValue(OAUTH2.VARIABLE.TOKEN_HOST, req.body.service_id); + const authorizeHost = await gladys.variable.getValue(OAUTH2.VARIABLE.AUTHORIZE_HOST, req.body.service_id); + const authorizePath = await gladys.variable.getValue(OAUTH2.VARIABLE.AUTHORIZE_PATH, req.body.service_id); + const integrationScope = await gladys.variable.getValue(OAUTH2.VARIABLE.INTEGRATION_SCOPE, req.body.service_id); + const redirectUriSuffix = await gladys.variable.getValue( + OAUTH2.VARIABLE.REDIRECT_URI_SUFFIX, + req.body.service_id, + ); + + // Get variale client id and client secret + const clientId = await gladys.variable.getValue(OAUTH2.VARIABLE.CLIENT_ID, req.body.service_id, req.user.id); + const secret = await gladys.variable.getValue(OAUTH2.VARIABLE.CLIENT_SECRET, req.body.service_id, req.user.id); + + // Init credentials based on integration name + const credentials = { + client: { + id: clientId, + secret, + }, + auth: { + tokenHost, + authorizeHost, + authorizePath, + }, + }; + + const client = new AuthorizationCode(credentials); + const authorizationUriResult = await client.authorizeURL({ + redirect_uri: `${req.headers.referer}${redirectUriSuffix}`, + scope: integrationScope, + state: `gladys_state_${req.body.integration_ame}`, + }); + + res.json({ + authorizationUri: authorizationUriResult, + }); + } } /** @@ -58,80 +60,82 @@ module.exports = function OAuth2Controller(gladys) { * @apiGroup OAuth2 */ async function buildAccesTokenUri(req, res) { - // Find provider configuration - const tokenHost = await gladys.variable.getValue(`${OAUTH2.VARIABLE.TOKEN_HOST}`, req.body.serviceId); - const tokenPath = await gladys.variable.getValue(`${OAUTH2.VARIABLE.TOKEN_PATH}`, req.body.serviceId); - const authorizeHost = await gladys.variable.getValue(`${OAUTH2.VARIABLE.AUTHORIZE_HOST}`, req.body.serviceId); - const authorizePath = await gladys.variable.getValue(`${OAUTH2.VARIABLE.AUTHORIZE_PATH}`, req.body.serviceId); - const grantType = await gladys.variable.getValue(`${OAUTH2.VARIABLE.GRANT_TYPE}`, req.body.serviceId); - const additionalAccesTokenRequestAxtionParam = await gladys.variable.getValue( - `${OAUTH2.VARIABLE.ADDITIONAL_ACCESS_TOKEN_REQUEST_ACTION_PARAM}`, - req.body.serviceId, - ); - const redirectUriSuffix = await gladys.variable.getValue( - `${OAUTH2.VARIABLE.REDIRECT_URI_SUFFIX}`, - req.body.serviceId, - ); - - const { authorizationCode } = req.body; - - const clientId = await gladys.variable.getValue(`${OAUTH2.VARIABLE.CLIENT_ID}`, req.body.serviceId, req.user.id); - const secret = await gladys.variable.getValue(`${OAUTH2.VARIABLE.CLIENT_SECRET}`, req.body.serviceId, req.user.id); - - // Init credentials based on integration name - const credentials = { - client: { - id: clientId, - secret, - }, - auth: { - tokenHost, - tokenPath, - authorizeHost, - authorizePath, - }, - }; - - // Build token access request - const tokenConfig = { - code: authorizationCode, - client_id: clientId, - client_secret: secret, - grant_type: grantType, - redirect_uri: `${req.headers.referer}${redirectUriSuffix}`, - }; - if (additionalAccesTokenRequestAxtionParam) { - tokenConfig.action = additionalAccesTokenRequestAxtionParam; - } + if(req.body && req.body.service_id && req.user && req.user.id){ + // Find provider configuration + const tokenHost = await gladys.variable.getValue(OAUTH2.VARIABLE.TOKEN_HOST, req.body.service_id); + const tokenPath = await gladys.variable.getValue(OAUTH2.VARIABLE.TOKEN_PATH, req.body.service_id); + const authorizeHost = await gladys.variable.getValue(OAUTH2.VARIABLE.AUTHORIZE_HOST, req.body.service_id); + const authorizePath = await gladys.variable.getValue(OAUTH2.VARIABLE.AUTHORIZE_PATH, req.body.service_id); + const grantType = await gladys.variable.getValue(OAUTH2.VARIABLE.GRANT_TYPE, req.body.service_id); + const additionalAccesTokenRequestAxtionParam = await gladys.variable.getValue( + `${OAUTH2.VARIABLE.ADDITIONAL_ACCESS_TOKEN_REQUEST_ACTION_PARAM}`, + req.body.service_id, + ); + const redirectUriSuffix = await gladys.variable.getValue( + OAUTH2.VARIABLE.REDIRECT_URI_SUFFIX, + req.body.service_id, + ); + + const authorizationCode = req.body.authorization_code; + + const clientId = await gladys.variable.getValue(OAUTH2.VARIABLE.CLIENT_ID, req.body.service_id, req.user.id); + const secret = await gladys.variable.getValue(OAUTH2.VARIABLE.CLIENT_SECRET, req.body.service_id, req.user.id); + + // Init credentials based on integration name + const credentials = { + client: { + id: clientId, + secret, + }, + auth: { + tokenHost, + tokenPath, + authorizeHost, + authorizePath, + }, + }; + + // Build token access request + const tokenConfig = { + code: authorizationCode, + client_id: clientId, + client_secret: secret, + grant_type: grantType, + redirect_uri: `${req.headers.referer}${redirectUriSuffix}`, + }; + if (additionalAccesTokenRequestAxtionParam) { + tokenConfig.action = additionalAccesTokenRequestAxtionParam; + } - try { - const client = new AuthorizationCode(credentials); - const authResult = await client.getToken(tokenConfig, { json: true }); + try { + const client = new AuthorizationCode(credentials); + const authResult = await client.getToken(tokenConfig, { json: true }); - if (authResult.token) { - if (authResult.token.status && authResult.token.status !== 0) { - throw new Error500('Oauth2 get token response is not with status 0'); - } + if (authResult.token) { + if (authResult.token.status && authResult.token.status !== 0) { + throw new Error500('Oauth2 get token response is not with status 0'); + } - let jsonResult; - if (authResult.token.body) { - jsonResult = JSON.stringify(authResult.token.body); - } else { - jsonResult = JSON.stringify(authResult.token); - } + let jsonResult; + if (authResult.token.body) { + jsonResult = JSON.stringify(authResult.token.body); + } else { + jsonResult = JSON.stringify(authResult.token); + } - // Save accessToken - await gladys.variable.setValue(`${OAUTH2.VARIABLE.ACCESS_TOKEN}`, jsonResult, req.body.serviceId, req.user.id); + // Save accessToken + await gladys.variable.setValue(OAUTH2.VARIABLE.ACCESS_TOKEN, jsonResult, req.body.service_id, req.user.id); - res.json({ - result: authResult, - }); + res.json({ + result: authResult, + }); + } + } catch (error) { + await gladys.variable.destroy(OAUTH2.VARIABLE.CLIENT_ID, req.body.service_id, req.user.id); + await gladys.variable.destroy(OAUTH2.VARIABLE.CLIENT_SECRET, req.body.service_id, req.user.id); + logger.error(error); + throw new Error500(error); } - } catch (error) { - await gladys.variable.destroy(`${OAUTH2.VARIABLE.CLIENT_ID}`, req.body.serviceId, req.user.id); - await gladys.variable.destroy(`${OAUTH2.VARIABLE.CLIENT_SECRET}`, req.body.serviceId, req.user.id); - logger.error(error); - throw new Error500(error); } } @@ -142,13 +146,15 @@ module.exports = function OAuth2Controller(gladys) { * @apiGroup oauth2 */ async function getCurrentConfig(req, res) { - const { serviceId } = req.query; + if(req.query && req.query.service_id && req.user && req.user.id){ + const serviceId = req.query.service_id; - const resultClientId = await gladys.variable.getValue(`${OAUTH2.VARIABLE.CLIENT_ID}`, serviceId, req.user.id); + const resultClientId = await gladys.variable.getValue(OAUTH2.VARIABLE.CLIENT_ID, serviceId, req.user.id); - res.json({ - clientId: resultClientId, - }); + res.json({ + client_id: resultClientId, + }); + } } return Object.freeze({ diff --git a/server/lib/device/device.destroyByServiceId.js b/server/lib/device/device.destroyByServiceId.js index 53ef5952ee..a3535855d6 100755 --- a/server/lib/device/device.destroyByServiceId.js +++ b/server/lib/device/device.destroyByServiceId.js @@ -24,7 +24,7 @@ async function destroyByServiceId(serviceId) { }, }); - if (devices) { + if (devices && devices.length>0) { await Promise.each(devices, async (device) => { await device.destroy(device.selector); }); diff --git a/server/lib/oauth2/oauth2.deleteClient.js b/server/lib/oauth2/oauth2.deleteClient.js index 947021d828..990d09c248 100755 --- a/server/lib/oauth2/oauth2.deleteClient.js +++ b/server/lib/oauth2/oauth2.deleteClient.js @@ -16,9 +16,9 @@ const { Error500 } = require('../../utils/httpErrors'); */ async function deleteClient(serviceId, userId) { try { - await this.gladys.variable.destroy(`${OAUTH2.VARIABLE.CLIENT_ID}`, serviceId, userId); - await this.gladys.variable.destroy(`${OAUTH2.VARIABLE.CLIENT_SECRET}`, serviceId, userId); - await this.gladys.variable.destroy(`${OAUTH2.VARIABLE.ACCESS_TOKEN}`, serviceId, userId); + await this.gladys.variable.destroy(OAUTH2.VARIABLE.CLIENT_ID, serviceId, userId); + await this.gladys.variable.destroy(OAUTH2.VARIABLE.CLIENT_SECRET, serviceId, userId); + await this.gladys.variable.destroy(OAUTH2.VARIABLE.ACCESS_TOKEN, serviceId, userId); } catch (error) { logger.error(error.message); throw new Error500(error); diff --git a/server/lib/oauth2/oauth2.executeOauth2HTTPQuery.js b/server/lib/oauth2/oauth2.executeOauth2HTTPQuery.js index 0ceeda1b25..938c0d9229 100644 --- a/server/lib/oauth2/oauth2.executeOauth2HTTPQuery.js +++ b/server/lib/oauth2/oauth2.executeOauth2HTTPQuery.js @@ -15,23 +15,23 @@ const { OAUTH2 } = require('../../utils/constants'); * {...}, '78v4f3df83g74v1fsd8375f63gvrf5c'); */ async function refreshTokenAccess(serviceId, gladys, userId) { - const clientId = await gladys.variable.getValue(`${OAUTH2.VARIABLE.CLIENT_ID}`, serviceId, userId); - const secret = await gladys.variable.getValue(`${OAUTH2.VARIABLE.CLIENT_SECRET}`, serviceId, userId); - const accessToken = JSON.parse(await gladys.variable.getValue(`${OAUTH2.VARIABLE.ACCESS_TOKEN}`, serviceId, userId)); + const clientId = await gladys.variable.getValue(OAUTH2.VARIABLE.CLIENT_ID, serviceId, userId); + const secret = await gladys.variable.getValue(OAUTH2.VARIABLE.CLIENT_SECRET, serviceId, userId); + const accessToken = JSON.parse(await gladys.variable.getValue(OAUTH2.VARIABLE.ACCESS_TOKEN, serviceId, userId)); logger.trace('accessToken: ', accessToken); // Find provider configuration - const tokenHost = await gladys.variable.getValue(`${OAUTH2.VARIABLE.TOKEN_HOST}`, serviceId); - const tokenPath = await gladys.variable.getValue(`${OAUTH2.VARIABLE.TOKEN_PATH}`, serviceId); - const authorizeHost = await gladys.variable.getValue(`${OAUTH2.VARIABLE.AUTHORIZE_HOST}`, serviceId); - const authorizePath = await gladys.variable.getValue(`${OAUTH2.VARIABLE.AUTHORIZE_PATH}`, serviceId); + const tokenHost = await gladys.variable.getValue(OAUTH2.VARIABLE.TOKEN_HOST, serviceId); + const tokenPath = await gladys.variable.getValue(OAUTH2.VARIABLE.TOKEN_PATH, serviceId); + const authorizeHost = await gladys.variable.getValue(OAUTH2.VARIABLE.AUTHORIZE_HOST, serviceId); + const authorizePath = await gladys.variable.getValue(OAUTH2.VARIABLE.AUTHORIZE_PATH, serviceId); const integrationScope = await gladys.variable.getValue(`${OAUTH2.VARIABLE.INTEGRATION_SCOPE}`, serviceId); // Init credentials based on integration name const credentials = { client: { - id: `${clientId}`, - secret: `${secret}`, + id: clientId, + secret, }, auth: { tokenHost, @@ -62,7 +62,7 @@ async function refreshTokenAccess(serviceId, gladys, userId) { // Save new accessToken await gladys.variable.setValue( - `${OAUTH2.VARIABLE.ACCESS_TOKEN}`, + OAUTH2.VARIABLE.ACCESS_TOKEN, JSON.stringify(authResult), serviceId, userId, diff --git a/server/services/withings/index.js b/server/services/withings/index.js index 93a205eede..194bcf4d85 100755 --- a/server/services/withings/index.js +++ b/server/services/withings/index.js @@ -16,7 +16,7 @@ module.exports = function WithingsService(gladys, serviceId) { logger.log('starting Withings service'); // check if variable necessary to oauth2 connection is in variable table - const tokenHost = await gladys.variable.getValue(`${OAUTH2.VARIABLE.TOKEN_HOST}`, serviceId); + const tokenHost = await gladys.variable.getValue(OAUTH2.VARIABLE.TOKEN_HOST, serviceId); if (!tokenHost) { // Init variable in db await gladys.variable.setValue(`${OAUTH2.VARIABLE.TOKEN_HOST}`, 'https://wbsapi.withings.net', serviceId); @@ -35,7 +35,7 @@ module.exports = function WithingsService(gladys, serviceId) { ); await gladys.variable.setValue(`${OAUTH2.VARIABLE.GRANT_TYPE}`, 'authorization_code', serviceId); await gladys.variable.setValue( - `${OAUTH2.VARIABLE.REDIRECT_URI_SUFFIX}`, + OAUTH2.VARIABLE.REDIRECT_URI_SUFFIX, 'dashboard/integration/health/withings/settings', serviceId, ); diff --git a/server/services/withings/lib/withings.poll.js b/server/services/withings/lib/withings.poll.js index 2ada0236bb..e5c73cbfe5 100755 --- a/server/services/withings/lib/withings.poll.js +++ b/server/services/withings/lib/withings.poll.js @@ -27,7 +27,7 @@ async function poll(device) { users, async (user) => { const withingsClientId = await this.gladys.variable.getValue( - `${OAUTH2.VARIABLE.CLIENT_ID}`, + OAUTH2.VARIABLE.CLIENT_ID, this.serviceId, user.id, ); diff --git a/server/services/withings/package.json b/server/services/withings/package.json index 44b4691299..c6f55e5560 100755 --- a/server/services/withings/package.json +++ b/server/services/withings/package.json @@ -1,5 +1,5 @@ { - "name": "gladys-usb", + "name": "gladys-withings", "main": "index.js", "os": [ "darwin", diff --git a/server/test/controllers/oauth2/oauth2.controller.test.js b/server/test/controllers/oauth2/oauth2.controller.test.js index c19a68e8eb..04f8e66f9d 100755 --- a/server/test/controllers/oauth2/oauth2.controller.test.js +++ b/server/test/controllers/oauth2/oauth2.controller.test.js @@ -24,8 +24,8 @@ describe('POST /api/v1/service/oauth2/client/authorization-uri', () => { header: { referer: 'fake-referer', }, - integrationName: 'test', - serviceId: 'a810b8db-6d04-4697-bed3-c4b72c996279', + integration_name: 'test', + service_id: 'a810b8db-6d04-4697-bed3-c4b72c996279', user: { id: '0cd30aef-9c4e-4a23-88e3-3547971296e5', }, @@ -56,9 +56,9 @@ describe('POST /api/v1/service/oauth2/client/access-token-uri', () => { }); it('should get token access uri', async () => { const req = { - integrationName: 'test', - serviceId: 'a810b8db-6d04-4697-bed3-c4b72c996279', - authorizationCode: 'fake-code', + integration_name: 'test', + service_id: 'a810b8db-6d04-4697-bed3-c4b72c996279', + authorization_code: 'fake-code', user: { id: '0cd30aef-9c4e-4a23-88e3-3547971296e5', }, @@ -80,9 +80,9 @@ describe('POST /api/v1/service/oauth2/client/access-token-uri', () => { describe('POST /api/v1/service/oauth2/client/access-token-uri', () => { it('should get 500 HTTP error on token access uri', async () => { const req = { - integrationName: 'test', - serviceId: 'a810b8db-6d04-4697-bed3-c4b72c996279', - authorizationCode: 'fake-code', + integration_name: 'test', + service_id: 'a810b8db-6d04-4697-bed3-c4b72c996279', + authorization_code: 'fake-code', }; await buildOauth2Request @@ -107,8 +107,8 @@ describe('GET /api/v1/service/oauth2/client', () => { }); it('should get token access uri', async () => { const req = { - integrationName: 'test', - serviceId: 'a810b8db-6d04-4697-bed3-c4b72c996279', + integration_name: 'test', + service_id: 'a810b8db-6d04-4697-bed3-c4b72c996279', user: { id: '0cd30aef-9c4e-4a23-88e3-3547971296e5', }, @@ -120,8 +120,8 @@ describe('GET /api/v1/service/oauth2/client', () => { .expect('Content-Type', /json/) .expect(200) .then((res) => { - expect(res.body).to.have.property('clientId'); - assert.equal(res.body.clientId, 'OAUTH2_CLIENT_ID'); + expect(res.body).to.have.property('client_id'); + assert.equal(res.body.client_id, 'OAUTH2_CLIENT_ID'); }); }); }); diff --git a/server/test/lib/oauth2/oauth2manager.test.js b/server/test/lib/oauth2/oauth2manager.test.js index 3b0bbe4589..8f8526882e 100755 --- a/server/test/lib/oauth2/oauth2manager.test.js +++ b/server/test/lib/oauth2/oauth2manager.test.js @@ -30,9 +30,9 @@ const gladys = { return 'user.info,user.metrics,user.activity,user.sleepevents'; case `${OAUTH2.VARIABLE.GRANT_TYPE}`: return 'authorization_code'; - case `${OAUTH2.VARIABLE.REDIRECT_URI_SUFFIX}`: + case OAUTH2.VARIABLE.REDIRECT_URI_SUFFIX: return '/dashboard/integration/health/test/settings'; - case `${OAUTH2.VARIABLE.ACCESS_TOKEN}`: + case OAUTH2.VARIABLE.ACCESS_TOKEN: return ( '{"access_token":"b96a86b654acb01c2aeb4d5a39f10ff9c964f8e4","expires_in":10800,' + '"token_type":"Bearer",' + diff --git a/server/test/services/withings/lib/withings.init.test.js b/server/test/services/withings/lib/withings.init.test.js index d99eb62ec1..c925a1ba22 100644 --- a/server/test/services/withings/lib/withings.init.test.js +++ b/server/test/services/withings/lib/withings.init.test.js @@ -41,7 +41,7 @@ const gladys = { return 'http://localhost:9292'; case `${OAUTH2.VARIABLE.TOKEN_PATH}`: return '/oauth2/token'; - case `${OAUTH2.VARIABLE.REDIRECT_URI_SUFFIX}`: + case OAUTH2.VARIABLE.REDIRECT_URI_SUFFIX: return 'ashboard/integration/health/test/settings'; case `${OAUTH2.VARIABLE.AUTHORIZE_HOST}`: return 'http://localhost:9292'; @@ -51,7 +51,7 @@ const gladys = { return 'authorization_code'; case `${OAUTH2.VARIABLE.INTEGRATION_SCOPE}`: return 'user.info,user.metrics,user.activity,user.sleepevents'; - case `${OAUTH2.VARIABLE.ACCESS_TOKEN}`: + case OAUTH2.VARIABLE.ACCESS_TOKEN: return ( '{' + '"access_token":"b96a86b654acb01c2aeb4d5a39f10ff9c964f8e4",' + diff --git a/server/test/services/withings/lib/withings.poll.test.js b/server/test/services/withings/lib/withings.poll.test.js index 6cf3cd78e2..f6cc2324cf 100644 --- a/server/test/services/withings/lib/withings.poll.test.js +++ b/server/test/services/withings/lib/withings.poll.test.js @@ -24,7 +24,7 @@ const gladys = { return 'http://localhost:9292'; case `${OAUTH2.VARIABLE.TOKEN_PATH}`: return '/oauth2/token'; - case `${OAUTH2.VARIABLE.REDIRECT_URI_SUFFIX}`: + case OAUTH2.VARIABLE.REDIRECT_URI_SUFFIX: return 'ashboard/integration/health/test/settings'; case `${OAUTH2.VARIABLE.AUTHORIZE_HOST}`: return 'http://localhost:9292'; @@ -34,7 +34,7 @@ const gladys = { return 'authorization_code'; case `${OAUTH2.VARIABLE.INTEGRATION_SCOPE}`: return 'user.info,user.metrics,user.activity,user.sleepevents'; - case `${OAUTH2.VARIABLE.ACCESS_TOKEN}`: + case OAUTH2.VARIABLE.ACCESS_TOKEN: return ( '{' + '"access_token":"b96a86b654acb01c2aeb4d5a39f10ff9c964f8e4",' + @@ -46,7 +46,7 @@ const gladys = { '"expires_at":"2020-11-13T20:46:50.042Z"' + '}' ); - case `${OAUTH2.VARIABLE.CLIENT_ID}`: + case OAUTH2.VARIABLE.CLIENT_ID: countGetValueCallClientId += 1; return 'fake_client_id'; default: From 2cb376004c432bf80e3831a83cf15c0caf86e571 Mon Sep 17 00:00:00 2001 From: Euguuu Date: Sun, 6 Mar 2022 16:53:47 +0100 Subject: [PATCH 025/164] fix for review --- front/src/components/oauth2/actions.js | 2 - .../all/withings/settings-page/actions.js | 4 +- server/api/controllers/oauth2.controller.js | 146 ++++-------------- server/api/routes.js | 4 +- .../lib/device/device.destroyByServiceId.js | 2 +- .../lib/device/device.saveHistoricalState.js | 50 +++--- server/lib/index.js | 3 + server/lib/oauth2/index.js | 8 +- .../oauth2/oauth2.buildAuthorizationUri.js | 57 +++++++ server/lib/oauth2/oauth2.deleteClient.js | 15 +- .../oauth2/oauth2.executeOauth2HTTPQuery.js | 49 +++--- server/lib/oauth2/oauth2.getAccesToken.js | 100 ++++++++++++ .../withings/api/withings.controller.js | 22 +-- .../withings/lib/withings.deleteVar.js | 8 +- server/services/withings/lib/withings.init.js | 9 +- server/services/withings/lib/withings.poll.js | 28 +--- .../oauth2/oauth2.controller.test.js | 8 +- 17 files changed, 293 insertions(+), 222 deletions(-) create mode 100755 server/lib/oauth2/oauth2.buildAuthorizationUri.js create mode 100755 server/lib/oauth2/oauth2.getAccesToken.js diff --git a/front/src/components/oauth2/actions.js b/front/src/components/oauth2/actions.js index 377a8d3a9f..87515eb386 100755 --- a/front/src/components/oauth2/actions.js +++ b/front/src/components/oauth2/actions.js @@ -70,8 +70,6 @@ const actions = store => ({ ); const returnValue = await state.httpClient.post('/api/v1/service/oauth2/client/authorization-uri', { - clientId: state.clientId, - secret: state.secret, integration_name: state.integrationName, service_id: serviceId }); diff --git a/front/src/routes/integration/all/withings/settings-page/actions.js b/front/src/routes/integration/all/withings/settings-page/actions.js index 34e8d72eed..7128c2f8c0 100755 --- a/front/src/routes/integration/all/withings/settings-page/actions.js +++ b/front/src/routes/integration/all/withings/settings-page/actions.js @@ -14,7 +14,7 @@ const actions = store => ({ const queryParams = queryString.parse(state.currentUrl.substring(state.currentUrl.indexOf('?'))); if (queryParams && queryParams.code) { const serviceId = (await state.httpClient.get(`/api/v1/service/withings`)).id; - await state.httpClient.post('/api/v1/service/oauth2/client/access-token-uri', { + await state.httpClient.post('/api/v1/service/oauth2/client/access-token', { integrationName: 'withings', authorization_code: queryParams.code, service_id: serviceId @@ -32,7 +32,7 @@ const actions = store => ({ let withingsDevices; if (returnGetConfig.client_id) { const result = await state.httpClient.post('/api/v1/service/withings/init'); - if (result) { + if (result) { withingsDevices = result.withingsDevices; } diff --git a/server/api/controllers/oauth2.controller.js b/server/api/controllers/oauth2.controller.js index f76b8d3437..175e6cad0a 100644 --- a/server/api/controllers/oauth2.controller.js +++ b/server/api/controllers/oauth2.controller.js @@ -1,8 +1,5 @@ -const { AuthorizationCode } = require('simple-oauth2'); -const logger = require('../../utils/logger'); const asyncMiddleware = require('../middlewares/asyncMiddleware'); const { OAUTH2 } = require('../../utils/constants'); -const { Error500 } = require('../../utils/httpErrors'); module.exports = function OAuth2Controller(gladys) { /** @@ -12,41 +9,21 @@ module.exports = function OAuth2Controller(gladys) { * @apiGroup OAuth2 */ async function buildAuthorizationUri(req, res) { - if(req.body && req.body.service_id && req.user && req.user.id){ - // Find provider configuration - const tokenHost = await gladys.variable.getValue(OAUTH2.VARIABLE.TOKEN_HOST, req.body.service_id); - const authorizeHost = await gladys.variable.getValue(OAUTH2.VARIABLE.AUTHORIZE_HOST, req.body.service_id); - const authorizePath = await gladys.variable.getValue(OAUTH2.VARIABLE.AUTHORIZE_PATH, req.body.service_id); - const integrationScope = await gladys.variable.getValue(OAUTH2.VARIABLE.INTEGRATION_SCOPE, req.body.service_id); - const redirectUriSuffix = await gladys.variable.getValue( - OAUTH2.VARIABLE.REDIRECT_URI_SUFFIX, + if ( + req.body && + req.body.service_id && + req.user && + req.user.id && + req.body.integration_name && + req.headers.referer + ) { + const authorizationUriResult = await gladys.oauth2Client.buildAuthorizationUri( req.body.service_id, + req.user.id, + req.body.integration_name, + req.headers.referer, ); - // Get variale client id and client secret - const clientId = await gladys.variable.getValue(OAUTH2.VARIABLE.CLIENT_ID, req.body.service_id, req.user.id); - const secret = await gladys.variable.getValue(OAUTH2.VARIABLE.CLIENT_SECRET, req.body.service_id, req.user.id); - - // Init credentials based on integration name - const credentials = { - client: { - id: clientId, - secret, - }, - auth: { - tokenHost, - authorizeHost, - authorizePath, - }, - }; - - const client = new AuthorizationCode(credentials); - const authorizationUriResult = await client.authorizeURL({ - redirect_uri: `${req.headers.referer}${redirectUriSuffix}`, - scope: integrationScope, - state: `gladys_state_${req.body.integration_ame}`, - }); - res.json({ authorizationUri: authorizationUriResult, }); @@ -54,88 +31,29 @@ module.exports = function OAuth2Controller(gladys) { } /** - * @description Build an authorization uri to get an access token. - * @api {post} /api/v1/service/oauth2/client/access-token-uri Build an getToken uri (to get token access) + * @description Get access token and save it in database (for current service). + * @api {post} /api/v1/service/oauth2/client/access-token Build an getToken uri (to get token access) * @apiName buildAccesTokenUri * @apiGroup OAuth2 */ - async function buildAccesTokenUri(req, res) { - if(req.body && req.body.service_id && req.user && req.user.id){ - // Find provider configuration - const tokenHost = await gladys.variable.getValue(OAUTH2.VARIABLE.TOKEN_HOST, req.body.service_id); - const tokenPath = await gladys.variable.getValue(OAUTH2.VARIABLE.TOKEN_PATH, req.body.service_id); - const authorizeHost = await gladys.variable.getValue(OAUTH2.VARIABLE.AUTHORIZE_HOST, req.body.service_id); - const authorizePath = await gladys.variable.getValue(OAUTH2.VARIABLE.AUTHORIZE_PATH, req.body.service_id); - const grantType = await gladys.variable.getValue(OAUTH2.VARIABLE.GRANT_TYPE, req.body.service_id); - const additionalAccesTokenRequestAxtionParam = await gladys.variable.getValue( - `${OAUTH2.VARIABLE.ADDITIONAL_ACCESS_TOKEN_REQUEST_ACTION_PARAM}`, + async function getAccesTokenUri(req, res) { + if ( + req.body && + req.body.service_id && + req.user && + req.user.id && + req.body.authorization_code && + req.headers.referer + ) { + const authResult = await gladys.oauth2Client.getAccesToken( req.body.service_id, + req.user.id, + req.body.authorization_code, + req.headers.referer, ); - const redirectUriSuffix = await gladys.variable.getValue( - OAUTH2.VARIABLE.REDIRECT_URI_SUFFIX, - req.body.service_id, - ); - - const authorizationCode = req.body.authorization_code; - - const clientId = await gladys.variable.getValue(OAUTH2.VARIABLE.CLIENT_ID, req.body.service_id, req.user.id); - const secret = await gladys.variable.getValue(OAUTH2.VARIABLE.CLIENT_SECRET, req.body.service_id, req.user.id); - - // Init credentials based on integration name - const credentials = { - client: { - id: clientId, - secret, - }, - auth: { - tokenHost, - tokenPath, - authorizeHost, - authorizePath, - }, - }; - - // Build token access request - const tokenConfig = { - code: authorizationCode, - client_id: clientId, - client_secret: secret, - grant_type: grantType, - redirect_uri: `${req.headers.referer}${redirectUriSuffix}`, - }; - if (additionalAccesTokenRequestAxtionParam) { - tokenConfig.action = additionalAccesTokenRequestAxtionParam; - } - - try { - const client = new AuthorizationCode(credentials); - const authResult = await client.getToken(tokenConfig, { json: true }); - - if (authResult.token) { - if (authResult.token.status && authResult.token.status !== 0) { - throw new Error500('Oauth2 get token response is not with status 0'); - } - - let jsonResult; - if (authResult.token.body) { - jsonResult = JSON.stringify(authResult.token.body); - } else { - jsonResult = JSON.stringify(authResult.token); - } - - // Save accessToken - await gladys.variable.setValue(OAUTH2.VARIABLE.ACCESS_TOKEN, jsonResult, req.body.service_id, req.user.id); - - res.json({ - result: authResult, - }); - } - } catch (error) { - await gladys.variable.destroy(OAUTH2.VARIABLE.CLIENT_ID, req.body.service_id, req.user.id); - await gladys.variable.destroy(OAUTH2.VARIABLE.CLIENT_SECRET, req.body.service_id, req.user.id); - logger.error(error); - throw new Error500(error); - } + res.json({ + result: authResult, + }); } } @@ -146,7 +64,7 @@ module.exports = function OAuth2Controller(gladys) { * @apiGroup oauth2 */ async function getCurrentConfig(req, res) { - if(req.query && req.query.service_id && req.user && req.user.id){ + if (req.query && req.query.service_id && req.user && req.user.id) { const serviceId = req.query.service_id; const resultClientId = await gladys.variable.getValue(OAUTH2.VARIABLE.CLIENT_ID, serviceId, req.user.id); @@ -159,7 +77,7 @@ module.exports = function OAuth2Controller(gladys) { return Object.freeze({ buildAuthorizationUri: asyncMiddleware(buildAuthorizationUri), - buildAccesTokenUri: asyncMiddleware(buildAccesTokenUri), + getAccesTokenUri: asyncMiddleware(getAccesTokenUri), getCurrentConfig: asyncMiddleware(getCurrentConfig), }); }; diff --git a/server/api/routes.js b/server/api/routes.js index 45ceb3c48e..24b43dde1e 100644 --- a/server/api/routes.js +++ b/server/api/routes.js @@ -518,9 +518,9 @@ function getRoutes(gladys) { authenticated: true, controller: oauth2Controller.buildAuthorizationUri, }, - 'post /api/v1/service/oauth2/client/access-token-uri': { + 'post /api/v1/service/oauth2/client/access-token': { authenticated: true, - controller: oauth2Controller.buildAccesTokenUri, + controller: oauth2Controller.getAccesTokenUri, }, 'get /api/v1/service/oauth2/client': { authenticated: true, diff --git a/server/lib/device/device.destroyByServiceId.js b/server/lib/device/device.destroyByServiceId.js index a3535855d6..79603c5927 100755 --- a/server/lib/device/device.destroyByServiceId.js +++ b/server/lib/device/device.destroyByServiceId.js @@ -24,7 +24,7 @@ async function destroyByServiceId(serviceId) { }, }); - if (devices && devices.length>0) { + if (devices && devices.length > 0) { await Promise.each(devices, async (device) => { await device.destroy(device.selector); }); diff --git a/server/lib/device/device.saveHistoricalState.js b/server/lib/device/device.saveHistoricalState.js index de8dadb162..7e2cd9f030 100644 --- a/server/lib/device/device.saveHistoricalState.js +++ b/server/lib/device/device.saveHistoricalState.js @@ -1,26 +1,27 @@ const db = require('../../models'); const logger = require('../../utils/logger'); +const { BadParameters } = require('../../utils/coreErrors'); /** * @description Save hstorical device feature state in DB. - * @param {Object} device - A Device object. * @param {Object} deviceFeature - A DeviceFeature object. * @param {Object} historicalState - The historical feature state object of the deviceFeature to save. + * @param {Object} createdAt - Date of state. * @example * saveHistoricalState({ - * id: 'fc235c88-b10d-4706-8b59-fef92a7119b2', - * selector: 'my-light' - * }, { - * id: '14sd58f3-b10d-4706-8b59-dsdfdsfdsf', - * device_feature_id: '', - * value: 'newValue', - * created_at: '2020-03-03', - * updated_at: '2020-03-03', - * }); + * id: 'fc235c88-b10d-4706-8b59-fef92a7119b2', + * selector: 'my-light' + * }, + * 'newValue', + * '2022-02-03' + * ); */ -async function saveHistoricalState(device, deviceFeature, historicalState) { +async function saveHistoricalState(deviceFeature, historicalState, createdAt) { logger.debug(`device.saveHistoricalState of deviceFeature ${deviceFeature.selector}`, historicalState); + if (Number.isNaN(historicalState)) { + throw new BadParameters(`device.saveHistoricalState of NaN value on ${deviceFeature.selector}`); + } // get current feture to update last value if needed const deviceFeatureInDB = await db.DeviceFeature.findOne({ where: { @@ -28,18 +29,25 @@ async function saveHistoricalState(device, deviceFeature, historicalState) { }, }); - await db.DeviceFeatureState.create(historicalState); - if ( - new Date(historicalState.created_at) > new Date(deviceFeatureInDB.last_value_changed) || - !( - deviceFeatureInDB.last_value_changed instanceof Date && - !Number.isNaN(deviceFeatureInDB.last_value_changed.getTime()) - ) - ) { + const historicalStateObject = { + device_feature_id: deviceFeatureInDB.id, + value: historicalState, + created_at: createdAt, + }; + + await db.DeviceFeatureState.create(historicalStateObject); + + const historicalStateAfterFeatureLastValue = + new Date(historicalStateObject.created_at) > new Date(deviceFeatureInDB.last_value_changed); + const featureLastValueChageIsValidDate = + deviceFeatureInDB.last_value_changed instanceof Date && + !Number.isNaN(deviceFeatureInDB.last_value_changed.getTime()); + + if (historicalStateAfterFeatureLastValue || !featureLastValueChageIsValidDate) { await db.DeviceFeature.update( { - last_value: historicalState.value, - last_value_changed: historicalState.created_at, + last_value: historicalStateObject.value, + last_value_changed: historicalStateObject.created_at, }, { where: { diff --git a/server/lib/index.js b/server/lib/index.js index 574b5139a6..71b0a3ed53 100644 --- a/server/lib/index.js +++ b/server/lib/index.js @@ -25,6 +25,7 @@ const System = require('./system'); const Variable = require('./variable'); const services = require('../services'); const Weather = require('./weather'); +const Oauth2 = require('./oauth2'); /** * @description Start a new Gladys instance @@ -70,6 +71,7 @@ function Gladys(params = {}) { const weather = new Weather(service, event, message, house); const gateway = new Gateway(variable, event, system, db.sequelize, config, user, stateManager, service); const calendar = new Calendar(service); + const oauth2Client = new Oauth2(variable); const gladys = { version: '0.1.0', // todo, read package.json @@ -96,6 +98,7 @@ function Gladys(params = {}) { system, variable, weather, + oauth2Client, start: async () => { // set wal mode await db.sequelize.query('PRAGMA journal_mode=WAL;'); diff --git a/server/lib/oauth2/index.js b/server/lib/oauth2/index.js index 73744be74c..fc65b0382a 100755 --- a/server/lib/oauth2/index.js +++ b/server/lib/oauth2/index.js @@ -1,11 +1,15 @@ const { executeOauth2HTTPQuery } = require('./oauth2.executeOauth2HTTPQuery'); const { deleteClient } = require('./oauth2.deleteClient'); +const { getAccesToken } = require('./oauth2.getAccesToken'); +const { buildAuthorizationUri } = require('./oauth2.buildAuthorizationUri'); -const OAuth2Manager = function OAuth2Manager(gladys) { - this.gladys = gladys; +const OAuth2Manager = function OAuth2Manager(variable) { + this.variable = variable; }; OAuth2Manager.prototype.executeOauth2HTTPQuery = executeOauth2HTTPQuery; OAuth2Manager.prototype.deleteClient = deleteClient; +OAuth2Manager.prototype.getAccesToken = getAccesToken; +OAuth2Manager.prototype.buildAuthorizationUri = buildAuthorizationUri; module.exports = OAuth2Manager; diff --git a/server/lib/oauth2/oauth2.buildAuthorizationUri.js b/server/lib/oauth2/oauth2.buildAuthorizationUri.js new file mode 100755 index 0000000000..7bb9cf6d75 --- /dev/null +++ b/server/lib/oauth2/oauth2.buildAuthorizationUri.js @@ -0,0 +1,57 @@ +const { AuthorizationCode } = require('simple-oauth2'); +const { OAUTH2 } = require('../../utils/constants'); + +/** + * @description Build a authorization uri of current oauth2 integration. + * @param {string} serviceId - Gladys serviceId of current integration. + * @param {string} userId - Gladys userId of current session. + * @param {string} integrationName - Current integration name. + * @param {string} referer - Gladys referer. + * @returns {Promise} Resolve with current integration service id. + * @example + * oauth2.buildAuthorizationUri( + * userId: fd81vs687f0bf3414e0fe3facfba7be9455109409a' + * serviceId: 'ffsdvs687f0bf3414e0fe3facfba7be945510fds09a' + * integrationName: 'integrationName', + * referer: 'http://localhost:1444/' + * } + * ); + */ +async function buildAuthorizationUri(serviceId, userId, integrationName, referer) { + // Find provider configuration + const tokenHost = await this.variable.getValue(OAUTH2.VARIABLE.TOKEN_HOST, serviceId); + const authorizeHost = await this.variable.getValue(OAUTH2.VARIABLE.AUTHORIZE_HOST, serviceId); + const authorizePath = await this.variable.getValue(OAUTH2.VARIABLE.AUTHORIZE_PATH, serviceId); + const integrationScope = await this.variable.getValue(OAUTH2.VARIABLE.INTEGRATION_SCOPE, serviceId); + const redirectUriSuffix = await this.variable.getValue(OAUTH2.VARIABLE.REDIRECT_URI_SUFFIX, serviceId); + + // Get variale client id and client secret + const clientId = await this.variable.getValue(OAUTH2.VARIABLE.CLIENT_ID, serviceId, userId); + const secret = await this.variable.getValue(OAUTH2.VARIABLE.CLIENT_SECRET, serviceId, userId); + + // Init credentials based on integration name + const credentials = { + client: { + id: clientId, + secret, + }, + auth: { + tokenHost, + authorizeHost, + authorizePath, + }, + }; + + const client = new AuthorizationCode(credentials); + const authorizationUriResult = await client.authorizeURL({ + redirect_uri: `${referer}${redirectUriSuffix}`, + scope: integrationScope, + state: `gladys_state_${integrationName}`, + }); + + return authorizationUriResult; +} + +module.exports = { + buildAuthorizationUri, +}; diff --git a/server/lib/oauth2/oauth2.deleteClient.js b/server/lib/oauth2/oauth2.deleteClient.js index 990d09c248..8a8f904532 100755 --- a/server/lib/oauth2/oauth2.deleteClient.js +++ b/server/lib/oauth2/oauth2.deleteClient.js @@ -1,6 +1,4 @@ -const logger = require('../../utils/logger'); -const { OAUTH2 } = require('../../utils/constants'); -const { Error500 } = require('../../utils/httpErrors'); +const { OAUTH2 } = require('../../utils/constants'); /** * @description Delete client_id and secrei_id of current oauth2 integration. @@ -15,14 +13,9 @@ const { Error500 } = require('../../utils/httpErrors'); * ); */ async function deleteClient(serviceId, userId) { - try { - await this.gladys.variable.destroy(OAUTH2.VARIABLE.CLIENT_ID, serviceId, userId); - await this.gladys.variable.destroy(OAUTH2.VARIABLE.CLIENT_SECRET, serviceId, userId); - await this.gladys.variable.destroy(OAUTH2.VARIABLE.ACCESS_TOKEN, serviceId, userId); - } catch (error) { - logger.error(error.message); - throw new Error500(error); - } + await this.variable.destroy(OAUTH2.VARIABLE.CLIENT_ID, serviceId, userId); + await this.variable.destroy(OAUTH2.VARIABLE.CLIENT_SECRET, serviceId, userId); + await this.variable.destroy(OAUTH2.VARIABLE.ACCESS_TOKEN, serviceId, userId); return { success: true }; } diff --git a/server/lib/oauth2/oauth2.executeOauth2HTTPQuery.js b/server/lib/oauth2/oauth2.executeOauth2HTTPQuery.js index 938c0d9229..6e9807483c 100644 --- a/server/lib/oauth2/oauth2.executeOauth2HTTPQuery.js +++ b/server/lib/oauth2/oauth2.executeOauth2HTTPQuery.js @@ -6,26 +6,29 @@ const { OAUTH2 } = require('../../utils/constants'); /** * @description Refresh Oauth2 token in case of it expired . + * @param {Object} variable - Gladys variable manager. * @param {string} serviceId - Gladys service id call method. - * @param {Object} gladys - Current gladys instance. * @param {string} userId - Gladys userId of current session. * @returns {Object} Response of oauth2 refresh token query . * @example * oauth2.refreshTokenAccess('7fdsf4s68r4gfr68f4r63csd7f6f4c3r85', * {...}, '78v4f3df83g74v1fsd8375f63gvrf5c'); */ -async function refreshTokenAccess(serviceId, gladys, userId) { - const clientId = await gladys.variable.getValue(OAUTH2.VARIABLE.CLIENT_ID, serviceId, userId); - const secret = await gladys.variable.getValue(OAUTH2.VARIABLE.CLIENT_SECRET, serviceId, userId); - const accessToken = JSON.parse(await gladys.variable.getValue(OAUTH2.VARIABLE.ACCESS_TOKEN, serviceId, userId)); +async function refreshTokenAccess(variable, serviceId, userId) { + const clientId = await variable.getValue(OAUTH2.VARIABLE.CLIENT_ID, serviceId, userId); + const secret = await variable.getValue(OAUTH2.VARIABLE.CLIENT_SECRET, serviceId, userId); + const accessToken = JSON.parse(await variable.getValue(OAUTH2.VARIABLE.ACCESS_TOKEN, serviceId, userId)); logger.trace('accessToken: ', accessToken); // Find provider configuration - const tokenHost = await gladys.variable.getValue(OAUTH2.VARIABLE.TOKEN_HOST, serviceId); - const tokenPath = await gladys.variable.getValue(OAUTH2.VARIABLE.TOKEN_PATH, serviceId); - const authorizeHost = await gladys.variable.getValue(OAUTH2.VARIABLE.AUTHORIZE_HOST, serviceId); - const authorizePath = await gladys.variable.getValue(OAUTH2.VARIABLE.AUTHORIZE_PATH, serviceId); - const integrationScope = await gladys.variable.getValue(`${OAUTH2.VARIABLE.INTEGRATION_SCOPE}`, serviceId); + const tokenHost = await variable.getValue(OAUTH2.VARIABLE.TOKEN_HOST, serviceId); + const tokenPath = await variable.getValue(OAUTH2.VARIABLE.TOKEN_PATH, serviceId); + const authorizeHost = await variable.getValue(OAUTH2.VARIABLE.AUTHORIZE_HOST, serviceId); + const authorizePath = await variable.getValue(OAUTH2.VARIABLE.AUTHORIZE_PATH, serviceId); + const additionalAccessTokenRequestActionParam = await variable.getValue( + OAUTH2.VARIABLE.ADDITIONAL_ACCESS_TOKEN_REQUEST_ACTION_PARAM, + serviceId, + ); // Init credentials based on integration name const credentials = { @@ -55,18 +58,26 @@ async function refreshTokenAccess(serviceId, gladys, userId) { const refreshParams = { client_id: clientId, client_secret: secret, - scope: integrationScope, + grant_type: 'refresh_token', + refresh_token: authResult.token.refresh_token, }; + if (additionalAccessTokenRequestActionParam) { + refreshParams.action = additionalAccessTokenRequestActionParam; + } authResult = await authResult.refresh(refreshParams); // Save new accessToken - await gladys.variable.setValue( - OAUTH2.VARIABLE.ACCESS_TOKEN, - JSON.stringify(authResult), - serviceId, - userId, - ); + if (!authResult.token.status || authResult.token.status === 0) { + let jsonResult; + if (authResult.token.body) { + jsonResult = authResult.token.body; + authResult = await client.createToken(jsonResult); + } else { + jsonResult = authResult.token; + } + await variable.setValue(OAUTH2.VARIABLE.ACCESS_TOKEN, JSON.stringify(jsonResult), serviceId, userId); + } } catch (error) { logger.error('Error refreshing access token: ', error); } @@ -94,8 +105,7 @@ async function refreshTokenAccess(serviceId, gladys, userId) { */ async function executeOauth2HTTPQuery(serviceId, userId, queryType, queryUrl, queryParams) { // Refresh token access if needed - const accesToken = await refreshTokenAccess(serviceId, this.gladys, userId); - + const accesToken = await refreshTokenAccess(this.variable, serviceId, userId); const headerConfig = { headers: { Authorization: `${accesToken.token.token_type} ${accesToken.token.access_token}`, @@ -118,7 +128,6 @@ async function executeOauth2HTTPQuery(serviceId, userId, queryType, queryUrl, qu result = await axios.post(queryUrl, data, headerConfig); } - return result; } catch (error) { logger.error('Execute query error: ', error.message); diff --git a/server/lib/oauth2/oauth2.getAccesToken.js b/server/lib/oauth2/oauth2.getAccesToken.js new file mode 100755 index 0000000000..19f3ae16ab --- /dev/null +++ b/server/lib/oauth2/oauth2.getAccesToken.js @@ -0,0 +1,100 @@ +const { AuthorizationCode } = require('simple-oauth2'); +const logger = require('../../utils/logger'); +const { OAUTH2 } = require('../../utils/constants'); +const { Error500 } = require('../../utils/httpErrors'); + +/** + * @description Get new AccesToken with client_id and secrei_id of current oauth2 integration. + * @param {string} serviceId - This serviceId of current integration. + * @param {string} userId - This userId of current session. + * @param {string} authorizationCode - Authorization code for nex token. + * @param {string} referer - Gladys referer. + * @returns {Promise} Resolve with current integration service id. + * @example + * oauth2.getAccesToken( + * userId: fd81vs687f0bf3414e0fe3facfba7be9455109409a' + * serviceId: 'ffsdvs687f0bf3414e0fe3facfba7be945510fds09a' + * authorizationCode: '25dbf26a066d947fca82a1f05ae5890f79a27687', + * referer: 'http://localhost:1444/' + * } + * ); + */ +async function getAccesToken(serviceId, userId, authorizationCode, referer) { + // Find provider configuration + const tokenHost = await this.variable.getValue(OAUTH2.VARIABLE.TOKEN_HOST, serviceId); + const tokenPath = await this.variable.getValue(OAUTH2.VARIABLE.TOKEN_PATH, serviceId); + const authorizeHost = await this.variable.getValue(OAUTH2.VARIABLE.AUTHORIZE_HOST, serviceId); + const authorizePath = await this.variable.getValue(OAUTH2.VARIABLE.AUTHORIZE_PATH, serviceId); + const grantType = await this.variable.getValue(OAUTH2.VARIABLE.GRANT_TYPE, serviceId); + const additionalAccesTokenRequestAxtionParam = await this.variable.getValue( + `${OAUTH2.VARIABLE.ADDITIONAL_ACCESS_TOKEN_REQUEST_ACTION_PARAM}`, + serviceId, + ); + const redirectUriSuffix = await this.variable.getValue(OAUTH2.VARIABLE.REDIRECT_URI_SUFFIX, serviceId); + + const clientId = await this.variable.getValue(OAUTH2.VARIABLE.CLIENT_ID, serviceId, userId); + const secret = await this.variable.getValue(OAUTH2.VARIABLE.CLIENT_SECRET, serviceId, userId); + + // Init credentials based on integration name + const credentials = { + client: { + id: clientId, + secret, + }, + auth: { + tokenHost, + tokenPath, + authorizeHost, + authorizePath, + }, + }; + + // Build token access request + const tokenConfig = { + code: authorizationCode, + client_id: clientId, + client_secret: secret, + grant_type: grantType, + redirect_uri: `${referer}${redirectUriSuffix}`, + }; + if (additionalAccesTokenRequestAxtionParam) { + tokenConfig.action = additionalAccesTokenRequestAxtionParam; + } + + try { + const client = new AuthorizationCode(credentials); + const authResult = await client.getToken(tokenConfig, { json: true }); + + if (authResult.token) { + if (authResult.token.status && authResult.token.status !== 0) { + throw new Error500('Oauth2 get token response is not with status 0'); + } + + let jsonResult; + if (authResult.token.body) { + jsonResult = authResult.token.body; + } else { + jsonResult = authResult.token; + } + if (!jsonResult.expires_at && jsonResult.expires_in) { + const expiredAt = new Date(); + expiredAt.setSeconds(expiredAt.getSeconds() + jsonResult.expires_in); + jsonResult.expires_at = expiredAt.toISOString(); + } + + // Save accessToken + await this.variable.setValue(OAUTH2.VARIABLE.ACCESS_TOKEN, JSON.stringify(jsonResult), serviceId, userId); + } + + return authResult; + } catch (error) { + await this.variable.destroy(OAUTH2.VARIABLE.CLIENT_ID, serviceId, userId); + await this.variable.destroy(OAUTH2.VARIABLE.CLIENT_SECRET, serviceId, userId); + logger.error(error); + throw new Error500(error); + } +} + +module.exports = { + getAccesToken, +}; diff --git a/server/services/withings/api/withings.controller.js b/server/services/withings/api/withings.controller.js index 6e069b04c8..bc07a97419 100755 --- a/server/services/withings/api/withings.controller.js +++ b/server/services/withings/api/withings.controller.js @@ -8,10 +8,12 @@ module.exports = function WithingsController(withingsHandler) { * @apiGroup Withings */ async function init(req, res) { - const resultInit = await withingsHandler.init(req.user.id); - res.json({ - withingsDevices: resultInit, - }); + if (req.user && req.user.id) { + const resultInit = await withingsHandler.init(req.user.id); + res.json({ + withingsDevices: resultInit, + }); + } } /** @@ -31,11 +33,13 @@ module.exports = function WithingsController(withingsHandler) { * @apiGroup Withings */ async function deleteConfig(req, res) { - await withingsHandler.deleteVar('withings', req.user.id); - await withingsHandler.deleteDevices(); - res.json({ - success: true, - }); + if (req.user && req.user.id) { + await withingsHandler.deleteVar(req.user.id); + await withingsHandler.deleteDevices(); + res.json({ + success: true, + }); + } } return { diff --git a/server/services/withings/lib/withings.deleteVar.js b/server/services/withings/lib/withings.deleteVar.js index 038d7c0cf1..04436d25eb 100755 --- a/server/services/withings/lib/withings.deleteVar.js +++ b/server/services/withings/lib/withings.deleteVar.js @@ -1,8 +1,5 @@ -const OAuth2Manager = require('../../../lib/oauth2'); - /** * @description Delete client_id, secret_id, access_token of current oauth2 integration and all devices. - * @param {string} integrationName - Name of oauth2 integration. * @param {string} userId - Gladys userId. * @returns {Promise} Resolve with current integration service id. * @example @@ -12,9 +9,8 @@ const OAuth2Manager = require('../../../lib/oauth2'); * } * ); */ -async function deleteVar(integrationName, userId) { - const oauth2Manager = new OAuth2Manager(this.gladys); - const oauth2Result = await oauth2Manager.deleteClient(this.serviceId, userId); +async function deleteVar(userId) { + const oauth2Result = await this.gladys.oauth2Client.deleteClient(this.serviceId, userId); return oauth2Result; } diff --git a/server/services/withings/lib/withings.init.js b/server/services/withings/lib/withings.init.js index fe436bb040..65c65c731f 100755 --- a/server/services/withings/lib/withings.init.js +++ b/server/services/withings/lib/withings.init.js @@ -1,5 +1,4 @@ const uuid = require('uuid'); -const OAuth2Manager = require('../../../lib/oauth2'); const logger = require('../../../utils/logger'); const { DEVICE_FEATURE_CATEGORIES, @@ -257,9 +256,8 @@ function buildFeature(currentGroup, device, currentFeatures) { */ async function init(userId) { const { serviceId } = this; - const oauth2Manager = new OAuth2Manager(this.gladys); - const userResult = await oauth2Manager.executeOauth2HTTPQuery( + const userResult = await this.gladys.oauth2Client.executeOauth2HTTPQuery( serviceId, userId, 'get', @@ -270,6 +268,7 @@ async function init(userId) { const devices = []; const devicesResult = []; const mapOfDeviceByWithingsDeviceId = new Map(); + if (userResult.data.body.devices) { await userResult.data.body.devices.forEach((element) => { if (element) { @@ -280,7 +279,7 @@ async function init(userId) { } }); - const measureResult = await oauth2Manager.executeOauth2HTTPQuery( + const measureResult = await this.gladys.oauth2Client.executeOauth2HTTPQuery( serviceId, userId, 'get', @@ -315,7 +314,6 @@ async function init(userId) { // get device in db to know device already connected const { gladys } = this; const devicesInDB = await gladys.device.get({ service: 'withings' }); - // Save device with feature await mapOfDeviceByWithingsDeviceId.forEach((value, key) => { if (key) { @@ -345,7 +343,6 @@ async function init(userId) { } }); } - return devicesResult; } diff --git a/server/services/withings/lib/withings.poll.js b/server/services/withings/lib/withings.poll.js index e5c73cbfe5..8fcb63dcf3 100755 --- a/server/services/withings/lib/withings.poll.js +++ b/server/services/withings/lib/withings.poll.js @@ -1,7 +1,5 @@ const Promise = require('bluebird'); -const uuid = require('uuid'); const { DEVICE_FEATURE_TYPES } = require('../../../utils/constants'); -const OAuth2Manager = require('../../../lib/oauth2'); const logger = require('../../../utils/logger'); const { OAUTH2 } = require('../../../utils/constants.js'); @@ -18,7 +16,6 @@ async function poll(device) { if (device.features) { logger.debug('Features : ', device.features); - const oauth2Manager = new OAuth2Manager(this.gladys); const withingsDeviceId = device.params.find((oneParam) => oneParam.name === 'WITHINGS_DEVICE_ID').value; // Get all users of gladys @@ -104,7 +101,7 @@ async function poll(device) { if (feature.last_value_changed) { dateToPoll = feature.last_value_changed.getTime(); } - const measureResult = await oauth2Manager.executeOauth2HTTPQuery( + const measureResult = await this.gladys.oauth2Client.executeOauth2HTTPQuery( this.serviceId, user.id, 'get', @@ -130,15 +127,9 @@ async function poll(device) { logger.debug('currentGroup: ', currentGroup); await Promise.each(currentGroup.measures, async (measure) => { - // Build a feature state - const featureState = { - id: uuid.v4(), - device_feature_id: feature.id, - value: (measure.value * 10 ** measure.unit).toFixed(2), - created_at: new Date(currentGroup.created * 1000), - updated_at: new Date(), - }; - await this.gladys.device.saveHistoricalState(device, feature, featureState); + const historicalValueState = (measure.value * 10 ** measure.unit).toFixed(2); + const createdAt = new Date(currentGroup.created * 1000); + await this.gladys.device.saveHistoricalState(feature, historicalValueState, createdAt); }); } }); @@ -147,7 +138,7 @@ async function poll(device) { } if (withingsType === -1) { - const userResult = await oauth2Manager.executeOauth2HTTPQuery( + const userResult = await this.gladys.oauth2Client.executeOauth2HTTPQuery( this.serviceId, user.id, 'get', @@ -187,14 +178,7 @@ async function poll(device) { featureBattery.last_value = currentBatValue; featureBattery.last_value_string = currentBatValueString; - const featureState = { - id: uuid.v4(), - device_feature_id: feature.id, - value: currentBatValue, - created_at: currentDate, - updated_at: currentDate, - }; - await this.gladys.device.saveHistoricalState(device, featureBattery, featureState); + await this.gladys.device.saveHistoricalState(featureBattery, currentBatValue, currentDate); } }); } diff --git a/server/test/controllers/oauth2/oauth2.controller.test.js b/server/test/controllers/oauth2/oauth2.controller.test.js index 04f8e66f9d..cf683bed25 100755 --- a/server/test/controllers/oauth2/oauth2.controller.test.js +++ b/server/test/controllers/oauth2/oauth2.controller.test.js @@ -42,7 +42,7 @@ describe('POST /api/v1/service/oauth2/client/authorization-uri', () => { }); }); -describe('POST /api/v1/service/oauth2/client/access-token-uri', () => { +describe('POST /api/v1/service/oauth2/client/access-token', () => { before(async function testBefore() { // Generate a new RSA key and add it to the keystore await server.issuer.keys.generate('RS256'); @@ -65,7 +65,7 @@ describe('POST /api/v1/service/oauth2/client/access-token-uri', () => { }; await buildOauth2Request - .post('/api/v1/service/oauth2/client/access-token-uri') + .post('/api/v1/service/oauth2/client/access-token') .send(req) .expect('Content-Type', /json/) .expect(200) @@ -77,7 +77,7 @@ describe('POST /api/v1/service/oauth2/client/access-token-uri', () => { }); // failled call -describe('POST /api/v1/service/oauth2/client/access-token-uri', () => { +describe('POST /api/v1/service/oauth2/client/access-token', () => { it('should get 500 HTTP error on token access uri', async () => { const req = { integration_name: 'test', @@ -86,7 +86,7 @@ describe('POST /api/v1/service/oauth2/client/access-token-uri', () => { }; await buildOauth2Request - .post('/api/v1/service/oauth2/client/access-token-uri') + .post('/api/v1/service/oauth2/client/access-token') .send(req) .expect('Content-Type', /json/) .expect(500); From d4f1b1f351626ae2a956e1925dd52d999334122a Mon Sep 17 00:00:00 2001 From: Euguuu Date: Sun, 6 Mar 2022 17:56:35 +0100 Subject: [PATCH 026/164] fix fo review --- .../all/withings/device-page/Device.jsx | 5 ++- .../withings/device-page/WithingsDevices.jsx | 1 - .../all/withings/device-page/actions.js | 38 ------------------- .../all/withings/device-page/index.js | 1 - .../withings/device-page/withingsConsts.js | 33 ++++++++++++++++ .../all/withings/settings-page/index.js | 2 - 6 files changed, 36 insertions(+), 44 deletions(-) create mode 100644 front/src/routes/integration/all/withings/device-page/withingsConsts.js diff --git a/front/src/routes/integration/all/withings/device-page/Device.jsx b/front/src/routes/integration/all/withings/device-page/Device.jsx index e0eb4f1c7a..9729ff8adb 100644 --- a/front/src/routes/integration/all/withings/device-page/Device.jsx +++ b/front/src/routes/integration/all/withings/device-page/Device.jsx @@ -4,6 +4,7 @@ import cx from 'classnames'; import get from 'get-value'; import dayjs from 'dayjs'; import relativeTime from 'dayjs/plugin/relativeTime'; +import { WithingsDeviceImgByModel } from './withingsConsts'; dayjs.extend(relativeTime); @@ -90,12 +91,12 @@ class WithingsDeviceBox extends Component {
- {props.withingsImgMap && ( + {WithingsDeviceImgByModel && ( {<Text} /> diff --git a/front/src/routes/integration/all/withings/device-page/WithingsDevices.jsx b/front/src/routes/integration/all/withings/device-page/WithingsDevices.jsx index ddd95076ce..1ad37b5bc9 100755 --- a/front/src/routes/integration/all/withings/device-page/WithingsDevices.jsx +++ b/front/src/routes/integration/all/withings/device-page/WithingsDevices.jsx @@ -45,7 +45,6 @@ const WithingsDevices = ({ children, ...props }) => ( props.withingsDevices.map((withingsDevice, index) => ( ({ }); store.setState(newState); }, - updateWithingsDeviceImg() { - // Build map of device image by device name - const mapOfDeviceImgByModel = new Map(); - mapOfDeviceImgByModel.set('Kid Scale', 'KidScale.jpg'); - mapOfDeviceImgByModel.set('WBS08', 'body-cardio-black-kg.jpg'); - mapOfDeviceImgByModel.set('WBS10', 'body-cardio-black-kg.jpg'); - mapOfDeviceImgByModel.set('WBS11', 'body-cardio-black-kg.jpg'); - mapOfDeviceImgByModel.set('WS30', 'body-cardio-black-kg.jpg'); - mapOfDeviceImgByModel.set('Smart Body Analyzer', 'body-cardio-black-kg.jpg'); - mapOfDeviceImgByModel.set('Withings WBS01', 'body-plus-black-kg.jpg'); - mapOfDeviceImgByModel.set('Body+', 'body-plus-black-kg.jpg'); - mapOfDeviceImgByModel.set('Body Cardio', 'body-cardio-black-kg.jpg'); - mapOfDeviceImgByModel.set('Body', 'body-black-kg.jpg'); - mapOfDeviceImgByModel.set('Smart Baby Monitor', 'SmartBabyMonitor.jpg'); - mapOfDeviceImgByModel.set('Withings Home', 'home.jpg'); - mapOfDeviceImgByModel.set('Withings Blood Pressure Monitor V1', 'bpm-connect.jpg'); - mapOfDeviceImgByModel.set('Withings Blood Pressure Monitor V2', 'bpm-connect.jpg'); - mapOfDeviceImgByModel.set('Withings Blood Pressure Monitor V3', 'bpm-connect.jpg'); - mapOfDeviceImgByModel.set('BPM Core', 'bpm-core.jpg'); - mapOfDeviceImgByModel.set('BPM Connect', 'bpm-connect.jpg'); - mapOfDeviceImgByModel.set('BPM Connect Pro', 'bpm-connect.jpg'); - mapOfDeviceImgByModel.set('Pulse', 'pulse-hr-black.jpg'); - mapOfDeviceImgByModel.set('Activite', 'go.jpg'); - mapOfDeviceImgByModel.set('Activite (Pop, Steel)', 'steel-white.jpg'); - mapOfDeviceImgByModel.set('Withings Go', 'go.jpg'); - mapOfDeviceImgByModel.set('Activite Steel HR', 'steel-hr-36b.jpg'); - mapOfDeviceImgByModel.set('Activite Steel HR Sport Edition', 'steel-hr-sport-40b.jpg'); - mapOfDeviceImgByModel.set('Pulse HR', 'pulse-hr-black.jpg'); - mapOfDeviceImgByModel.set('Move', 'move-ecg-white-kg.jpg'); - mapOfDeviceImgByModel.set('Move ECG', 'move-ecg-white-kg.jpg'); - mapOfDeviceImgByModel.set('Aura Dock', 'Aura_2.jpg'); - mapOfDeviceImgByModel.set('Aura Sensor', 'Aura_2.jpg'); - mapOfDeviceImgByModel.set('Aura Sensor V2', 'Aura_2.jpg'); - mapOfDeviceImgByModel.set('Thermo', 'thermo-c.jpg'); - store.setState({ - withingsImgMap: mapOfDeviceImgByModel - }); - }, async saveDevice(state, device) { const deviceSaved = await state.httpClient.post('/api/v1/device', device); device.inDB = true; diff --git a/front/src/routes/integration/all/withings/device-page/index.js b/front/src/routes/integration/all/withings/device-page/index.js index d77d488376..f22f53521f 100755 --- a/front/src/routes/integration/all/withings/device-page/index.js +++ b/front/src/routes/integration/all/withings/device-page/index.js @@ -12,7 +12,6 @@ import { RequestStatus } from '../../../../../utils/consts'; class WithingsDevicePage extends Component { componentWillMount() { this.props.getWithingsDevice(); - this.props.updateWithingsDeviceImg(); this.props.getHouses(); } diff --git a/front/src/routes/integration/all/withings/device-page/withingsConsts.js b/front/src/routes/integration/all/withings/device-page/withingsConsts.js new file mode 100644 index 0000000000..e023ce64d7 --- /dev/null +++ b/front/src/routes/integration/all/withings/device-page/withingsConsts.js @@ -0,0 +1,33 @@ +export const WithingsDeviceImgByModel = { + 'Kid Scale': 'KidScale.jpg', + WBS08: 'body-cardio-black-kg.jpg', + WBS10: 'body-cardio-black-kg.jpg', + WBS11: 'body-cardio-black-kg.jpg', + WS30: 'body-cardio-black-kg.jpg', + 'Smart Body Analyzer': 'body-cardio-black-kg.jpg', + 'Withings WBS01': 'body-plus-black-kg.jpg', + 'Body+': 'body-plus-black-kg.jpg', + 'Body Cardio': 'body-cardio-black-kg.jpg', + Body: 'body-black-kg.jpg', + 'Smart Baby Monitor': 'SmartBabyMonitor.jpg', + 'Withings Home': 'home.jpg', + 'Withings Blood Pressure Monitor V1': 'bpm-connect.jpg', + 'Withings Blood Pressure Monitor V2': 'bpm-connect.jpg', + 'Withings Blood Pressure Monitor V3': 'bpm-connect.jpg', + 'BPM Core': 'bpm-core.jpg', + 'BPM Connect': 'bpm-connect.jpg', + 'BPM Connect Pro': 'bpm-connect.jpg', + Pulse: 'pulse-hr-black.jpg', + Activite: 'go.jpg', + 'Activite (Pop: Steel)': 'steel-white.jpg', + 'Withings Go': 'go.jpg', + 'Activite Steel HR': 'steel-hr-36b.jpg', + 'Activite Steel HR Sport Edition': 'steel-hr-sport-40b.jpg', + 'Pulse HR': 'pulse-hr-black.jpg', + Move: 'move-ecg-white-kg.jpg', + 'Move ECG': 'move-ecg-white-kg.jpg', + 'Aura Dock': 'Aura_2.jpg', + 'Aura Sensor': 'Aura_2.jpg', + 'Aura Sensor V2': 'Aura_2.jpg', + Thermo: 'thermo-c.jpg' +}; diff --git a/front/src/routes/integration/all/withings/settings-page/index.js b/front/src/routes/integration/all/withings/settings-page/index.js index 605ef801b0..bc3e6487b7 100755 --- a/front/src/routes/integration/all/withings/settings-page/index.js +++ b/front/src/routes/integration/all/withings/settings-page/index.js @@ -19,7 +19,6 @@ class WithingsSettingsPage extends Component { this.props.updateIntegrationName('withings'); this.props.getCurrentConfig(); this.props.initWithingsDevices(); - this.props.updateWithingsDeviceImg(); } render(props, {}) { @@ -42,7 +41,6 @@ class WithingsSettingsPage extends Component { {props.withingsDevices.map((withingsDevice, index) => ( Date: Mon, 7 Mar 2022 21:06:53 +0100 Subject: [PATCH 027/164] fix tests --- .../lib/device/device.saveHistoricalState.js | 2 +- server/lib/oauth2/oauth2.deleteClient.js | 2 +- server/services/withings/lib/withings.poll.js | 4 ---- .../device/device.saveHistoricalState.test.js | 11 ++-------- server/test/lib/oauth2/oauth2manager.test.js | 22 +++---------------- .../withings/lib/withings.deleteVar.test.js | 22 +++++-------------- .../withings/lib/withings.init.test.js | 3 +++ .../withings/lib/withings.poll.test.js | 11 ++++++---- 8 files changed, 22 insertions(+), 55 deletions(-) diff --git a/server/lib/device/device.saveHistoricalState.js b/server/lib/device/device.saveHistoricalState.js index 7e2cd9f030..42f4c2d9cb 100644 --- a/server/lib/device/device.saveHistoricalState.js +++ b/server/lib/device/device.saveHistoricalState.js @@ -57,7 +57,7 @@ async function saveHistoricalState(deviceFeature, historicalState, createdAt) { ); deviceFeature.last_value = historicalState.value; - deviceFeature.last_value_changed = historicalState.updated_at; + deviceFeature.last_value_changed = historicalStateObject.created_at; // save local state in RAM this.stateManager.setState('deviceFeature', deviceFeature.selector, deviceFeature); diff --git a/server/lib/oauth2/oauth2.deleteClient.js b/server/lib/oauth2/oauth2.deleteClient.js index 8a8f904532..e6e4abe93d 100755 --- a/server/lib/oauth2/oauth2.deleteClient.js +++ b/server/lib/oauth2/oauth2.deleteClient.js @@ -1,4 +1,4 @@ -const { OAUTH2 } = require('../../utils/constants'); +const { OAUTH2 } = require('../../utils/constants'); /** * @description Delete client_id and secrei_id of current oauth2 integration. diff --git a/server/services/withings/lib/withings.poll.js b/server/services/withings/lib/withings.poll.js index 8fcb63dcf3..18d6182cd1 100755 --- a/server/services/withings/lib/withings.poll.js +++ b/server/services/withings/lib/withings.poll.js @@ -94,8 +94,6 @@ async function poll(device) { } if (withingsType > 0) { - logger.debug('Current feature last value changed: ', feature.last_value_changed); - // Fix date to start poll in tmestamp let dateToPoll = 0; if (feature.last_value_changed) { @@ -124,8 +122,6 @@ async function poll(device) { const valueList = value[1]; await Promise.each(valueList, async (currentGroup) => { if (key) { - logger.debug('currentGroup: ', currentGroup); - await Promise.each(currentGroup.measures, async (measure) => { const historicalValueState = (measure.value * 10 ** measure.unit).toFixed(2); const createdAt = new Date(currentGroup.created * 1000); diff --git a/server/test/lib/device/device.saveHistoricalState.test.js b/server/test/lib/device/device.saveHistoricalState.test.js index 48b9d1f22b..daca001958 100644 --- a/server/test/lib/device/device.saveHistoricalState.test.js +++ b/server/test/lib/device/device.saveHistoricalState.test.js @@ -1,5 +1,4 @@ const EventEmitter = require('events'); -const uuid = require('uuid'); const { assert } = require('chai'); const Device = require('../../../lib/device'); const StateManager = require('../../../lib/state'); @@ -40,15 +39,9 @@ describe('Device saveHistoricalState', () => { const deviceFeature = testDevice.features[0]; const updateDate = new Date().toISOString(); - const historicalState = { - id: uuid.v4(), - device_feature_id: deviceFeature.id, - value: 20, - created_at: updateDate, - updated_at: updateDate, - }; + const historicalState = 20; - await device.saveHistoricalState(device, deviceFeature, historicalState); + await device.saveHistoricalState(deviceFeature, historicalState, updateDate); return assert.equal(deviceFeature.last_value_changed, updateDate); }); diff --git a/server/test/lib/oauth2/oauth2manager.test.js b/server/test/lib/oauth2/oauth2manager.test.js index 8f8526882e..ee0b02d675 100755 --- a/server/test/lib/oauth2/oauth2manager.test.js +++ b/server/test/lib/oauth2/oauth2manager.test.js @@ -1,11 +1,10 @@ const { OAuth2Server } = require('oauth2-mock-server'); -const { assert, expect } = require('chai'); +const { assert } = require('chai'); const { fake } = require('sinon'); const OAuth2Manager = require('../../../lib/oauth2'); const logger = require('../../../utils/logger'); const { OAUTH2 } = require('../../../utils/constants'); -const { Error500 } = require('../../../utils/httpErrors'); const server = new OAuth2Server(); @@ -66,7 +65,7 @@ describe('oauth2manager test', () => { await server.stop(); }); - const manager = new OAuth2Manager(gladys); + const manager = new OAuth2Manager(gladys.variable); it('oauth manager get executeOauth2HTTPQuery test ', async () => { const queryType = 'get'; @@ -118,22 +117,7 @@ describe('oauth2manager test', () => { describe('oauth2manager failled test', () => { // check error - const manager = new OAuth2Manager(null); - - it('oauth manager get error deleteClient failled test ', async () => { - try { - const result = await manager.deleteClient(testServiceId, testUserId); - logger.debug(result); - assert.fail('should have Error500 error'); - } catch (e) { - expect(e).to.be.instanceOf(Error500); - } - }); -}); - -describe('oauth2manager failled test', () => { - // check error - const manager = new OAuth2Manager(gladys); + const manager = new OAuth2Manager(gladys.variable); it('oauth manager get error on refresh token test ', async () => { const queryType = 'get'; diff --git a/server/test/services/withings/lib/withings.deleteVar.test.js b/server/test/services/withings/lib/withings.deleteVar.test.js index 5a8f689864..a27f6ad64b 100644 --- a/server/test/services/withings/lib/withings.deleteVar.test.js +++ b/server/test/services/withings/lib/withings.deleteVar.test.js @@ -1,31 +1,19 @@ -const { expect, assert } = require('chai'); +const { expect } = require('chai'); const { fake } = require('sinon'); const WithingsHandler = require('../../../../services/withings/lib'); -const { Error500 } = require('../../../../utils/httpErrors'); const gladysOk = { variable: { destroy: fake.resolves(null) }, -}; - -const gladysKo = { - variable: { destroy: fake.rejects('Fail to delete') }, + oauth2Client: { + deleteClient: fake.resolves({ success: true }), + }, }; describe('WithingsHandler deleteVar', () => { it('deletes oauth2 vars', async () => { const withingsHandler = new WithingsHandler(gladysOk, null, null, null); - const result = await withingsHandler.deleteVar('req', undefined); + const result = await withingsHandler.deleteVar('req'); expect(result).to.eql({ success: true }); }); - it('fails to delete oauth2 vars', async () => { - const withingsHandler = new WithingsHandler(gladysKo, null, null, null); - - try { - await withingsHandler.deleteVar('req', undefined); - assert.fail('should have Error500 error'); - } catch (e) { - expect(e).to.be.instanceOf(Error500); - } - }); }); diff --git a/server/test/services/withings/lib/withings.init.test.js b/server/test/services/withings/lib/withings.init.test.js index c925a1ba22..29bbff49f1 100644 --- a/server/test/services/withings/lib/withings.init.test.js +++ b/server/test/services/withings/lib/withings.init.test.js @@ -2,6 +2,7 @@ const { assert } = require('chai'); const { OAuth2Server } = require('oauth2-mock-server'); const { fake } = require('sinon'); const ServerMock = require('mock-http-server'); +const OAuth2Manager = require('../../../../lib/oauth2/index'); const WithingsHandler = require('../../../../services/withings/lib'); const { OAUTH2 } = require('../../../../utils/constants.js'); @@ -300,6 +301,8 @@ describe('WithingsHandler init', () => { serverOauth2.issuer.keys.generate('RS256'); // Start the server serverOauth2.start(9292, 'localhost'); + + gladys.oauth2Client = new OAuth2Manager(gladys.variable); }); after(function testAfter(done) { diff --git a/server/test/services/withings/lib/withings.poll.test.js b/server/test/services/withings/lib/withings.poll.test.js index f6cc2324cf..7fb0b72cb1 100644 --- a/server/test/services/withings/lib/withings.poll.test.js +++ b/server/test/services/withings/lib/withings.poll.test.js @@ -5,6 +5,7 @@ const sinon = require('sinon'); const WithingsHandler = require('../../../../services/withings/lib'); const { DEVICE_FEATURE_TYPES } = require('../../../../utils/constants'); const { OAUTH2 } = require('../../../../utils/constants.js'); +const OAuth2Manager = require('../../../../lib/oauth2/index'); const { assert, fake } = sinon; @@ -174,6 +175,8 @@ describe('WithingsHandler poll', () => { serverOauth2.issuer.keys.generate('RS256'); // Start the server serverOauth2.start(9292, 'localhost'); + + gladys.oauth2Client = new OAuth2Manager(gladys.variable); }); after((done) => { @@ -311,7 +314,7 @@ describe('WithingsHandler poll', () => { // 18 feature - 1 feature unknown = 17 state to save assert.callCount(gladys.device.saveHistoricalState, 17); - assert.calledWith(gladys.device.saveHistoricalState, deviceDef); + assert.calledWith(gladys.device.saveHistoricalState, deviceToPoll.features[0]); const deviceToPoll2 = { id: 'gdfgdfgd-7207-4e55-b893-gfdgdfgkjliu', @@ -340,7 +343,7 @@ describe('WithingsHandler poll', () => { deviceDef.params = [{ name: 'WITHINGS_DEVICE_ID', value: 'withingsDevideId2' }]; deviceDef.features = deviceToPoll2.features; - assert.calledWith(gladys.device.saveHistoricalState, deviceDef); + assert.calledWith(gladys.device.saveHistoricalState, deviceToPoll.features[0]); const deviceToPoll3 = { id: 'gdfgdfgd-7207-4e55-b893-gfdgdfgkjliu', @@ -369,7 +372,7 @@ describe('WithingsHandler poll', () => { deviceDef.params = [{ name: 'WITHINGS_DEVICE_ID', value: 'withingsDevideId3' }]; deviceDef.features = deviceToPoll3.features; - assert.calledWith(gladys.device.saveHistoricalState, deviceDef); + assert.calledWith(gladys.device.saveHistoricalState, deviceToPoll.features[0]); const deviceToPoll4 = { id: 'gdfgdfgd-7207-4e55-b893-gfdgdfgkjliu', @@ -398,6 +401,6 @@ describe('WithingsHandler poll', () => { deviceDef.params = [{ name: 'WITHINGS_DEVICE_ID', value: 'withingsDevideId4' }]; deviceDef.features = deviceToPoll4.features; - assert.calledWith(gladys.device.saveHistoricalState, deviceDef); + assert.calledWith(gladys.device.saveHistoricalState, deviceToPoll.features[0]); }); }); From 4853a3d6cfae9028cfcc23e72ff65698a36c5332 Mon Sep 17 00:00:00 2001 From: Euguuu Date: Wed, 9 Mar 2022 17:59:55 +0100 Subject: [PATCH 028/164] fix for review --- front/package-lock.json | 1312 ----------------- .../all/withings/settings-page/actions.js | 6 +- server/api/controllers/oauth2.controller.js | 28 +- server/api/routes.js | 2 +- .../lib/device/device.saveHistoricalState.js | 27 +- server/lib/oauth2/index.js | 4 +- .../oauth2/oauth2.executeOauth2HTTPQuery.js | 4 +- ...AccesToken.js => oauth2.getAccessToken.js} | 16 +- .../withings/api/withings.controller.js | 24 +- server/services/withings/index.js | 14 +- server/test/lib/oauth2/oauth2manager.test.js | 12 +- .../withings/lib/withings.init.test.js | 12 +- .../withings/lib/withings.poll.test.js | 12 +- 13 files changed, 70 insertions(+), 1403 deletions(-) rename server/lib/oauth2/{oauth2.getAccesToken.js => oauth2.getAccessToken.js} (86%) diff --git a/front/package-lock.json b/front/package-lock.json index 693a9a89da..a6210fb7f9 100644 --- a/front/package-lock.json +++ b/front/package-lock.json @@ -7150,20 +7150,6 @@ "node": ">=8" } }, - "node_modules/chokidar/node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, "node_modules/chokidar/node_modules/glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", @@ -12548,712 +12534,6 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, - "node_modules/fsevents": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", - "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", - "bundleDependencies": [ - "node-pre-gyp" - ], - "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "dependencies": { - "nan": "^2.12.1", - "node-pre-gyp": "^0.12.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/fsevents/node_modules/abbrev": { - "version": "1.1.1", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true, - "inBundle": true, - "optional": true - }, - "node_modules/fsevents/node_modules/ansi-regex": { - "version": "2.1.1", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "inBundle": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/aproba": { - "version": "1.2.0", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true, - "inBundle": true, - "optional": true - }, - "node_modules/fsevents/node_modules/are-we-there-yet": { - "version": "1.1.5", - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "node_modules/fsevents/node_modules/balanced-match": { - "version": "1.0.0", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true, - "inBundle": true, - "optional": true - }, - "node_modules/fsevents/node_modules/brace-expansion": { - "version": "1.1.11", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/fsevents/node_modules/chownr": { - "version": "1.1.1", - "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", - "dev": true, - "inBundle": true, - "optional": true - }, - "node_modules/fsevents/node_modules/code-point-at": { - "version": "1.1.0", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true, - "inBundle": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/concat-map": { - "version": "0.0.1", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true, - "inBundle": true, - "optional": true - }, - "node_modules/fsevents/node_modules/console-control-strings": { - "version": "1.1.0", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", - "dev": true, - "inBundle": true, - "optional": true - }, - "node_modules/fsevents/node_modules/core-util-is": { - "version": "1.0.2", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true, - "inBundle": true, - "optional": true - }, - "node_modules/fsevents/node_modules/debug": { - "version": "4.1.1", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/fsevents/node_modules/deep-extend": { - "version": "0.6.0", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true, - "inBundle": true, - "optional": true, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/fsevents/node_modules/delegates": { - "version": "1.0.0", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "dev": true, - "inBundle": true, - "optional": true - }, - "node_modules/fsevents/node_modules/detect-libc": { - "version": "1.0.3", - "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", - "dev": true, - "inBundle": true, - "optional": true, - "bin": { - "detect-libc": "bin/detect-libc.js" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/fsevents/node_modules/fs-minipass": { - "version": "1.2.5", - "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "minipass": "^2.2.1" - } - }, - "node_modules/fsevents/node_modules/fs.realpath": { - "version": "1.0.0", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true, - "inBundle": true, - "optional": true - }, - "node_modules/fsevents/node_modules/gauge": { - "version": "2.7.4", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "node_modules/fsevents/node_modules/glob": { - "version": "7.1.3", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "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" - }, - "engines": { - "node": "*" - } - }, - "node_modules/fsevents/node_modules/has-unicode": { - "version": "2.0.1", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", - "dev": true, - "inBundle": true, - "optional": true - }, - "node_modules/fsevents/node_modules/iconv-lite": { - "version": "0.4.24", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/ignore-walk": { - "version": "3.0.1", - "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "minimatch": "^3.0.4" - } - }, - "node_modules/fsevents/node_modules/inflight": { - "version": "1.0.6", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/fsevents/node_modules/inherits": { - "version": "2.0.3", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true, - "inBundle": true, - "optional": true - }, - "node_modules/fsevents/node_modules/ini": { - "version": "1.3.5", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", - "deprecated": "Please update to ini >=1.3.6 to avoid a prototype pollution issue", - "dev": true, - "inBundle": true, - "optional": true, - "engines": { - "node": "*" - } - }, - "node_modules/fsevents/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/isarray": { - "version": "1.0.0", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true, - "inBundle": true, - "optional": true - }, - "node_modules/fsevents/node_modules/minimatch": { - "version": "3.0.4", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/fsevents/node_modules/minimist": { - "version": "0.0.8", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true, - "inBundle": true, - "optional": true - }, - "node_modules/fsevents/node_modules/minipass": { - "version": "2.3.5", - "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "node_modules/fsevents/node_modules/minizlib": { - "version": "1.2.1", - "integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "minipass": "^2.2.1" - } - }, - "node_modules/fsevents/node_modules/mkdirp": { - "version": "0.5.1", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "minimist": "0.0.8" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/fsevents/node_modules/ms": { - "version": "2.1.1", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true, - "inBundle": true, - "optional": true - }, - "node_modules/fsevents/node_modules/needle": { - "version": "2.3.0", - "integrity": "sha512-QBZu7aAFR0522EyaXZM0FZ9GLpq6lvQ3uq8gteiDUp7wKdy0lSd2hPlgFwVuW1CBkfEs9PfDQsQzZghLs/psdg==", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "debug": "^4.1.0", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - }, - "bin": { - "needle": "bin/needle" - }, - "engines": { - "node": ">= 4.4.x" - } - }, - "node_modules/fsevents/node_modules/node-pre-gyp": { - "version": "0.12.0", - "integrity": "sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A==", - "deprecated": "Please upgrade to @mapbox/node-pre-gyp: the non-scoped node-pre-gyp package is deprecated and only the @mapbox scoped package will recieve updates in the future", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - }, - "bin": { - "node-pre-gyp": "bin/node-pre-gyp" - } - }, - "node_modules/fsevents/node_modules/nopt": { - "version": "4.0.1", - "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "abbrev": "1", - "osenv": "^0.1.4" - }, - "bin": { - "nopt": "bin/nopt.js" - } - }, - "node_modules/fsevents/node_modules/npm-bundled": { - "version": "1.0.6", - "integrity": "sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==", - "dev": true, - "inBundle": true, - "optional": true - }, - "node_modules/fsevents/node_modules/npm-packlist": { - "version": "1.4.1", - "integrity": "sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw==", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, - "node_modules/fsevents/node_modules/npmlog": { - "version": "4.1.2", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "node_modules/fsevents/node_modules/number-is-nan": { - "version": "1.0.1", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true, - "inBundle": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/object-assign": { - "version": "4.1.1", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true, - "inBundle": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/once": { - "version": "1.4.0", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/fsevents/node_modules/os-homedir": { - "version": "1.0.2", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true, - "inBundle": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/os-tmpdir": { - "version": "1.0.2", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true, - "inBundle": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/osenv": { - "version": "0.1.5", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "node_modules/fsevents/node_modules/path-is-absolute": { - "version": "1.0.1", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true, - "inBundle": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/process-nextick-args": { - "version": "2.0.0", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", - "dev": true, - "inBundle": true, - "optional": true - }, - "node_modules/fsevents/node_modules/rc": { - "version": "1.2.8", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/fsevents/node_modules/rc/node_modules/minimist": { - "version": "1.2.0", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true, - "inBundle": true, - "optional": true - }, - "node_modules/fsevents/node_modules/readable-stream": { - "version": "2.3.6", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/fsevents/node_modules/rimraf": { - "version": "2.6.3", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/fsevents/node_modules/safe-buffer": { - "version": "5.1.2", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "inBundle": true, - "optional": true - }, - "node_modules/fsevents/node_modules/safer-buffer": { - "version": "2.1.2", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true, - "inBundle": true, - "optional": true - }, - "node_modules/fsevents/node_modules/sax": { - "version": "1.2.4", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true, - "inBundle": true, - "optional": true - }, - "node_modules/fsevents/node_modules/semver": { - "version": "5.7.0", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", - "dev": true, - "inBundle": true, - "optional": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/fsevents/node_modules/set-blocking": { - "version": "2.0.0", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true, - "inBundle": true, - "optional": true - }, - "node_modules/fsevents/node_modules/signal-exit": { - "version": "3.0.2", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true, - "inBundle": true, - "optional": true - }, - "node_modules/fsevents/node_modules/string_decoder": { - "version": "1.1.1", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/fsevents/node_modules/string-width": { - "version": "1.0.2", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/strip-ansi": { - "version": "3.0.1", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/strip-json-comments": { - "version": "2.0.1", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true, - "inBundle": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/tar": { - "version": "4.4.8", - "integrity": "sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.3.4", - "minizlib": "^1.1.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.2" - }, - "engines": { - "node": ">=4.5" - } - }, - "node_modules/fsevents/node_modules/util-deprecate": { - "version": "1.0.2", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true, - "inBundle": true, - "optional": true - }, - "node_modules/fsevents/node_modules/wide-align": { - "version": "1.1.3", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "string-width": "^1.0.2 || 2" - } - }, - "node_modules/fsevents/node_modules/wrappy": { - "version": "1.0.2", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true, - "inBundle": true, - "optional": true - }, - "node_modules/fsevents/node_modules/yallist": { - "version": "3.0.3", - "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", - "dev": true, - "inBundle": true, - "optional": true - }, "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -18308,13 +17588,6 @@ "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", "dev": true }, - "node_modules/nan": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", - "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", - "dev": true, - "optional": true - }, "node_modules/nanoid": { "version": "3.1.23", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.23.tgz", @@ -24251,20 +23524,6 @@ "randombytes": "^2.1.0" } }, - "node_modules/rollup/node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, "node_modules/rsvp": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-3.6.2.tgz", @@ -36284,13 +35543,6 @@ "to-regex-range": "^5.0.1" } }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, "glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", @@ -40623,554 +39875,6 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, - "fsevents": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", - "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", - "dev": true, - "optional": true, - "requires": { - "nan": "^2.12.1", - "node-pre-gyp": "^0.12.0" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "debug": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ms": "^2.1.1" - } - }, - "deep-extend": { - "version": "0.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "fs-minipass": { - "version": "1.2.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "glob": { - "version": "7.1.3", - "bundled": true, - "dev": true, - "optional": true, - "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" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "iconv-lite": { - "version": "0.4.24", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore-walk": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "ini": { - "version": "1.3.5", - "bundled": true, - "dev": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true, - "optional": true - }, - "minipass": { - "version": "2.3.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.2.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "needle": { - "version": "2.3.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "debug": "^4.1.0", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.12.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "optional": true - }, - "npm-packlist": { - "version": "1.4.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "rc": { - "version": "1.2.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "dev": true, - "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" - } - }, - "rimraf": { - "version": "2.6.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "bundled": true, - "dev": true, - "optional": true - }, - "semver": { - "version": "5.7.0", - "bundled": true, - "dev": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "tar": { - "version": "4.4.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.3.4", - "minizlib": "^1.1.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "wide-align": { - "version": "1.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "yallist": { - "version": "3.0.3", - "bundled": true, - "dev": true, - "optional": true - } - } - }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -45331,13 +44035,6 @@ "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", "dev": true }, - "nan": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", - "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", - "dev": true, - "optional": true - }, "nanoid": { "version": "3.1.23", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.23.tgz", @@ -49815,15 +48512,6 @@ "dev": true, "requires": { "fsevents": "~2.3.2" - }, - "dependencies": { - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - } } }, "rollup-plugin-terser": { diff --git a/front/src/routes/integration/all/withings/settings-page/actions.js b/front/src/routes/integration/all/withings/settings-page/actions.js index 7128c2f8c0..4063eecfbe 100755 --- a/front/src/routes/integration/all/withings/settings-page/actions.js +++ b/front/src/routes/integration/all/withings/settings-page/actions.js @@ -1,4 +1,3 @@ -import queryString from 'query-string'; import { route } from 'preact-router'; import { RequestStatus } from '../../../../../utils/consts'; @@ -11,12 +10,11 @@ const actions = store => ({ try { // check if this call is a return of oauth2 authorize code if (state.currentUrl) { - const queryParams = queryString.parse(state.currentUrl.substring(state.currentUrl.indexOf('?'))); - if (queryParams && queryParams.code) { + if (this.code) { const serviceId = (await state.httpClient.get(`/api/v1/service/withings`)).id; await state.httpClient.post('/api/v1/service/oauth2/client/access-token', { integrationName: 'withings', - authorization_code: queryParams.code, + authorization_code: this.code, service_id: serviceId }); diff --git a/server/api/controllers/oauth2.controller.js b/server/api/controllers/oauth2.controller.js index 175e6cad0a..622e0c61bd 100644 --- a/server/api/controllers/oauth2.controller.js +++ b/server/api/controllers/oauth2.controller.js @@ -9,14 +9,7 @@ module.exports = function OAuth2Controller(gladys) { * @apiGroup OAuth2 */ async function buildAuthorizationUri(req, res) { - if ( - req.body && - req.body.service_id && - req.user && - req.user.id && - req.body.integration_name && - req.headers.referer - ) { + if (req.body && req.body.service_id && req.body.integration_name && req.headers.referer) { const authorizationUriResult = await gladys.oauth2Client.buildAuthorizationUri( req.body.service_id, req.user.id, @@ -33,19 +26,12 @@ module.exports = function OAuth2Controller(gladys) { /** * @description Get access token and save it in database (for current service). * @api {post} /api/v1/service/oauth2/client/access-token Build an getToken uri (to get token access) - * @apiName buildAccesTokenUri + * @apiName buildAccessTokenUri * @apiGroup OAuth2 */ - async function getAccesTokenUri(req, res) { - if ( - req.body && - req.body.service_id && - req.user && - req.user.id && - req.body.authorization_code && - req.headers.referer - ) { - const authResult = await gladys.oauth2Client.getAccesToken( + async function getAccessTokenUri(req, res) { + if (req.body && req.body.service_id && req.body.authorization_code && req.headers.referer) { + const authResult = await gladys.oauth2Client.getAccessToken( req.body.service_id, req.user.id, req.body.authorization_code, @@ -64,7 +50,7 @@ module.exports = function OAuth2Controller(gladys) { * @apiGroup oauth2 */ async function getCurrentConfig(req, res) { - if (req.query && req.query.service_id && req.user && req.user.id) { + if (req.query && req.query.service_id) { const serviceId = req.query.service_id; const resultClientId = await gladys.variable.getValue(OAUTH2.VARIABLE.CLIENT_ID, serviceId, req.user.id); @@ -77,7 +63,7 @@ module.exports = function OAuth2Controller(gladys) { return Object.freeze({ buildAuthorizationUri: asyncMiddleware(buildAuthorizationUri), - getAccesTokenUri: asyncMiddleware(getAccesTokenUri), + getAccessTokenUri: asyncMiddleware(getAccessTokenUri), getCurrentConfig: asyncMiddleware(getCurrentConfig), }); }; diff --git a/server/api/routes.js b/server/api/routes.js index 24b43dde1e..249a3c471a 100644 --- a/server/api/routes.js +++ b/server/api/routes.js @@ -520,7 +520,7 @@ function getRoutes(gladys) { }, 'post /api/v1/service/oauth2/client/access-token': { authenticated: true, - controller: oauth2Controller.getAccesTokenUri, + controller: oauth2Controller.getAccessTokenUri, }, 'get /api/v1/service/oauth2/client': { authenticated: true, diff --git a/server/lib/device/device.saveHistoricalState.js b/server/lib/device/device.saveHistoricalState.js index 42f4c2d9cb..647a5d3adf 100644 --- a/server/lib/device/device.saveHistoricalState.js +++ b/server/lib/device/device.saveHistoricalState.js @@ -5,15 +5,15 @@ const { BadParameters } = require('../../utils/coreErrors'); /** * @description Save hstorical device feature state in DB. * @param {Object} deviceFeature - A DeviceFeature object. - * @param {Object} historicalState - The historical feature state object of the deviceFeature to save. + * @param {Object} historicalState - The historical feature state value (numeric) of the deviceFeature to save. * @param {Object} createdAt - Date of state. * @example * saveHistoricalState({ * id: 'fc235c88-b10d-4706-8b59-fef92a7119b2', * selector: 'my-light' * }, - * 'newValue', - * '2022-02-03' + * 50, + * '2022-03-09T11:30:19.000' * ); */ async function saveHistoricalState(deviceFeature, historicalState, createdAt) { @@ -23,14 +23,10 @@ async function saveHistoricalState(deviceFeature, historicalState, createdAt) { throw new BadParameters(`device.saveHistoricalState of NaN value on ${deviceFeature.selector}`); } // get current feture to update last value if needed - const deviceFeatureInDB = await db.DeviceFeature.findOne({ - where: { - id: deviceFeature.id, - }, - }); + const previousDeviceFeature = this.stateManager.get('deviceFeature', deviceFeature.selector); const historicalStateObject = { - device_feature_id: deviceFeatureInDB.id, + device_feature_id: previousDeviceFeature.id, value: historicalState, created_at: createdAt, }; @@ -38,10 +34,10 @@ async function saveHistoricalState(deviceFeature, historicalState, createdAt) { await db.DeviceFeatureState.create(historicalStateObject); const historicalStateAfterFeatureLastValue = - new Date(historicalStateObject.created_at) > new Date(deviceFeatureInDB.last_value_changed); + new Date(historicalStateObject.created_at) > new Date(previousDeviceFeature.last_value_changed); const featureLastValueChageIsValidDate = - deviceFeatureInDB.last_value_changed instanceof Date && - !Number.isNaN(deviceFeatureInDB.last_value_changed.getTime()); + previousDeviceFeature.last_value_changed instanceof Date && + !Number.isNaN(previousDeviceFeature.last_value_changed.getTime()); if (historicalStateAfterFeatureLastValue || !featureLastValueChageIsValidDate) { await db.DeviceFeature.update( @@ -56,11 +52,14 @@ async function saveHistoricalState(deviceFeature, historicalState, createdAt) { }, ); - deviceFeature.last_value = historicalState.value; + deviceFeature.last_value = historicalStateObject.value; deviceFeature.last_value_changed = historicalStateObject.created_at; // save local state in RAM - this.stateManager.setState('deviceFeature', deviceFeature.selector, deviceFeature); + this.stateManager.setState('deviceFeature', deviceFeature.selector, { + last_value: historicalStateObject.value, + last_value_changed: historicalStateObject.created_at, + }); } } diff --git a/server/lib/oauth2/index.js b/server/lib/oauth2/index.js index fc65b0382a..f0f3790da4 100755 --- a/server/lib/oauth2/index.js +++ b/server/lib/oauth2/index.js @@ -1,6 +1,6 @@ const { executeOauth2HTTPQuery } = require('./oauth2.executeOauth2HTTPQuery'); const { deleteClient } = require('./oauth2.deleteClient'); -const { getAccesToken } = require('./oauth2.getAccesToken'); +const { getAccessToken } = require('./oauth2.getAccessToken'); const { buildAuthorizationUri } = require('./oauth2.buildAuthorizationUri'); const OAuth2Manager = function OAuth2Manager(variable) { @@ -9,7 +9,7 @@ const OAuth2Manager = function OAuth2Manager(variable) { OAuth2Manager.prototype.executeOauth2HTTPQuery = executeOauth2HTTPQuery; OAuth2Manager.prototype.deleteClient = deleteClient; -OAuth2Manager.prototype.getAccesToken = getAccesToken; +OAuth2Manager.prototype.getAccessToken = getAccessToken; OAuth2Manager.prototype.buildAuthorizationUri = buildAuthorizationUri; module.exports = OAuth2Manager; diff --git a/server/lib/oauth2/oauth2.executeOauth2HTTPQuery.js b/server/lib/oauth2/oauth2.executeOauth2HTTPQuery.js index 6e9807483c..b010e29994 100644 --- a/server/lib/oauth2/oauth2.executeOauth2HTTPQuery.js +++ b/server/lib/oauth2/oauth2.executeOauth2HTTPQuery.js @@ -105,10 +105,10 @@ async function refreshTokenAccess(variable, serviceId, userId) { */ async function executeOauth2HTTPQuery(serviceId, userId, queryType, queryUrl, queryParams) { // Refresh token access if needed - const accesToken = await refreshTokenAccess(this.variable, serviceId, userId); + const accessToken = await refreshTokenAccess(this.variable, serviceId, userId); const headerConfig = { headers: { - Authorization: `${accesToken.token.token_type} ${accesToken.token.access_token}`, + Authorization: `${accessToken.token.token_type} ${accessToken.token.access_token}`, }, }; diff --git a/server/lib/oauth2/oauth2.getAccesToken.js b/server/lib/oauth2/oauth2.getAccessToken.js similarity index 86% rename from server/lib/oauth2/oauth2.getAccesToken.js rename to server/lib/oauth2/oauth2.getAccessToken.js index 19f3ae16ab..0c9a7c1fd6 100755 --- a/server/lib/oauth2/oauth2.getAccesToken.js +++ b/server/lib/oauth2/oauth2.getAccessToken.js @@ -4,14 +4,14 @@ const { OAUTH2 } = require('../../utils/constants'); const { Error500 } = require('../../utils/httpErrors'); /** - * @description Get new AccesToken with client_id and secrei_id of current oauth2 integration. + * @description Get new AccessToken with client_id and secrei_id of current oauth2 integration. * @param {string} serviceId - This serviceId of current integration. * @param {string} userId - This userId of current session. * @param {string} authorizationCode - Authorization code for nex token. * @param {string} referer - Gladys referer. * @returns {Promise} Resolve with current integration service id. * @example - * oauth2.getAccesToken( + * oauth2.getAccessToken( * userId: fd81vs687f0bf3414e0fe3facfba7be9455109409a' * serviceId: 'ffsdvs687f0bf3414e0fe3facfba7be945510fds09a' * authorizationCode: '25dbf26a066d947fca82a1f05ae5890f79a27687', @@ -19,15 +19,15 @@ const { Error500 } = require('../../utils/httpErrors'); * } * ); */ -async function getAccesToken(serviceId, userId, authorizationCode, referer) { +async function getAccessToken(serviceId, userId, authorizationCode, referer) { // Find provider configuration const tokenHost = await this.variable.getValue(OAUTH2.VARIABLE.TOKEN_HOST, serviceId); const tokenPath = await this.variable.getValue(OAUTH2.VARIABLE.TOKEN_PATH, serviceId); const authorizeHost = await this.variable.getValue(OAUTH2.VARIABLE.AUTHORIZE_HOST, serviceId); const authorizePath = await this.variable.getValue(OAUTH2.VARIABLE.AUTHORIZE_PATH, serviceId); const grantType = await this.variable.getValue(OAUTH2.VARIABLE.GRANT_TYPE, serviceId); - const additionalAccesTokenRequestAxtionParam = await this.variable.getValue( - `${OAUTH2.VARIABLE.ADDITIONAL_ACCESS_TOKEN_REQUEST_ACTION_PARAM}`, + const additionalAccessTokenRequestAxtionParam = await this.variable.getValue( + OAUTH2.VARIABLE.ADDITIONAL_ACCESS_TOKEN_REQUEST_ACTION_PARAM, serviceId, ); const redirectUriSuffix = await this.variable.getValue(OAUTH2.VARIABLE.REDIRECT_URI_SUFFIX, serviceId); @@ -57,8 +57,8 @@ async function getAccesToken(serviceId, userId, authorizationCode, referer) { grant_type: grantType, redirect_uri: `${referer}${redirectUriSuffix}`, }; - if (additionalAccesTokenRequestAxtionParam) { - tokenConfig.action = additionalAccesTokenRequestAxtionParam; + if (additionalAccessTokenRequestAxtionParam) { + tokenConfig.action = additionalAccessTokenRequestAxtionParam; } try { @@ -96,5 +96,5 @@ async function getAccesToken(serviceId, userId, authorizationCode, referer) { } module.exports = { - getAccesToken, + getAccessToken, }; diff --git a/server/services/withings/api/withings.controller.js b/server/services/withings/api/withings.controller.js index bc07a97419..323c6598bc 100755 --- a/server/services/withings/api/withings.controller.js +++ b/server/services/withings/api/withings.controller.js @@ -8,16 +8,14 @@ module.exports = function WithingsController(withingsHandler) { * @apiGroup Withings */ async function init(req, res) { - if (req.user && req.user.id) { - const resultInit = await withingsHandler.init(req.user.id); - res.json({ - withingsDevices: resultInit, - }); - } + const resultInit = await withingsHandler.init(req.user.id); + res.json({ + withingsDevices: resultInit, + }); } /** - * @description Poll withings devices (used to initialize featuer state on gladys device creation). + * @description Poll withings devices (used to initialize feature state on gladys device creation). * @api {get} /api/v1/service/withings/poll Poll withings devices. * @apiName poll * @apiGroup Withings @@ -33,13 +31,11 @@ module.exports = function WithingsController(withingsHandler) { * @apiGroup Withings */ async function deleteConfig(req, res) { - if (req.user && req.user.id) { - await withingsHandler.deleteVar(req.user.id); - await withingsHandler.deleteDevices(); - res.json({ - success: true, - }); - } + await withingsHandler.deleteVar(req.user.id); + await withingsHandler.deleteDevices(); + res.json({ + success: true, + }); } return { diff --git a/server/services/withings/index.js b/server/services/withings/index.js index 194bcf4d85..6e7c28c538 100755 --- a/server/services/withings/index.js +++ b/server/services/withings/index.js @@ -19,21 +19,21 @@ module.exports = function WithingsService(gladys, serviceId) { const tokenHost = await gladys.variable.getValue(OAUTH2.VARIABLE.TOKEN_HOST, serviceId); if (!tokenHost) { // Init variable in db - await gladys.variable.setValue(`${OAUTH2.VARIABLE.TOKEN_HOST}`, 'https://wbsapi.withings.net', serviceId); - await gladys.variable.setValue(`${OAUTH2.VARIABLE.TOKEN_PATH}`, '/v2/oauth2', serviceId); - await gladys.variable.setValue(`${OAUTH2.VARIABLE.AUTHORIZE_HOST}`, 'https://account.withings.com', serviceId); - await gladys.variable.setValue(`${OAUTH2.VARIABLE.AUTHORIZE_PATH}`, '/oauth2_user/authorize2', serviceId); + await gladys.variable.setValue(OAUTH2.VARIABLE.TOKEN_HOST, 'https://wbsapi.withings.net', serviceId); + await gladys.variable.setValue(OAUTH2.VARIABLE.TOKEN_PATH, '/v2/oauth2', serviceId); + await gladys.variable.setValue(OAUTH2.VARIABLE.AUTHORIZE_HOST, 'https://account.withings.com', serviceId); + await gladys.variable.setValue(OAUTH2.VARIABLE.AUTHORIZE_PATH, '/oauth2_user/authorize2', serviceId); await gladys.variable.setValue( - `${OAUTH2.VARIABLE.ADDITIONAL_ACCESS_TOKEN_REQUEST_ACTION_PARAM}`, + OAUTH2.VARIABLE.ADDITIONAL_ACCESS_TOKEN_REQUEST_ACTION_PARAM, 'requesttoken', serviceId, ); await gladys.variable.setValue( - `${OAUTH2.VARIABLE.INTEGRATION_SCOPE}`, + OAUTH2.VARIABLE.INTEGRATION_SCOPE, 'user.info,user.metrics,user.activity,user.sleepevents', serviceId, ); - await gladys.variable.setValue(`${OAUTH2.VARIABLE.GRANT_TYPE}`, 'authorization_code', serviceId); + await gladys.variable.setValue(OAUTH2.VARIABLE.GRANT_TYPE, 'authorization_code', serviceId); await gladys.variable.setValue( OAUTH2.VARIABLE.REDIRECT_URI_SUFFIX, 'dashboard/integration/health/withings/settings', diff --git a/server/test/lib/oauth2/oauth2manager.test.js b/server/test/lib/oauth2/oauth2manager.test.js index ee0b02d675..a2dbcb7ef9 100755 --- a/server/test/lib/oauth2/oauth2manager.test.js +++ b/server/test/lib/oauth2/oauth2manager.test.js @@ -17,17 +17,17 @@ const gladys = { variable: { getValue: function getValue(key, serviceId, userId) { switch (key) { - case `${OAUTH2.VARIABLE.TOKEN_HOST}`: + case OAUTH2.VARIABLE.TOKEN_HOST: return testUrl; - case `${OAUTH2.VARIABLE.TOKEN_PATH}`: + case OAUTH2.VARIABLE.TOKEN_PATH: return '/token'; - case `${OAUTH2.VARIABLE.AUTHORIZE_HOST}`: + case OAUTH2.VARIABLE.AUTHORIZE_HOST: return testUrl; - case `${OAUTH2.VARIABLE.AUTHORIZE_PATH}`: + case OAUTH2.VARIABLE.AUTHORIZE_PATH: return '/authorize2'; - case `${OAUTH2.VARIABLE.INTEGRATION_SCOPE}`: + case OAUTH2.VARIABLE.INTEGRATION_SCOPE: return 'user.info,user.metrics,user.activity,user.sleepevents'; - case `${OAUTH2.VARIABLE.GRANT_TYPE}`: + case OAUTH2.VARIABLE.GRANT_TYPE: return 'authorization_code'; case OAUTH2.VARIABLE.REDIRECT_URI_SUFFIX: return '/dashboard/integration/health/test/settings'; diff --git a/server/test/services/withings/lib/withings.init.test.js b/server/test/services/withings/lib/withings.init.test.js index 29bbff49f1..1637f45933 100644 --- a/server/test/services/withings/lib/withings.init.test.js +++ b/server/test/services/withings/lib/withings.init.test.js @@ -38,19 +38,19 @@ const gladys = { variable: { getValue: function returnValue(key, serviceId) { switch (key) { - case `${OAUTH2.VARIABLE.TOKEN_HOST}`: + case OAUTH2.VARIABLE.TOKEN_HOST: return 'http://localhost:9292'; - case `${OAUTH2.VARIABLE.TOKEN_PATH}`: + case OAUTH2.VARIABLE.TOKEN_PATH: return '/oauth2/token'; case OAUTH2.VARIABLE.REDIRECT_URI_SUFFIX: return 'ashboard/integration/health/test/settings'; - case `${OAUTH2.VARIABLE.AUTHORIZE_HOST}`: + case OAUTH2.VARIABLE.AUTHORIZE_HOST: return 'http://localhost:9292'; - case `${OAUTH2.VARIABLE.AUTHORIZE_PATH}`: + case OAUTH2.VARIABLE.AUTHORIZE_PATH: return '/oauth2_user/authorize2'; - case `${OAUTH2.VARIABLE.GRANT_TYPE}`: + case OAUTH2.VARIABLE.GRANT_TYPE: return 'authorization_code'; - case `${OAUTH2.VARIABLE.INTEGRATION_SCOPE}`: + case OAUTH2.VARIABLE.INTEGRATION_SCOPE: return 'user.info,user.metrics,user.activity,user.sleepevents'; case OAUTH2.VARIABLE.ACCESS_TOKEN: return ( diff --git a/server/test/services/withings/lib/withings.poll.test.js b/server/test/services/withings/lib/withings.poll.test.js index 7fb0b72cb1..c8e2bd6f98 100644 --- a/server/test/services/withings/lib/withings.poll.test.js +++ b/server/test/services/withings/lib/withings.poll.test.js @@ -21,19 +21,19 @@ const gladys = { getValue: function returnValue(key, serviceId, userId) { countGetValueCall += 1; switch (key) { - case `${OAUTH2.VARIABLE.TOKEN_HOST}`: + case OAUTH2.VARIABLE.TOKEN_HOST: return 'http://localhost:9292'; - case `${OAUTH2.VARIABLE.TOKEN_PATH}`: + case OAUTH2.VARIABLE.TOKEN_PATH: return '/oauth2/token'; case OAUTH2.VARIABLE.REDIRECT_URI_SUFFIX: return 'ashboard/integration/health/test/settings'; - case `${OAUTH2.VARIABLE.AUTHORIZE_HOST}`: + case OAUTH2.VARIABLE.AUTHORIZE_HOST: return 'http://localhost:9292'; - case `${OAUTH2.VARIABLE.AUTHORIZE_PATH}`: + case OAUTH2.VARIABLE.AUTHORIZE_PATH: return '/oauth2_user/authorize2'; - case `${OAUTH2.VARIABLE.GRANT_TYPE}`: + case OAUTH2.VARIABLE.GRANT_TYPE: return 'authorization_code'; - case `${OAUTH2.VARIABLE.INTEGRATION_SCOPE}`: + case OAUTH2.VARIABLE.INTEGRATION_SCOPE: return 'user.info,user.metrics,user.activity,user.sleepevents'; case OAUTH2.VARIABLE.ACCESS_TOKEN: return ( From 4a174984cfc38292c665f0797fd501e1418c49b7 Mon Sep 17 00:00:00 2001 From: Euguuu Date: Sun, 13 Mar 2022 18:34:47 +0100 Subject: [PATCH 029/164] fix for review --- .../device/device.saveHistoricalState.test.js | 43 ++++++++++--------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/server/test/lib/device/device.saveHistoricalState.test.js b/server/test/lib/device/device.saveHistoricalState.test.js index daca001958..30e93369ff 100644 --- a/server/test/lib/device/device.saveHistoricalState.test.js +++ b/server/test/lib/device/device.saveHistoricalState.test.js @@ -7,32 +7,33 @@ const event = new EventEmitter(); describe('Device saveHistoricalState', () => { it('should save historical sate (new state)', async () => { + const testFeature = { + id: '5smd05fc-1736-4b76-99ca-5812329sm036', + name: 'Test feature test', + selector: 'test-feature', + external_id: 'feature:test', + category: 'feature', + type: 'weight', + unit: null, + read_only: false, + has_feedback: false, + min: 0, + max: 0, + last_value: null, + last_value_string: '10', + last_value_changed: new Date(2019, 2, 11, 5, 23, 59), + device_id: 'fdfmb47f-4d25-4381-8923-2633b23192sm', + created_at: '2019-02-12 07:49:07.556 +00:00', + updated_at: '2019-02-12 07:49:07.556 +00:00', + }; + const stateManager = new StateManager(event); stateManager.setState('device', 'test-device', { id: 'fdfmb47f-4d25-4381-8923-2633b23192sm', name: 'test', - features: [ - { - id: '5smd05fc-1736-4b76-99ca-5812329sm036', - name: 'Test feature test', - selector: 'test-feature', - external_id: 'feature:test', - category: 'feature', - type: 'weight', - unit: null, - read_only: false, - has_feedback: false, - min: 0, - max: 0, - last_value: null, - last_value_string: '10', - last_value_changed: new Date(2019, 2, 11, 5, 23, 59), - device_id: 'fdfmb47f-4d25-4381-8923-2633b23192sm', - created_at: '2019-02-12 07:49:07.556 +00:00', - updated_at: '2019-02-12 07:49:07.556 +00:00', - }, - ], + features: [testFeature], }); + stateManager.setState('deviceFeature', 'test-feature', testFeature); const device = new Device(event, {}, stateManager); const testDevice = await device.getBySelector('test-device'); From 920ef80b6547dfa065274569f3b448cb04263b5d Mon Sep 17 00:00:00 2001 From: Euguuu Date: Sun, 20 Mar 2022 16:21:56 +0100 Subject: [PATCH 030/164] add edit device page --- front/src/components/app.jsx | 2 ++ .../device-features/SensorDeviceFeature.jsx | 2 +- .../components/device/UpdateDeviceFeature.jsx | 2 +- .../components/device/UpdateDeviceForm.jsx | 3 +++ front/src/config/i18n/en.json | 4 ++- front/src/config/i18n/fr.json | 4 ++- .../all/withings/device-page/Device.jsx | 27 +++++++------------ .../all/withings/edit-page/index.js | 24 +++++++++++++++++ server/services/withings/lib/withings.init.js | 21 ++------------- 9 files changed, 48 insertions(+), 41 deletions(-) create mode 100644 front/src/routes/integration/all/withings/edit-page/index.js diff --git a/front/src/components/app.jsx b/front/src/components/app.jsx index f370ecdc83..6d6247440c 100644 --- a/front/src/components/app.jsx +++ b/front/src/components/app.jsx @@ -80,6 +80,7 @@ import RtspCameraPage from '../routes/integration/all/rtsp-camera'; import XiaomiPage from '../routes/integration/all/xiaomi'; import EditXiaomiPage from '../routes/integration/all/xiaomi/edit-page'; import WithingsDevicePage from '../routes/integration/all/withings/device-page'; +import WithingsEditDevicePage from '../routes/integration/all/withings/edit-page'; import WithingsSettingsPage from '../routes/integration/all/withings/settings-page'; // MQTT integration @@ -223,6 +224,7 @@ const AppRouter = connect( + diff --git a/front/src/components/boxs/device-in-room/device-features/SensorDeviceFeature.jsx b/front/src/components/boxs/device-in-room/device-features/SensorDeviceFeature.jsx index 3f124e5d1b..563281b48e 100644 --- a/front/src/components/boxs/device-in-room/device-features/SensorDeviceFeature.jsx +++ b/front/src/components/boxs/device-in-room/device-features/SensorDeviceFeature.jsx @@ -25,7 +25,7 @@ const SensorDeviceType = ({ children, ...props }) => ( )}`} /> - {props.deviceFeature.name} + {props.deviceFeature.name} {SPECIAL_SENSORS.indexOf(props.deviceFeature.category) === -1 && ( {DEVICE_FEATURE_TYPES.SENSOR.BINARY === props.deviceFeature.type && ( diff --git a/front/src/components/device/UpdateDeviceFeature.jsx b/front/src/components/device/UpdateDeviceFeature.jsx index cbc59e31db..a66f1ac60e 100644 --- a/front/src/components/device/UpdateDeviceFeature.jsx +++ b/front/src/components/device/UpdateDeviceFeature.jsx @@ -41,7 +41,7 @@ class UpdateDeviceFeature extends Component { {feature.name}} onInput={this.updateName} class="form-control" placeholder={} diff --git a/front/src/components/device/UpdateDeviceForm.jsx b/front/src/components/device/UpdateDeviceForm.jsx index 11a12beb4b..a9e2442188 100644 --- a/front/src/components/device/UpdateDeviceForm.jsx +++ b/front/src/components/device/UpdateDeviceForm.jsx @@ -60,6 +60,9 @@ class UpdateDeviceForm extends Component { {feature.name}} + value={{feature.name}} onInput={this.updateName} class="form-control" placeholder={} diff --git a/front/src/routes/integration/all/withings/device-page/actions.js b/front/src/routes/integration/all/withings/device-page/actions.js index 4897fe8335..8526c23be5 100755 --- a/front/src/routes/integration/all/withings/device-page/actions.js +++ b/front/src/routes/integration/all/withings/device-page/actions.js @@ -18,7 +18,7 @@ const actions = store => ({ const deviceSaved = await state.httpClient.post('/api/v1/device', device); device.inDB = true; device.selector = deviceSaved.selector; - await state.httpClient.get(`/api/v1/service/withings/poll/${device.selector}`); + state.httpClient.get(`/api/v1/service/withings/poll/${device.selector}`); }, async deleteDevice(state, device, index) { await state.httpClient.delete(`/api/v1/device/${device.selector}`); diff --git a/front/src/routes/integration/all/withings/edit-page/index.js b/front/src/routes/integration/all/withings/edit-page/index.js index bafdb0a7ea..a2c8ee2cc0 100644 --- a/front/src/routes/integration/all/withings/edit-page/index.js +++ b/front/src/routes/integration/all/withings/edit-page/index.js @@ -9,7 +9,7 @@ const WITHINGS_PAGE_PATH = '/dashboard/integration/health/withings/device'; class WithingsEditDevicePage extends Component { render(props, {}) { return ( - + { From 4127afc257b0db5702cdb3ca383862b4514fdab5 Mon Sep 17 00:00:00 2001 From: Euguuu Date: Mon, 21 Mar 2022 20:51:44 +0100 Subject: [PATCH 033/164] fix package-lock --- front/package-lock.json | 40504 +++---------------- server/package-lock.json | 12729 +----- server/services/withings/package-lock.json | 2 +- 3 files changed, 5284 insertions(+), 47951 deletions(-) diff --git a/front/package-lock.json b/front/package-lock.json index b2b1a55b8e..3ec7731abe 100644 --- a/front/package-lock.json +++ b/front/package-lock.json @@ -1,30153 +1,179 @@ { "name": "gladys-front", - "lockfileVersion": 2, "requires": true, - "packages": { - "": { - "name": "gladys-front", - "dependencies": { - "@gladysassistant/gladys-gateway-js": "^3.5.0", - "@gladysassistant/theme-optimized": "^1.0.3", - "@jaames/iro": "^5.5.2", - "@yaireo/tagify": "^4.5.0", - "apexcharts": "^3.29.0", - "axios": "^0.21.1", - "classnames": "^2.3.1", - "cropperjs": "^1.5.12", - "date-fns": "^2.22.1", - "dayjs": "^1.10.6", - "debounce": "^1.2.1", - "dotenv": "^6.2.0", - "get-value": "^3.0.1", - "immutability-helper": "^3.1.1", - "leaflet": "^1.7.1", - "linkstate": "^1.1.1", - "preact": "^10.5.14", - "preact-cli-plugin-fast-async": "^1.0.1", - "preact-i18n": "^2.4.0-preactx", - "preact-router": "^3.2.1", - "qrcode": "^1.4.2", - "query-string": "^7.0.1", - "react-big-calendar": "^0.22.1", - "react-datepicker": "^3.8.0", - "react-select": "^4.3.1", - "set-value": "^3.0.2", - "unistore": "^3.5.2", - "useragent-parser-js": "^1.0.3", - "uuid": "^3.4.0" - }, - "devDependencies": { - "@relative-ci/agent": "^2.0.0", - "compare-json": "^0.4.0", - "cross-env": "^5.2.0", - "cypress": "^6.9.1", - "eslint": "^4.19.1", - "eslint-config-prettier": "^4.0.0", - "eslint-config-synacor": "^2.0.2", - "eslint-plugin-cypress": "^2.11.3", - "eslint-plugin-json": "^1.4.0", - "eslint-plugin-preact-i18n": "^1.1.0", - "identity-obj-proxy": "^3.0.0", - "jest": "^21.2.1", - "per-env": "^1.0.2", - "preact-cli": "^3.2.2", - "preact-render-spy": "^1.2.1", - "prettier": "^1.17.1", - "sirv-cli": "^1.0.12" - }, - "engines": { - "node": "14.x", - "npm": "6.x" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.44.tgz", - "integrity": "sha512-cuAuTTIQ9RqcFRJ/Y8PvTh+paepNcaGxwQwjIDRWPXmzzyAeCO4KqS9ikMvq0MCbRk6GlYKwfzStrcP3/jSL8g==", - "dev": true, - "dependencies": { - "@babel/highlight": "7.0.0-beta.44" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.7.tgz", - "integrity": "sha512-nS6dZaISCXJ3+518CWiBfEr//gHyMO02uDxBkXTKZDN5POruCnOZ1N4YBRZDCabwF8nZMWBpRxIicmXtBs+fvw==", - "devOptional": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.14.6", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.6.tgz", - "integrity": "sha512-gJnOEWSqTk96qG5BoIrl5bVtc23DCycmIePPYnamY9RboYdI4nFy5vAQMSl81O5K/W0sLDWfGysnOECC+KUUCA==", - "devOptional": true, - "dependencies": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.14.5", - "@babel/helper-compilation-targets": "^7.14.5", - "@babel/helper-module-transforms": "^7.14.5", - "@babel/helpers": "^7.14.6", - "@babel/parser": "^7.14.6", - "@babel/template": "^7.14.5", - "@babel/traverse": "^7.14.5", - "@babel/types": "^7.14.5", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "semver": "^6.3.0", - "source-map": "^0.5.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/@babel/code-frame": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", - "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", - "devOptional": true, - "dependencies": { - "@babel/highlight": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core/node_modules/@babel/generator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz", - "integrity": "sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==", - "devOptional": true, - "dependencies": { - "@babel/types": "^7.14.5", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core/node_modules/@babel/helper-function-name": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", - "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", - "devOptional": true, - "dependencies": { - "@babel/helper-get-function-arity": "^7.14.5", - "@babel/template": "^7.14.5", - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core/node_modules/@babel/helper-get-function-arity": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", - "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", - "devOptional": true, - "dependencies": { - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core/node_modules/@babel/helper-split-export-declaration": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", - "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", - "devOptional": true, - "dependencies": { - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core/node_modules/@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "devOptional": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core/node_modules/@babel/template": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", - "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", - "devOptional": true, - "dependencies": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.14.5", - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core/node_modules/@babel/traverse": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.7.tgz", - "integrity": "sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ==", - "devOptional": true, - "dependencies": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.14.5", - "@babel/helper-function-name": "^7.14.5", - "@babel/helper-hoist-variables": "^7.14.5", - "@babel/helper-split-export-declaration": "^7.14.5", - "@babel/parser": "^7.14.7", - "@babel/types": "^7.14.5", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core/node_modules/@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", - "devOptional": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "devOptional": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@babel/core/node_modules/json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "devOptional": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@babel/core/node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "devOptional": true - }, - "node_modules/@babel/core/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "devOptional": true - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "devOptional": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/generator": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.44.tgz", - "integrity": "sha512-5xVb7hlhjGcdkKpMXgicAVgx8syK5VJz193k0i/0sLP6DzE6lRrU1K3B/rFefgdo9LPGMAOOOAWW4jycj07ShQ==", - "dev": true, - "dependencies": { - "@babel/types": "7.0.0-beta.44", - "jsesc": "^2.5.1", - "lodash": "^4.2.0", - "source-map": "^0.5.0", - "trim-right": "^1.0.1" - } - }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.14.5.tgz", - "integrity": "sha512-EivH9EgBIb+G8ij1B2jAwSH36WnGvkQSEC6CkX/6v6ZFlw5fVOHvsgGF4uiEHO2GzMvunZb6tDLQEQSdrdocrA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-annotate-as-pure/node_modules/@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.14.5.tgz", - "integrity": "sha512-YTA/Twn0vBXDVGJuAX6PwW7x5zQei1luDDo2Pl6q1qZ7hVNl0RZrhHCQG/ArGpR29Vl7ETiB8eJyrvpuRp300w==", - "dev": true, - "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.14.5", - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor/node_modules/@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.14.5.tgz", - "integrity": "sha512-v+QtZqXEiOnpO6EYvlImB6zCD2Lel06RzOPzmkz/D/XgQiUu3C/Jb1LOqSt/AIA34TYi/Q+KlT8vTQrgdxkbLw==", - "devOptional": true, - "dependencies": { - "@babel/compat-data": "^7.14.5", - "@babel/helper-validator-option": "^7.14.5", - "browserslist": "^4.16.6", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/browserslist": { - "version": "4.16.6", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", - "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", - "devOptional": true, - "dependencies": { - "caniuse-lite": "^1.0.30001219", - "colorette": "^1.2.2", - "electron-to-chromium": "^1.3.723", - "escalade": "^3.1.1", - "node-releases": "^1.1.71" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/caniuse-lite": { - "version": "1.0.30001245", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001245.tgz", - "integrity": "sha512-768fM9j1PKXpOCKws6eTo3RHmvTUsG9UrpT4WoREFeZgJBTi4/X9g565azS/rVUGtqb8nt7FjLeF5u4kukERnA==", - "devOptional": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/electron-to-chromium": { - "version": "1.3.776", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.776.tgz", - "integrity": "sha512-V0w7eFSBoFPpdw4xexjVPZ770UDZIevSwkkj4W97XbE3IsCsTRFpa7/yXGZ88EOQAUEA09JMMsWK0xsw0kRAYw==", - "devOptional": true - }, - "node_modules/@babel/helper-compilation-targets/node_modules/node-releases": { - "version": "1.1.73", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz", - "integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==", - "devOptional": true - }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "devOptional": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.14.6", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.6.tgz", - "integrity": "sha512-Z6gsfGofTxH/+LQXqYEK45kxmcensbzmk/oi8DmaQytlQCgqNZt9XQF8iqlI/SeXWVjaMNxvYvzaYw+kh42mDg==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.14.5", - "@babel/helper-function-name": "^7.14.5", - "@babel/helper-member-expression-to-functions": "^7.14.5", - "@babel/helper-optimise-call-expression": "^7.14.5", - "@babel/helper-replace-supers": "^7.14.5", - "@babel/helper-split-export-declaration": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-class-features-plugin/node_modules/@babel/code-frame": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", - "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-create-class-features-plugin/node_modules/@babel/helper-function-name": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", - "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", - "dev": true, - "dependencies": { - "@babel/helper-get-function-arity": "^7.14.5", - "@babel/template": "^7.14.5", - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-create-class-features-plugin/node_modules/@babel/helper-get-function-arity": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", - "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-create-class-features-plugin/node_modules/@babel/helper-split-export-declaration": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", - "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-create-class-features-plugin/node_modules/@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-create-class-features-plugin/node_modules/@babel/template": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", - "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.14.5", - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-create-class-features-plugin/node_modules/@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.5.tgz", - "integrity": "sha512-TLawwqpOErY2HhWbGJ2nZT5wSkR192QpN+nBg1THfBfftrlvOh+WbhrxXCH4q4xJ9Gl16BGPR/48JA+Ryiho/A==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.14.5", - "regexpu-core": "^4.7.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz", - "integrity": "sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew==", - "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.13.0", - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/traverse": "^7.13.0", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - }, - "peerDependencies": { - "@babel/core": "^7.4.0-0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/@babel/code-frame": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", - "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/@babel/generator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz", - "integrity": "sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.14.5", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/@babel/helper-function-name": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", - "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", - "dev": true, - "dependencies": { - "@babel/helper-get-function-arity": "^7.14.5", - "@babel/template": "^7.14.5", - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/@babel/helper-get-function-arity": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", - "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/@babel/helper-module-imports": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", - "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/@babel/helper-split-export-declaration": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", - "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/@babel/template": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", - "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.14.5", - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/@babel/traverse": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.7.tgz", - "integrity": "sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.14.5", - "@babel/helper-function-name": "^7.14.5", - "@babel/helper-hoist-variables": "^7.14.5", - "@babel/helper-split-export-declaration": "^7.14.5", - "@babel/parser": "^7.14.7", - "@babel/types": "^7.14.5", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, - "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.14.5.tgz", - "integrity": "sha512-Htb24gnGJdIGT4vnRKMdoXiOIlqOLmdiUYpAQ0mYfgVT/GDm8GOYhgi4GL+hMKrkiPRohO4ts34ELFsGAPQLDQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-explode-assignable-expression/node_modules/@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.44.tgz", - "integrity": "sha512-MHRG2qZMKMFaBavX0LWpfZ2e+hLloT++N7rfM3DYOMUOGCD8cVjqZpwiL8a0bOX3IYcQev1ruciT0gdFFRTxzg==", - "dev": true, - "dependencies": { - "@babel/helper-get-function-arity": "7.0.0-beta.44", - "@babel/template": "7.0.0-beta.44", - "@babel/types": "7.0.0-beta.44" - } - }, - "node_modules/@babel/helper-get-function-arity": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.44.tgz", - "integrity": "sha512-w0YjWVwrM2HwP6/H3sEgrSQdkCaxppqFeJtAnB23pRiJB5E/O9Yp7JAAeWBl+gGEgmBFinnTyOv2RN7rcSmMiw==", - "dev": true, - "dependencies": { - "@babel/types": "7.0.0-beta.44" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz", - "integrity": "sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ==", - "devOptional": true, - "dependencies": { - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables/node_modules/@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", - "devOptional": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.14.7.tgz", - "integrity": "sha512-TMUt4xKxJn6ccjcOW7c4hlwyJArizskAhoSTOCkA0uZ+KghIaci0Qg9R043kUMWI9mtQfgny+NQ5QATnZ+paaA==", - "devOptional": true, - "dependencies": { - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-member-expression-to-functions/node_modules/@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", - "devOptional": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.5.tgz", - "integrity": "sha512-iXpX4KW8LVODuAieD7MzhNjmM6dzYY5tfRqT+R9HDXWl0jPn/djKmA+G9s/2C2T9zggw5tK1QNqZ70USfedOwA==", - "devOptional": true, - "dependencies": { - "@babel/helper-module-imports": "^7.14.5", - "@babel/helper-replace-supers": "^7.14.5", - "@babel/helper-simple-access": "^7.14.5", - "@babel/helper-split-export-declaration": "^7.14.5", - "@babel/helper-validator-identifier": "^7.14.5", - "@babel/template": "^7.14.5", - "@babel/traverse": "^7.14.5", - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms/node_modules/@babel/code-frame": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", - "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", - "devOptional": true, - "dependencies": { - "@babel/highlight": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms/node_modules/@babel/generator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz", - "integrity": "sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==", - "devOptional": true, - "dependencies": { - "@babel/types": "^7.14.5", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms/node_modules/@babel/helper-function-name": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", - "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", - "devOptional": true, - "dependencies": { - "@babel/helper-get-function-arity": "^7.14.5", - "@babel/template": "^7.14.5", - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms/node_modules/@babel/helper-get-function-arity": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", - "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", - "devOptional": true, - "dependencies": { - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms/node_modules/@babel/helper-module-imports": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", - "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", - "devOptional": true, - "dependencies": { - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms/node_modules/@babel/helper-split-export-declaration": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", - "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", - "devOptional": true, - "dependencies": { - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms/node_modules/@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "devOptional": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms/node_modules/@babel/template": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", - "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", - "devOptional": true, - "dependencies": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.14.5", - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms/node_modules/@babel/traverse": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.7.tgz", - "integrity": "sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ==", - "devOptional": true, - "dependencies": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.14.5", - "@babel/helper-function-name": "^7.14.5", - "@babel/helper-hoist-variables": "^7.14.5", - "@babel/helper-split-export-declaration": "^7.14.5", - "@babel/parser": "^7.14.7", - "@babel/types": "^7.14.5", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms/node_modules/@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", - "devOptional": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "devOptional": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@babel/helper-module-transforms/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "devOptional": true - }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz", - "integrity": "sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA==", - "devOptional": true, - "dependencies": { - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-optimise-call-expression/node_modules/@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", - "devOptional": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", - "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.14.5.tgz", - "integrity": "sha512-rLQKdQU+HYlxBwQIj8dk4/0ENOUEhA/Z0l4hN8BexpvmSMN9oA9EagjnhnDpNsRdWCfjwa4mn/HyBXO9yhQP6A==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.14.5", - "@babel/helper-wrap-function": "^7.14.5", - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-remap-async-to-generator/node_modules/@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.14.5.tgz", - "integrity": "sha512-3i1Qe9/8x/hCHINujn+iuHy+mMRLoc77b2nI9TB0zjH1hvn9qGlXjWlggdwUcju36PkPCy/lpM7LLUdcTyH4Ow==", - "devOptional": true, - "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.14.5", - "@babel/helper-optimise-call-expression": "^7.14.5", - "@babel/traverse": "^7.14.5", - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-replace-supers/node_modules/@babel/code-frame": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", - "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", - "devOptional": true, - "dependencies": { - "@babel/highlight": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-replace-supers/node_modules/@babel/generator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz", - "integrity": "sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==", - "devOptional": true, - "dependencies": { - "@babel/types": "^7.14.5", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-replace-supers/node_modules/@babel/helper-function-name": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", - "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", - "devOptional": true, - "dependencies": { - "@babel/helper-get-function-arity": "^7.14.5", - "@babel/template": "^7.14.5", - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-replace-supers/node_modules/@babel/helper-get-function-arity": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", - "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", - "devOptional": true, - "dependencies": { - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-replace-supers/node_modules/@babel/helper-split-export-declaration": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", - "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", - "devOptional": true, - "dependencies": { - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-replace-supers/node_modules/@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "devOptional": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-replace-supers/node_modules/@babel/template": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", - "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", - "devOptional": true, - "dependencies": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.14.5", - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-replace-supers/node_modules/@babel/traverse": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.7.tgz", - "integrity": "sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ==", - "devOptional": true, - "dependencies": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.14.5", - "@babel/helper-function-name": "^7.14.5", - "@babel/helper-hoist-variables": "^7.14.5", - "@babel/helper-split-export-declaration": "^7.14.5", - "@babel/parser": "^7.14.7", - "@babel/types": "^7.14.5", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-replace-supers/node_modules/@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", - "devOptional": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-replace-supers/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "devOptional": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@babel/helper-replace-supers/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "devOptional": true - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.14.5.tgz", - "integrity": "sha512-nfBN9xvmCt6nrMZjfhkl7i0oTV3yxR4/FztsbOASyTvVcoYd0TRHh7eMLdlEcCqobydC0LAF3LtC92Iwxo0wyw==", - "devOptional": true, - "dependencies": { - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access/node_modules/@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", - "devOptional": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.14.5.tgz", - "integrity": "sha512-dmqZB7mrb94PZSAOYtr+ZN5qt5owZIAgqtoTuqiFbHFtxgEcmQlRJVI+bO++fciBunXtB6MK7HrzrfcAzIz2NQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers/node_modules/@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.44.tgz", - "integrity": "sha512-aQ7QowtkgKKzPGf0j6u77kBMdUFVBKNHw2p/3HX/POt5/oz8ec5cs0GwlgM8Hz7ui5EwJnzyfRmkNF1Nx1N7aA==", - "dev": true, - "dependencies": { - "@babel/types": "7.0.0-beta.44" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz", - "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==", - "devOptional": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", - "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", - "devOptional": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-wrap-function": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.14.5.tgz", - "integrity": "sha512-YEdjTCq+LNuNS1WfxsDCNpgXkJaIyqco6DAelTUjT4f2KIWC1nBcaCaSdHTBqQVLnTBexBcVcFhLSU1KnYuePQ==", - "dev": true, - "dependencies": { - "@babel/helper-function-name": "^7.14.5", - "@babel/template": "^7.14.5", - "@babel/traverse": "^7.14.5", - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-wrap-function/node_modules/@babel/code-frame": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", - "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-wrap-function/node_modules/@babel/generator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz", - "integrity": "sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.14.5", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-wrap-function/node_modules/@babel/helper-function-name": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", - "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", - "dev": true, - "dependencies": { - "@babel/helper-get-function-arity": "^7.14.5", - "@babel/template": "^7.14.5", - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-wrap-function/node_modules/@babel/helper-get-function-arity": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", - "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-wrap-function/node_modules/@babel/helper-split-export-declaration": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", - "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-wrap-function/node_modules/@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-wrap-function/node_modules/@babel/template": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", - "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.14.5", - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-wrap-function/node_modules/@babel/traverse": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.7.tgz", - "integrity": "sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.14.5", - "@babel/helper-function-name": "^7.14.5", - "@babel/helper-hoist-variables": "^7.14.5", - "@babel/helper-split-export-declaration": "^7.14.5", - "@babel/parser": "^7.14.7", - "@babel/types": "^7.14.5", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-wrap-function/node_modules/@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-wrap-function/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@babel/helper-wrap-function/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@babel/helpers": { - "version": "7.14.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.6.tgz", - "integrity": "sha512-yesp1ENQBiLI+iYHSJdoZKUtRpfTlL1grDIX9NRlAVppljLw/4tTyYupIB7uIYmC3stW/imAv8EqaKaS/ibmeA==", - "devOptional": true, - "dependencies": { - "@babel/template": "^7.14.5", - "@babel/traverse": "^7.14.5", - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers/node_modules/@babel/code-frame": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", - "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", - "devOptional": true, - "dependencies": { - "@babel/highlight": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers/node_modules/@babel/generator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz", - "integrity": "sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==", - "devOptional": true, - "dependencies": { - "@babel/types": "^7.14.5", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers/node_modules/@babel/helper-function-name": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", - "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", - "devOptional": true, - "dependencies": { - "@babel/helper-get-function-arity": "^7.14.5", - "@babel/template": "^7.14.5", - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers/node_modules/@babel/helper-get-function-arity": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", - "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", - "devOptional": true, - "dependencies": { - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers/node_modules/@babel/helper-split-export-declaration": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", - "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", - "devOptional": true, - "dependencies": { - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers/node_modules/@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "devOptional": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers/node_modules/@babel/template": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", - "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", - "devOptional": true, - "dependencies": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.14.5", - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers/node_modules/@babel/traverse": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.7.tgz", - "integrity": "sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ==", - "devOptional": true, - "dependencies": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.14.5", - "@babel/helper-function-name": "^7.14.5", - "@babel/helper-hoist-variables": "^7.14.5", - "@babel/helper-split-export-declaration": "^7.14.5", - "@babel/parser": "^7.14.7", - "@babel/types": "^7.14.5", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers/node_modules/@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", - "devOptional": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "devOptional": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@babel/helpers/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "devOptional": true - }, - "node_modules/@babel/highlight": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.44.tgz", - "integrity": "sha512-Il19yJvy7vMFm8AVAh6OZzaFoAd0hbkeMZiX3P5HGD+z7dyI7RzndHB0dg6Urh/VAFfHtpOIzDUSxmY6coyZWQ==", - "dev": true, - "dependencies": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^3.0.0" - } - }, - "node_modules/@babel/highlight/node_modules/js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true - }, - "node_modules/@babel/parser": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.7.tgz", - "integrity": "sha512-X67Z5y+VBJuHB/RjwECp8kSl5uYi0BvRbNeWqkaJCVh+LiTPl19WBUfG627psSgp9rSf6ojuXghQM3ha6qHHdA==", - "devOptional": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.14.5.tgz", - "integrity": "sha512-ZoJS2XCKPBfTmL122iP6NM9dOg+d4lc9fFk3zxc8iDjvt8Pk4+TlsHSKhIPf6X+L5ORCdBzqMZDjL/WHj7WknQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5", - "@babel/plugin-proposal-optional-chaining": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.13.0" - } - }, - "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.14.7.tgz", - "integrity": "sha512-RK8Wj7lXLY3bqei69/cc25gwS5puEc3dknoFPFbqfy3XxYQBQFvu4ioWpafMBAB+L9NyptQK4nMOa5Xz16og8Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-remap-async-to-generator": "^7.14.5", - "@babel/plugin-syntax-async-generators": "^7.8.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz", - "integrity": "sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.14.5.tgz", - "integrity": "sha512-KBAH5ksEnYHCegqseI5N9skTdxgJdmDoAOc0uXa+4QMYKeZD0w5IARh4FMlTNtaHhbB8v+KzMdTgxMMzsIy6Yg==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0" - } - }, - "node_modules/@babel/plugin-proposal-decorators": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.14.5.tgz", - "integrity": "sha512-LYz5nvQcvYeRVjui1Ykn28i+3aUiXwQ/3MGoEy0InTaz1pJo/lAzmIDXX+BQny/oufgHzJ6vnEEiXQ8KZjEVFg==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-decorators": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.5.tgz", - "integrity": "sha512-ExjiNYc3HDN5PXJx+bwC50GIx/KKanX2HiggnIUAYedbARdImiCU4RhhHfdf0Kd7JNXGpsBBBCOm+bBVy3Gb0g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.5.tgz", - "integrity": "sha512-g5POA32bXPMmSBu5Dx/iZGLGnKmKPc5AiY7qfZgurzrCYgIztDlHFbznSNCoQuv57YQLnQfaDi7dxCtLDIdXdA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.5.tgz", - "integrity": "sha512-NSq2fczJYKVRIsUJyNxrVUMhB27zb7N7pOFGQOhBKJrChbGcgEAqyZrmZswkPk18VMurEeJAaICbfm57vUeTbQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-json-strings": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.5.tgz", - "integrity": "sha512-YGn2AvZAo9TwyhlLvCCWxD90Xq8xJ4aSgaX3G5D/8DW94L8aaT+dS5cSP+Z06+rCJERGSr9GxMBZ601xoc2taw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.5.tgz", - "integrity": "sha512-gun/SOnMqjSb98Nkaq2rTKMwervfdAoz6NphdY0vTfuzMfryj+tDGb2n6UkDKwez+Y8PZDhE3D143v6Gepp4Hg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.5.tgz", - "integrity": "sha512-yiclALKe0vyZRZE0pS6RXgjUOt87GWv6FYa5zqj15PvhOGFO69R5DusPlgK/1K5dVnCtegTiWu9UaBSrLLJJBg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.14.7.tgz", - "integrity": "sha512-082hsZz+sVabfmDWo1Oct1u1AgbKbUAyVgmX4otIc7bdsRgHBXwTwb3DpDmD4Eyyx6DNiuz5UAATT655k+kL5g==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.14.7", - "@babel/helper-compilation-targets": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.5.tgz", - "integrity": "sha512-3Oyiixm0ur7bzO5ybNcZFlmVsygSIQgdOa7cTfOYCMY+wEPAYhZAJxi3mixKFCTCKUhQXuCTtQ1MzrpL3WT8ZQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.5.tgz", - "integrity": "sha512-ycz+VOzo2UbWNI1rQXxIuMOzrDdHGrI23fRiz/Si2R4kv2XZQ1BK8ccdHwehMKBlcH/joGW/tzrUmo67gbJHlQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.14.5.tgz", - "integrity": "sha512-838DkdUA1u+QTCplatfq4B7+1lnDa/+QMI89x5WZHBcnNv+47N8QEj2k9I2MUU9xIv8XJ4XvPCviM/Dj7Uwt9g==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-62EyfyA3WA0mZiF2e2IV9mc9Ghwxcg8YTu8BS4Wss4Y3PY725OmS9M0qLORbJwLqFtGh+jiE4wAmocK2CTUK2Q==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.14.5", - "@babel/helper-create-class-features-plugin": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.14.5.tgz", - "integrity": "sha512-6axIeOU5LnY471KenAB9vI8I5j7NQ2d652hIYwVyRfgaZT5UpiqFKCuVXCDMSrU+3VFafnu2c5m3lrWIlr6A5Q==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-decorators": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.14.5.tgz", - "integrity": "sha512-c4sZMRWL4GSvP1EXy0woIP7m4jkVcEuG8R1TOZxPBPtp4FSM/kiPZub9UIs/Jrb5ZAOzvTUSGYrWsrSu1JvoPw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz", - "integrity": "sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz", - "integrity": "sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.14.5.tgz", - "integrity": "sha512-KOnO0l4+tD5IfOdi4x8C1XmEIRWUjNRV8wc6K2vz/3e8yAOoZZvsRXRRIF/yo/MAOFb4QjtAw9xSxMXbSMRy8A==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.14.5.tgz", - "integrity": "sha512-szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-remap-async-to-generator": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-async-to-generator/node_modules/@babel/helper-module-imports": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", - "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/plugin-transform-async-to-generator/node_modules/@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.14.5.tgz", - "integrity": "sha512-dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.5.tgz", - "integrity": "sha512-LBYm4ZocNgoCqyxMLoOnwpsmQ18HWTQvql64t3GvMUzLQrNoV1BDG0lNftC8QKYERkZgCCT/7J5xWGObGAyHDw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.14.5.tgz", - "integrity": "sha512-J4VxKAMykM06K/64z9rwiL6xnBHgB1+FVspqvlgCdwD1KUbQNfszeKVVOMh59w3sztHYIZDgnhOC4WbdEfHFDA==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.14.5", - "@babel/helper-function-name": "^7.14.5", - "@babel/helper-optimise-call-expression": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-replace-supers": "^7.14.5", - "@babel/helper-split-export-declaration": "^7.14.5", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-classes/node_modules/@babel/code-frame": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", - "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/plugin-transform-classes/node_modules/@babel/helper-function-name": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", - "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", - "dev": true, - "dependencies": { - "@babel/helper-get-function-arity": "^7.14.5", - "@babel/template": "^7.14.5", - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/plugin-transform-classes/node_modules/@babel/helper-get-function-arity": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", - "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/plugin-transform-classes/node_modules/@babel/helper-split-export-declaration": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", - "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/plugin-transform-classes/node_modules/@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/plugin-transform-classes/node_modules/@babel/template": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", - "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.14.5", - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/plugin-transform-classes/node_modules/@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.14.5.tgz", - "integrity": "sha512-pWM+E4283UxaVzLb8UBXv4EIxMovU4zxT1OPnpHJcmnvyY9QbPPTKZfEj31EUvG3/EQRbYAGaYEUZ4yWOBC2xg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.7.tgz", - "integrity": "sha512-0mDE99nK+kVh3xlc5vKwB6wnP9ecuSj+zQCa/n0voENtP/zymdT4HH6QEb65wjjcbqr1Jb/7z9Qp7TF5FtwYGw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.14.5.tgz", - "integrity": "sha512-loGlnBdj02MDsFaHhAIJzh7euK89lBrGIdM9EAtHFo6xKygCUGuuWe07o1oZVk287amtW1n0808sQM99aZt3gw==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.14.5.tgz", - "integrity": "sha512-iJjbI53huKbPDAsJ8EmVmvCKeeq21bAze4fu9GBQtSLqfvzj2oRuHVx4ZkDwEhg1htQ+5OBZh/Ab0XDf5iBZ7A==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.14.5.tgz", - "integrity": "sha512-jFazJhMBc9D27o9jDnIE5ZErI0R0m7PbKXVq77FFvqFbzvTMuv8jaAwLZ5PviOLSFttqKIW0/wxNSDbjLk0tYA==", - "dev": true, - "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-for-of": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.14.5.tgz", - "integrity": "sha512-CfmqxSUZzBl0rSjpoQSFoR9UEj3HzbGuGNL21/iFTmjb5gFggJp3ph0xR1YBhexmLoKRHzgxuFvty2xdSt6gTA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-function-name": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.14.5.tgz", - "integrity": "sha512-vbO6kv0fIzZ1GpmGQuvbwwm+O4Cbm2NrPzwlup9+/3fdkuzo1YqOZcXw26+YUJB84Ja7j9yURWposEHLYwxUfQ==", - "dev": true, - "dependencies": { - "@babel/helper-function-name": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-function-name/node_modules/@babel/code-frame": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", - "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/plugin-transform-function-name/node_modules/@babel/helper-function-name": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", - "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", - "dev": true, - "dependencies": { - "@babel/helper-get-function-arity": "^7.14.5", - "@babel/template": "^7.14.5", - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/plugin-transform-function-name/node_modules/@babel/helper-get-function-arity": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", - "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/plugin-transform-function-name/node_modules/@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/plugin-transform-function-name/node_modules/@babel/template": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", - "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.14.5", - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/plugin-transform-function-name/node_modules/@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/plugin-transform-literals": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.14.5.tgz", - "integrity": "sha512-ql33+epql2F49bi8aHXxvLURHkxJbSmMKl9J5yHqg4PLtdE6Uc48CH1GS6TQvZ86eoB/ApZXwm7jlA+B3kra7A==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.14.5.tgz", - "integrity": "sha512-WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.5.tgz", - "integrity": "sha512-3lpOU8Vxmp3roC4vzFpSdEpGUWSMsHFreTWOMMLzel2gNGfHE5UWIh/LN6ghHs2xurUp4jRFYMUIZhuFbody1g==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.5.tgz", - "integrity": "sha512-en8GfBtgnydoao2PS+87mKyw62k02k7kJ9ltbKe0fXTHrQmG6QZZflYuGI1VVG7sVpx4E1n7KBpNlPb8m78J+A==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-simple-access": "^7.14.5", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.14.5.tgz", - "integrity": "sha512-mNMQdvBEE5DcMQaL5LbzXFMANrQjd2W7FPzg34Y4yEz7dBgdaC+9B84dSO+/1Wba98zoDbInctCDo4JGxz1VYA==", - "dev": true, - "dependencies": { - "@babel/helper-hoist-variables": "^7.14.5", - "@babel/helper-module-transforms": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-identifier": "^7.14.5", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.5.tgz", - "integrity": "sha512-RfPGoagSngC06LsGUYyM9QWSXZ8MysEjDJTAea1lqRjNECE3y0qIJF/qbvJxc4oA4s99HumIMdXOrd+TdKaAAA==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.14.7.tgz", - "integrity": "sha512-DTNOTaS7TkW97xsDMrp7nycUVh6sn/eq22VaxWfEdzuEbRsiaOU0pqU7DlyUGHVsbQbSghvjKRpEl+nUCKGQSg==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-new-target": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.14.5.tgz", - "integrity": "sha512-Nx054zovz6IIRWEB49RDRuXGI4Gy0GMgqG0cII9L3MxqgXz/+rgII+RU58qpo4g7tNEx1jG7rRVH4ihZoP4esQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-assign": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.14.5.tgz", - "integrity": "sha512-lvhjk4UN9xJJYB1mI5KC0/o1D5EcJXdbhVe+4fSk08D6ZN+iuAIs7LJC+71h8av9Ew4+uRq9452v9R93SFmQlQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-super": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.14.5.tgz", - "integrity": "sha512-MKfOBWzK0pZIrav9z/hkRqIk/2bTv9qvxHzPQc12RcVkMOzpIKnFCNYJip00ssKWYkd8Sf5g0Wr7pqJ+cmtuFg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-replace-supers": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-parameters": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.14.5.tgz", - "integrity": "sha512-Tl7LWdr6HUxTmzQtzuU14SqbgrSKmaR77M0OKyq4njZLQTPfOvzblNKyNkGwOfEFCEx7KeYHQHDI0P3F02IVkA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.14.5.tgz", - "integrity": "sha512-r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.14.5.tgz", - "integrity": "sha512-7RylxNeDnxc1OleDm0F5Q/BSL+whYRbOAR+bwgCxIr0L32v7UFh/pz1DLMZideAUxKT6eMoS2zQH6fyODLEi8Q==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.14.5", - "@babel/helper-module-imports": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-jsx": "^7.14.5", - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx/node_modules/@babel/helper-module-imports": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", - "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx/node_modules/@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.14.5.tgz", - "integrity": "sha512-NVIY1W3ITDP5xQl50NgTKlZ0GrotKtLna08/uGY6ErQt6VEQZXla86x/CTddm5gZdcr+5GSsvMeTmWA5Ii6pkg==", - "dev": true, - "dependencies": { - "regenerator-transform": "^0.14.2" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.14.5.tgz", - "integrity": "sha512-cv4F2rv1nD4qdexOGsRQXJrOcyb5CrgjUH9PKrrtyhSDBNWGxd0UIitjyJiWagS+EbUGjG++22mGH1Pub8D6Vg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.14.5.tgz", - "integrity": "sha512-xLucks6T1VmGsTB+GWK5Pl9Jl5+nRXD1uoFdA5TSO6xtiNjtXTjKkmPdFXVLGlK5A2/or/wQMKfmQ2Y0XJfn5g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-spread": { - "version": "7.14.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.14.6.tgz", - "integrity": "sha512-Zr0x0YroFJku7n7+/HH3A2eIrGMjbmAIbJSVv0IZ+t3U2WUQUA64S/oeied2e+MaGSjmt4alzBCsK9E8gh+fag==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.14.5.tgz", - "integrity": "sha512-Z7F7GyvEMzIIbwnziAZmnSNpdijdr4dWt+FJNBnBLz5mwDFkqIXU9wmBcWWad3QeJF5hMTkRe4dAq2sUZiG+8A==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.14.5.tgz", - "integrity": "sha512-22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.14.5.tgz", - "integrity": "sha512-lXzLD30ffCWseTbMQzrvDWqljvZlHkXU+CnseMhkMNqU1sASnCsz3tSzAaH3vCUXb9PHeUb90ZT1BdFTm1xxJw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-typescript": { - "version": "7.14.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.14.6.tgz", - "integrity": "sha512-XlTdBq7Awr4FYIzqhmYY80WN0V0azF74DMPyFqVHBvf81ZUgc4X7ZOpx6O8eLDK6iM5cCQzeyJw0ynTaefixRA==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.14.6", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-typescript": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.14.5.tgz", - "integrity": "sha512-crTo4jATEOjxj7bt9lbYXcBAM3LZaUrbP2uUdxb6WIorLmjNKSpHfIybgY4B8SRpbf8tEVIWH3Vtm7ayCrKocA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.14.5.tgz", - "integrity": "sha512-UygduJpC5kHeCiRw/xDVzC+wj8VaYSoKl5JNVmbP7MadpNinAm3SvZCxZ42H37KZBKztz46YC73i9yV34d0Tzw==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-env": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.14.7.tgz", - "integrity": "sha512-itOGqCKLsSUl0Y+1nSfhbuuOlTs0MJk2Iv7iSH+XT/mR8U1zRLO7NjWlYXB47yhK4J/7j+HYty/EhFZDYKa/VA==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.14.7", - "@babel/helper-compilation-targets": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.14.5", - "@babel/plugin-proposal-async-generator-functions": "^7.14.7", - "@babel/plugin-proposal-class-properties": "^7.14.5", - "@babel/plugin-proposal-class-static-block": "^7.14.5", - "@babel/plugin-proposal-dynamic-import": "^7.14.5", - "@babel/plugin-proposal-export-namespace-from": "^7.14.5", - "@babel/plugin-proposal-json-strings": "^7.14.5", - "@babel/plugin-proposal-logical-assignment-operators": "^7.14.5", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5", - "@babel/plugin-proposal-numeric-separator": "^7.14.5", - "@babel/plugin-proposal-object-rest-spread": "^7.14.7", - "@babel/plugin-proposal-optional-catch-binding": "^7.14.5", - "@babel/plugin-proposal-optional-chaining": "^7.14.5", - "@babel/plugin-proposal-private-methods": "^7.14.5", - "@babel/plugin-proposal-private-property-in-object": "^7.14.5", - "@babel/plugin-proposal-unicode-property-regex": "^7.14.5", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.14.5", - "@babel/plugin-transform-async-to-generator": "^7.14.5", - "@babel/plugin-transform-block-scoped-functions": "^7.14.5", - "@babel/plugin-transform-block-scoping": "^7.14.5", - "@babel/plugin-transform-classes": "^7.14.5", - "@babel/plugin-transform-computed-properties": "^7.14.5", - "@babel/plugin-transform-destructuring": "^7.14.7", - "@babel/plugin-transform-dotall-regex": "^7.14.5", - "@babel/plugin-transform-duplicate-keys": "^7.14.5", - "@babel/plugin-transform-exponentiation-operator": "^7.14.5", - "@babel/plugin-transform-for-of": "^7.14.5", - "@babel/plugin-transform-function-name": "^7.14.5", - "@babel/plugin-transform-literals": "^7.14.5", - "@babel/plugin-transform-member-expression-literals": "^7.14.5", - "@babel/plugin-transform-modules-amd": "^7.14.5", - "@babel/plugin-transform-modules-commonjs": "^7.14.5", - "@babel/plugin-transform-modules-systemjs": "^7.14.5", - "@babel/plugin-transform-modules-umd": "^7.14.5", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.14.7", - "@babel/plugin-transform-new-target": "^7.14.5", - "@babel/plugin-transform-object-super": "^7.14.5", - "@babel/plugin-transform-parameters": "^7.14.5", - "@babel/plugin-transform-property-literals": "^7.14.5", - "@babel/plugin-transform-regenerator": "^7.14.5", - "@babel/plugin-transform-reserved-words": "^7.14.5", - "@babel/plugin-transform-shorthand-properties": "^7.14.5", - "@babel/plugin-transform-spread": "^7.14.6", - "@babel/plugin-transform-sticky-regex": "^7.14.5", - "@babel/plugin-transform-template-literals": "^7.14.5", - "@babel/plugin-transform-typeof-symbol": "^7.14.5", - "@babel/plugin-transform-unicode-escapes": "^7.14.5", - "@babel/plugin-transform-unicode-regex": "^7.14.5", - "@babel/preset-modules": "^0.1.4", - "@babel/types": "^7.14.5", - "babel-plugin-polyfill-corejs2": "^0.2.2", - "babel-plugin-polyfill-corejs3": "^0.2.2", - "babel-plugin-polyfill-regenerator": "^0.2.2", - "core-js-compat": "^3.15.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-env/node_modules/@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/preset-env/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@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==", - "dev": true, - "dependencies": { - "@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" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-modules/node_modules/@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/preset-typescript": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.14.5.tgz", - "integrity": "sha512-u4zO6CdbRKbS9TypMqrlGH7sd2TAJppZwn3c/ZRLeO/wGsbddxgbPDUZVNrie3JWYLQ9vpineKlsrWFvO6Pwkw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-transform-typescript": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/runtime": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.7.2.tgz", - "integrity": "sha512-JONRbXbTXc9WQE2mAZd1p0Z3DZ/6vaQIkgYMSTP3KjRCyd7rCZCcfhCyX+YjwcKxcZ82UrxbRD358bpExNgrjw==", - "dependencies": { - "regenerator-runtime": "^0.13.2" - } - }, - "node_modules/@babel/template": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.44.tgz", - "integrity": "sha512-w750Sloq0UNifLx1rUqwfbnC6uSUk0mfwwgGRfdLiaUzfAOiH0tHJE6ILQIUi3KYkjiCDTskoIsnfqZvWLBDng==", - "dev": true, - "dependencies": { - "@babel/code-frame": "7.0.0-beta.44", - "@babel/types": "7.0.0-beta.44", - "babylon": "7.0.0-beta.44", - "lodash": "^4.2.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.44.tgz", - "integrity": "sha512-UHuDz8ukQkJCDASKHf+oDt3FVUzFd+QYfuBIsiNu/4+/ix6pP/C+uQZJ6K1oEfbCMv/IKWbgDEh7fcsnIE5AtA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "7.0.0-beta.44", - "@babel/generator": "7.0.0-beta.44", - "@babel/helper-function-name": "7.0.0-beta.44", - "@babel/helper-split-export-declaration": "7.0.0-beta.44", - "@babel/types": "7.0.0-beta.44", - "babylon": "7.0.0-beta.44", - "debug": "^3.1.0", - "globals": "^11.1.0", - "invariant": "^2.2.0", - "lodash": "^4.2.0" - } - }, - "node_modules/@babel/types": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.44.tgz", - "integrity": "sha512-5eTV4WRmqbaFM3v9gHAIljEQJU4Ssc6fxL61JN+Oe2ga/BwyjzjamwkCVVAQjHGuAX8i0BWo42dshL8eO5KfLQ==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2", - "lodash": "^4.2.0", - "to-fast-properties": "^2.0.0" - } - }, - "node_modules/@bundle-stats/utils": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@bundle-stats/utils/-/utils-3.0.1.tgz", - "integrity": "sha512-FWGtsbEUyEpKpAN2hA7cZQIUqbH2I9WHClOcKmv7kdsNRhvNn2YPAho0eGz0ZMxjH2Goz3a17Y5BjIxDHJMDQA==", - "dev": true, - "dependencies": { - "convert-units": "^2.3.4", - "query-string": "^7.0.0", - "serialize-query-params": "^1.3.3", - "superstruct": "^0.8.3" - }, - "engines": { - "node": ">= 12.0" - }, - "peerDependencies": { - "core-js": "^3.9.1", - "lodash": "^4.17.11" - } - }, - "node_modules/@ctrlpanel/pbkdf2": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@ctrlpanel/pbkdf2/-/pbkdf2-1.0.0.tgz", - "integrity": "sha512-NC/J3R2tRUciBPQKcJJ8rz9BGIJYVCPbl699fblp6fBXCHWwAnrOu1oEdDqKhspxsKDj/yZTTDlnSLkmO+ovfA==" - }, - "node_modules/@cypress/listr-verbose-renderer": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@cypress/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz", - "integrity": "sha1-p3SS9LEdzHxEajSz4ochr9M8ZCo=", - "dev": true, - "dependencies": { - "chalk": "^1.1.3", - "cli-cursor": "^1.0.2", - "date-fns": "^1.27.2", - "figures": "^1.7.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@cypress/listr-verbose-renderer/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@cypress/listr-verbose-renderer/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@cypress/listr-verbose-renderer/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@cypress/listr-verbose-renderer/node_modules/cli-cursor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", - "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", - "dev": true, - "dependencies": { - "restore-cursor": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@cypress/listr-verbose-renderer/node_modules/date-fns": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", - "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==", - "dev": true - }, - "node_modules/@cypress/listr-verbose-renderer/node_modules/figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", - "dev": true, - "dependencies": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@cypress/listr-verbose-renderer/node_modules/onetime": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@cypress/listr-verbose-renderer/node_modules/restore-cursor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", - "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", - "dev": true, - "dependencies": { - "exit-hook": "^1.0.0", - "onetime": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@cypress/listr-verbose-renderer/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@cypress/request": { - "version": "2.88.5", - "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.5.tgz", - "integrity": "sha512-TzEC1XMi1hJkywWpRfD2clreTa/Z+lOrXDCxxBTBPEcY5azdPi56A6Xw+O4tWJnaJH3iIE7G5aDXZC6JgRZLcA==", - "dev": true, - "dependencies": { - "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" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@cypress/xvfb": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", - "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==", - "dev": true, - "dependencies": { - "debug": "^3.1.0", - "lodash.once": "^4.1.1" - } - }, - "node_modules/@emotion/cache": { - "version": "11.4.0", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.4.0.tgz", - "integrity": "sha512-Zx70bjE7LErRO9OaZrhf22Qye1y4F7iDl+ITjet0J+i+B88PrAOBkKvaAWhxsZf72tDLajwCgfCjJ2dvH77C3g==", - "dependencies": { - "@emotion/memoize": "^0.7.4", - "@emotion/sheet": "^1.0.0", - "@emotion/utils": "^1.0.0", - "@emotion/weak-memoize": "^0.2.5", - "stylis": "^4.0.3" - } - }, - "node_modules/@emotion/hash": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", - "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==" - }, - "node_modules/@emotion/memoize": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.5.tgz", - "integrity": "sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ==" - }, - "node_modules/@emotion/react": { - "version": "11.4.0", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.4.0.tgz", - "integrity": "sha512-4XklWsl9BdtatLoJpSjusXhpKv9YVteYKh9hPKP1Sxl+mswEFoUe0WtmtWjxEjkA51DQ2QRMCNOvKcSlCQ7ivg==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@emotion/cache": "^11.4.0", - "@emotion/serialize": "^1.0.2", - "@emotion/sheet": "^1.0.1", - "@emotion/utils": "^1.0.0", - "@emotion/weak-memoize": "^0.2.5", - "hoist-non-react-statics": "^3.3.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0", - "react": ">=16.8.0" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "@types/react": { - "optional": true - } - } - }, - "node_modules/@emotion/react/node_modules/@babel/runtime": { - "version": "7.14.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.6.tgz", - "integrity": "sha512-/PCB2uJ7oM44tz8YhC4Z/6PeOKXp4K588f+5M3clr1M4zbqztlo0XEfJ2LEzj/FgwfgGcIdl8n7YYjTCI0BYwg==", - "dependencies": { - "regenerator-runtime": "^0.13.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@emotion/react/node_modules/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==" - }, - "node_modules/@emotion/serialize": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.0.2.tgz", - "integrity": "sha512-95MgNJ9+/ajxU7QIAruiOAdYNjxZX7G2mhgrtDWswA21VviYIRP1R5QilZ/bDY42xiKsaktP4egJb3QdYQZi1A==", - "dependencies": { - "@emotion/hash": "^0.8.0", - "@emotion/memoize": "^0.7.4", - "@emotion/unitless": "^0.7.5", - "@emotion/utils": "^1.0.0", - "csstype": "^3.0.2" - } - }, - "node_modules/@emotion/serialize/node_modules/csstype": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.8.tgz", - "integrity": "sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw==" - }, - "node_modules/@emotion/sheet": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.0.1.tgz", - "integrity": "sha512-GbIvVMe4U+Zc+929N1V7nW6YYJtidj31lidSmdYcWozwoBIObXBnaJkKNDjZrLm9Nc0BR+ZyHNaRZxqNZbof5g==" - }, - "node_modules/@emotion/unitless": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", - "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" - }, - "node_modules/@emotion/utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.0.0.tgz", - "integrity": "sha512-mQC2b3XLDs6QCW+pDQDiyO/EdGZYOygE8s5N5rrzjSI4M3IejPE/JPndCBwRT9z982aqQNi6beWs1UeayrQxxA==" - }, - "node_modules/@emotion/weak-memoize": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz", - "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==" - }, - "node_modules/@gladysassistant/gladys-gateway-js": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@gladysassistant/gladys-gateway-js/-/gladys-gateway-js-3.5.0.tgz", - "integrity": "sha512-4nd1ueZW4izHnl7tx1zPHib2RDQDNIb9B2sF7sJPJ+4Kvj1CCAr/BlYnQbhT2vZsHvdspm7lUsE3foniS9hHTA==", - "dependencies": { - "@ctrlpanel/pbkdf2": "^1.0.0", - "array-buffer-to-hex": "^1.0.0", - "auto-bind": "^2.1.0", - "axios": "^0.21.1", - "encode-utf8": "^1.0.2", - "hex-to-array-buffer": "^1.1.0", - "secure-remote-password": "^0.3.1", - "socket.io-client": "^2.3.0" - } - }, - "node_modules/@gladysassistant/theme-optimized": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@gladysassistant/theme-optimized/-/theme-optimized-1.0.3.tgz", - "integrity": "sha512-FhcHgDFXPb3BCw31wK9p2Cr/4L+oApzmPnIyk7GaybIYyznLWOuhYf0TXzaA9uMlARbpK5HgMmzJUaloXgiykA==" - }, - "node_modules/@hapi/address": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", - "integrity": "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==", - "deprecated": "Moved to 'npm install @sideway/address'", - "dev": true - }, - "node_modules/@hapi/formula": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@hapi/formula/-/formula-1.2.0.tgz", - "integrity": "sha512-UFbtbGPjstz0eWHb+ga/GM3Z9EzqKXFWIbSOFURU0A/Gku0Bky4bCk9/h//K2Xr3IrCfjFNhMm4jyZ5dbCewGA==", - "deprecated": "Moved to 'npm install @sideway/formula'", - "dev": true - }, - "node_modules/@hapi/hoek": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz", - "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==", - "deprecated": "This version has been deprecated and is no longer supported or maintained", - "dev": true - }, - "node_modules/@hapi/joi": { - "version": "16.1.8", - "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-16.1.8.tgz", - "integrity": "sha512-wAsVvTPe+FwSrsAurNt5vkg3zo+TblvC5Bb1zMVK6SJzZqw9UrJnexxR+76cpePmtUZKHAPxcQ2Bf7oVHyahhg==", - "deprecated": "Switch to 'npm install joi'", - "dev": true, - "dependencies": { - "@hapi/address": "^2.1.2", - "@hapi/formula": "^1.2.0", - "@hapi/hoek": "^8.2.4", - "@hapi/pinpoint": "^1.0.2", - "@hapi/topo": "^3.1.3" - } - }, - "node_modules/@hapi/pinpoint": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@hapi/pinpoint/-/pinpoint-1.0.2.tgz", - "integrity": "sha512-dtXC/WkZBfC5vxscazuiJ6iq4j9oNx1SHknmIr8hofarpKUZKmlUVYVIhNVzIEgK5Wrc4GMHL5lZtt1uS2flmQ==", - "deprecated": "Moved to 'npm install @sideway/pinpoint'", - "dev": true - }, - "node_modules/@hapi/topo": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz", - "integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==", - "deprecated": "This version has been deprecated and is no longer supported or maintained", - "dev": true, - "dependencies": { - "@hapi/hoek": "^8.3.0" - } - }, - "node_modules/@hypnosphi/create-react-context": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@hypnosphi/create-react-context/-/create-react-context-0.3.1.tgz", - "integrity": "sha512-V1klUed202XahrWJLLOT3EXNeCpFHCcJntdFGI15ntCwau+jfT386w7OFTMaCqOgXUH1fa0w/I1oZs+i/Rfr0A==", - "dependencies": { - "gud": "^1.0.0", - "warning": "^4.0.3" - }, - "peerDependencies": { - "prop-types": "^15.0.0", - "react": ">=0.14.0" - } - }, - "node_modules/@irojs/iro-core": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@irojs/iro-core/-/iro-core-1.2.1.tgz", - "integrity": "sha512-p2OvsBSSmidsDsTSkID6jEyXDF7lcyxPrkh3qBzasBZFpjkYd6kZ3yMWai3MlAaQ3F7li/Et7rSJVV09Fpei+A==" - }, - "node_modules/@jaames/iro": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/@jaames/iro/-/iro-5.5.2.tgz", - "integrity": "sha512-Fbi5U4Vdkw6UsF+R3oMlPONqkvUDMkwzh+mX718gQsDFt3+1r1jvGsrfCbedmXAAy0WsjDHOrefK0BkDk99TQg==", - "dependencies": { - "@irojs/iro-core": "^1.2.1", - "preact": "^10.0.0" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@npmcli/move-file": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", - "dev": true, - "dependencies": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@npmcli/move-file/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@npmcli/move-file/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@polka/url": { - "version": "1.0.0-next.15", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.15.tgz", - "integrity": "sha512-15spi3V28QdevleWBNXE4pIls3nFZmBbUGrW9IVPwiQczuSb9n76TCB4bsk8TSel+I1OkHEdPhu5QKMfY6rQHA==", - "dev": true - }, - "node_modules/@preact/async-loader": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@preact/async-loader/-/async-loader-3.0.1.tgz", - "integrity": "sha512-BoUN24hxEfAQYnWjliAmkZLuliv+ONQi7AWn+/+VOJHTIHmbFiXrvmSxITf7PDkKiK0a5xy4OErZtVVLlk96Tg==", - "dev": true, - "dependencies": { - "kleur": "^4.0.2", - "loader-utils": "^2.0.0" - }, - "engines": { - "node": ">=8" - }, - "peerDependencies": { - "preact": ">= 10.0.0" - } - }, - "node_modules/@prefresh/babel-plugin": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@prefresh/babel-plugin/-/babel-plugin-0.4.1.tgz", - "integrity": "sha512-gj3ekiYtHlZNz0zFI1z6a9mcYX80Qacw84+2++7V1skvO7kQoV2ux56r8bJkTBbKMVxwAgaYrxxIdUCYlclE7Q==", - "dev": true - }, - "node_modules/@prefresh/core": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@prefresh/core/-/core-1.3.2.tgz", - "integrity": "sha512-Iv+uI698KDgWsrKpLvOgN3hmAMyvhVgn09mcnhZ98BUNdg/qrxE7tcUf5yFCImkgqED5/Dcn8G5hFy4IikEDvg==", - "dev": true, - "peerDependencies": { - "preact": "^10.0.0" - } - }, - "node_modules/@prefresh/utils": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@prefresh/utils/-/utils-1.1.1.tgz", - "integrity": "sha512-MUhT5m2XNN5NsZl4GnpuvlzLo6VSTa/+wBfBd3fiWUvHGhv0GF9hnA1pd//v0uJaKwUnVRQ1hYElxCV7DtYsCQ==", - "dev": true - }, - "node_modules/@prefresh/webpack": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/@prefresh/webpack/-/webpack-3.3.2.tgz", - "integrity": "sha512-1cX0t5G7IXWO2164sl2O32G02BzDl6C4UUZWfDb0x1CQM1g3It9PSLWd+rIlHfSg4MEU9YHM8e6/OK8uavRJhA==", - "dev": true, - "dependencies": { - "@prefresh/core": "^1.3.1", - "@prefresh/utils": "^1.1.0" - }, - "peerDependencies": { - "@prefresh/babel-plugin": "^0.4.0", - "preact": "^10.4.0", - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/@relative-ci/agent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@relative-ci/agent/-/agent-2.0.0.tgz", - "integrity": "sha512-W/Mew+z7PRnFNxceAf4H3BI49FEanT3EGr3Q2LN/5JNvDBfzs+x2jYr1DAmBjHrNR88+emxSir2mQv+5GCNCbg==", - "dev": true, - "dependencies": { - "@bundle-stats/utils": "^3.0.0", - "@relative-ci/env-ci": "^5.3.1", - "core-js": "^3.6.4", - "cosmiconfig": "^7.0.0", - "debug": "^4.1.1", - "dotenv": "^8.2.0", - "fs-extra": "^9.0.0", - "isomorphic-fetch": "^3.0.0", - "lodash": "^4.17.15" - }, - "bin": { - "relative-ci-agent": "bin/index.js" - }, - "engines": { - "node": ">= 10.0" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0-rc.1" - } - }, - "node_modules/@relative-ci/agent/node_modules/@babel/code-frame": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", - "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@relative-ci/agent/node_modules/@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@relative-ci/agent/node_modules/core-js": { - "version": "3.15.2", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.15.2.tgz", - "integrity": "sha512-tKs41J7NJVuaya8DxIOCnl8QuPHx5/ZVbFo1oKgVl1qHFBBrDctzQGtuLjPpRdNTWmKPH6oEvgN/MUID+l485Q==", - "dev": true, - "hasInstallScript": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/@relative-ci/agent/node_modules/cosmiconfig": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", - "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", - "dev": true, - "dependencies": { - "@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" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@relative-ci/agent/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@relative-ci/agent/node_modules/dotenv": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", - "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/@relative-ci/agent/node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@relative-ci/agent/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@relative-ci/agent/node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@relative-ci/agent/node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@relative-ci/agent/node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@relative-ci/agent/node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@relative-ci/env-ci": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/@relative-ci/env-ci/-/env-ci-5.3.1.tgz", - "integrity": "sha512-FychihgwUb2n28hACPROIb7LDrIQPGrIPXOZ7OsIFZw8o2rJzI1Xz0l6EJd79ePB+30rgmMJBFCnTmsH+t5ZvQ==", - "dev": true, - "dependencies": { - "execa": "^4.0.0", - "java-properties": "^1.0.0" - }, - "engines": { - "node": ">=10.13" - } - }, - "node_modules/@relative-ci/env-ci/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@relative-ci/env-ci/node_modules/execa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", - "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", - "dev": true, - "dependencies": { - "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" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/@relative-ci/env-ci/node_modules/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==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@relative-ci/env-ci/node_modules/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==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@relative-ci/env-ci/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/@relative-ci/env-ci/node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@relative-ci/env-ci/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@relative-ci/env-ci/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@relative-ci/env-ci/node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/@relative-ci/env-ci/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@relative-ci/env-ci/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@relative-ci/env-ci/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@restart/hooks": { - "version": "0.3.15", - "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.3.15.tgz", - "integrity": "sha512-rVNba1A2oMzKBg16fCrrHmCf4JjOzFhT9TWR8J+Y8iOcY4zffxtP3ke7mEsakvghHZT+9//uDOPSSeuBDW41GQ==", - "peerDependencies": { - "react": "^16.8.0-0" - } - }, - "node_modules/@rollup/plugin-babel": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz", - "integrity": "sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.10.4", - "@rollup/pluginutils": "^3.1.0" - }, - "engines": { - "node": ">= 10.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0", - "@types/babel__core": "^7.1.9", - "rollup": "^1.20.0||^2.0.0" - }, - "peerDependenciesMeta": { - "@types/babel__core": { - "optional": true - } - } - }, - "node_modules/@rollup/plugin-babel/node_modules/@babel/helper-module-imports": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", - "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@rollup/plugin-babel/node_modules/@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@rollup/plugin-node-resolve": { - "version": "11.2.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", - "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", - "dev": true, - "dependencies": { - "@rollup/pluginutils": "^3.1.0", - "@types/resolve": "1.17.1", - "builtin-modules": "^3.1.0", - "deepmerge": "^4.2.2", - "is-module": "^1.0.0", - "resolve": "^1.19.0" - }, - "engines": { - "node": ">= 10.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0" - } - }, - "node_modules/@rollup/plugin-node-resolve/node_modules/builtin-modules": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", - "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@rollup/plugin-node-resolve/node_modules/resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, - "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/@rollup/plugin-replace": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz", - "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==", - "dev": true, - "dependencies": { - "@rollup/pluginutils": "^3.1.0", - "magic-string": "^0.25.7" - }, - "peerDependencies": { - "rollup": "^1.20.0 || ^2.0.0" - } - }, - "node_modules/@rollup/pluginutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", - "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", - "dev": true, - "dependencies": { - "@types/estree": "0.0.39", - "estree-walker": "^1.0.1", - "picomatch": "^2.2.2" - }, - "engines": { - "node": ">= 8.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0" - } - }, - "node_modules/@samverschueren/stream-to-observable": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz", - "integrity": "sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ==", - "dev": true, - "dependencies": { - "any-observable": "^0.3.0" - }, - "engines": { - "node": ">=6" - }, - "peerDependenciesMeta": { - "rxjs": { - "optional": true - }, - "zen-observable": { - "optional": true - } - } - }, - "node_modules/@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/@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==", - "dev": true, - "dependencies": { - "ejs": "^2.6.1", - "magic-string": "^0.25.0" - } - }, - "node_modules/@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "dev": true, - "dependencies": { - "defer-to-connect": "^1.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@trysound/sax": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.1.1.tgz", - "integrity": "sha512-Z6DoceYb/1xSg5+e+ZlPZ9v0N16ZvZ+wYMraFue4HYrE4ttONKtsvruIRf6t9TBR0YvSOfi1hUU0fJfBLCDYow==", - "dev": true, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/@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==", - "dev": true - }, - "node_modules/@types/glob": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA==", - "dev": true, - "dependencies": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.8", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.8.tgz", - "integrity": "sha512-YSBPTLTVm2e2OoQIDYx8HaeWJ5tTToLH67kXR7zYNGupXMEHa2++G8k+DczX2cFVgalypqtyZIcU19AFcmOpmg==", - "dev": true - }, - "node_modules/@types/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", - "dev": true - }, - "node_modules/@types/node": { - "version": "16.3.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.3.2.tgz", - "integrity": "sha512-jJs9ErFLP403I+hMLGnqDRWT0RYKSvArxuBVh2veudHV7ifEC1WAmjJADacZ7mRbA2nWgHtn8xyECMAot0SkAw==", - "dev": true - }, - "node_modules/@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==", - "dev": true - }, - "node_modules/@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==" - }, - "node_modules/@types/q": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz", - "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==", - "dev": true - }, - "node_modules/@types/react": { - "version": "16.9.11", - "resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.11.tgz", - "integrity": "sha512-UBT4GZ3PokTXSWmdgC/GeCGEJXE5ofWyibCcecRLUVN2ZBpXQGVgQGtG2foS7CrTKFKlQVVswLvf7Js6XA/CVQ==", - "dependencies": { - "@types/prop-types": "*", - "csstype": "^2.2.0" - } - }, - "node_modules/@types/resolve": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", - "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/sinonjs__fake-timers": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.3.tgz", - "integrity": "sha512-E1dU4fzC9wN2QK2Cr1MLCfyHM8BoNnRFvuf45LYMPNDA+WqbNzC45S4UzPxvp1fFJ1rvSGU0bPvdd35VLmXG8g==", - "dev": true - }, - "node_modules/@types/sizzle": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.3.tgz", - "integrity": "sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==", - "dev": true - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", - "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", - "dev": true, - "dependencies": { - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0" - } - }, - "node_modules/@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==", - "dev": true - }, - "node_modules/@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==", - "dev": true - }, - "node_modules/@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==", - "dev": true - }, - "node_modules/@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==", - "dev": true, - "dependencies": { - "@webassemblyjs/wast-printer": "1.9.0" - } - }, - "node_modules/@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==", - "dev": true - }, - "node_modules/@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==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.9.0" - } - }, - "node_modules/@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==", - "dev": true - }, - "node_modules/@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==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", - "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", - "dev": true, - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", - "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", - "dev": true, - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", - "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", - "dev": true - }, - "node_modules/@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==", - "dev": true, - "dependencies": { - "@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" - } - }, - "node_modules/@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==", - "dev": true, - "dependencies": { - "@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" - } - }, - "node_modules/@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==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0" - } - }, - "node_modules/@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==", - "dev": true, - "dependencies": { - "@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" - } - }, - "node_modules/@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==", - "dev": true, - "dependencies": { - "@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" - } - }, - "node_modules/@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==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "node_modules/@yaireo/tagify": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/@yaireo/tagify/-/tagify-4.5.0.tgz", - "integrity": "sha512-fYy9IVFt0i41KuTX3kwJ1sEzGeYhFe9b6GGDGIz/La9pyG1VaGJPFyKEtsDkkyNKptRU83yXSPtM6laldF1q1A==", - "peerDependencies": { - "prop-types": "^15.7.2" - } - }, - "node_modules/abab": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz", - "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=", - "dev": true - }, - "node_modules/accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", - "dev": true, - "dependencies": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", - "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-es7-plugin": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/acorn-es7-plugin/-/acorn-es7-plugin-1.1.7.tgz", - "integrity": "sha1-8u4fMiipDurRJF+asZIusucdM2s=" - }, - "node_modules/acorn-globals": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz", - "integrity": "sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=", - "dev": true, - "dependencies": { - "acorn": "^4.0.4" - } - }, - "node_modules/acorn-globals/node_modules/acorn": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", - "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", - "dev": true, - "dependencies": { - "acorn": "^3.0.4" - } - }, - "node_modules/acorn-jsx/node_modules/acorn": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-walk": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", - "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/after": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", - "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=" - }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", - "dev": true, - "dependencies": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" - } - }, - "node_modules/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==", - "dev": true, - "peerDependencies": { - "ajv": ">=5.0.0" - } - }, - "node_modules/ajv-keywords": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", - "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", - "dev": true, - "peerDependencies": { - "ajv": "^5.0.0" - } - }, - "node_modules/alphanum-sort": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", - "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", - "dev": true - }, - "node_modules/ansi-align": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", - "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==", - "dev": true, - "dependencies": { - "string-width": "^3.0.0" - } - }, - "node_modules/ansi-colors": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", - "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/ansi-html": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", - "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", - "dev": true, - "engines": [ - "node >= 0.8.0" - ], - "bin": { - "ansi-html": "bin/ansi-html" - } - }, - "node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/any-observable": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.3.0.tgz", - "integrity": "sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "dependencies": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "node_modules/anymatch/node_modules/arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/anymatch/node_modules/expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "dependencies": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/expand-brackets/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/expand-brackets/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/expand-brackets/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/expand-brackets/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/expand-brackets/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/expand-brackets/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/extglob/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/extglob/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/anymatch/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/apexcharts": { - "version": "3.29.0", - "resolved": "https://registry.npmjs.org/apexcharts/-/apexcharts-3.29.0.tgz", - "integrity": "sha512-PhI17VayidYAbLb5/g+7WOeirgFrVopzt0qGwLq8V+cd6NXx4CeHYq3S0pDZiUGO7UFQ4YIrT8+ie9/Fnler+w==", - "dependencies": { - "svg.draggable.js": "^2.2.2", - "svg.easing.js": "^2.0.0", - "svg.filter.js": "^2.0.2", - "svg.pathmorphing.js": "^0.1.3", - "svg.resize.js": "^1.4.3", - "svg.select.js": "^3.0.1" - } - }, - "node_modules/append-transform": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", - "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", - "dev": true, - "dependencies": { - "default-require-extensions": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true - }, - "node_modules/arch": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", - "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "dependencies": { - "arr-flatten": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-buffer-to-hex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-to-hex/-/array-buffer-to-hex-1.0.0.tgz", - "integrity": "sha512-arycdkxgK1cj6s03GDb96tlCxOl1n3kg9M2OHseUc6Pqyqp+lgfceFPmG507eI5V+oxOSEnlOw/dFc7LXBXF4Q==" - }, - "node_modules/array-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", - "dev": true - }, - "node_modules/array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", - "dev": true - }, - "node_modules/array-includes": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", - "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", - "dev": true, - "dependencies": { - "define-properties": "^1.1.2", - "es-abstract": "^1.7.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arraybuffer.slice": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", - "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==" - }, - "node_modules/arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "dev": true, - "dependencies": { - "safer-buffer": "~2.1.0" - } - }, - "node_modules/asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "dev": true, - "dependencies": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/asn1.js/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", - "dev": true, - "dependencies": { - "object-assign": "^4.1.1", - "util": "0.10.3" - } - }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/assert/node_modules/inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - }, - "node_modules/assert/node_modules/util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "dependencies": { - "inherits": "2.0.1" - } - }, - "node_modules/assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", - "dev": true, - "dependencies": { - "lodash": "^4.17.14" - } - }, - "node_modules/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==", - "dev": true - }, - "node_modules/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==", - "dev": true - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "node_modules/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==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true, - "bin": { - "atob": "bin/atob.js" - }, - "engines": { - "node": ">= 4.5.0" - } - }, - "node_modules/auto-bind": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-2.1.1.tgz", - "integrity": "sha512-NUwV1i9D3vxxY1KnfZgSZ716d6ovY7o8LfOwLhGIPFBowIb6Ln6DBW64+jCqPzUznel2hRSkQnYQqvh7/ldw8A==", - "dependencies": { - "@types/react": "^16.8.12" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/autoprefixer": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.3.1.tgz", - "integrity": "sha512-L8AmtKzdiRyYg7BUXJTzigmhbQRCXFKz6SA1Lqo0+AR2FBbQ4aTAPFSDlOutnFkjhiz8my4agGXog1xlMjPJ6A==", - "dev": true, - "dependencies": { - "browserslist": "^4.16.6", - "caniuse-lite": "^1.0.30001243", - "colorette": "^1.2.2", - "fraction.js": "^4.1.1", - "normalize-range": "^0.1.2", - "postcss-value-parser": "^4.1.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/autoprefixer/node_modules/browserslist": { - "version": "4.16.6", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", - "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", - "dev": true, - "dependencies": { - "caniuse-lite": "^1.0.30001219", - "colorette": "^1.2.2", - "electron-to-chromium": "^1.3.723", - "escalade": "^3.1.1", - "node-releases": "^1.1.71" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } - }, - "node_modules/autoprefixer/node_modules/caniuse-lite": { - "version": "1.0.30001245", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001245.tgz", - "integrity": "sha512-768fM9j1PKXpOCKws6eTo3RHmvTUsG9UrpT4WoREFeZgJBTi4/X9g565azS/rVUGtqb8nt7FjLeF5u4kukERnA==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } - }, - "node_modules/autoprefixer/node_modules/electron-to-chromium": { - "version": "1.3.776", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.776.tgz", - "integrity": "sha512-V0w7eFSBoFPpdw4xexjVPZ770UDZIevSwkkj4W97XbE3IsCsTRFpa7/yXGZ88EOQAUEA09JMMsWK0xsw0kRAYw==", - "dev": true - }, - "node_modules/autoprefixer/node_modules/node-releases": { - "version": "1.1.73", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz", - "integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==", - "dev": true - }, - "node_modules/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=", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/aws4": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", - "dev": true - }, - "node_modules/axios": { - "version": "0.21.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", - "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", - "dependencies": { - "follow-redirects": "^1.10.0" - } - }, - "node_modules/axios/node_modules/follow-redirects": { - "version": "1.13.3", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.3.tgz", - "integrity": "sha512-DUgl6+HDzB0iEptNQEXLx/KhTmDb8tZUHSeLqpnjpknR70H0nC2t9N73BK6fN4hOvJ84pKlIQVQ4k5FFlBedKA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", - "dev": true, - "dependencies": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - } - }, - "node_modules/babel-code-frame/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-code-frame/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-code-frame/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-code-frame/node_modules/js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true - }, - "node_modules/babel-code-frame/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-core": { - "version": "6.26.3", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", - "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", - "dev": true, - "dependencies": { - "babel-code-frame": "^6.26.0", - "babel-generator": "^6.26.0", - "babel-helpers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-register": "^6.26.0", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "convert-source-map": "^1.5.1", - "debug": "^2.6.9", - "json5": "^0.5.1", - "lodash": "^4.17.4", - "minimatch": "^3.0.4", - "path-is-absolute": "^1.0.1", - "private": "^0.1.8", - "slash": "^1.0.0", - "source-map": "^0.5.7" - } - }, - "node_modules/babel-core/node_modules/babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true, - "bin": { - "babylon": "bin/babylon.js" - } - }, - "node_modules/babel-core/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/babel-eslint": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-8.2.6.tgz", - "integrity": "sha512-aCdHjhzcILdP8c9lej7hvXKvQieyRt20SF102SIGyY4cUIiw6UaAtK4j2o3dXX74jEmy0TJ0CEhv4fTIM3SzcA==", - "deprecated": "babel-eslint is now @babel/eslint-parser. This package will no longer receive updates.", - "dev": true, - "dependencies": { - "@babel/code-frame": "7.0.0-beta.44", - "@babel/traverse": "7.0.0-beta.44", - "@babel/types": "7.0.0-beta.44", - "babylon": "7.0.0-beta.44", - "eslint-scope": "3.7.1", - "eslint-visitor-keys": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/babel-eslint/node_modules/eslint-scope": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", - "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", - "dev": true, - "dependencies": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/babel-esm-plugin": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/babel-esm-plugin/-/babel-esm-plugin-0.9.0.tgz", - "integrity": "sha512-OyPyLI6LUuUqNm3HNUldAkynWrLzXkhcZo4fGTsieCgHqvbCoCIMMOwJmfG9Lmp91S7WDIuUr0mvOeI8pAb/pw==", - "dev": true, - "dependencies": { - "chalk": "2.4.1", - "deepcopy": "1.0.0" - }, - "peerDependencies": { - "webpack": "^4.28.4" - } - }, - "node_modules/babel-esm-plugin/node_modules/chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/babel-esm-plugin/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/babel-generator": { - "version": "6.26.1", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", - "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", - "dev": true, - "dependencies": { - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "detect-indent": "^4.0.0", - "jsesc": "^1.3.0", - "lodash": "^4.17.4", - "source-map": "^0.5.7", - "trim-right": "^1.0.1" - } - }, - "node_modules/babel-generator/node_modules/jsesc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - } - }, - "node_modules/babel-helpers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", - "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", - "dev": true, - "dependencies": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "node_modules/babel-jest": { - "version": "21.2.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-21.2.0.tgz", - "integrity": "sha512-O0W2qLoWu1QOoOGgxiR2JID4O6WSpxPiQanrkyi9SSlM0PJ60Ptzlck47lhtnr9YZO3zYOsxHwnyeWJ6AffoBQ==", - "dev": true, - "dependencies": { - "babel-plugin-istanbul": "^4.0.0", - "babel-preset-jest": "^21.2.0" - }, - "peerDependencies": { - "babel-core": "^6.0.0 || ^7.0.0-alpha || ^7.0.0-beta || ^7.0.0" - } - }, - "node_modules/babel-loader": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.2.tgz", - "integrity": "sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g==", - "dev": true, - "dependencies": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^1.4.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" - }, - "engines": { - "node": ">= 8.9" - }, - "peerDependencies": { - "@babel/core": "^7.0.0", - "webpack": ">=2" - } - }, - "node_modules/babel-loader/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/babel-loader/node_modules/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==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/babel-loader/node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "node_modules/babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", - "dev": true, - "dependencies": { - "babel-runtime": "^6.22.0" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "object.assign": "^4.1.0" - } - }, - "node_modules/babel-plugin-istanbul": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz", - "integrity": "sha512-PWP9FQ1AhZhS01T/4qLSKoHGY/xvkZdVBGlKM/HuxxS3+sC66HhTNR7+MpbO/so/cz/wY94MeSWJuP1hXIPfwQ==", - "dev": true, - "dependencies": { - "babel-plugin-syntax-object-rest-spread": "^6.13.0", - "find-up": "^2.1.0", - "istanbul-lib-instrument": "^1.10.1", - "test-exclude": "^4.2.1" - } - }, - "node_modules/babel-plugin-istanbul/node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "dependencies": { - "locate-path": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/babel-plugin-istanbul/node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/babel-plugin-istanbul/node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "dependencies": { - "p-try": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/babel-plugin-istanbul/node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "dependencies": { - "p-limit": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/babel-plugin-istanbul/node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/babel-plugin-jest-hoist": { - "version": "21.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-21.2.0.tgz", - "integrity": "sha512-yi5QuiVyyvhBUDLP4ButAnhYzkdrUwWDtvUJv71hjH3fclhnZg4HkDeqaitcR2dZZx/E67kGkRcPVjtVu+SJfQ==", - "dev": true - }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz", - "integrity": "sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.2.2", - "semver": "^6.1.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.3.tgz", - "integrity": "sha512-rCOFzEIJpJEAU14XCcV/erIf/wZQMmMT5l5vXOpL5uoznyOGfDIjPj6FVytMvtzaKSTSVKouOCTPJ5OMUZH30g==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.2.2", - "core-js-compat": "^3.14.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz", - "integrity": "sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.2.2" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/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=", - "dev": true - }, - "node_modules/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==", - "dev": true - }, - "node_modules/babel-preset-jest": { - "version": "21.2.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-21.2.0.tgz", - "integrity": "sha512-hm9cBnr2h3J7yXoTtAVV0zg+3vg0Q/gT2GYuzlreTU0EPkJRtlNgKJJ3tBKEn0+VjAi3JykV6xCJkuUYttEEfA==", - "dev": true, - "dependencies": { - "babel-plugin-jest-hoist": "^21.2.0", - "babel-plugin-syntax-object-rest-spread": "^6.13.0" - } - }, - "node_modules/babel-register": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", - "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", - "dev": true, - "dependencies": { - "babel-core": "^6.26.0", - "babel-runtime": "^6.26.0", - "core-js": "^2.5.0", - "home-or-tmp": "^2.0.0", - "lodash": "^4.17.4", - "mkdirp": "^0.5.1", - "source-map-support": "^0.4.15" - } - }, - "node_modules/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=", - "dev": true, - "dependencies": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, - "node_modules/babel-runtime/node_modules/regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true - }, - "node_modules/babel-template": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", - "dev": true, - "dependencies": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" - } - }, - "node_modules/babel-template/node_modules/babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true, - "bin": { - "babylon": "bin/babylon.js" - } - }, - "node_modules/babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", - "dev": true, - "dependencies": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" - } - }, - "node_modules/babel-traverse/node_modules/babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true, - "bin": { - "babylon": "bin/babylon.js" - } - }, - "node_modules/babel-traverse/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/babel-traverse/node_modules/globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", - "dev": true, - "dependencies": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - } - }, - "node_modules/babel-types/node_modules/to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babylon": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.44.tgz", - "integrity": "sha512-5Hlm13BJVAioCHpImtFqNOF2H3ieTOHd0fmFGMxOJ9jgeFqeAwsv3u5P5cR7CSeFrkgHsT19DgFJkHV0/Mcd8g==", - "dev": true, - "bin": { - "babylon": "bin/babylon.js" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/backo2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" - }, - "node_modules/balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "node_modules/base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "dependencies": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base64-arraybuffer": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz", - "integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI=", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/base64-js": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", - "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" - }, - "node_modules/batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", - "dev": true - }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dev": true, - "dependencies": { - "tweetnacl": "^0.14.3" - } - }, - "node_modules/big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "optional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/bl/node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/bl/node_modules/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==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/blob": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", - "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==" - }, - "node_modules/blob-util": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz", - "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==", - "dev": true - }, - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true - }, - "node_modules/bn.js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", - "dev": true - }, - "node_modules/body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", - "dev": true, - "dependencies": { - "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" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/body-parser/node_modules/bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/body-parser/node_modules/qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/bonjour": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", - "dev": true, - "dependencies": { - "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" - } - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", - "dev": true - }, - "node_modules/boxen": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.0.1.tgz", - "integrity": "sha512-49VBlw+PrWEF51aCmy7QIteYPIFZxSpvqBdP/2itCPPlJ49kj9zg/XPRFrdkne2W+CfwXUls8exMvu1RysZpKA==", - "dev": true, - "dependencies": { - "ansi-align": "^3.0.0", - "camelcase": "^6.2.0", - "chalk": "^4.1.0", - "cli-boxes": "^2.2.1", - "string-width": "^4.2.0", - "type-fest": "^0.20.2", - "widest-line": "^3.1.0", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/boxen/node_modules/ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/boxen/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/boxen/node_modules/camelcase": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", - "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/boxen/node_modules/chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/boxen/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/boxen/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/boxen/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/boxen/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/boxen/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/boxen/node_modules/string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/boxen/node_modules/strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/boxen/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/boxen/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, - "dependencies": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true - }, - "node_modules/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==", - "dev": true - }, - "node_modules/browser-resolve": { - "version": "1.11.3", - "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", - "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", - "dev": true, - "dependencies": { - "resolve": "1.1.7" - } - }, - "node_modules/browser-resolve/node_modules/resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", - "dev": true - }, - "node_modules/browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "dependencies": { - "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" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", - "dev": true, - "dependencies": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "node_modules/browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", - "dev": true, - "dependencies": { - "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" - } - }, - "node_modules/browserify-sign/node_modules/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==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/browserify-sign/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "pako": "~1.0.5" - } - }, - "node_modules/browserlist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserlist/-/browserlist-1.0.1.tgz", - "integrity": "sha512-nYq9jiWv+qXcgrJxQzivfEc7Wo2GvAKkeRViE5L3cUJpq4SZO6NZR710I/8T+OjE5BPECbzpm8rpUkwslE3nTg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.1" - }, - "bin": { - "browserlist": "cli.js" - } - }, - "node_modules/browserslist": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.7.2.tgz", - "integrity": "sha512-uZavT/gZXJd2UTi9Ov7/Z340WOSQ3+m1iBVRUknf+okKxonL9P83S3ctiBDtuRmRu8PiCHjqyueqQ9HYlJhxiw==", - "dev": true, - "dependencies": { - "caniuse-lite": "^1.0.30001004", - "electron-to-chromium": "^1.3.295", - "node-releases": "^1.1.38" - }, - "bin": { - "browserslist": "cli.js" - } - }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "node_modules/buffer": { - "version": "5.4.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.4.3.tgz", - "integrity": "sha512-zvj65TkFeIt3i6aj5bIvJDzjjQQGs4o/sNoezg1F1kYap9Nu2jcUdpwzRSJTHMMzG0H7bZkn4rNQpImhuxWX2A==", - "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4" - } - }, - "node_modules/buffer-alloc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", - "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", - "dependencies": { - "buffer-alloc-unsafe": "^1.1.0", - "buffer-fill": "^1.0.0" - } - }, - "node_modules/buffer-alloc-unsafe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", - "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" - }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/buffer-fill": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", - "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=" - }, - "node_modules/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==" - }, - "node_modules/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==", - "dev": true - }, - "node_modules/buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true - }, - "node_modules/builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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=", - "dev": true - }, - "node_modules/builtins": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", - "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", - "dev": true - }, - "node_modules/bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/cacache": { - "version": "15.2.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.2.0.tgz", - "integrity": "sha512-uKoJSHmnrqXgthDFx/IU6ED/5xd+NNGe+Bb+kLZy7Ku4P+BaiWEUflAKPZ7eAzsYGcsAGASJZsybXp+quEcHTw==", - "dev": true, - "dependencies": { - "@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.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/cacache/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/cacache/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/cacache/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/cacache/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "dependencies": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cache-base/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cache-base/node_modules/get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cache-base/node_modules/set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "dev": true, - "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cacheable-request/node_modules/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==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cacheable-request/node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cacheable-request/node_modules/normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cachedir": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", - "integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/caller-callsite": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", - "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", - "dev": true, - "dependencies": { - "callsites": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/caller-callsite/node_modules/callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/caller-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", - "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", - "dev": true, - "dependencies": { - "callsites": "^0.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/callsites": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", - "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/camel-case": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", - "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", - "dev": true, - "dependencies": { - "no-case": "^2.2.0", - "upper-case": "^1.1.1" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } - }, - "node_modules/caniuse-db": { - "version": "1.0.30001009", - "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30001009.tgz", - "integrity": "sha512-klfjT6Tmyg/1GINznqr1oE89cw08gKHkA8yU801fxZGE4lao1EL7+W1fAXLniGUOS3kSuHT9dE7ZSTgSAs27iQ==", - "dev": true - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001009", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001009.tgz", - "integrity": "sha512-M3rEqHN6SaVjgo4bIik7HsGcWXsi+lI9WA0p51RPMFx5gXfduyOXWJrc0R4xBkSK1pgNf4CNgy5M+6H+WiEP8g==", - "dev": true - }, - "node_modules/capture-exit": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-1.2.0.tgz", - "integrity": "sha1-HF/MSJ/QqwDU8ax64QcuMXP7q28=", - "dev": true, - "dependencies": { - "rsvp": "^3.3.3" - } - }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "devOptional": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chalk/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "devOptional": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chardet": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", - "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", - "dev": true - }, - "node_modules/check-more-types": { - "version": "2.24.0", - "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", - "integrity": "sha1-FCD/sQ/URNz8ebQ4kbv//TKoRgA=", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/chokidar": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", - "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", - "dev": true, - "optional": true, - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chokidar/node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "optional": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/chokidar/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "optional": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/chokidar/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "optional": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "optional": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/chokidar/node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/chokidar/node_modules/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==", - "dev": true, - "optional": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/chokidar/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/chokidar/node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/chokidar/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "optional": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "dev": true, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/ci-env": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/ci-env/-/ci-env-1.16.0.tgz", - "integrity": "sha512-ucF9caQEX5wQlY449KZBIJPx91+kRg9tJ3tWSc4+KzrvC5KNiPm/3g1noP8VhdI3046+Vw3jLmKAD0fjCRJTmw==", - "dev": true - }, - "node_modules/ci-info": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", - "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==", - "dev": true - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/circular-json": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", - "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", - "deprecated": "CircularJSON is in maintenance only, flatted is its successor.", - "dev": true - }, - "node_modules/class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "dependencies": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/classnames": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz", - "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==" - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "source-map": "~0.6.0" - }, - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/clean-css/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/cli-boxes": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", - "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true, - "dependencies": { - "restore-cursor": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cli-spinners": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.0.tgz", - "integrity": "sha512-t+4/y50K/+4xcCRosKkA7W4gTr1MySvLV0q+PxmG7FJ5g+66ChKurYjxBCjHggHH3HA5Hh9cy+lcUGWDqVH+4Q==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-table3": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.0.tgz", - "integrity": "sha512-gnB85c3MGC7Nm9I/FkiasNBOKjOiO1RNuXXarQms37q4QMpWdlbBgD/VnOStA2faG1dpXMv31RFApjX1/QdgWQ==", - "dev": true, - "dependencies": { - "object-assign": "^4.1.0", - "string-width": "^4.2.0" - }, - "engines": { - "node": "10.* || >= 12.*" - }, - "optionalDependencies": { - "colors": "^1.1.2" - } - }, - "node_modules/cli-table3/node_modules/ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-table3/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/cli-table3/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-table3/node_modules/string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-table3/node_modules/strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-truncate": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", - "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=", - "dev": true, - "dependencies": { - "slice-ansi": "0.0.4", - "string-width": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cli-truncate/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cli-truncate/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cli-truncate/node_modules/slice-ansi": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", - "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cli-truncate/node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cli-truncate/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", - "dev": true - }, - "node_modules/cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dependencies": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/clone-deep/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "dev": true, - "dependencies": { - "mimic-response": "^1.0.0" - } - }, - "node_modules/clsx": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.0.4.tgz", - "integrity": "sha512-1mQ557MIZTrL/140j+JVdRM6e31/OA4vTYxXgqIIZlndyfjHpyawKZia1Im05Vp9BWmImkcNrNtFYQMyFcgJDg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true, - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "node_modules/coa": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", - "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", - "dev": true, - "dependencies": { - "@types/q": "^1.5.1", - "chalk": "^2.4.1", - "q": "^1.1.2" - }, - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "dependencies": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/color": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/color/-/color-3.1.3.tgz", - "integrity": "sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.1", - "color-string": "^1.5.4" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "node_modules/color-string": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.5.tgz", - "integrity": "sha512-jgIoum0OfQfq9Whcfc2z/VhCNcmQjWbey6qBX0vqt7YICflUmBCh9E9CiQD5GSJ+Uehixm3NUwHVhqUAWRivZg==", - "dev": true, - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "node_modules/colord": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.1.0.tgz", - "integrity": "sha512-H5sDP9XDk2uP+x/xSGkgB9SEFc1bojdI5DMKU0jmSXQtml2GIe48dj1DcSS0e53QQAHn+JKqUXbGeGX24xWD7w==", - "dev": true - }, - "node_modules/colorette": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", - "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", - "devOptional": true - }, - "node_modules/colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", - "dev": true, - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/common-tags": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", - "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==", - "dev": true, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "node_modules/compare-json": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/compare-json/-/compare-json-0.4.0.tgz", - "integrity": "sha512-DSXzNQQa6J7VyuJmpeETgL3LaTgDgvltUE50AX1hsZCprjrZe1A9yVyDzng5md6YYOyMaThewRxc8yZm13UjYQ==", - "dev": true, - "dependencies": { - "colors": "^1.1.2", - "glob": "^7.1.2", - "lodash": "^4.17.4", - "yargs": "^12.0.5" - }, - "bin": { - "comparejson": "bin/compare.js" - } - }, - "node_modules/compare-json/node_modules/ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/compare-json/node_modules/cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", - "dev": true, - "dependencies": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - } - }, - "node_modules/compare-json/node_modules/execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "dependencies": { - "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" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/compare-json/node_modules/get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", - "dev": true - }, - "node_modules/compare-json/node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/compare-json/node_modules/invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/compare-json/node_modules/lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", - "dev": true, - "dependencies": { - "invert-kv": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/compare-json/node_modules/mem": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", - "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", - "dev": true, - "dependencies": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/compare-json/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/compare-json/node_modules/os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", - "dev": true, - "dependencies": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/compare-json/node_modules/p-is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", - "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/compare-json/node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/compare-json/node_modules/require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "dev": true - }, - "node_modules/compare-json/node_modules/string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/compare-json/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "dependencies": { - "ansi-regex": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/compare-json/node_modules/wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "dev": true, - "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/compare-json/node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/compare-json/node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/compare-json/node_modules/wrap-ansi/node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/compare-json/node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/compare-json/node_modules/yargs": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", - "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", - "dev": true, - "dependencies": { - "cliui": "^4.0.0", - "decamelize": "^1.2.0", - "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^11.1.1" - } - }, - "node_modules/compare-json/node_modules/yargs-parser": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", - "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - }, - "node_modules/component-bind": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", - "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=" - }, - "node_modules/component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", - "dev": true - }, - "node_modules/component-inherit": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", - "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=" - }, - "node_modules/compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "dev": true, - "dependencies": { - "mime-db": ">= 1.43.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/compressible/node_modules/mime-db": { - "version": "1.48.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.48.0.tgz", - "integrity": "sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "dev": true, - "dependencies": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/compression-webpack-plugin": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/compression-webpack-plugin/-/compression-webpack-plugin-6.1.1.tgz", - "integrity": "sha512-BEHft9M6lwOqVIQFMS/YJGmeCYXVOakC5KzQk05TFpMBlODByh1qNsZCWjUBxCQhUP9x0WfGidxTbGkjbWO/TQ==", - "dev": true, - "dependencies": { - "cacache": "^15.0.5", - "find-cache-dir": "^3.3.1", - "schema-utils": "^3.0.0", - "serialize-javascript": "^5.0.1", - "webpack-sources": "^1.4.3" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/compression-webpack-plugin/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/compression-webpack-plugin/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/compression-webpack-plugin/node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/compression-webpack-plugin/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/compression-webpack-plugin/node_modules/schema-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", - "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.7", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/compression/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "node_modules/concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "engines": [ - "node >= 0.8" - ], - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/configstore": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", - "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", - "dev": true, - "dependencies": { - "dot-prop": "^5.2.0", - "graceful-fs": "^4.1.2", - "make-dir": "^3.0.0", - "unique-string": "^2.0.0", - "write-file-atomic": "^3.0.0", - "xdg-basedir": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/configstore/node_modules/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==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "node_modules/connect-history-api-fallback": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", - "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", - "dev": true - }, - "node_modules/console-clear": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/console-clear/-/console-clear-1.1.1.tgz", - "integrity": "sha512-pMD+MVR538ipqkG5JXeOEbKWS5um1H4LUUccUQG68qpeqBYbzYy79Gh55jkd2TtPdRfUaLWdv6LPP//5Zt0aPQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", - "dev": true - }, - "node_modules/content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", - "dev": true, - "dependencies": { - "safe-buffer": "5.1.2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-type-parser": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/content-type-parser/-/content-type-parser-1.0.2.tgz", - "integrity": "sha512-lM4l4CnMEwOLHAHr/P6MEZwZFPJFtAAKgL6pogbXmVZggIqXhdB6RbBtPOTsw2FcXwYhehRGERJmRrjOiIB8pQ==", - "dev": true - }, - "node_modules/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==", - "devOptional": true, - "dependencies": { - "safe-buffer": "~5.1.1" - } - }, - "node_modules/convert-units": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/convert-units/-/convert-units-2.3.4.tgz", - "integrity": "sha512-ERHfdA0UhHJp1IpwE6PnFJx8LqG7B1ZjJ20UvVCmopEnVCfER68Tbe3kvN63dLbYXDA2xFWRE6zd4Wsf0w7POg==", - "dev": true, - "dependencies": { - "lodash.foreach": "2.3.x", - "lodash.keys": "2.3.x" - } - }, - "node_modules/cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", - "dev": true - }, - "node_modules/copy-concurrently": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", - "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", - "dev": true, - "dependencies": { - "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" - } - }, - "node_modules/copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/copy-webpack-plugin": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-6.4.1.tgz", - "integrity": "sha512-MXyPCjdPVx5iiWyl40Va3JGh27bKzOTNY3NjUTrosD2q7dR/cLD0013uqJ3BpFbUjyONINjb6qI7nDIJujrMbA==", - "dev": true, - "dependencies": { - "cacache": "^15.0.5", - "fast-glob": "^3.2.4", - "find-cache-dir": "^3.3.1", - "glob-parent": "^5.1.1", - "globby": "^11.0.1", - "loader-utils": "^2.0.0", - "normalize-path": "^3.0.0", - "p-limit": "^3.0.2", - "schema-utils": "^3.0.0", - "serialize-javascript": "^5.0.1", - "webpack-sources": "^1.4.3" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.37.0 || ^5.0.0" - } - }, - "node_modules/copy-webpack-plugin/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/copy-webpack-plugin/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/copy-webpack-plugin/node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/copy-webpack-plugin/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/copy-webpack-plugin/node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/copy-webpack-plugin/node_modules/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==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/copy-webpack-plugin/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/copy-webpack-plugin/node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/copy-webpack-plugin/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/copy-webpack-plugin/node_modules/schema-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", - "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.7", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/core-js": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", - "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==", - "deprecated": "core-js@<3.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.", - "dev": true, - "hasInstallScript": true - }, - "node_modules/core-js-compat": { - "version": "3.15.2", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.15.2.tgz", - "integrity": "sha512-Wp+BJVvwopjI+A1EFqm2dwUmWYXrvucmtIB2LgXn/Rb+gWPKYxtmb4GKHGKG/KGF1eK9jfjzT38DITbTOCX/SQ==", - "dev": true, - "dependencies": { - "browserslist": "^4.16.6", - "semver": "7.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-js-compat/node_modules/browserslist": { - "version": "4.16.6", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", - "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", - "dev": true, - "dependencies": { - "caniuse-lite": "^1.0.30001219", - "colorette": "^1.2.2", - "electron-to-chromium": "^1.3.723", - "escalade": "^3.1.1", - "node-releases": "^1.1.71" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } - }, - "node_modules/core-js-compat/node_modules/caniuse-lite": { - "version": "1.0.30001245", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001245.tgz", - "integrity": "sha512-768fM9j1PKXpOCKws6eTo3RHmvTUsG9UrpT4WoREFeZgJBTi4/X9g565azS/rVUGtqb8nt7FjLeF5u4kukERnA==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } - }, - "node_modules/core-js-compat/node_modules/electron-to-chromium": { - "version": "1.3.776", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.776.tgz", - "integrity": "sha512-V0w7eFSBoFPpdw4xexjVPZ770UDZIevSwkkj4W97XbE3IsCsTRFpa7/yXGZ88EOQAUEA09JMMsWK0xsw0kRAYw==", - "dev": true - }, - "node_modules/core-js-compat/node_modules/node-releases": { - "version": "1.1.73", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz", - "integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==", - "dev": true - }, - "node_modules/core-js-compat/node_modules/semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/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=", - "dev": true - }, - "node_modules/cosmiconfig": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", - "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", - "dev": true, - "dependencies": { - "@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" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/cosmiconfig/node_modules/@babel/code-frame": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", - "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/cosmiconfig/node_modules/@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/cosmiconfig/node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cosmiconfig/node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cosmiconfig/node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - } - }, - "node_modules/create-ecdh/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "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" - } - }, - "node_modules/critters-webpack-plugin": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/critters-webpack-plugin/-/critters-webpack-plugin-2.5.0.tgz", - "integrity": "sha512-O41TSPV2orAfrV6kSVC0SivZCtVkeypCNKb7xtrbqE/CfjrHeRaFaGuxglcjOI2IGf+oNg6E+ZoOktdlhXPTIQ==", - "dev": true, - "dependencies": { - "css": "^2.2.1", - "cssnano": "^4.1.7", - "jsdom": "^12.0.0", - "minimatch": "^3.0.4", - "parse5": "^4.0.0", - "postcss": "^7.0.5", - "pretty-bytes": "^4.0.2", - "webpack-log": "^2.0.0", - "webpack-sources": "^1.3.0" - } - }, - "node_modules/critters-webpack-plugin/node_modules/abab": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", - "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", - "dev": true - }, - "node_modules/critters-webpack-plugin/node_modules/acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/critters-webpack-plugin/node_modules/acorn-globals": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", - "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", - "dev": true, - "dependencies": { - "acorn": "^6.0.1", - "acorn-walk": "^6.0.1" - } - }, - "node_modules/critters-webpack-plugin/node_modules/cssstyle": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz", - "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", - "dev": true, - "dependencies": { - "cssom": "0.3.x" - } - }, - "node_modules/critters-webpack-plugin/node_modules/jsdom": { - "version": "12.2.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-12.2.0.tgz", - "integrity": "sha512-QPOggIJ8fquWPLaYYMoh+zqUmdphDtu1ju0QGTitZT1Yd8I5qenPpXM1etzUegu3MjVp8XPzgZxdn8Yj7e40ig==", - "dev": true, - "dependencies": { - "abab": "^2.0.0", - "acorn": "^6.0.2", - "acorn-globals": "^4.3.0", - "array-equal": "^1.0.0", - "cssom": "^0.3.4", - "cssstyle": "^1.1.1", - "data-urls": "^1.0.1", - "domexception": "^1.0.1", - "escodegen": "^1.11.0", - "html-encoding-sniffer": "^1.0.2", - "nwsapi": "^2.0.9", - "parse5": "5.1.0", - "pn": "^1.1.0", - "request": "^2.88.0", - "request-promise-native": "^1.0.5", - "saxes": "^3.1.3", - "symbol-tree": "^3.2.2", - "tough-cookie": "^2.4.3", - "w3c-hr-time": "^1.0.1", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.2.0", - "whatwg-url": "^7.0.0", - "ws": "^6.1.0", - "xml-name-validator": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/critters-webpack-plugin/node_modules/jsdom/node_modules/parse5": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", - "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", - "dev": true - }, - "node_modules/critters-webpack-plugin/node_modules/parse5": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", - "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", - "dev": true - }, - "node_modules/critters-webpack-plugin/node_modules/postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/critters-webpack-plugin/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/critters-webpack-plugin/node_modules/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==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/critters-webpack-plugin/node_modules/tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/critters-webpack-plugin/node_modules/whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "dev": true, - "dependencies": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "node_modules/critters-webpack-plugin/node_modules/ws": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", - "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", - "dev": true, - "dependencies": { - "async-limiter": "~1.0.0" - } - }, - "node_modules/critters-webpack-plugin/node_modules/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==", - "dev": true - }, - "node_modules/cropperjs": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/cropperjs/-/cropperjs-1.5.12.tgz", - "integrity": "sha512-re7UdjE5UnwdrovyhNzZ6gathI4Rs3KGCBSc8HCIjUo5hO42CtzyblmWLj6QWVw7huHyDMfpKxhiO2II77nhDw==" - }, - "node_modules/cross-env": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-5.2.1.tgz", - "integrity": "sha512-1yHhtcfAd1r4nwQgknowuUNfIT9E8dOMMspC36g45dN+iD1blloi7xp8X/xAIDnjHWyt1uQ8PHk2fkNaym7soQ==", - "dev": true, - "dependencies": { - "cross-spawn": "^6.0.5" - }, - "bin": { - "cross-env": "dist/bin/cross-env.js", - "cross-env-shell": "dist/bin/cross-env-shell.js" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "node_modules/cross-spawn-promise": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/cross-spawn-promise/-/cross-spawn-promise-0.10.2.tgz", - "integrity": "sha512-74PXJf6DYaab2klRS+D+9qxKJL1Weo3/ao9OPoH6NFzxtINSa/HE2mcyAPu1fpEmRTPD4Gdmpg3xEXQSgI8lpg==", - "dev": true, - "dependencies": { - "cross-spawn": "^5.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cross-spawn-promise/node_modules/cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "dependencies": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "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" - }, - "engines": { - "node": "*" - } - }, - "node_modules/crypto-digest-sync": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/crypto-digest-sync/-/crypto-digest-sync-1.0.0.tgz", - "integrity": "sha512-UQBOB5z+HF4iA8shKQ3PPwhCmdFAihwcytD1Qh4uiz78x04cZZmKtZ1F1VyAjkrA8uEZqXt2tMXfj3dJHtcbng==" - }, - "node_modules/crypto-random-hex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-hex/-/crypto-random-hex-1.0.0.tgz", - "integrity": "sha512-1DuZQ03El13TRgfrqbbjW40Gvi4OKInny/Wxqj23/JMXe214C/3Tlz92bKXWDW3NZT5RjXUGdYW4qiIOUPf+cA==", - "dependencies": { - "array-buffer-to-hex": "^1.0.0" - } - }, - "node_modules/crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/css": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", - "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "source-map": "^0.6.1", - "source-map-resolve": "^0.5.2", - "urix": "^0.1.0" - } - }, - "node_modules/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=", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "postcss": "^7.0.1", - "timsort": "^0.3.0" - }, - "engines": { - "node": ">4" - } - }, - "node_modules/css-declaration-sorter/node_modules/postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/css-declaration-sorter/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/css-declaration-sorter/node_modules/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==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/css-loader": { - "version": "5.2.7", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-5.2.7.tgz", - "integrity": "sha512-Q7mOvpBNBG7YrVGMxRxcBJZFL75o+cH2abNASdibkj/fffYD8qWbInZrD0S9ccI6vZclF3DsHE7njGlLtaHbhg==", - "dev": true, - "dependencies": { - "icss-utils": "^5.1.0", - "loader-utils": "^2.0.0", - "postcss": "^8.2.15", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.0", - "postcss-modules-scope": "^3.0.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.1.0", - "schema-utils": "^3.0.0", - "semver": "^7.3.5" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.27.0 || ^5.0.0" - } - }, - "node_modules/css-loader/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/css-loader/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/css-loader/node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/css-loader/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/css-loader/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/css-loader/node_modules/schema-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", - "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.7", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/css-loader/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/css-loader/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/css-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", - "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" - } - }, - "node_modules/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==", - "dev": true - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "mdn-data": "2.0.4", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/css-tree/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/css-what": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", - "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", - "dev": true, - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cssnano": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.11.tgz", - "integrity": "sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==", - "dev": true, - "dependencies": { - "cosmiconfig": "^5.0.0", - "cssnano-preset-default": "^4.0.8", - "is-resolvable": "^1.0.0", - "postcss": "^7.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/cssnano-preset-default": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz", - "integrity": "sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==", - "dev": true, - "dependencies": { - "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.3", - "postcss-unique-selectors": "^4.0.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/cssnano-preset-default/node_modules/postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/cssnano-preset-default/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cssnano-preset-default/node_modules/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==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/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=", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/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=", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "postcss": "^7.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/cssnano-util-raw-cache/node_modules/postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/cssnano-util-raw-cache/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cssnano-util-raw-cache/node_modules/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==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/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==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/cssnano-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-2.0.1.tgz", - "integrity": "sha512-i8vLRZTnEH9ubIyfdZCAdIdgnHAUeQeByEeQ2I7oTilvP9oHO6RScpeq3GsFUVqeB8uZgOQ9pw8utofNn32hhQ==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/cssnano/node_modules/caller-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", - "dev": true, - "dependencies": { - "caller-callsite": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cssnano/node_modules/cosmiconfig": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", - "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", - "dev": true, - "dependencies": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cssnano/node_modules/import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", - "dev": true, - "dependencies": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cssnano/node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cssnano/node_modules/postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/cssnano/node_modules/resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/cssnano/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cssnano/node_modules/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==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", - "dev": true, - "dependencies": { - "css-tree": "^1.1.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/csso/node_modules/css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "dev": true, - "dependencies": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/csso/node_modules/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==", - "dev": true - }, - "node_modules/csso/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - }, - "node_modules/cssstyle": { - "version": "0.2.37", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz", - "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=", - "dev": true, - "dependencies": { - "cssom": "0.3.x" - } - }, - "node_modules/csstype": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.7.tgz", - "integrity": "sha512-9Mcn9sFbGBAdmimWb2gLVDtFJzeKtDGIr76TUqmjZrw9LFXBMSU70lcs+C0/7fyCd6iBDqmksUcCOUIkisPHsQ==" - }, - "node_modules/cyclist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", - "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", - "dev": true - }, - "node_modules/cypress": { - "version": "6.9.1", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-6.9.1.tgz", - "integrity": "sha512-/RVx6sOhsyTR9sd9v0BHI4tnDZAhsH9rNat7CIKCUEr5VPWxyfGH0EzK4IHhAqAH8vjFcD4U14tPiJXshoUrmQ==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "@cypress/listr-verbose-renderer": "^0.4.1", - "@cypress/request": "^2.88.5", - "@cypress/xvfb": "^1.2.4", - "@types/node": "12.12.50", - "@types/sinonjs__fake-timers": "^6.0.1", - "@types/sizzle": "^2.3.2", - "arch": "^2.1.2", - "blob-util": "2.0.2", - "bluebird": "^3.7.2", - "cachedir": "^2.3.0", - "chalk": "^4.1.0", - "check-more-types": "^2.24.0", - "cli-table3": "~0.6.0", - "commander": "^5.1.0", - "common-tags": "^1.8.0", - "dayjs": "^1.9.3", - "debug": "4.3.2", - "eventemitter2": "^6.4.2", - "execa": "^4.0.2", - "executable": "^4.1.1", - "extract-zip": "^1.7.0", - "fs-extra": "^9.0.1", - "getos": "^3.2.1", - "is-ci": "^2.0.0", - "is-installed-globally": "^0.3.2", - "lazy-ass": "^1.6.0", - "listr": "^0.14.3", - "lodash": "^4.17.19", - "log-symbols": "^4.0.0", - "minimist": "^1.2.5", - "moment": "^2.29.1", - "ospath": "^1.2.2", - "pretty-bytes": "^5.4.1", - "ramda": "~0.27.1", - "request-progress": "^3.0.0", - "supports-color": "^7.2.0", - "tmp": "~0.2.1", - "untildify": "^4.0.0", - "url": "^0.11.0", - "yauzl": "^2.10.0" - }, - "bin": { - "cypress": "bin/cypress" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/cypress/node_modules/@types/node": { - "version": "12.12.50", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.50.tgz", - "integrity": "sha512-5ImO01Fb8YsEOYpV+aeyGYztcYcjGsBvN4D7G5r1ef2cuQOpymjWNQi5V0rKHE6PC2ru3HkoUr/Br2/8GUA84w==", - "dev": true - }, - "node_modules/cypress/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/cypress/node_modules/chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/cypress/node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, - "node_modules/cypress/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/cypress/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/cypress/node_modules/commander": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/cypress/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/cypress/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/cypress/node_modules/execa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", - "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", - "dev": true, - "dependencies": { - "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" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/cypress/node_modules/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==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cypress/node_modules/global-dirs": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.1.0.tgz", - "integrity": "sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==", - "dev": true, - "dependencies": { - "ini": "1.3.7" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cypress/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cypress/node_modules/ini": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", - "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==", - "dev": true - }, - "node_modules/cypress/node_modules/is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dev": true, - "dependencies": { - "ci-info": "^2.0.0" - }, - "bin": { - "is-ci": "bin.js" - } - }, - "node_modules/cypress/node_modules/is-installed-globally": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", - "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", - "dev": true, - "dependencies": { - "global-dirs": "^2.0.1", - "is-path-inside": "^3.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cypress/node_modules/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==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cypress/node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/cypress/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/cypress/node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "node_modules/cypress/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/cypress/node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cypress/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cypress/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cypress/node_modules/pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cypress/node_modules/ramda": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.1.tgz", - "integrity": "sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw==", - "dev": true - }, - "node_modules/cypress/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/cypress/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cypress/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cypress/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cypress/node_modules/tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "dev": true, - "dependencies": { - "rimraf": "^3.0.0" - }, - "engines": { - "node": ">=8.17.0" - } - }, - "node_modules/cypress/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/data-urls": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", - "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", - "dev": true, - "dependencies": { - "abab": "^2.0.0", - "whatwg-mimetype": "^2.2.0", - "whatwg-url": "^7.0.0" - } - }, - "node_modules/data-urls/node_modules/abab": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", - "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", - "dev": true - }, - "node_modules/data-urls/node_modules/tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/data-urls/node_modules/whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "dev": true, - "dependencies": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "node_modules/date-arithmetic": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/date-arithmetic/-/date-arithmetic-4.0.1.tgz", - "integrity": "sha512-fawhJU3ajJud093das8L3PSXqDb+LjclKhRTIbVX1xC+QeHtL/30kNTkS8s/lOiKMGMngxKvwEzQhBEmK/KQnQ==" - }, - "node_modules/date-fns": { - "version": "2.22.1", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.22.1.tgz", - "integrity": "sha512-yUFPQjrxEmIsMqlHhAhmxkuH769baF21Kk+nZwZGyrMoyLA+LugaQtC0+Tqf9CBUUULWwUJt6Q5ySI3LJDDCGg==", - "engines": { - "node": ">=0.11" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/date-fns" - } - }, - "node_modules/dayjs": { - "version": "1.10.6", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.10.6.tgz", - "integrity": "sha512-AztC/IOW4L1Q41A86phW5Thhcrco3xuAA+YX/BLpLWWjRcTj5TOt/QImBLmCKlrF7u7k47arTnOyL6GnbG8Hvw==" - }, - "node_modules/debounce": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", - "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==" - }, - "node_modules/debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "dev": true, - "dependencies": { - "mimic-response": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/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==", - "dependencies": { - "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" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/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=", - "dev": true - }, - "node_modules/deepcopy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/deepcopy/-/deepcopy-1.0.0.tgz", - "integrity": "sha512-WJrecobaoqqgQHtvRI2/VCzWoWXPAnFYyAkF/spmL46lZMnd0gW0gLGuyeFVSrqt2B3s0oEEj6i+j2L/2QiS4g==", - "dev": true, - "dependencies": { - "type-detect": "^4.0.8" - } - }, - "node_modules/deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/default-gateway": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", - "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", - "dev": true, - "dependencies": { - "execa": "^1.0.0", - "ip-regex": "^2.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/default-gateway/node_modules/execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "dependencies": { - "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" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/default-gateway/node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/default-require-extensions": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", - "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", - "dev": true, - "dependencies": { - "strip-bom": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", - "dev": true, - "dependencies": { - "clone": "^1.0.2" - } - }, - "node_modules/defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", - "dev": true - }, - "node_modules/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==", - "dependencies": { - "object-keys": "^1.0.12" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-property/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-property/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-property/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-property/node_modules/kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", - "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", - "dev": true, - "dependencies": { - "@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" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/del/node_modules/array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, - "dependencies": { - "array-uniq": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del/node_modules/globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "dev": true, - "dependencies": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del/node_modules/globby/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del/node_modules/p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/del/node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", - "dev": true - }, - "node_modules/detect-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", - "dev": true, - "dependencies": { - "repeating": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/detect-node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", - "dev": true - }, - "node_modules/diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "dependencies": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "node_modules/diffie-hellman/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/dijkstrajs": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.1.tgz", - "integrity": "sha1-082BIh4+pAdCz83lVtTpnpjdxxs=" - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dir-glob/node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" - }, - "node_modules/dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", - "dev": true - }, - "node_modules/dns-packet": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", - "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", - "dev": true, - "dependencies": { - "ip": "^1.1.0", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/dns-txt": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", - "dev": true, - "dependencies": { - "buffer-indexof": "^1.0.0" - } - }, - "node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/dom-converter": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", - "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", - "dev": true, - "dependencies": { - "utila": "~0.4" - } - }, - "node_modules/dom-helpers": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.1.3.tgz", - "integrity": "sha512-nZD1OtwfWGRBWlpANxacBEZrEuLa16o1nh7YopFWeoF68Zt8GGEmzHu6Xv4F3XaFIC+YXtTLrzgqKxFgLEe4jw==", - "dependencies": { - "@babel/runtime": "^7.6.3", - "csstype": "^2.6.7" - } - }, - "node_modules/dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", - "dev": true, - "dependencies": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - } - }, - "node_modules/dom-serializer/node_modules/domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/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==", - "dev": true, - "engines": { - "node": ">=0.4", - "npm": ">=1.2" - } - }, - "node_modules/domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", - "dev": true - }, - "node_modules/domexception": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", - "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", - "dev": true, - "dependencies": { - "webidl-conversions": "^4.0.2" - } - }, - "node_modules/domhandler": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.0.tgz", - "integrity": "sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA==", - "dev": true, - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/domhandler/node_modules/domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "dev": true, - "dependencies": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "node_modules/dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "dev": true, - "dependencies": { - "is-obj": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dotenv": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.2.0.tgz", - "integrity": "sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w==", - "engines": { - "node": ">=6" - } - }, - "node_modules/duplexer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", - "dev": true - }, - "node_modules/duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", - "dev": true - }, - "node_modules/duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "dev": true, - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/ecc-jsbn/node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", - "dev": true - }, - "node_modules/ejs": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", - "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==", - "dev": true, - "hasInstallScript": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ejs-loader": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/ejs-loader/-/ejs-loader-0.5.0.tgz", - "integrity": "sha512-iirFqlP3tiFoedNZ7dQcjvechunl054VbW6Ki38T/pabgXMAncduSE0ZXLeVGn1NbmcUJF9Z5TC0EvQ4RIpP9Q==", - "dev": true, - "dependencies": { - "loader-utils": "^2.0.0", - "lodash": "^4.17.15" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.3.306", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.306.tgz", - "integrity": "sha512-frDqXvrIROoYvikSKTIKbHbzO6M3/qC6kCIt/1FOa9kALe++c4VAJnwjSFvf1tYLEUsP2n9XZ4XSCyqc3l7A/A==", - "dev": true - }, - "node_modules/elegant-spinner": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", - "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "dev": true, - "dependencies": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/elliptic/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" - }, - "node_modules/emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/encode-utf8": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz", - "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==" - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/engine.io-client": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.5.2.tgz", - "integrity": "sha512-QEqIp+gJ/kMHeUun7f5Vv3bteRHppHH/FMBQX/esFj/fuYfjyUKWGMo3VCvIP/V8bE9KcjHmRZrhIz2Z9oNsDA==", - "dependencies": { - "component-emitter": "~1.3.0", - "component-inherit": "0.0.3", - "debug": "~3.1.0", - "engine.io-parser": "~2.2.0", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "parseqs": "0.0.6", - "parseuri": "0.0.6", - "ws": "~7.4.2", - "xmlhttprequest-ssl": "~1.6.2", - "yeast": "0.1.2" - } - }, - "node_modules/engine.io-client/node_modules/component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" - }, - "node_modules/engine.io-parser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.1.tgz", - "integrity": "sha512-x+dN/fBH8Ro8TFwJ+rkB2AmuVw9Yu2mockR/p3W8f8YtExwFgDvBDi0GWyb4ZLkpahtDGZgtr3zLovanJghPqg==", - "dependencies": { - "after": "0.8.2", - "arraybuffer.slice": "~0.0.7", - "base64-arraybuffer": "0.1.4", - "blob": "0.0.5", - "has-binary2": "~1.0.2" - } - }, - "node_modules/enhanced-resolve": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", - "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/enhanced-resolve/node_modules/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==", - "dev": true, - "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - }, - "engines": { - "node": ">=4.3.0 <5.0.0 || >=5.10" - } - }, - "node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", - "dev": true, - "bin": { - "envinfo": "dist/cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/errno": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", - "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", - "dev": true, - "dependencies": { - "prr": "~1.0.1" - }, - "bin": { - "errno": "cli.js" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-abstract": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.16.0.tgz", - "integrity": "sha512-xdQnfykZ9JMEiasTAJZJdMWCQ1Vm00NBw79/AWi7ELfZuuPCSOMDZbT9mkOfSctVtfhb+sAAzrm+j//GjjLHLg==", - "dev": true, - "dependencies": { - "es-to-primitive": "^1.2.0", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.0", - "is-callable": "^1.1.4", - "is-regex": "^1.0.4", - "object-inspect": "^1.6.0", - "object-keys": "^1.1.1", - "string.prototype.trimleft": "^2.1.0", - "string.prototype.trimright": "^2.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "devOptional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-goat": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", - "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", - "dev": true - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "devOptional": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/escodegen": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.12.0.tgz", - "integrity": "sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg==", - "dev": true, - "dependencies": { - "esprima": "^3.1.3", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=4.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/escodegen/node_modules/esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/escodegen/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz", - "integrity": "sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==", - "dev": true, - "dependencies": { - "ajv": "^5.3.0", - "babel-code-frame": "^6.22.0", - "chalk": "^2.1.0", - "concat-stream": "^1.6.0", - "cross-spawn": "^5.1.0", - "debug": "^3.1.0", - "doctrine": "^2.1.0", - "eslint-scope": "^3.7.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^3.5.4", - "esquery": "^1.0.0", - "esutils": "^2.0.2", - "file-entry-cache": "^2.0.0", - "functional-red-black-tree": "^1.0.1", - "glob": "^7.1.2", - "globals": "^11.0.1", - "ignore": "^3.3.3", - "imurmurhash": "^0.1.4", - "inquirer": "^3.0.6", - "is-resolvable": "^1.0.0", - "js-yaml": "^3.9.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.4", - "minimatch": "^3.0.2", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "path-is-inside": "^1.0.2", - "pluralize": "^7.0.0", - "progress": "^2.0.0", - "regexpp": "^1.0.1", - "require-uncached": "^1.0.3", - "semver": "^5.3.0", - "strip-ansi": "^4.0.0", - "strip-json-comments": "~2.0.1", - "table": "4.0.2", - "text-table": "~0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-config-prettier": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-4.3.0.tgz", - "integrity": "sha512-sZwhSTHVVz78+kYD3t5pCWSYEdVSBR0PXnwjDRsUs8ytIrK8PLXw+6FKp8r3Z7rx4ZszdetWlXYKOHoUrrwPlA==", - "dev": true, - "dependencies": { - "get-stdin": "^6.0.0" - }, - "bin": { - "eslint-config-prettier-check": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=3.14.1" - } - }, - "node_modules/eslint-config-synacor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-synacor/-/eslint-config-synacor-2.1.0.tgz", - "integrity": "sha512-wdJbrtQ/7GESxJNEBRHOP9Tq3C/9mWbL+fIvhPixgn+gbuEbkc7gMc67RkpySJ8juB4GxpFXdhE6bERY/PuZjA==", - "dev": true, - "dependencies": { - "babel-eslint": "^8.1.2", - "eslint-plugin-compat": "^2.1.0", - "eslint-plugin-mocha": "^4.0.0", - "eslint-plugin-react": "^7.5.1" - }, - "peerDependencies": { - "eslint": "^4.0.0" - } - }, - "node_modules/eslint-plugin-compat": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-compat/-/eslint-plugin-compat-2.7.0.tgz", - "integrity": "sha512-3J4Ic1WS+SgF1smUOc62fdf7Cnrdsg0GNwKmGVPziPtWdrc2vV5Oq2ut4kG6SM5DJcxOoz/sWJIN7rkcsWh60Q==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.3.1", - "browserslist": "^4.4.1", - "caniuse-db": "^1.0.30000935", - "mdn-browser-compat-data": "^0.0.65" - }, - "engines": { - "node": ">=8.x", - "npm": ">=6.7.0" - }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0" - } - }, - "node_modules/eslint-plugin-cypress": { - "version": "2.11.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-cypress/-/eslint-plugin-cypress-2.11.3.tgz", - "integrity": "sha512-hOoAid+XNFtpvOzZSNWP5LDrQBEJwbZwjib4XJ1KcRYKjeVj0mAmPmucG4Egli4j/aruv+Ow/acacoloWWCl9Q==", - "dev": true, - "dependencies": { - "globals": "^11.12.0" - }, - "peerDependencies": { - "eslint": ">= 3.2.1" - } - }, - "node_modules/eslint-plugin-json": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-json/-/eslint-plugin-json-1.4.0.tgz", - "integrity": "sha512-CECvgRAWtUzuepdlPWd+VA7fhyF9HT183pZnl8wQw5x699Mk/MbME/q8xtULBfooi3LUbj6fToieNmsvUcDxWA==", - "dev": true, - "dependencies": { - "vscode-json-languageservice": "^3.2.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-mocha": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-4.12.1.tgz", - "integrity": "sha512-hxWtYHvLA0p/PKymRfDYh9Mxt5dYkg2Goy1vZDarTEEYfELP9ksga7kKG1NUKSQy27C8Qjc7YrSWTLUhOEOksA==", - "dev": true, - "dependencies": { - "ramda": "^0.25.0" - }, - "peerDependencies": { - "eslint": "^2.0.0 || ^3.0.0 || ^4.0.0" - } - }, - "node_modules/eslint-plugin-preact-i18n": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-preact-i18n/-/eslint-plugin-preact-i18n-1.1.0.tgz", - "integrity": "sha512-wjbyVCzdfhUy8VZ8eTPt6CkZpOnkI6gvNsgQKeA7XYlZSsMhG6ZSaqemMLvpcEnH5fMDTQ+47Dy0NAZCVktuUg==", - "dev": true, - "dependencies": { - "minimatch": "3.0.4" - }, - "peerDependencies": { - "eslint": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/eslint-plugin-react": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.16.0.tgz", - "integrity": "sha512-GacBAATewhhptbK3/vTP09CbFrgUJmBSaaRcWdbQLFvUZy9yVcQxigBNHGPU/KE2AyHpzj3AWXpxoMTsIDiHug==", - "dev": true, - "dependencies": { - "array-includes": "^3.0.3", - "doctrine": "^2.1.0", - "has": "^1.0.3", - "jsx-ast-utils": "^2.2.1", - "object.entries": "^1.1.0", - "object.fromentries": "^2.0.0", - "object.values": "^1.1.0", - "prop-types": "^15.7.2", - "resolve": "^1.12.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0" - } - }, - "node_modules/eslint-scope": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.3.tgz", - "integrity": "sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA==", - "dev": true, - "dependencies": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", - "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint/node_modules/ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint/node_modules/cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "dependencies": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "node_modules/eslint/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "dependencies": { - "ansi-regex": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esm": { - "version": "3.2.25", - "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", - "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/espree": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", - "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", - "dev": true, - "dependencies": { - "acorn": "^5.5.0", - "acorn-jsx": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", - "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", - "dev": true, - "dependencies": { - "estraverse": "^4.0.0" - }, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", - "dev": true, - "dependencies": { - "estraverse": "^4.1.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", - "dev": true - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/eventemitter2": { - "version": "6.4.4", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.4.tgz", - "integrity": "sha512-HLU3NDY6wARrLCEwyGKRBvuWYyvW6mHYv72SJJAH3iJN3a6eVUvkjFkcxah1bcTgGVBBrFdIopBJPhCQFMLyXw==", - "dev": true - }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/eventsource": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.0.tgz", - "integrity": "sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg==", - "dev": true, - "dependencies": { - "original": "^1.0.0" - }, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/exec-sh": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.2.tgz", - "integrity": "sha512-FIUCJz1RbuS0FKTdaAafAByGS0CPvU3R0MeHxgtl+djzCc//F8HakL8GzmVNZanasTbTAY/3DRFA0KpVqj/eAw==", - "dev": true, - "dependencies": { - "merge": "^1.2.0" - } - }, - "node_modules/execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "dev": true, - "dependencies": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.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" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/execa/node_modules/cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "dependencies": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "node_modules/executable": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", - "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", - "dev": true, - "dependencies": { - "pify": "^2.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/executable/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/exit-hook": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", - "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "dependencies": { - "is-posix-bracket": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-range": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", - "dev": true, - "dependencies": { - "fill-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expect": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-21.2.1.tgz", - "integrity": "sha512-orfQQqFRTX0jH7znRIGi8ZMR8kTNpXklTTz8+HGTpmTKZo3Occ6JNB5FXMb8cRuiiC/GyDqsr30zUa66ACYlYw==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.0", - "jest-diff": "^21.2.1", - "jest-get-type": "^21.2.0", - "jest-matcher-utils": "^21.2.1", - "jest-message-util": "^21.2.1", - "jest-regex-util": "^21.2.0" - } - }, - "node_modules/express": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", - "dev": true, - "dependencies": { - "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" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/express/node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", - "dev": true - }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/express/node_modules/qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extend-shallow/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/external-editor": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", - "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", - "dev": true, - "dependencies": { - "chardet": "^0.4.0", - "iconv-lite": "^0.4.17", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, - "dependencies": { - "is-extglob": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extract-zip": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", - "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", - "dev": true, - "dependencies": { - "concat-stream": "^1.6.2", - "debug": "^2.6.9", - "mkdirp": "^0.5.4", - "yauzl": "^2.10.0" - }, - "bin": { - "extract-zip": "cli.js" - } - }, - "node_modules/extract-zip/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/extract-zip/node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "node_modules/extract-zip/node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true, - "engines": [ - "node >=0.6.0" - ] - }, - "node_modules/fast-async": { - "version": "6.3.8", - "resolved": "https://registry.npmjs.org/fast-async/-/fast-async-6.3.8.tgz", - "integrity": "sha512-TjlooyqrYm/gOXjD2UHNwfrWkvTbzU105Nk4bvcRTeRoL+wIeK6rqbqDg3CN9z5p37cE2iXhP6SxQFz8OVIaUg==", - "dependencies": { - "nodent-compiler": "^3.2.10", - "nodent-runtime": ">=3.2.1" - } - }, - "node_modules/fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", - "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fast-glob/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fast-glob/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-glob/node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fast-glob/node_modules/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==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fast-glob/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/fast-glob/node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/fast-glob/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "node_modules/fastq": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.1.tgz", - "integrity": "sha512-HOnr8Mc60eNYl1gzwp6r5RoUyAn5/glBolUzP/Ez6IFVPMPirxn/9phgL6zhOtaTy7ISwPvQ+wT+hfcRZh/bzw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/faye-websocket": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", - "dev": true, - "dependencies": { - "websocket-driver": ">=0.5.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/fb-watchman": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz", - "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=", - "dev": true, - "dependencies": { - "bser": "^2.0.0" - } - }, - "node_modules/fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", - "dev": true, - "dependencies": { - "pend": "~1.2.0" - } - }, - "node_modules/figgy-pudding": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", - "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", - "dev": true - }, - "node_modules/figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dev": true, - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/file-entry-cache": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", - "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", - "dev": true, - "dependencies": { - "flat-cache": "^1.2.1", - "object-assign": "^4.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/file-loader": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", - "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", - "dev": true, - "dependencies": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/file-loader/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/file-loader/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/file-loader/node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/file-loader/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/file-loader/node_modules/schema-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", - "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.7", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fileset": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", - "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", - "dev": true, - "dependencies": { - "glob": "^7.0.3", - "minimatch": "^3.0.3" - } - }, - "node_modules/fill-range": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", - "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", - "dev": true, - "dependencies": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^3.0.0", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fill-range/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "node_modules/fill-range/node_modules/isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "dependencies": { - "isarray": "1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/filter-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", - "integrity": "sha1-mzERErxsYSehbgFsbF1/GeCAXFs=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, - "node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/flat-cache": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", - "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", - "dev": true, - "dependencies": { - "circular-json": "^0.3.1", - "graceful-fs": "^4.1.2", - "rimraf": "~2.6.2", - "write": "^0.2.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - } - }, - "node_modules/follow-redirects": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.1.tgz", - "integrity": "sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "dev": true, - "dependencies": { - "for-in": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "@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" - }, - "engines": { - "node": ">=6.11.5", - "yarn": ">=1.0.0" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/@babel/code-frame": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", - "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "dependencies": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/expand-brackets/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/expand-brackets/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/expand-brackets/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/expand-brackets/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/expand-brackets/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/expand-brackets/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/extglob/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/extglob/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fraction.js": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.1.tgz", - "integrity": "sha512-MHOhvvxHTfRFpF1geTK9czMIZ6xclsEor2wkIGYYq+PxcQqT7vStJqjhe6S1TenZrMZzo+wlqOufBDVepUEgPg==", - "dev": true, - "engines": { - "node": "*" - }, - "funding": { - "type": "patreon", - "url": "https://www.patreon.com/infusion" - } - }, - "node_modules/fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "dependencies": { - "map-cache": "^0.2.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, - "node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/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=", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "node_modules/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=", - "dev": true - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "devOptional": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-intrinsic/node_modules/has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/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==", - "dev": true - }, - "node_modules/get-port": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", - "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-stdin": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", - "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/get-value": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-3.0.1.tgz", - "integrity": "sha512-mKZj9JLQrwMBtj5wxi6MH8Z5eSKaERpAwjg43dPtlGI1ZVEgH/qC7T8/6R2OBSUA+zzHBZgICsVJaEIV2tKTDA==", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/getos": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", - "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==", - "dev": true, - "dependencies": { - "async": "^3.2.0" - } - }, - "node_modules/getos/node_modules/async": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", - "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==", - "dev": true - }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0" - } - }, - "node_modules/gittar": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/gittar/-/gittar-0.1.1.tgz", - "integrity": "sha1-1pk+phYKhsi3895yKmH3O8meFLQ=", - "dev": true, - "dependencies": { - "mkdirp": "^0.5.1", - "tar": "^4.4.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/gittar/node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, - "node_modules/gittar/node_modules/fs-minipass": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", - "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", - "dev": true, - "dependencies": { - "minipass": "^2.6.0" - } - }, - "node_modules/gittar/node_modules/minipass": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", - "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "node_modules/gittar/node_modules/minizlib": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", - "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", - "dev": true, - "dependencies": { - "minipass": "^2.9.0" - } - }, - "node_modules/gittar/node_modules/tar": { - "version": "4.4.13", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", - "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", - "dev": true, - "dependencies": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.8.6", - "minizlib": "^1.2.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.3" - }, - "engines": { - "node": ">=4.5" - } - }, - "node_modules/gittar/node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "dependencies": { - "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" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "dev": true, - "dependencies": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true, - "dependencies": { - "is-glob": "^2.0.0" - } - }, - "node_modules/global-dirs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", - "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", - "dev": true, - "dependencies": { - "ini": "2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "devOptional": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globby/node_modules/ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/globby/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "dev": true, - "dependencies": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/got/node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/got/node_modules/p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", - "dev": true - }, - "node_modules/growly": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", - "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", - "dev": true - }, - "node_modules/gud": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gud/-/gud-1.0.0.tgz", - "integrity": "sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw==" - }, - "node_modules/gzip-size": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", - "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", - "dev": true, - "dependencies": { - "duplexer": "^0.1.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/handle-thing": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", - "dev": true - }, - "node_modules/handlebars": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.1.tgz", - "integrity": "sha512-C29UoFzHe9yM61lOsIlCE5/mQVGrnIOrOq7maQl76L7tYPCgC1og0Ajt6uWnX4ZTxBPnjw+CUvawphwCfJgUnA==", - "dev": true, - "dependencies": { - "neo-async": "^2.6.0", - "optimist": "^0.6.1", - "source-map": "^0.6.1" - }, - "bin": { - "handlebars": "bin/handlebars" - }, - "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^3.1.4" - } - }, - "node_modules/handlebars/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/har-validator": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", - "deprecated": "this library is no longer supported", - "dev": true, - "dependencies": { - "ajv": "^6.5.5", - "har-schema": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/har-validator/node_modules/ajv": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "node_modules/har-validator/node_modules/fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true - }, - "node_modules/har-validator/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/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==", - "dev": true - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-ansi/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-bigints": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-binary2": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", - "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", - "dependencies": { - "isarray": "2.0.1" - } - }, - "node_modules/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=" - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "devOptional": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "dependencies": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-value/node_modules/get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/has-values/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-yarn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", - "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/hash-base/node_modules/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==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/hash-base/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "bin": { - "he": "bin/he" - } - }, - "node_modules/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==", - "dev": true - }, - "node_modules/hex-to-array-buffer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/hex-to-array-buffer/-/hex-to-array-buffer-1.1.0.tgz", - "integrity": "sha512-vvl3IM8FfT1uOnHtEqyjkDK9Luqz6MQrH82qIvVnjyXxRhkeaEZyRRPiBgf2yym3nweRVEfayxt/1SoTXZYd4Q==" - }, - "node_modules/hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "dependencies": { - "react-is": "^16.7.0" - } - }, - "node_modules/home-or-tmp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", - "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", - "dev": true, - "dependencies": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/hosted-git-info": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", - "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==", - "dev": true - }, - "node_modules/hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - } - }, - "node_modules/hsl-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", - "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", - "dev": true - }, - "node_modules/hsla-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", - "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", - "dev": true - }, - "node_modules/html-encoding-sniffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", - "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", - "dev": true, - "dependencies": { - "whatwg-encoding": "^1.0.1" - } - }, - "node_modules/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==", - "dev": true - }, - "node_modules/html-minifier": { - "version": "3.5.21", - "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz", - "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==", - "dev": true, - "dependencies": { - "camel-case": "3.0.x", - "clean-css": "4.2.x", - "commander": "2.17.x", - "he": "1.2.x", - "param-case": "2.1.x", - "relateurl": "0.2.x", - "uglify-js": "3.4.x" - }, - "bin": { - "html-minifier": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/html-minifier/node_modules/commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", - "dev": true - }, - "node_modules/html-minifier/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/html-minifier/node_modules/uglify-js": { - "version": "3.4.10", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.10.tgz", - "integrity": "sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==", - "dev": true, - "dependencies": { - "commander": "~2.19.0", - "source-map": "~0.6.1" - }, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/html-minifier/node_modules/uglify-js/node_modules/commander": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", - "dev": true - }, - "node_modules/html-webpack-exclude-assets-plugin": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/html-webpack-exclude-assets-plugin/-/html-webpack-exclude-assets-plugin-0.0.7.tgz", - "integrity": "sha512-gaYKMGBPDts3Fb1WXyDEEcS/0TSRg2IDl3EsbQL2AkKWTqdjSKwfQ8Iz0RhPiWErJfqhq5/wkhoYyjQoG55pug==", - "dev": true, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/html-webpack-plugin": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz", - "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=", - "deprecated": "3.x is no longer supported", - "dev": true, - "dependencies": { - "html-minifier": "^3.2.3", - "loader-utils": "^0.2.16", - "lodash": "^4.17.3", - "pretty-error": "^2.0.2", - "tapable": "^1.0.0", - "toposort": "^1.0.0", - "util.promisify": "1.0.0" - }, - "engines": { - "node": ">=6.9" - }, - "peerDependencies": { - "webpack": "^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0" - } - }, - "node_modules/html-webpack-plugin/node_modules/big.js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/html-webpack-plugin/node_modules/emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/html-webpack-plugin/node_modules/loader-utils": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", - "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", - "dev": true, - "dependencies": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0", - "object-assign": "^4.0.1" - } - }, - "node_modules/html-webpack-plugin/node_modules/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==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.2", - "object.getownpropertydescriptors": "^2.0.3" - } - }, - "node_modules/htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", - "dev": true, - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" - } - }, - "node_modules/htmlparser2/node_modules/dom-serializer": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", - "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", - "dev": true, - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/htmlparser2/node_modules/domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/htmlparser2/node_modules/domutils": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.7.0.tgz", - "integrity": "sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg==", - "dev": true, - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", - "dev": true - }, - "node_modules/http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", - "dev": true - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/http-errors/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "node_modules/http-parser-js": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz", - "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==", - "dev": true - }, - "node_modules/http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/http-proxy-middleware": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", - "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", - "dev": true, - "dependencies": { - "http-proxy": "^1.17.0", - "is-glob": "^4.0.0", - "lodash": "^4.17.11", - "micromatch": "^3.1.10" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "dependencies": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/expand-brackets/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/expand-brackets/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/expand-brackets/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/expand-brackets/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/expand-brackets/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/expand-brackets/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/extglob/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/extglob/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/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==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" - } - }, - "node_modules/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=", - "dev": true - }, - "node_modules/human-signals": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", - "dev": true, - "engines": { - "node": ">=8.12.0" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/icss-utils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/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=", - "dev": true, - "dependencies": { - "harmony-reflect": "^1.4.6" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/ieee754": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" - }, - "node_modules/iferr": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", - "dev": true - }, - "node_modules/ignore": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", - "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", - "dev": true - }, - "node_modules/immutability-helper": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/immutability-helper/-/immutability-helper-3.1.1.tgz", - "integrity": "sha512-Q0QaXjPjwIju/28TsugCHNEASwoCcJSyJV3uO1sOIQGI0jKgm9f41Lvz0DZj3n46cNCyAZTsEYoY4C2bVRUzyQ==" - }, - "node_modules/import-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-3.0.0.tgz", - "integrity": "sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg==", - "dev": true, - "dependencies": { - "import-from": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-fresh/node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/import-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/import-from/-/import-from-3.0.0.tgz", - "integrity": "sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==", - "dev": true, - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/import-from/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/import-lazy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "pkg-dir": "^3.0.0", - "resolve-cwd": "^2.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/import-local/node_modules/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==", - "dev": true, - "dependencies": { - "find-up": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", - "dev": true - }, - "node_modules/indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" - }, - "node_modules/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==", - "dev": true - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/ini": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/inquirer": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", - "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", - "dev": true, - "dependencies": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.0", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^2.0.4", - "figures": "^2.0.0", - "lodash": "^4.3.0", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rx-lite": "^4.0.8", - "rx-lite-aggregates": "^4.0.8", - "string-width": "^2.1.0", - "strip-ansi": "^4.0.0", - "through": "^2.3.6" - } - }, - "node_modules/inquirer/node_modules/ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/inquirer/node_modules/string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/inquirer/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "dependencies": { - "ansi-regex": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/internal-ip": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", - "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", - "dev": true, - "dependencies": { - "default-gateway": "^4.2.0", - "ipaddr.js": "^1.9.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dependencies": { - "loose-envify": "^1.0.0" - } - }, - "node_modules/invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", - "dev": true - }, - "node_modules/ip-regex": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", - "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/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=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-arguments": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", - "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "node_modules/is-bigint": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.2.tgz", - "integrity": "sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "optional": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.1.tgz", - "integrity": "sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/is-builtin-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "dev": true, - "dependencies": { - "builtin-modules": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-callable": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", - "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-ci": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", - "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", - "dev": true, - "dependencies": { - "ci-info": "^1.5.0" - }, - "bin": { - "is-ci": "bin.js" - } - }, - "node_modules/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=", - "dev": true, - "dependencies": { - "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" - } - }, - "node_modules/is-core-module": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.5.0.tgz", - "integrity": "sha512-TXCMSDsEHMEEZ6eCA8rwRDbLu55MRGmrctljsBX/2v1d9/GzqHOxW5c5oPSgrUt2vBFXebu9rGqckXGPWOlYpg==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-descriptor/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-dotfile": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "dev": true, - "dependencies": { - "is-primitive": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true, - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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=", - "engines": { - "node": ">=4" - } - }, - "node_modules/is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "dependencies": { - "is-extglob": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-installed-globally": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", - "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", - "dev": true, - "dependencies": { - "global-dirs": "^3.0.0", - "is-path-inside": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", - "dev": true - }, - "node_modules/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==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-npm": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", - "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz", - "integrity": "sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-observable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz", - "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", - "dev": true, - "dependencies": { - "symbol-observable": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/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==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "is-path-inside": "^2.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-path-in-cwd/node_modules/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==", - "dev": true, - "dependencies": { - "path-is-inside": "^1.0.2" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-posix-bracket": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", - "dev": true - }, - "node_modules/is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", - "dependencies": { - "has": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", - "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-resolvable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", - "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", - "dev": true - }, - "node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-string": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.6.tgz", - "integrity": "sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", - "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/is-yarn-global": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", - "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", - "dev": true - }, - "node_modules/isarray": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isomorphic-fetch": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz", - "integrity": "sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==", - "dev": true, - "dependencies": { - "node-fetch": "^2.6.1", - "whatwg-fetch": "^3.4.1" - } - }, - "node_modules/isomorphic-fetch/node_modules/node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", - "dev": true, - "engines": { - "node": "4.x || >=6.0.0" - } - }, - "node_modules/isomorphic-unfetch": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz", - "integrity": "sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==", - "dev": true, - "dependencies": { - "node-fetch": "^2.6.1", - "unfetch": "^4.2.0" - } - }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true - }, - "node_modules/istanbul-api": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.3.7.tgz", - "integrity": "sha512-4/ApBnMVeEPG3EkSzcw25wDe4N66wxwn+KKn6b47vyek8Xb3NBAcg4xfuQbS7BqcZuTX4wxfD5lVagdggR3gyA==", - "dev": true, - "dependencies": { - "async": "^2.1.4", - "fileset": "^2.0.2", - "istanbul-lib-coverage": "^1.2.1", - "istanbul-lib-hook": "^1.2.2", - "istanbul-lib-instrument": "^1.10.2", - "istanbul-lib-report": "^1.1.5", - "istanbul-lib-source-maps": "^1.2.6", - "istanbul-reports": "^1.5.1", - "js-yaml": "^3.7.0", - "mkdirp": "^0.5.1", - "once": "^1.4.0" - } - }, - "node_modules/istanbul-lib-coverage": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz", - "integrity": "sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ==", - "dev": true - }, - "node_modules/istanbul-lib-hook": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.2.2.tgz", - "integrity": "sha512-/Jmq7Y1VeHnZEQ3TL10VHyb564mn6VrQXHchON9Jf/AEcmQ3ZIiyD1BVzNOKTZf/G3gE+kiGK6SmpF9y3qGPLw==", - "dev": true, - "dependencies": { - "append-transform": "^0.4.0" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.2.tgz", - "integrity": "sha512-aWHxfxDqvh/ZlxR8BBaEPVSWDPUkGD63VjGQn3jcw8jCp7sHEMKcrj4xfJn/ABzdMEHiQNyvDQhqm5o8+SQg7A==", - "dev": true, - "dependencies": { - "babel-generator": "^6.18.0", - "babel-template": "^6.16.0", - "babel-traverse": "^6.18.0", - "babel-types": "^6.18.0", - "babylon": "^6.18.0", - "istanbul-lib-coverage": "^1.2.1", - "semver": "^5.3.0" - } - }, - "node_modules/istanbul-lib-instrument/node_modules/babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true, - "bin": { - "babylon": "bin/babylon.js" - } - }, - "node_modules/istanbul-lib-report": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.5.tgz", - "integrity": "sha512-UsYfRMoi6QO/doUshYNqcKJqVmFe9w51GZz8BS3WB0lYxAllQYklka2wP9+dGZeHYaWIdcXUx8JGdbqaoXRXzw==", - "dev": true, - "dependencies": { - "istanbul-lib-coverage": "^1.2.1", - "mkdirp": "^0.5.1", - "path-parse": "^1.0.5", - "supports-color": "^3.1.2" - } - }, - "node_modules/istanbul-lib-report/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/istanbul-lib-report/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "dependencies": { - "has-flag": "^1.0.0" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.6.tgz", - "integrity": "sha512-TtbsY5GIHgbMsMiRw35YBHGpZ1DVFEO19vxxeiDMYaeOFOCzfnYVxvl6pOUIZR4dtPhAGpSMup8OyF8ubsaqEg==", - "dev": true, - "dependencies": { - "debug": "^3.1.0", - "istanbul-lib-coverage": "^1.2.1", - "mkdirp": "^0.5.1", - "rimraf": "^2.6.1", - "source-map": "^0.5.3" - } - }, - "node_modules/istanbul-reports": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.5.1.tgz", - "integrity": "sha512-+cfoZ0UXzWjhAdzosCPP3AN8vvef8XDkWtTfgaN+7L3YTpNYITnCaEkceo5SEYy644VkHka/P1FvkWvrG/rrJw==", - "dev": true, - "dependencies": { - "handlebars": "^4.0.3" - } - }, - "node_modules/java-properties": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/java-properties/-/java-properties-1.0.2.tgz", - "integrity": "sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ==", - "dev": true, - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/jest": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/jest/-/jest-21.2.1.tgz", - "integrity": "sha512-mXN0ppPvWYoIcC+R+ctKxAJ28xkt/Z5Js875padm4GbgUn6baeR5N4Ng6LjatIRpUQDZVJABT7Y4gucFjPryfw==", - "dev": true, - "dependencies": { - "jest-cli": "^21.2.1" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/jest-changed-files": { - "version": "21.2.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-21.2.0.tgz", - "integrity": "sha512-+lCNP1IZLwN1NOIvBcV5zEL6GENK6TXrDj4UxWIeLvIsIDa+gf6J7hkqsW2qVVt/wvH65rVvcPwqXdps5eclTQ==", - "dev": true, - "dependencies": { - "throat": "^4.0.0" - } - }, - "node_modules/jest-config": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-21.2.1.tgz", - "integrity": "sha512-fJru5HtlD/5l2o25eY9xT0doK3t2dlglrqoGpbktduyoI0T5CwuB++2YfoNZCrgZipTwPuAGonYv0q7+8yDc/A==", - "dev": true, - "dependencies": { - "chalk": "^2.0.1", - "glob": "^7.1.1", - "jest-environment-jsdom": "^21.2.1", - "jest-environment-node": "^21.2.1", - "jest-get-type": "^21.2.0", - "jest-jasmine2": "^21.2.1", - "jest-regex-util": "^21.2.0", - "jest-resolve": "^21.2.0", - "jest-util": "^21.2.1", - "jest-validate": "^21.2.1", - "pretty-format": "^21.2.1" - } - }, - "node_modules/jest-diff": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-21.2.1.tgz", - "integrity": "sha512-E5fu6r7PvvPr5qAWE1RaUwIh/k6Zx/3OOkZ4rk5dBJkEWRrUuSgbMt2EO8IUTPTd6DOqU3LW6uTIwX5FRvXoFA==", - "dev": true, - "dependencies": { - "chalk": "^2.0.1", - "diff": "^3.2.0", - "jest-get-type": "^21.2.0", - "pretty-format": "^21.2.1" - } - }, - "node_modules/jest-docblock": { - "version": "21.2.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-21.2.0.tgz", - "integrity": "sha512-5IZ7sY9dBAYSV+YjQ0Ovb540Ku7AO9Z5o2Cg789xj167iQuZ2cG+z0f3Uct6WeYLbU6aQiM2pCs7sZ+4dotydw==", - "dev": true - }, - "node_modules/jest-environment-jsdom": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-21.2.1.tgz", - "integrity": "sha512-mecaeNh0eWmzNrUNMWARysc0E9R96UPBamNiOCYL28k7mksb1d0q6DD38WKP7ABffjnXyUWJPVaWRgUOivwXwg==", - "dev": true, - "dependencies": { - "jest-mock": "^21.2.0", - "jest-util": "^21.2.1", - "jsdom": "^9.12.0" - } - }, - "node_modules/jest-environment-node": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-21.2.1.tgz", - "integrity": "sha512-R211867wx9mVBVHzrjGRGTy5cd05K7eqzQl/WyZixR/VkJ4FayS8qkKXZyYnwZi6Rxo6WEV81cDbiUx/GfuLNw==", - "dev": true, - "dependencies": { - "jest-mock": "^21.2.0", - "jest-util": "^21.2.1" - } - }, - "node_modules/jest-get-type": { - "version": "21.2.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-21.2.0.tgz", - "integrity": "sha512-y2fFw3C+D0yjNSDp7ab1kcd6NUYfy3waPTlD8yWkAtiocJdBRQqNoRqVfMNxgj+IjT0V5cBIHJO0z9vuSSZ43Q==", - "dev": true - }, - "node_modules/jest-haste-map": { - "version": "21.2.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-21.2.0.tgz", - "integrity": "sha512-5LhsY/loPH7wwOFRMs+PT4aIAORJ2qwgbpMFlbWbxfN0bk3ZCwxJ530vrbSiTstMkYLao6JwBkLhCJ5XbY7ZHw==", - "dev": true, - "dependencies": { - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.1.11", - "jest-docblock": "^21.2.0", - "micromatch": "^2.3.11", - "sane": "^2.0.0", - "worker-farm": "^1.3.1" - } - }, - "node_modules/jest-jasmine2": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-21.2.1.tgz", - "integrity": "sha512-lw8FXXIEekD+jYNlStfgNsUHpfMWhWWCgHV7n0B7mA/vendH7vBFs8xybjQsDzJSduptBZJHqQX9SMssya9+3A==", - "dev": true, - "dependencies": { - "chalk": "^2.0.1", - "expect": "^21.2.1", - "graceful-fs": "^4.1.11", - "jest-diff": "^21.2.1", - "jest-matcher-utils": "^21.2.1", - "jest-message-util": "^21.2.1", - "jest-snapshot": "^21.2.1", - "p-cancelable": "^0.3.0" - } - }, - "node_modules/jest-matcher-utils": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-21.2.1.tgz", - "integrity": "sha512-kn56My+sekD43dwQPrXBl9Zn9tAqwoy25xxe7/iY4u+mG8P3ALj5IK7MLHZ4Mi3xW7uWVCjGY8cm4PqgbsqMCg==", - "dev": true, - "dependencies": { - "chalk": "^2.0.1", - "jest-get-type": "^21.2.0", - "pretty-format": "^21.2.1" - } - }, - "node_modules/jest-message-util": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-21.2.1.tgz", - "integrity": "sha512-EbC1X2n0t9IdeMECJn2BOg7buOGivCvVNjqKMXTzQOu7uIfLml+keUfCALDh8o4rbtndIeyGU8/BKfoTr/LVDQ==", - "dev": true, - "dependencies": { - "chalk": "^2.0.1", - "micromatch": "^2.3.11", - "slash": "^1.0.0" - } - }, - "node_modules/jest-mock": { - "version": "21.2.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-21.2.0.tgz", - "integrity": "sha512-aZDfyVf0LEoABWiY6N0d+O963dUQSyUa4qgzurHR3TBDPen0YxKCJ6l2i7lQGh1tVdsuvdrCZ4qPj+A7PievCw==", - "dev": true - }, - "node_modules/jest-regex-util": { - "version": "21.2.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-21.2.0.tgz", - "integrity": "sha512-BKQ1F83EQy0d9Jen/mcVX7D+lUt2tthhK/2gDWRgLDJRNOdRgSp1iVqFxP8EN1ARuypvDflRfPzYT8fQnoBQFQ==", - "dev": true - }, - "node_modules/jest-resolve": { - "version": "21.2.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-21.2.0.tgz", - "integrity": "sha512-vefQ/Lr+VdNvHUZFQXWtOqHX3HEdOc2MtSahBO89qXywEbUxGPB9ZLP9+BHinkxb60UT2Q/tTDOS6rYc6Mwigw==", - "dev": true, - "dependencies": { - "browser-resolve": "^1.11.2", - "chalk": "^2.0.1", - "is-builtin-module": "^1.0.0" - } - }, - "node_modules/jest-resolve-dependencies": { - "version": "21.2.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-21.2.0.tgz", - "integrity": "sha512-ok8ybRFU5ScaAcfufIQrCbdNJSRZ85mkxJ1EhUp8Bhav1W1/jv/rl1Q6QoVQHObNxmKnbHVKrfLZbCbOsXQ+bQ==", - "dev": true, - "dependencies": { - "jest-regex-util": "^21.2.0" - } - }, - "node_modules/jest-runner": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-21.2.1.tgz", - "integrity": "sha512-Anb72BOQlHqF/zETqZ2K20dbYsnqW/nZO7jV8BYENl+3c44JhMrA8zd1lt52+N7ErnsQMd2HHKiVwN9GYSXmrg==", - "dev": true, - "dependencies": { - "jest-config": "^21.2.1", - "jest-docblock": "^21.2.0", - "jest-haste-map": "^21.2.0", - "jest-jasmine2": "^21.2.1", - "jest-message-util": "^21.2.1", - "jest-runtime": "^21.2.1", - "jest-util": "^21.2.1", - "pify": "^3.0.0", - "throat": "^4.0.0", - "worker-farm": "^1.3.1" - } - }, - "node_modules/jest-runtime": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-21.2.1.tgz", - "integrity": "sha512-6omlpA3+NSE+rHwD0PQjNEjZeb2z+oRmuehMfM1tWQVum+E0WV3pFt26Am0DUfQkkPyTABvxITRjCUclYgSOsA==", - "dev": true, - "dependencies": { - "babel-core": "^6.0.0", - "babel-jest": "^21.2.0", - "babel-plugin-istanbul": "^4.0.0", - "chalk": "^2.0.1", - "convert-source-map": "^1.4.0", - "graceful-fs": "^4.1.11", - "jest-config": "^21.2.1", - "jest-haste-map": "^21.2.0", - "jest-regex-util": "^21.2.0", - "jest-resolve": "^21.2.0", - "jest-util": "^21.2.1", - "json-stable-stringify": "^1.0.1", - "micromatch": "^2.3.11", - "slash": "^1.0.0", - "strip-bom": "3.0.0", - "write-file-atomic": "^2.1.0", - "yargs": "^9.0.0" - }, - "bin": { - "jest-runtime": "bin/jest-runtime.js" - } - }, - "node_modules/jest-runtime/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jest-runtime/node_modules/camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest-runtime/node_modules/cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dev": true, - "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } - }, - "node_modules/jest-runtime/node_modules/cliui/node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jest-runtime/node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "dependencies": { - "locate-path": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest-runtime/node_modules/get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", - "dev": true - }, - "node_modules/jest-runtime/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jest-runtime/node_modules/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=", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest-runtime/node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest-runtime/node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "dependencies": { - "p-try": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest-runtime/node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "dependencies": { - "p-limit": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest-runtime/node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest-runtime/node_modules/path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", - "dev": true, - "dependencies": { - "pify": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest-runtime/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jest-runtime/node_modules/read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", - "dev": true, - "dependencies": { - "load-json-file": "^2.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest-runtime/node_modules/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=", - "dev": true, - "dependencies": { - "find-up": "^2.0.0", - "read-pkg": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest-runtime/node_modules/require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "dev": true - }, - "node_modules/jest-runtime/node_modules/string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest-runtime/node_modules/string-width/node_modules/ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest-runtime/node_modules/string-width/node_modules/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=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest-runtime/node_modules/string-width/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "dependencies": { - "ansi-regex": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest-runtime/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jest-runtime/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest-runtime/node_modules/wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "dev": true, - "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jest-runtime/node_modules/wrap-ansi/node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jest-runtime/node_modules/y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", - "dev": true - }, - "node_modules/jest-runtime/node_modules/yargs": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-9.0.1.tgz", - "integrity": "sha1-UqzCP+7Kw0BCB47njAwAf1CF20w=", - "dev": true, - "dependencies": { - "camelcase": "^4.1.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", - "read-pkg-up": "^2.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^7.0.0" - } - }, - "node_modules/jest-runtime/node_modules/yargs-parser": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", - "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", - "dev": true, - "dependencies": { - "camelcase": "^4.1.0" - } - }, - "node_modules/jest-snapshot": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-21.2.1.tgz", - "integrity": "sha512-bpaeBnDpdqaRTzN8tWg0DqOTo2DvD3StOemxn67CUd1p1Po+BUpvePAp44jdJ7Pxcjfg+42o4NHw1SxdCA2rvg==", - "dev": true, - "dependencies": { - "chalk": "^2.0.1", - "jest-diff": "^21.2.1", - "jest-matcher-utils": "^21.2.1", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "pretty-format": "^21.2.1" - } - }, - "node_modules/jest-util": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-21.2.1.tgz", - "integrity": "sha512-r20W91rmHY3fnCoO7aOAlyfC51x2yeV3xF+prGsJAUsYhKeV670ZB8NO88Lwm7ASu8SdH0S+U+eFf498kjhA4g==", - "dev": true, - "dependencies": { - "callsites": "^2.0.0", - "chalk": "^2.0.1", - "graceful-fs": "^4.1.11", - "jest-message-util": "^21.2.1", - "jest-mock": "^21.2.0", - "jest-validate": "^21.2.1", - "mkdirp": "^0.5.1" - } - }, - "node_modules/jest-util/node_modules/callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest-validate": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-21.2.1.tgz", - "integrity": "sha512-k4HLI1rZQjlU+EC682RlQ6oZvLrE5SCh3brseQc24vbZTxzT/k/3urar5QMCVgjadmSO7lECeGdc6YxnM3yEGg==", - "dev": true, - "dependencies": { - "chalk": "^2.0.1", - "jest-get-type": "^21.2.0", - "leven": "^2.1.0", - "pretty-format": "^21.2.1" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-worker/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest/node_modules/ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest/node_modules/camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest/node_modules/cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dev": true, - "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } - }, - "node_modules/jest/node_modules/cliui/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jest/node_modules/cliui/node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jest/node_modules/cliui/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jest/node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "dependencies": { - "locate-path": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest/node_modules/get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", - "dev": true - }, - "node_modules/jest/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jest/node_modules/jest-cli": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-21.2.1.tgz", - "integrity": "sha512-T1BzrbFxDIW/LLYQqVfo94y/hhaj1NzVQkZgBumAC+sxbjMROI7VkihOdxNR758iYbQykL2ZOWUBurFgkQrzdg==", - "dev": true, - "dependencies": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.1", - "glob": "^7.1.2", - "graceful-fs": "^4.1.11", - "is-ci": "^1.0.10", - "istanbul-api": "^1.1.1", - "istanbul-lib-coverage": "^1.0.1", - "istanbul-lib-instrument": "^1.4.2", - "istanbul-lib-source-maps": "^1.1.0", - "jest-changed-files": "^21.2.0", - "jest-config": "^21.2.1", - "jest-environment-jsdom": "^21.2.1", - "jest-haste-map": "^21.2.0", - "jest-message-util": "^21.2.1", - "jest-regex-util": "^21.2.0", - "jest-resolve-dependencies": "^21.2.0", - "jest-runner": "^21.2.1", - "jest-runtime": "^21.2.1", - "jest-snapshot": "^21.2.1", - "jest-util": "^21.2.1", - "micromatch": "^2.3.11", - "node-notifier": "^5.0.2", - "pify": "^3.0.0", - "slash": "^1.0.0", - "string-length": "^2.0.0", - "strip-ansi": "^4.0.0", - "which": "^1.2.12", - "worker-farm": "^1.3.1", - "yargs": "^9.0.0" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/jest/node_modules/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=", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest/node_modules/load-json-file/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jest/node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest/node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "dependencies": { - "p-try": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest/node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "dependencies": { - "p-limit": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest/node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest/node_modules/path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", - "dev": true, - "dependencies": { - "pify": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest/node_modules/path-type/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jest/node_modules/read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", - "dev": true, - "dependencies": { - "load-json-file": "^2.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest/node_modules/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=", - "dev": true, - "dependencies": { - "find-up": "^2.0.0", - "read-pkg": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest/node_modules/require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "dev": true - }, - "node_modules/jest/node_modules/string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest/node_modules/string-width/node_modules/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=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "dependencies": { - "ansi-regex": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest/node_modules/wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "dev": true, - "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jest/node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jest/node_modules/wrap-ansi/node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jest/node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jest/node_modules/y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", - "dev": true - }, - "node_modules/jest/node_modules/yargs": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-9.0.1.tgz", - "integrity": "sha1-UqzCP+7Kw0BCB47njAwAf1CF20w=", - "dev": true, - "dependencies": { - "camelcase": "^4.1.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", - "read-pkg-up": "^2.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^7.0.0" - } - }, - "node_modules/jest/node_modules/yargs-parser": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", - "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", - "dev": true, - "dependencies": { - "camelcase": "^4.1.0" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "node_modules/js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsbn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", - "integrity": "sha1-sBMHyym2GKHtJux56RH4A8TaAEA=" - }, - "node_modules/jsdom": { - "version": "9.12.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-9.12.0.tgz", - "integrity": "sha1-6MVG//ywbADUgzyoRBD+1/igl9Q=", - "dev": true, - "dependencies": { - "abab": "^1.0.3", - "acorn": "^4.0.4", - "acorn-globals": "^3.1.0", - "array-equal": "^1.0.0", - "content-type-parser": "^1.0.1", - "cssom": ">= 0.3.2 < 0.4.0", - "cssstyle": ">= 0.2.37 < 0.3.0", - "escodegen": "^1.6.1", - "html-encoding-sniffer": "^1.0.1", - "nwmatcher": ">= 1.3.9 < 2.0.0", - "parse5": "^1.5.1", - "request": "^2.79.0", - "sax": "^1.2.1", - "symbol-tree": "^3.2.1", - "tough-cookie": "^2.3.2", - "webidl-conversions": "^4.0.0", - "whatwg-encoding": "^1.0.1", - "whatwg-url": "^4.3.0", - "xml-name-validator": "^2.0.1" - } - }, - "node_modules/jsdom/node_modules/acorn": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "devOptional": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", - "dev": true - }, - "node_modules/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==", - "dev": true - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "node_modules/json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", - "dev": true - }, - "node_modules/json-stable-stringify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "dev": true, - "dependencies": { - "jsonify": "~0.0.0" - } - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "node_modules/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=", - "dev": true - }, - "node_modules/json3": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", - "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==", - "dev": true - }, - "node_modules/json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/jsonc-parser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.2.0.tgz", - "integrity": "sha512-4fLQxW1j/5fWj6p78vAlAafoCKtuBm6ghv+Ij5W2DrDx0qE+ZdEl2c6Ko1mgJNF5ftX1iEWQQ4Ap7+3GlhjkOA==", - "dev": true - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "node_modules/jsx-ast-utils": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.2.3.tgz", - "integrity": "sha512-EdIHFMm+1BPynpKOpdPqiOsvnIrInRGJD7bzPZdPkjitQEqpdpUuFpq4T0npZFKTiB3RhWFdGN+oqOJIdhDhQA==", - "dev": true, - "dependencies": { - "array-includes": "^3.0.3", - "object.assign": "^4.1.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "dev": true, - "dependencies": { - "json-buffer": "3.0.0" - } - }, - "node_modules/killable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", - "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", - "dev": true - }, - "node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/kind-of/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/kleur": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.4.tgz", - "integrity": "sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/klona": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.4.tgz", - "integrity": "sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "lodash": "^4.17.5", - "webpack-sources": "^1.1.0" - } - }, - "node_modules/latest-version": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", - "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", - "dev": true, - "dependencies": { - "package-json": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lazy-ass": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", - "integrity": "sha1-eZllXoZGwX8In90YfRUNMyTVRRM=", - "dev": true, - "engines": { - "node": "> 0.8" - } - }, - "node_modules/lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dev": true, - "dependencies": { - "invert-kv": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/leaflet": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.7.1.tgz", - "integrity": "sha512-/xwPEBidtg69Q3HlqPdU3DnrXQOvQU/CCHA1tcDQVzOwm91YMYaILjNp7L4Eaw5Z4sOYdbBz6koWyibppd8Zqw==" - }, - "node_modules/leven": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", - "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lilconfig": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.3.tgz", - "integrity": "sha512-EHKqr/+ZvdKCifpNrJCKxBTgk5XupZA3y/aCPY9mxfgBzmgh93Mt/WqjjQ38oMxXuvDokaKiM3lAgvSH2sjtHg==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/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=", - "dev": true - }, - "node_modules/linkstate": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/linkstate/-/linkstate-1.1.1.tgz", - "integrity": "sha512-5SICdxQG9FpWk44wSEoM2WOCUNuYfClp10t51XAIV5E7vUILF/dTYxf0vJw6bW2dUd2wcQon+LkNtRijpNLrig==" - }, - "node_modules/listr": { - "version": "0.14.3", - "resolved": "https://registry.npmjs.org/listr/-/listr-0.14.3.tgz", - "integrity": "sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==", - "dev": true, - "dependencies": { - "@samverschueren/stream-to-observable": "^0.3.0", - "is-observable": "^1.1.0", - "is-promise": "^2.1.0", - "is-stream": "^1.1.0", - "listr-silent-renderer": "^1.1.1", - "listr-update-renderer": "^0.5.0", - "listr-verbose-renderer": "^0.5.0", - "p-map": "^2.0.0", - "rxjs": "^6.3.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/listr-silent-renderer": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", - "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/listr-update-renderer": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz", - "integrity": "sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==", - "dev": true, - "dependencies": { - "chalk": "^1.1.3", - "cli-truncate": "^0.2.1", - "elegant-spinner": "^1.0.1", - "figures": "^1.7.0", - "indent-string": "^3.0.0", - "log-symbols": "^1.0.2", - "log-update": "^2.3.0", - "strip-ansi": "^3.0.1" - }, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "listr": "^0.14.2" - } - }, - "node_modules/listr-update-renderer/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/listr-update-renderer/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/listr-update-renderer/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/listr-update-renderer/node_modules/figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", - "dev": true, - "dependencies": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/listr-update-renderer/node_modules/indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/listr-update-renderer/node_modules/log-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", - "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", - "dev": true, - "dependencies": { - "chalk": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/listr-update-renderer/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/listr-verbose-renderer": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz", - "integrity": "sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==", - "dev": true, - "dependencies": { - "chalk": "^2.4.1", - "cli-cursor": "^2.1.0", - "date-fns": "^1.27.2", - "figures": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/listr-verbose-renderer/node_modules/date-fns": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", - "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==", - "dev": true - }, - "node_modules/listr/node_modules/p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/load-json-file/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/loader-runner": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", - "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", - "dev": true, - "engines": { - "node": ">=4.3.0 <5.0.0 || >=5.10" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/loader-utils/node_modules/json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/loader-utils/node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "node_modules/local-access": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/local-access/-/local-access-1.1.0.tgz", - "integrity": "sha512-XfegD5pyTAfb+GY6chk283Ox5z8WexG56OvM06RWLpAc/UHozO8X6xAxEkIitZOtsSMM1Yr3DkHgW5W+onLhCw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" - }, - "node_modules/lodash-es": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.15.tgz", - "integrity": "sha512-rlrc3yU3+JNOpZ9zj5pQtxnx2THmvRykwL4Xlxoa8I9lHBlVbbyPhgyPMioxVZ4NqyxaVVtaJnzsyOidQIhyyQ==" - }, - "node_modules/lodash._basebind": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/lodash._basebind/-/lodash._basebind-2.3.0.tgz", - "integrity": "sha1-K1vEUqDhBhQ7IYafIzvbWHQX0kg=", - "dev": true, - "dependencies": { - "lodash._basecreate": "~2.3.0", - "lodash._setbinddata": "~2.3.0", - "lodash.isobject": "~2.3.0" - } - }, - "node_modules/lodash._basecreate": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-2.3.0.tgz", - "integrity": "sha1-m4ioak3P97fzxh2Dovz8BnHsneA=", - "dev": true, - "dependencies": { - "lodash._renative": "~2.3.0", - "lodash.isobject": "~2.3.0", - "lodash.noop": "~2.3.0" - } - }, - "node_modules/lodash._basecreatecallback": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/lodash._basecreatecallback/-/lodash._basecreatecallback-2.3.0.tgz", - "integrity": "sha1-N7KrF1kaM56YjbMln81GAZ16w2I=", - "dev": true, - "dependencies": { - "lodash._setbinddata": "~2.3.0", - "lodash.bind": "~2.3.0", - "lodash.identity": "~2.3.0", - "lodash.support": "~2.3.0" - } - }, - "node_modules/lodash._basecreatewrapper": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/lodash._basecreatewrapper/-/lodash._basecreatewrapper-2.3.0.tgz", - "integrity": "sha1-qgxhrZYETDkzN2ExSDqXWcNlEkc=", - "dev": true, - "dependencies": { - "lodash._basecreate": "~2.3.0", - "lodash._setbinddata": "~2.3.0", - "lodash._slice": "~2.3.0", - "lodash.isobject": "~2.3.0" - } - }, - "node_modules/lodash._createwrapper": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/lodash._createwrapper/-/lodash._createwrapper-2.3.0.tgz", - "integrity": "sha1-0arhEC2t9EDo4G/BM6bt1/4UYHU=", - "dev": true, - "dependencies": { - "lodash._basebind": "~2.3.0", - "lodash._basecreatewrapper": "~2.3.0", - "lodash.isfunction": "~2.3.0" - } - }, - "node_modules/lodash._objecttypes": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/lodash._objecttypes/-/lodash._objecttypes-2.3.0.tgz", - "integrity": "sha1-aj6jmH3W7rgCGy1cnDA1Scwrrh4=", - "dev": true - }, - "node_modules/lodash._renative": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/lodash._renative/-/lodash._renative-2.3.0.tgz", - "integrity": "sha1-d9jt1M7SbdWXH54Vpfdy5OMX+9M=", - "dev": true - }, - "node_modules/lodash._setbinddata": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/lodash._setbinddata/-/lodash._setbinddata-2.3.0.tgz", - "integrity": "sha1-5WEEkKzRMnfVmFjZW18nJ/FQjwQ=", - "dev": true, - "dependencies": { - "lodash._renative": "~2.3.0", - "lodash.noop": "~2.3.0" - } - }, - "node_modules/lodash._shimkeys": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/lodash._shimkeys/-/lodash._shimkeys-2.3.0.tgz", - "integrity": "sha1-YR+TFJ4+bHIQlrSHae8pU3rai6k=", - "dev": true, - "dependencies": { - "lodash._objecttypes": "~2.3.0" - } - }, - "node_modules/lodash._slice": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/lodash._slice/-/lodash._slice-2.3.0.tgz", - "integrity": "sha1-FHGYEyhZly5GgMoppZkshVZpqlw=", - "dev": true - }, - "node_modules/lodash.bind": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-2.3.0.tgz", - "integrity": "sha1-wqjhi2jl7MFS4rFoJmEW/qWwFsw=", - "dev": true, - "dependencies": { - "lodash._createwrapper": "~2.3.0", - "lodash._renative": "~2.3.0", - "lodash._slice": "~2.3.0" - } - }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", - "dev": true - }, - "node_modules/lodash.foreach": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-2.3.0.tgz", - "integrity": "sha1-CDQEyR6EbudyRf3512UZxosq8Wg=", - "dev": true, - "dependencies": { - "lodash._basecreatecallback": "~2.3.0", - "lodash.forown": "~2.3.0" - } - }, - "node_modules/lodash.forown": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/lodash.forown/-/lodash.forown-2.3.0.tgz", - "integrity": "sha1-JPtKr4ANRfwtxgv+w84EyDajrX8=", - "dev": true, - "dependencies": { - "lodash._basecreatecallback": "~2.3.0", - "lodash._objecttypes": "~2.3.0", - "lodash.keys": "~2.3.0" - } - }, - "node_modules/lodash.identity": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/lodash.identity/-/lodash.identity-2.3.0.tgz", - "integrity": "sha1-awGiEMlIU1XCqRO0i2cRIZoXPe0=", - "dev": true - }, - "node_modules/lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", - "dev": true - }, - "node_modules/lodash.isfunction": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-2.3.0.tgz", - "integrity": "sha1-aylz5HpkfPEucNZ2rqE2Q3BuUmc=", - "dev": true - }, - "node_modules/lodash.isobject": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-2.3.0.tgz", - "integrity": "sha1-LhbT/Fg9qYMZaJU/LY5tc0NPZ5k=", - "dev": true, - "dependencies": { - "lodash._objecttypes": "~2.3.0" - } - }, - "node_modules/lodash.keys": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.3.0.tgz", - "integrity": "sha1-s1D0+Syqn0WkouzwGEVM8vKK4lM=", - "dev": true, - "dependencies": { - "lodash._renative": "~2.3.0", - "lodash._shimkeys": "~2.3.0", - "lodash.isobject": "~2.3.0" - } - }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", - "dev": true - }, - "node_modules/lodash.noop": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/lodash.noop/-/lodash.noop-2.3.0.tgz", - "integrity": "sha1-MFnWKNUbv5N80qC2/Dp/ISpmnCw=", - "dev": true - }, - "node_modules/lodash.once": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=", - "dev": true - }, - "node_modules/lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", - "dev": true - }, - "node_modules/lodash.support": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/lodash.support/-/lodash.support-2.3.0.tgz", - "integrity": "sha1-fq8DivTw1qq3drRKptz8gDNMm/0=", - "dev": true, - "dependencies": { - "lodash._renative": "~2.3.0" - } - }, - "node_modules/lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", - "dev": true - }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-symbols/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/log-symbols/node_modules/chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/log-symbols/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/log-symbols/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/log-symbols/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/log-symbols/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/log-update": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz", - "integrity": "sha1-iDKP19HOeTiykoN0bwsbwSayRwg=", - "dev": true, - "dependencies": { - "ansi-escapes": "^3.0.0", - "cli-cursor": "^2.0.0", - "wrap-ansi": "^3.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/log-update/node_modules/ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/log-update/node_modules/string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/log-update/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "dependencies": { - "ansi-regex": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/log-update/node_modules/wrap-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz", - "integrity": "sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=", - "dev": true, - "dependencies": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/loglevel": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz", - "integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==", - "dev": true, - "engines": { - "node": ">= 0.6.0" - }, - "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/loglevel" - } - }, - "node_modules/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==", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", - "dev": true - }, - "node_modules/lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "sourcemap-codec": "^1.4.4" - } - }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/makeerror": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", - "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", - "dev": true, - "dependencies": { - "tmpl": "1.0.x" - } - }, - "node_modules/map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", - "dev": true, - "dependencies": { - "p-defer": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "dependencies": { - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/math-random": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz", - "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==", - "dev": true - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/mdn-browser-compat-data": { - "version": "0.0.65", - "resolved": "https://registry.npmjs.org/mdn-browser-compat-data/-/mdn-browser-compat-data-0.0.65.tgz", - "integrity": "sha512-OC27wWCLD2mw2aW6+8zZTwCv0+9WMTOFxuvTBfWoCx8f9gVFNUXHxGYA16mhKyso7hEa4tw1hY+ruCB/kg3EzQ==", - "deprecated": "mdn-browser-compat-data is deprecated. Upgrade to @mdn/browser-compat-data. Learn more: https://github.com/mdn/browser-compat-data/blob/v1.1.2/UPGRADE-2.0.x.md", - "dev": true, - "dependencies": { - "extend": "3.0.2" - } - }, - "node_modules/mdn-data": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", - "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", - "dev": true - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mem": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", - "dev": true, - "dependencies": { - "mimic-fn": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/memoize-one": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-4.0.3.tgz", - "integrity": "sha512-QmpUu4KqDmX0plH4u+tf0riMc1KHE1+lw95cMrLlXQAFOx/xnBtwhZ52XJxd9X2O6kwKBqX32kmhbhlobD0cuw==" - }, - "node_modules/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=", - "dev": true, - "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "node_modules/merge": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.1.tgz", - "integrity": "sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ==", - "dev": true - }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", - "dev": true - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/microevent.ts": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/microevent.ts/-/microevent.ts-0.1.1.tgz", - "integrity": "sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g==", - "dev": true - }, - "node_modules/micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "dependencies": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "dependencies": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "bin": { - "miller-rabin": "bin/miller-rabin" - } - }, - "node_modules/miller-rabin/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/mime": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", - "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", - "dev": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/mime-db": { - "version": "1.42.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.42.0.tgz", - "integrity": "sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.25", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.25.tgz", - "integrity": "sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg==", - "dev": true, - "dependencies": { - "mime-db": "1.42.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/mini-css-extract-plugin": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-1.6.2.tgz", - "integrity": "sha512-WhDvO3SjGm40oV5y26GjMJYjd2UMqrLAGKy5YS2/3QKJy2F7jgynuHTir/tgUUOiNQu5saXHdc8reo7YuhhT4Q==", - "dev": true, - "dependencies": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0", - "webpack-sources": "^1.1.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.4.0 || ^5.0.0" - } - }, - "node_modules/mini-css-extract-plugin/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/mini-css-extract-plugin/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/mini-css-extract-plugin/node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/mini-css-extract-plugin/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", - "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.7", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "node_modules/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=", - "dev": true - }, - "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - }, - "node_modules/minipass": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", - "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minipass-flush": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minipass-pipeline": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", - "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minizlib/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/mississippi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", - "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", - "dev": true, - "dependencies": { - "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" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "dependencies": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mixin-deep/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", - "dev": true, - "dependencies": { - "minimist": "0.0.8" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/moment": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", - "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/move-concurrently": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", - "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", - "dev": true, - "dependencies": { - "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" - } - }, - "node_modules/mri": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.1.6.tgz", - "integrity": "sha512-oi1b3MfbyGa7FJMP9GmLTttni5JoICpYBRlq+x5V16fZbLsnL9N3wFqqIm/nIG43FjUFkFh9Epzp/kzUGUnJxQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "node_modules/multicast-dns": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", - "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", - "dev": true, - "dependencies": { - "dns-packet": "^1.3.1", - "thunky": "^1.0.2" - }, - "bin": { - "multicast-dns": "cli.js" - } - }, - "node_modules/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=", - "dev": true - }, - "node_modules/mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", - "dev": true - }, - "node_modules/nanoid": { - "version": "3.1.23", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.23.tgz", - "integrity": "sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw==", - "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/native-url": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/native-url/-/native-url-0.3.4.tgz", - "integrity": "sha512-6iM8R99ze45ivyH8vybJ7X0yekIcPf5GgLV5K0ENCbmRcaRIDoj37BC8iLEmaaBfqqb8enuZ5p0uhY+lVAbAcA==", - "dev": true, - "dependencies": { - "querystring": "^0.2.0" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "node_modules/negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/neo-async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", - "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", - "dev": true - }, - "node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "node_modules/no-case": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", - "dev": true, - "dependencies": { - "lower-case": "^1.1.1" - } - }, - "node_modules/node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", - "dev": true, - "engines": { - "node": "4.x || >=6.0.0" - } - }, - "node_modules/node-forge": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", - "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", - "dev": true, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", - "dev": true - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "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" - } - }, - "node_modules/node-libs-browser/node_modules/buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "dev": true, - "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "node_modules/node-libs-browser/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "node_modules/node-libs-browser/node_modules/punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - }, - "node_modules/node-notifier": { - "version": "5.4.3", - "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.3.tgz", - "integrity": "sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q==", - "dev": true, - "dependencies": { - "growly": "^1.3.0", - "is-wsl": "^1.1.0", - "semver": "^5.5.0", - "shellwords": "^0.1.1", - "which": "^1.3.0" - } - }, - "node_modules/node-releases": { - "version": "1.1.40", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.40.tgz", - "integrity": "sha512-r4LPcC5b/bS8BdtWH1fbeK88ib/wg9aqmg6/s3ngNLn2Ewkn/8J6Iw3P9RTlfIAdSdvYvQl2thCY5Y+qTAQ2iQ==", - "dev": true, - "dependencies": { - "semver": "^6.3.0" - } - }, - "node_modules/node-releases/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/nodent-compiler": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/nodent-compiler/-/nodent-compiler-3.2.11.tgz", - "integrity": "sha512-rfDrGWdgIJYomPUzR8nXiWNuIhJ7cVodPeZP3Ho65LEycuaX2uVNZ0ytpcfrmUKzdFeLRtye9+pHe8OynPZuPQ==", - "engines": "node >= 0.10.0", - "dependencies": { - "acorn": ">= 2.5.2 <= 5.7.3", - "acorn-es7-plugin": "^1.1.7", - "nodent-transform": "^3.2.9", - "source-map": "^0.5.7" - } - }, - "node_modules/nodent-runtime": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/nodent-runtime/-/nodent-runtime-3.2.1.tgz", - "integrity": "sha512-7Ws63oC+215smeKJQCxzrK21VFVlCFBkwl0MOObt0HOpVQXs3u483sAmtkF33nNqZ5rSOQjB76fgyPBmAUrtCA==", - "hasInstallScript": true - }, - "node_modules/nodent-transform": { - "version": "3.2.9", - "resolved": "https://registry.npmjs.org/nodent-transform/-/nodent-transform-3.2.9.tgz", - "integrity": "sha512-4a5FH4WLi+daH/CGD5o/JWRR8W5tlCkd3nrDSkxbOzscJTyTUITltvOJeQjg3HJ1YgEuNyiPhQbvbtRjkQBByQ==" - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/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=", - "dev": true, - "dependencies": { - "path-key": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "boolbase": "~1.0.0" - } - }, - "node_modules/number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nwmatcher": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.4.tgz", - "integrity": "sha512-3iuY4N5dhgMpCUrOVnuAdGrgxVqV2cJpM+XNccjR2DKOB1RUP0aA+wGXEiNziG/UKboFyGBIoKOaNlJxx8bciQ==", - "dev": true - }, - "node_modules/nwsapi": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", - "dev": true - }, - "node_modules/oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "dependencies": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-is": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.1.tgz", - "integrity": "sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY=", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "dependencies": { - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.entries": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.0.tgz", - "integrity": "sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.12.0", - "function-bind": "^1.1.1", - "has": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.1.tgz", - "integrity": "sha512-PUQv8Hbg3j2QX0IQYv3iAGCbGcu4yY4KQ92/dhA4sFSixBmSmp13UpDLs6jGK8rBtbmhNNIK99LD2k293jpiGA==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.15.0", - "function-bind": "^1.1.1", - "has": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.getownpropertydescriptors": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz", - "integrity": "sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2" - }, - "engines": { - "node": ">= 0.8" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.getownpropertydescriptors/node_modules/es-abstract": { - "version": "1.18.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.3.tgz", - "integrity": "sha512-nQIr12dxV7SSxE6r6f1l3DtAeEYdsGpps13dR0TwJg1S8gyp4ZPgy3FZcHBgbiQqnoqSTb+oC+kO4UQ0C/J8vw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "is-callable": "^1.2.3", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.3", - "is-string": "^1.0.6", - "object-inspect": "^1.10.3", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.getownpropertydescriptors/node_modules/has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.getownpropertydescriptors/node_modules/is-callable": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.getownpropertydescriptors/node_modules/is-regex": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz", - "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.getownpropertydescriptors/node_modules/object-inspect": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", - "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.getownpropertydescriptors/node_modules/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==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.omit": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", - "dev": true, - "dependencies": { - "for-own": "^0.1.4", - "is-extendable": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.values": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.0.tgz", - "integrity": "sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.12.0", - "function-bind": "^1.1.1", - "has": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "dev": true - }, - "node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dev": true, - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "dev": true, - "dependencies": { - "mimic-fn": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/opener": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", - "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", - "dev": true, - "bin": { - "opener": "bin/opener-bin.js" - } - }, - "node_modules/opn": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", - "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", - "dev": true, - "dependencies": { - "is-wsl": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "dev": true, - "dependencies": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - } - }, - "node_modules/optimize-css-assets-webpack-plugin": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-6.0.1.tgz", - "integrity": "sha512-BshV2UZPfggZLdUfN3zFBbG4sl/DynUI+YCB6fRRDWaqO2OiWN8GPcp4Y0/fEV6B3k9Hzyk3czve3V/8B/SzKQ==", - "dev": true, - "dependencies": { - "cssnano": "^5.0.2", - "last-call-webpack-plugin": "^3.0.0", - "postcss": "^8.2.1" - }, - "peerDependencies": { - "webpack": "^4.0.0" - } - }, - "node_modules/optimize-css-assets-webpack-plugin/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/optimize-css-assets-webpack-plugin/node_modules/browserslist": { - "version": "4.16.6", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", - "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", - "dev": true, - "dependencies": { - "caniuse-lite": "^1.0.30001219", - "colorette": "^1.2.2", - "electron-to-chromium": "^1.3.723", - "escalade": "^3.1.1", - "node-releases": "^1.1.71" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } - }, - "node_modules/optimize-css-assets-webpack-plugin/node_modules/caniuse-lite": { - "version": "1.0.30001245", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001245.tgz", - "integrity": "sha512-768fM9j1PKXpOCKws6eTo3RHmvTUsG9UrpT4WoREFeZgJBTi4/X9g565azS/rVUGtqb8nt7FjLeF5u4kukERnA==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } - }, - "node_modules/optimize-css-assets-webpack-plugin/node_modules/chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/optimize-css-assets-webpack-plugin/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/optimize-css-assets-webpack-plugin/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/optimize-css-assets-webpack-plugin/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/optimize-css-assets-webpack-plugin/node_modules/css-color-names": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-1.0.1.tgz", - "integrity": "sha512-/loXYOch1qU1biStIFsHH8SxTmOseh1IJqFvy8IujXOm1h+QjUdDhkzOrR5HG8K8mlxREj0yfi8ewCHx0eMxzA==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/optimize-css-assets-webpack-plugin/node_modules/css-declaration-sorter": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.0.3.tgz", - "integrity": "sha512-52P95mvW1SMzuRZegvpluT6yEv0FqQusydKQPZsNN5Q7hh8EwQvN8E2nwuJ16BBvNN6LcoIZXu/Bk58DAhrrxw==", - "dev": true, - "dependencies": { - "timsort": "^0.3.0" - }, - "engines": { - "node": ">= 10" - }, - "peerDependencies": { - "postcss": "^8.0.9" - } - }, - "node_modules/optimize-css-assets-webpack-plugin/node_modules/css-select": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", - "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^5.0.0", - "domhandler": "^4.2.0", - "domutils": "^2.6.0", - "nth-check": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/optimize-css-assets-webpack-plugin/node_modules/css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "dev": true, - "dependencies": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/optimize-css-assets-webpack-plugin/node_modules/css-what": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.0.1.tgz", - "integrity": "sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg==", - "dev": true, - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/optimize-css-assets-webpack-plugin/node_modules/cssnano": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.0.6.tgz", - "integrity": "sha512-NiaLH/7yqGksFGsFNvSRe2IV/qmEBAeDE64dYeD8OBrgp6lE8YoMeQJMtsv5ijo6MPyhuoOvFhI94reahBRDkw==", - "dev": true, - "dependencies": { - "cosmiconfig": "^7.0.0", - "cssnano-preset-default": "^5.1.3", - "is-resolvable": "^1.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/cssnano" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/optimize-css-assets-webpack-plugin/node_modules/cssnano-preset-default": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.1.3.tgz", - "integrity": "sha512-qo9tX+t4yAAZ/yagVV3b+QBKeLklQbmgR3wI7mccrDcR+bEk9iHgZN1E7doX68y9ThznLya3RDmR+nc7l6/2WQ==", - "dev": true, - "dependencies": { - "css-declaration-sorter": "^6.0.3", - "cssnano-utils": "^2.0.1", - "postcss-calc": "^8.0.0", - "postcss-colormin": "^5.2.0", - "postcss-convert-values": "^5.0.1", - "postcss-discard-comments": "^5.0.1", - "postcss-discard-duplicates": "^5.0.1", - "postcss-discard-empty": "^5.0.1", - "postcss-discard-overridden": "^5.0.1", - "postcss-merge-longhand": "^5.0.2", - "postcss-merge-rules": "^5.0.2", - "postcss-minify-font-values": "^5.0.1", - "postcss-minify-gradients": "^5.0.1", - "postcss-minify-params": "^5.0.1", - "postcss-minify-selectors": "^5.1.0", - "postcss-normalize-charset": "^5.0.1", - "postcss-normalize-display-values": "^5.0.1", - "postcss-normalize-positions": "^5.0.1", - "postcss-normalize-repeat-style": "^5.0.1", - "postcss-normalize-string": "^5.0.1", - "postcss-normalize-timing-functions": "^5.0.1", - "postcss-normalize-unicode": "^5.0.1", - "postcss-normalize-url": "^5.0.2", - "postcss-normalize-whitespace": "^5.0.1", - "postcss-ordered-values": "^5.0.2", - "postcss-reduce-initial": "^5.0.1", - "postcss-reduce-transforms": "^5.0.1", - "postcss-svgo": "^5.0.2", - "postcss-unique-selectors": "^5.0.1" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/optimize-css-assets-webpack-plugin/node_modules/dom-serializer": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", - "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", - "dev": true, - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/optimize-css-assets-webpack-plugin/node_modules/domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/optimize-css-assets-webpack-plugin/node_modules/domutils": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.7.0.tgz", - "integrity": "sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg==", - "dev": true, - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/optimize-css-assets-webpack-plugin/node_modules/electron-to-chromium": { - "version": "1.3.776", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.776.tgz", - "integrity": "sha512-V0w7eFSBoFPpdw4xexjVPZ770UDZIevSwkkj4W97XbE3IsCsTRFpa7/yXGZ88EOQAUEA09JMMsWK0xsw0kRAYw==", - "dev": true - }, - "node_modules/optimize-css-assets-webpack-plugin/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/optimize-css-assets-webpack-plugin/node_modules/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==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/optimize-css-assets-webpack-plugin/node_modules/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==", - "dev": true - }, - "node_modules/optimize-css-assets-webpack-plugin/node_modules/node-releases": { - "version": "1.1.73", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz", - "integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==", - "dev": true - }, - "node_modules/optimize-css-assets-webpack-plugin/node_modules/normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/optimize-css-assets-webpack-plugin/node_modules/nth-check": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz", - "integrity": "sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/optimize-css-assets-webpack-plugin/node_modules/postcss-calc": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.0.0.tgz", - "integrity": "sha512-5NglwDrcbiy8XXfPM11F3HeC6hoT9W7GUH/Zi5U/p7u3Irv4rHhdDcIZwG0llHXV4ftsBjpfWMXAnXNl4lnt8g==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.2" - }, - "peerDependencies": { - "postcss": "^8.2.2" - } - }, - "node_modules/optimize-css-assets-webpack-plugin/node_modules/postcss-colormin": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.2.0.tgz", - "integrity": "sha512-+HC6GfWU3upe5/mqmxuqYZ9B2Wl4lcoUUNkoaX59nEWV4EtADCMiBqui111Bu8R8IvaZTmqmxrqOAqjbHIwXPw==", - "dev": true, - "dependencies": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0", - "colord": "^2.0.1", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/optimize-css-assets-webpack-plugin/node_modules/postcss-convert-values": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.0.1.tgz", - "integrity": "sha512-C3zR1Do2BkKkCgC0g3sF8TS0koF2G+mN8xxayZx3f10cIRmTaAnpgpRQZjNekTZxM2ciSPoh2IWJm0VZx8NoQg==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/optimize-css-assets-webpack-plugin/node_modules/postcss-discard-comments": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.0.1.tgz", - "integrity": "sha512-lgZBPTDvWrbAYY1v5GYEv8fEO/WhKOu/hmZqmCYfrpD6eyDWWzAOsl2rF29lpvziKO02Gc5GJQtlpkTmakwOWg==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/optimize-css-assets-webpack-plugin/node_modules/postcss-discard-duplicates": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.1.tgz", - "integrity": "sha512-svx747PWHKOGpAXXQkCc4k/DsWo+6bc5LsVrAsw+OU+Ibi7klFZCyX54gjYzX4TH+f2uzXjRviLARxkMurA2bA==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/optimize-css-assets-webpack-plugin/node_modules/postcss-discard-empty": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.0.1.tgz", - "integrity": "sha512-vfU8CxAQ6YpMxV2SvMcMIyF2LX1ZzWpy0lqHDsOdaKKLQVQGVP1pzhrI9JlsO65s66uQTfkQBKBD/A5gp9STFw==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/optimize-css-assets-webpack-plugin/node_modules/postcss-discard-overridden": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.0.1.tgz", - "integrity": "sha512-Y28H7y93L2BpJhrdUR2SR2fnSsT+3TVx1NmVQLbcnZWwIUpJ7mfcTC6Za9M2PG6w8j7UQRfzxqn8jU2VwFxo3Q==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/optimize-css-assets-webpack-plugin/node_modules/postcss-merge-longhand": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.0.2.tgz", - "integrity": "sha512-BMlg9AXSI5G9TBT0Lo/H3PfUy63P84rVz3BjCFE9e9Y9RXQZD3+h3YO1kgTNsNJy7bBc1YQp8DmSnwLIW5VPcw==", - "dev": true, - "dependencies": { - "css-color-names": "^1.0.1", - "postcss-value-parser": "^4.1.0", - "stylehacks": "^5.0.1" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/optimize-css-assets-webpack-plugin/node_modules/postcss-merge-rules": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.0.2.tgz", - "integrity": "sha512-5K+Md7S3GwBewfB4rjDeol6V/RZ8S+v4B66Zk2gChRqLTCC8yjnHQ601omj9TKftS19OPGqZ/XzoqpzNQQLwbg==", - "dev": true, - "dependencies": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0", - "cssnano-utils": "^2.0.1", - "postcss-selector-parser": "^6.0.5", - "vendors": "^1.0.3" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/optimize-css-assets-webpack-plugin/node_modules/postcss-minify-font-values": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.0.1.tgz", - "integrity": "sha512-7JS4qIsnqaxk+FXY1E8dHBDmraYFWmuL6cgt0T1SWGRO5bzJf8sUoelwa4P88LEWJZweHevAiDKxHlofuvtIoA==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/optimize-css-assets-webpack-plugin/node_modules/postcss-minify-gradients": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.0.1.tgz", - "integrity": "sha512-odOwBFAIn2wIv+XYRpoN2hUV3pPQlgbJ10XeXPq8UY2N+9ZG42xu45lTn/g9zZ+d70NKSQD6EOi6UiCMu3FN7g==", - "dev": true, - "dependencies": { - "cssnano-utils": "^2.0.1", - "is-color-stop": "^1.1.0", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/optimize-css-assets-webpack-plugin/node_modules/postcss-minify-params": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.0.1.tgz", - "integrity": "sha512-4RUC4k2A/Q9mGco1Z8ODc7h+A0z7L7X2ypO1B6V8057eVK6mZ6xwz6QN64nHuHLbqbclkX1wyzRnIrdZehTEHw==", - "dev": true, - "dependencies": { - "alphanum-sort": "^1.0.2", - "browserslist": "^4.16.0", - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0", - "uniqs": "^2.0.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/optimize-css-assets-webpack-plugin/node_modules/postcss-minify-selectors": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.1.0.tgz", - "integrity": "sha512-NzGBXDa7aPsAcijXZeagnJBKBPMYLaJJzB8CQh6ncvyl2sIndLVWfbcDi0SBjRWk5VqEjXvf8tYwzoKf4Z07og==", - "dev": true, - "dependencies": { - "alphanum-sort": "^1.0.2", - "postcss-selector-parser": "^6.0.5" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/optimize-css-assets-webpack-plugin/node_modules/postcss-normalize-charset": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.0.1.tgz", - "integrity": "sha512-6J40l6LNYnBdPSk+BHZ8SF+HAkS4q2twe5jnocgd+xWpz/mx/5Sa32m3W1AA8uE8XaXN+eg8trIlfu8V9x61eg==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/optimize-css-assets-webpack-plugin/node_modules/postcss-normalize-display-values": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.0.1.tgz", - "integrity": "sha512-uupdvWk88kLDXi5HEyI9IaAJTE3/Djbcrqq8YgjvAVuzgVuqIk3SuJWUisT2gaJbZm1H9g5k2w1xXilM3x8DjQ==", - "dev": true, - "dependencies": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/optimize-css-assets-webpack-plugin/node_modules/postcss-normalize-positions": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.0.1.tgz", - "integrity": "sha512-rvzWAJai5xej9yWqlCb1OWLd9JjW2Ex2BCPzUJrbaXmtKtgfL8dBMOOMTX6TnvQMtjk3ei1Lswcs78qKO1Skrg==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/optimize-css-assets-webpack-plugin/node_modules/postcss-normalize-repeat-style": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.0.1.tgz", - "integrity": "sha512-syZ2itq0HTQjj4QtXZOeefomckiV5TaUO6ReIEabCh3wgDs4Mr01pkif0MeVwKyU/LHEkPJnpwFKRxqWA/7O3w==", - "dev": true, - "dependencies": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/optimize-css-assets-webpack-plugin/node_modules/postcss-normalize-string": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.0.1.tgz", - "integrity": "sha512-Ic8GaQ3jPMVl1OEn2U//2pm93AXUcF3wz+OriskdZ1AOuYV25OdgS7w9Xu2LO5cGyhHCgn8dMXh9bO7vi3i9pA==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/optimize-css-assets-webpack-plugin/node_modules/postcss-normalize-timing-functions": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.0.1.tgz", - "integrity": "sha512-cPcBdVN5OsWCNEo5hiXfLUnXfTGtSFiBU9SK8k7ii8UD7OLuznzgNRYkLZow11BkQiiqMcgPyh4ZqXEEUrtQ1Q==", - "dev": true, - "dependencies": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/optimize-css-assets-webpack-plugin/node_modules/postcss-normalize-unicode": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.0.1.tgz", - "integrity": "sha512-kAtYD6V3pK0beqrU90gpCQB7g6AOfP/2KIPCVBKJM2EheVsBQmx/Iof+9zR9NFKLAx4Pr9mDhogB27pmn354nA==", - "dev": true, - "dependencies": { - "browserslist": "^4.16.0", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/optimize-css-assets-webpack-plugin/node_modules/postcss-normalize-url": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.0.2.tgz", - "integrity": "sha512-k4jLTPUxREQ5bpajFQZpx8bCF2UrlqOTzP9kEqcEnOfwsRshWs2+oAFIHfDQB8GO2PaUaSE0NlTAYtbluZTlHQ==", - "dev": true, - "dependencies": { - "is-absolute-url": "^3.0.3", - "normalize-url": "^6.0.1", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/optimize-css-assets-webpack-plugin/node_modules/postcss-normalize-whitespace": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.0.1.tgz", - "integrity": "sha512-iPklmI5SBnRvwceb/XH568yyzK0qRVuAG+a1HFUsFRf11lEJTiQQa03a4RSCQvLKdcpX7XsI1Gen9LuLoqwiqA==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/optimize-css-assets-webpack-plugin/node_modules/postcss-ordered-values": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.0.2.tgz", - "integrity": "sha512-8AFYDSOYWebJYLyJi3fyjl6CqMEG/UVworjiyK1r573I56kb3e879sCJLGvR3merj+fAdPpVplXKQZv+ey6CgQ==", - "dev": true, - "dependencies": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/optimize-css-assets-webpack-plugin/node_modules/postcss-reduce-initial": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.0.1.tgz", - "integrity": "sha512-zlCZPKLLTMAqA3ZWH57HlbCjkD55LX9dsRyxlls+wfuRfqCi5mSlZVan0heX5cHr154Dq9AfbH70LyhrSAezJw==", - "dev": true, - "dependencies": { - "browserslist": "^4.16.0", - "caniuse-api": "^3.0.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/optimize-css-assets-webpack-plugin/node_modules/postcss-reduce-transforms": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.0.1.tgz", - "integrity": "sha512-a//FjoPeFkRuAguPscTVmRQUODP+f3ke2HqFNgGPwdYnpeC29RZdCBvGRGTsKpMURb/I3p6jdKoBQ2zI+9Q7kA==", - "dev": true, - "dependencies": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/optimize-css-assets-webpack-plugin/node_modules/postcss-svgo": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.0.2.tgz", - "integrity": "sha512-YzQuFLZu3U3aheizD+B1joQ94vzPfE6BNUcSYuceNxlVnKKsOtdo6hL9/zyC168Q8EwfLSgaDSalsUGa9f2C0A==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.1.0", - "svgo": "^2.3.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/optimize-css-assets-webpack-plugin/node_modules/postcss-unique-selectors": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.0.1.tgz", - "integrity": "sha512-gwi1NhHV4FMmPn+qwBNuot1sG1t2OmacLQ/AX29lzyggnjd+MnVD5uqQmpXO3J17KGL2WAxQruj1qTd3H0gG/w==", - "dev": true, - "dependencies": { - "alphanum-sort": "^1.0.2", - "postcss-selector-parser": "^6.0.5", - "uniqs": "^2.0.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/optimize-css-assets-webpack-plugin/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/optimize-css-assets-webpack-plugin/node_modules/stylehacks": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.0.1.tgz", - "integrity": "sha512-Es0rVnHIqbWzveU1b24kbw92HsebBepxfcqe5iix7t9j0PQqhs0IxXVXv0pY2Bxa08CgMkzD6OWql7kbGOuEdA==", - "dev": true, - "dependencies": { - "browserslist": "^4.16.0", - "postcss-selector-parser": "^6.0.4" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/optimize-css-assets-webpack-plugin/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/optimize-css-assets-webpack-plugin/node_modules/svgo": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.3.1.tgz", - "integrity": "sha512-riDDIQgXpEnn0BEl9Gvhh1LNLIyiusSpt64IR8upJu7MwxnzetmF/Y57pXQD2NMX2lVyMRzXt5f2M5rO4wG7Dw==", - "dev": true, - "dependencies": { - "@trysound/sax": "0.1.1", - "chalk": "^4.1.0", - "commander": "^7.1.0", - "css-select": "^4.1.3", - "css-tree": "^1.1.2", - "csso": "^4.2.0", - "stable": "^0.1.8" - }, - "bin": { - "svgo": "bin/svgo" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "dependencies": { - "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" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "dev": true, - "dependencies": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ora/node_modules/ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ora/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/ora/node_modules/chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/ora/node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ora/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/ora/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/ora/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ora/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/ora/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ora/node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ora/node_modules/strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ora/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "url-parse": "^1.4.3" - } - }, - "node_modules/os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", - "dev": true - }, - "node_modules/os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/os-locale": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", - "dev": true, - "dependencies": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ospath": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz", - "integrity": "sha1-EnZjl3Sj+O8lcvf+QoDg6kVQwHs=", - "dev": true - }, - "node_modules/p-cancelable": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", - "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-limit": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", - "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/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==", - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-retry": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", - "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", - "dev": true, - "dependencies": { - "retry": "^0.12.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/package-json": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", - "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", - "dev": true, - "dependencies": { - "got": "^9.6.0", - "registry-auth-token": "^4.0.0", - "registry-url": "^5.0.0", - "semver": "^6.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/package-json/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/pad-start": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pad-start/-/pad-start-1.0.2.tgz", - "integrity": "sha1-I+W6s+lkRrYoFs/28VCXXwQNGxQ=" - }, - "node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true - }, - "node_modules/parallel-transform": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", - "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", - "dev": true, - "dependencies": { - "cyclist": "^1.0.1", - "inherits": "^2.0.3", - "readable-stream": "^2.1.5" - } - }, - "node_modules/param-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", - "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", - "dev": true, - "dependencies": { - "no-case": "^2.2.0" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parent-module/node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "dev": true, - "dependencies": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/parse-glob": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", - "dev": true, - "dependencies": { - "glob-base": "^0.3.0", - "is-dotfile": "^1.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "dependencies": { - "error-ex": "^1.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/parse5": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz", - "integrity": "sha1-m387DeMr543CQBsXVzzK8Pb1nZQ=", - "dev": true - }, - "node_modules/parseqs": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz", - "integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==" - }, - "node_modules/parseuri": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz", - "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==" - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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==", - "dev": true - }, - "node_modules/path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true - }, - "node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "engines": { - "node": ">=4" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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=", - "dev": true - }, - "node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/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==", - "dev": true - }, - "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", - "dev": true - }, - "node_modules/path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-type/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "dev": true, - "dependencies": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", - "dev": true - }, - "node_modules/per-env": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/per-env/-/per-env-1.0.2.tgz", - "integrity": "sha1-dOXxosQBtyzv5/2HKz8/a3nAS7E=", - "dev": true, - "bin": { - "per-env": "bin/per-env" - } - }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "dependencies": { - "pinkie": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/pluralize": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", - "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/pn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", - "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", - "dev": true - }, - "node_modules/pngjs": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", - "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "ts-pnp": "^1.1.6" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/popper.js": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.0.tgz", - "integrity": "sha512-+G+EkOPoE5S/zChTpmBSSDYmhXJ5PsW8eMhH8cP/CQHMFPBG/kC9Y5IIw6qNYgdJ+/COf0ddY2li28iHaZRSjw==", - "deprecated": "You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1" - }, - "node_modules/portfinder": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", - "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", - "dev": true, - "dependencies": { - "async": "^2.6.2", - "debug": "^3.1.1", - "mkdirp": "^0.5.5" - }, - "engines": { - "node": ">= 0.12.0" - } - }, - "node_modules/portfinder/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/portfinder/node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "node_modules/portfinder/node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/portfinder/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/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=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss": { - "version": "8.3.5", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.5.tgz", - "integrity": "sha512-NxTuJocUhYGsMiMFHDUkmjSKT3EdH4/WbGF6GCi1NDGk+vbcUTun4fpbOqaPtD8IIsztA2ilZm2DhYCuyN58gA==", - "dev": true, - "dependencies": { - "colorette": "^1.2.2", - "nanoid": "^3.1.23", - "source-map-js": "^0.6.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "postcss": "^7.0.27", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.2" - } - }, - "node_modules/postcss-calc/node_modules/postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-calc/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-calc/node_modules/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==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/postcss-colormin": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", - "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", - "dev": true, - "dependencies": { - "browserslist": "^4.0.0", - "color": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-colormin/node_modules/postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-colormin/node_modules/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==", - "dev": true - }, - "node_modules/postcss-colormin/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-colormin/node_modules/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==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-convert-values/node_modules/postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-convert-values/node_modules/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==", - "dev": true - }, - "node_modules/postcss-convert-values/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-convert-values/node_modules/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==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "postcss": "^7.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-discard-comments/node_modules/postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-discard-comments/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-discard-comments/node_modules/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==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "postcss": "^7.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-discard-duplicates/node_modules/postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-discard-duplicates/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-discard-duplicates/node_modules/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==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "postcss": "^7.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-discard-empty/node_modules/postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-discard-empty/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-discard-empty/node_modules/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==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "postcss": "^7.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-discard-overridden/node_modules/postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-discard-overridden/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-discard-overridden/node_modules/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==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/postcss-load-config": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.0.tgz", - "integrity": "sha512-ipM8Ds01ZUophjDTQYSVP70slFSYg3T0/zyfII5vzhN6V57YSxMgG5syXuwi5VtS8wSf3iL30v0uBdoIVx4Q0g==", - "dev": true, - "dependencies": { - "import-cwd": "^3.0.0", - "lilconfig": "^2.0.3", - "yaml": "^1.10.2" - }, - "engines": { - "node": ">= 10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "ts-node": { - "optional": true - } - } - }, - "node_modules/postcss-load-config/node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/postcss-loader": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-4.3.0.tgz", - "integrity": "sha512-M/dSoIiNDOo8Rk0mUqoj4kpGq91gcxCfb9PoyZVdZ76/AuhxylHDYZblNE8o+EQ9AMSASeMFEKxZf5aU6wlx1Q==", - "dev": true, - "dependencies": { - "cosmiconfig": "^7.0.0", - "klona": "^2.0.4", - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0", - "semver": "^7.3.4" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "postcss": "^7.0.0 || ^8.0.1", - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/postcss-loader/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/postcss-loader/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/postcss-loader/node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/postcss-loader/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/postcss-loader/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/postcss-loader/node_modules/schema-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", - "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.7", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/postcss-loader/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/postcss-loader/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "css-color-names": "0.0.4", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "stylehacks": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-merge-longhand/node_modules/postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-merge-longhand/node_modules/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==", - "dev": true - }, - "node_modules/postcss-merge-longhand/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-merge-longhand/node_modules/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==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "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" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-merge-rules/node_modules/postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-merge-rules/node_modules/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==", - "dev": true, - "dependencies": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/postcss-merge-rules/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-merge-rules/node_modules/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==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-minify-font-values/node_modules/postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-minify-font-values/node_modules/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==", - "dev": true - }, - "node_modules/postcss-minify-font-values/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-minify-font-values/node_modules/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==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "cssnano-util-get-arguments": "^4.0.0", - "is-color-stop": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-minify-gradients/node_modules/postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-minify-gradients/node_modules/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==", - "dev": true - }, - "node_modules/postcss-minify-gradients/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-minify-gradients/node_modules/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==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "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" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-minify-params/node_modules/postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-minify-params/node_modules/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==", - "dev": true - }, - "node_modules/postcss-minify-params/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-minify-params/node_modules/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==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "alphanum-sort": "^1.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-minify-selectors/node_modules/postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-minify-selectors/node_modules/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==", - "dev": true, - "dependencies": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/postcss-minify-selectors/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-minify-selectors/node_modules/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==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/postcss-modules-extract-imports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", - "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-local-by-default": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", - "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", - "dev": true, - "dependencies": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-scope": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", - "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.4" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-values": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", - "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", - "dev": true, - "dependencies": { - "icss-utils": "^5.0.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-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==", - "dev": true, - "dependencies": { - "postcss": "^7.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-charset/node_modules/postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-normalize-charset/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-normalize-charset/node_modules/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==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-display-values/node_modules/postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-normalize-display-values/node_modules/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==", - "dev": true - }, - "node_modules/postcss-normalize-display-values/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-normalize-display-values/node_modules/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==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "cssnano-util-get-arguments": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-positions/node_modules/postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-normalize-positions/node_modules/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==", - "dev": true - }, - "node_modules/postcss-normalize-positions/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-normalize-positions/node_modules/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==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "cssnano-util-get-arguments": "^4.0.0", - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-repeat-style/node_modules/postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-normalize-repeat-style/node_modules/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==", - "dev": true - }, - "node_modules/postcss-normalize-repeat-style/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-normalize-repeat-style/node_modules/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==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-string/node_modules/postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-normalize-string/node_modules/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==", - "dev": true - }, - "node_modules/postcss-normalize-string/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-normalize-string/node_modules/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==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-timing-functions/node_modules/postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-normalize-timing-functions/node_modules/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==", - "dev": true - }, - "node_modules/postcss-normalize-timing-functions/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-normalize-timing-functions/node_modules/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==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-unicode/node_modules/postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-normalize-unicode/node_modules/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==", - "dev": true - }, - "node_modules/postcss-normalize-unicode/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-normalize-unicode/node_modules/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==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "is-absolute-url": "^2.0.0", - "normalize-url": "^3.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-url/node_modules/postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-normalize-url/node_modules/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==", - "dev": true - }, - "node_modules/postcss-normalize-url/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-normalize-url/node_modules/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==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-whitespace/node_modules/postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-normalize-whitespace/node_modules/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==", - "dev": true - }, - "node_modules/postcss-normalize-whitespace/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-normalize-whitespace/node_modules/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==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-ordered-values/node_modules/postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-ordered-values/node_modules/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==", - "dev": true - }, - "node_modules/postcss-ordered-values/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-ordered-values/node_modules/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==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-reduce-initial/node_modules/postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-reduce-initial/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-reduce-initial/node_modules/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==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "cssnano-util-get-match": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-reduce-transforms/node_modules/postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-reduce-transforms/node_modules/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==", - "dev": true - }, - "node_modules/postcss-reduce-transforms/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-reduce-transforms/node_modules/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==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz", - "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-svgo": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.3.tgz", - "integrity": "sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==", - "dev": true, - "dependencies": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "svgo": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-svgo/node_modules/postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-svgo/node_modules/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==", - "dev": true - }, - "node_modules/postcss-svgo/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-svgo/node_modules/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==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "alphanum-sort": "^1.0.0", - "postcss": "^7.0.0", - "uniqs": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-unique-selectors/node_modules/postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-unique-selectors/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-unique-selectors/node_modules/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==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/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==", - "dev": true - }, - "node_modules/preact": { - "version": "10.5.14", - "resolved": "https://registry.npmjs.org/preact/-/preact-10.5.14.tgz", - "integrity": "sha512-KojoltCrshZ099ksUZ2OQKfbH66uquFoxHSbnwKbTJHeQNvx42EmC7wQVWNuDt6vC5s3nudRHFtKbpY4ijKlaQ==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/preact" - } - }, - "node_modules/preact-cli": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/preact-cli/-/preact-cli-3.2.2.tgz", - "integrity": "sha512-42aUanAb/AqHHvnfb/IwJw9UhY5iuHkGRBv3TrTsQMrq0Ee8Z84r+HS8wjGI0aHHb0R8tnHI0hhllWgmNhjB/Q==", - "dev": true, - "dependencies": { - "@babel/core": "^7.13.16", - "@babel/plugin-proposal-class-properties": "^7.13.0", - "@babel/plugin-proposal-decorators": "^7.13.15", - "@babel/plugin-proposal-object-rest-spread": "^7.13.8", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-transform-object-assign": "^7.12.13", - "@babel/plugin-transform-react-jsx": "^7.13.12", - "@babel/preset-env": "^7.13.15", - "@babel/preset-typescript": "^7.13.0", - "@preact/async-loader": "^3.0.1", - "@prefresh/babel-plugin": "^0.4.1", - "@prefresh/webpack": "^3.2.2", - "autoprefixer": "^10.2.5", - "babel-esm-plugin": "^0.9.0", - "babel-loader": "^8.2.2", - "babel-plugin-macros": "^3.1.0", - "babel-plugin-transform-react-remove-prop-types": "^0.4.24", - "browserlist": "^1.0.1", - "browserslist": "^4.16.4", - "compression-webpack-plugin": "^6.0.4", - "console-clear": "^1.0.0", - "copy-webpack-plugin": "^6.2.1", - "critters-webpack-plugin": "^2.5.0", - "cross-spawn-promise": "^0.10.1", - "css-loader": "^5.2.4", - "ejs-loader": "^0.5.0", - "envinfo": "^7.8.1", - "esm": "^3.2.25", - "fast-async": "^6.3.7", - "file-loader": "^6.2.0", - "fork-ts-checker-webpack-plugin": "^4.0.4", - "get-port": "^5.0.0", - "gittar": "^0.1.0", - "glob": "^7.1.4", - "html-webpack-exclude-assets-plugin": "0.0.7", - "html-webpack-plugin": "^3.2.0", - "ip": "^1.1.5", - "isomorphic-unfetch": "^3.1.0", - "kleur": "^4.1.4", - "loader-utils": "^2.0.0", - "mini-css-extract-plugin": "^1.5.0", - "minimatch": "^3.0.3", - "native-url": "0.3.4", - "optimize-css-assets-webpack-plugin": "^6.0.0", - "ora": "^5.4.0", - "pnp-webpack-plugin": "^1.6.4", - "postcss": "^8.2.10", - "postcss-load-config": "^3.0.1", - "postcss-loader": "^4.0.4", - "progress-bar-webpack-plugin": "^2.1.0", - "promise-polyfill": "^8.2.0", - "prompts": "^2.4.1", - "raw-loader": "^4.0.2", - "react-refresh": "0.10.0", - "rimraf": "^3.0.2", - "sade": "^1.7.4", - "size-plugin": "^3.0.0", - "source-map": "^0.7.2", - "stack-trace": "0.0.10", - "style-loader": "^2.0.0", - "terser-webpack-plugin": "^4.2.3", - "typescript": "^4.2.4", - "update-notifier": "^5.1.0", - "url-loader": "^4.1.1", - "validate-npm-package-name": "^3.0.0", - "webpack": "^4.38.0", - "webpack-bundle-analyzer": "^4.4.2", - "webpack-dev-server": "^3.11.2", - "webpack-fix-style-only-entries": "^0.6.1", - "webpack-merge": "^5.3.0", - "webpack-plugin-replace": "^1.2.0", - "which": "^2.0.2", - "workbox-cacheable-response": "^6.1.5", - "workbox-core": "^6.1.5", - "workbox-precaching": "^6.1.5", - "workbox-routing": "^6.1.5", - "workbox-strategies": "^6.1.5", - "workbox-webpack-plugin": "^6.1.5" - }, - "bin": { - "preact": "lib/index.js" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "less-loader": "^7.3.0", - "preact": "*", - "preact-render-to-string": "*", - "sass-loader": "^10.2.0", - "stylus-loader": "^4.3.3" - }, - "peerDependenciesMeta": { - "less-loader": { - "optional": true - }, - "sass-loader": { - "optional": true - }, - "stylus-loader": { - "optional": true - } - } - }, - "node_modules/preact-cli-plugin-fast-async": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/preact-cli-plugin-fast-async/-/preact-cli-plugin-fast-async-1.0.1.tgz", - "integrity": "sha512-r725LMb7S6iY6HAKspzdzmNM4N9Wa0mRkDrl5b3USjw2rlOMq+krjvNevP5PXZJED/Ym2kipnRHMaR4gtHzQ6A==", - "dependencies": { - "fast-async": "^6.3.0" - } - }, - "node_modules/preact-cli/node_modules/@babel/runtime": { - "version": "7.14.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.6.tgz", - "integrity": "sha512-/PCB2uJ7oM44tz8YhC4Z/6PeOKXp4K588f+5M3clr1M4zbqztlo0XEfJ2LEzj/FgwfgGcIdl8n7YYjTCI0BYwg==", - "dev": true, - "dependencies": { - "regenerator-runtime": "^0.13.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/preact-cli/node_modules/babel-plugin-macros": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", - "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.12.5", - "cosmiconfig": "^7.0.0", - "resolve": "^1.19.0" - }, - "engines": { - "node": ">=10", - "npm": ">=6" - } - }, - "node_modules/preact-cli/node_modules/browserslist": { - "version": "4.16.6", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", - "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", - "dev": true, - "dependencies": { - "caniuse-lite": "^1.0.30001219", - "colorette": "^1.2.2", - "electron-to-chromium": "^1.3.723", - "escalade": "^3.1.1", - "node-releases": "^1.1.71" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } - }, - "node_modules/preact-cli/node_modules/caniuse-lite": { - "version": "1.0.30001245", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001245.tgz", - "integrity": "sha512-768fM9j1PKXpOCKws6eTo3RHmvTUsG9UrpT4WoREFeZgJBTi4/X9g565azS/rVUGtqb8nt7FjLeF5u4kukERnA==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } - }, - "node_modules/preact-cli/node_modules/electron-to-chromium": { - "version": "1.3.776", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.776.tgz", - "integrity": "sha512-V0w7eFSBoFPpdw4xexjVPZ770UDZIevSwkkj4W97XbE3IsCsTRFpa7/yXGZ88EOQAUEA09JMMsWK0xsw0kRAYw==", - "dev": true - }, - "node_modules/preact-cli/node_modules/node-releases": { - "version": "1.1.73", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz", - "integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==", - "dev": true - }, - "node_modules/preact-cli/node_modules/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==", - "dev": true - }, - "node_modules/preact-cli/node_modules/resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, - "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/preact-cli/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/preact-cli/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/preact-cli/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/preact-i18n": { - "version": "2.4.0-preactx", - "resolved": "https://registry.npmjs.org/preact-i18n/-/preact-i18n-2.4.0-preactx.tgz", - "integrity": "sha512-XJ15wZKdJrpuz2KBs8BkDB9gl85MjIkER5tx8r6RM1+j53hw3/XzUq2DMnkMoLVQiS0VSPI6bXk41CioKwTJIA==", - "dependencies": { - "dlv": "^1.1.3", - "preact-markup": "^2.0.0" - }, - "peerDependencies": { - "preact": ">=10" - } - }, - "node_modules/preact-markup": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/preact-markup/-/preact-markup-2.1.1.tgz", - "integrity": "sha512-8JL2p36mzK8XkspOyhBxUSPjYwMxDM0L5BWBZWxsZMVW8WsGQrYQDgVuDKkRspt2hwrle+Cxr/053hpc9BJwfw==", - "peerDependencies": { - "preact": ">=10" - } - }, - "node_modules/preact-render-spy": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/preact-render-spy/-/preact-render-spy-1.3.0.tgz", - "integrity": "sha512-6gdi9mCMlhNPv4JRoQNSKu2kEbhStfJT/bN+n3gb/NwGKNmFg9q8eac9qFTSCswsOWmkdDk2WJiUoHZImIPSyA==", - "dev": true, - "dependencies": { - "lodash.isequal": "^4.5.0", - "object.entries": "^1.0.4", - "preact-render-to-string": "^3.6.3" - }, - "peerDependencies": { - "preact": "^8.1.0" - } - }, - "node_modules/preact-render-to-string": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/preact-render-to-string/-/preact-render-to-string-3.8.2.tgz", - "integrity": "sha512-przuZPajiurStGgxMoJP0EJeC4xj5CgHv+M7GfF3YxAdhGgEWAkhOSE0xympAFN20uMayntBZpttIZqqLl77fw==", - "dev": true, - "dependencies": { - "pretty-format": "^3.5.1" - }, - "peerDependencies": { - "preact": "*" - } - }, - "node_modules/preact-render-to-string/node_modules/pretty-format": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-3.8.0.tgz", - "integrity": "sha1-v77VbV6ad2ZF9LH/eqGjrE+jw4U=", - "dev": true - }, - "node_modules/preact-router": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/preact-router/-/preact-router-3.2.1.tgz", - "integrity": "sha512-KEN2VN1DxUlTwzW5IFkF13YIA2OdQ2OvgJTkQREF+AA2NrHRLaGbB68EjS4IeZOa1shvQ1FvEm3bSLta4sXBhg==", - "peerDependencies": { - "preact": ">=10" - } - }, - "node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/preserve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/prettier": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", - "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", - "dev": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pretty-bytes": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-4.0.2.tgz", - "integrity": "sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/pretty-error": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz", - "integrity": "sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==", - "dev": true, - "dependencies": { - "lodash": "^4.17.20", - "renderkid": "^2.0.4" - } - }, - "node_modules/pretty-error/node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/pretty-format": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-21.2.1.tgz", - "integrity": "sha512-ZdWPGYAnYfcVP8yKA3zFjCn8s4/17TeYH28MXuC8vTp0o21eXjbFGcOAXZEaDaOFJjc3h2qa7HQNHNshhvoh2A==", - "dev": true, - "dependencies": { - "ansi-regex": "^3.0.0", - "ansi-styles": "^3.2.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "dev": true, - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/progress-bar-webpack-plugin": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/progress-bar-webpack-plugin/-/progress-bar-webpack-plugin-2.1.0.tgz", - "integrity": "sha512-UtlZbnxpYk1wufEWfhIjRn2U52zlY38uvnzFhs8rRxJxC1hSqw88JNR2Mbpqq9Kix8L1nGb3uQ+/1BiUWbigAg==", - "dev": true, - "dependencies": { - "chalk": "^3.0.0", - "progress": "^2.0.3" - }, - "peerDependencies": { - "webpack": "^1.3.0 || ^2 || ^3 || ^4 || ^5" - } - }, - "node_modules/progress-bar-webpack-plugin/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/progress-bar-webpack-plugin/node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/progress-bar-webpack-plugin/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/progress-bar-webpack-plugin/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/progress-bar-webpack-plugin/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/progress-bar-webpack-plugin/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", - "dev": true - }, - "node_modules/promise-polyfill": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.2.0.tgz", - "integrity": "sha512-k/TC0mIcPVF6yHhUvwAp7cvL6I2fFV7TzF1DuGPI8mBh4QQazf36xCKEHKTZKRysEoTQoQdKyP25J8MPJp7j5g==", - "dev": true - }, - "node_modules/prompts": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.1.tgz", - "integrity": "sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ==", - "dev": true, - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/prompts/node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/prop-types": { - "version": "15.7.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", - "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" - } - }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dev": true, - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", - "dev": true - }, - "node_modules/pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true - }, - "node_modules/psl": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.4.0.tgz", - "integrity": "sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw==", - "dev": true - }, - "node_modules/public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "dependencies": { - "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" - } - }, - "node_modules/public-encrypt/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "dev": true, - "dependencies": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - } - }, - "node_modules/pumpify/node_modules/pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/pupa": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", - "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", - "dev": true, - "dependencies": { - "escape-goat": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", - "dev": true, - "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" - } - }, - "node_modules/qrcode": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.4.4.tgz", - "integrity": "sha512-oLzEC5+NKFou9P0bMj5+v6Z40evexeE29Z9cummZXZ9QXyMr3lphkURzxjXgPJC5azpxcshoDWV1xE46z+/c3Q==", - "dependencies": { - "buffer": "^5.4.3", - "buffer-alloc": "^1.2.0", - "buffer-from": "^1.1.1", - "dijkstrajs": "^1.0.1", - "isarray": "^2.0.1", - "pngjs": "^3.3.0", - "yargs": "^13.2.4" - }, - "bin": { - "qrcode": "bin/qrcode" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/query-string": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.0.1.tgz", - "integrity": "sha512-uIw3iRvHnk9to1blJCG3BTc+Ro56CBowJXKmNNAm3RulvPBzWLRqKSiiDk+IplJhsydwtuNMHi8UGQFcCLVfkA==", - "dependencies": { - "decode-uri-component": "^0.2.0", - "filter-obj": "^1.1.0", - "split-on-first": "^1.0.0", - "strict-uri-encode": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", - "dev": true, - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "dev": true, - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/ramda": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.25.0.tgz", - "integrity": "sha512-GXpfrYVPwx3K7RQ6aYT8KPS8XViSXUVJT1ONhoKPE9VAleW42YE+U+8VEyGWt41EnEQW7gwecYJriTI0pKoecQ==", - "dev": true - }, - "node_modules/randomatic": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", - "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", - "dev": true, - "dependencies": { - "is-number": "^4.0.0", - "kind-of": "^6.0.0", - "math-random": "^1.0.1" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/randomatic/node_modules/is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/randomatic/node_modules/kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "dependencies": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", - "dev": true, - "dependencies": { - "bytes": "3.1.0", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/raw-body/node_modules/bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/raw-loader": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.2.tgz", - "integrity": "sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==", - "dev": true, - "dependencies": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/raw-loader/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/raw-loader/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/raw-loader/node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/raw-loader/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/raw-loader/node_modules/schema-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", - "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.7", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/rc/node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "node_modules/rc/node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "node_modules/react-big-calendar": { - "version": "0.22.1", - "resolved": "https://registry.npmjs.org/react-big-calendar/-/react-big-calendar-0.22.1.tgz", - "integrity": "sha512-Pd0x0W4vjs5oDzPl3kvIlJok4ESO7p/+jpxKil0xkJ5sfsYlB/lZMCht7htEy9/WInnnJQGcXx+tLIcEzDbV8g==", - "dependencies": { - "@babel/runtime": "^7.1.5", - "clsx": "^1.0.4", - "date-arithmetic": "^4.0.1", - "dom-helpers": "^5.1.0", - "invariant": "^2.2.4", - "lodash": "^4.17.11", - "lodash-es": "^4.17.11", - "memoize-one": "^4.0.3", - "prop-types": "^15.6.2", - "react-overlays": "^2.0.0-0", - "uncontrollable": "^7.0.0", - "warning": "^4.0.2" - }, - "peerDependencies": { - "react": "^16.6.1", - "react-dom": "^16.6.1" - } - }, - "node_modules/react-datepicker": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/react-datepicker/-/react-datepicker-3.8.0.tgz", - "integrity": "sha512-iFVNEp8DJoX5yEvEiciM7sJKmLGrvE70U38KhpG13XrulNSijeHw1RZkhd/0UmuXR71dcZB/kdfjiidifstZjw==", - "dependencies": { - "classnames": "^2.2.6", - "date-fns": "^2.0.1", - "prop-types": "^15.7.2", - "react-onclickoutside": "^6.10.0", - "react-popper": "^1.3.8" - }, - "peerDependencies": { - "react": "^16.9.0 || ^17", - "react-dom": "^16.9.0 || ^17" - } - }, - "node_modules/react-input-autosize": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/react-input-autosize/-/react-input-autosize-3.0.0.tgz", - "integrity": "sha512-nL9uS7jEs/zu8sqwFE5MAPx6pPkNAriACQ2rGLlqmKr2sPGtN7TXTyDdQt4lbNXVx7Uzadb40x8qotIuru6Rhg==", - "dependencies": { - "prop-types": "^15.5.8" - }, - "peerDependencies": { - "react": "^16.3.0 || ^17.0.0" - } - }, - "node_modules/react-is": { - "version": "16.11.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.11.0.tgz", - "integrity": "sha512-gbBVYR2p8mnriqAwWx9LbuUrShnAuSCNnuPGyc7GJrMVQtPDAh8iLpv7FRuMPFb56KkaVZIYSz1PrjI9q0QPCw==" - }, - "node_modules/react-lifecycles-compat": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", - "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" - }, - "node_modules/react-onclickoutside": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/react-onclickoutside/-/react-onclickoutside-6.10.0.tgz", - "integrity": "sha512-7i2L3ef+0ILXpL6P+Hg304eCQswh4jl3ynwR71BSlMU49PE2uk31k8B2GkP6yE9s2D4jTGKnzuSpzWxu4YxfQQ==", - "funding": { - "type": "individual", - "url": "https://github.com/Pomax/react-onclickoutside/blob/master/FUNDING.md" - }, - "peerDependencies": { - "react": "^15.5.x || ^16.x || ^17.x", - "react-dom": "^15.5.x || ^16.x || ^17.x" - } - }, - "node_modules/react-overlays": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/react-overlays/-/react-overlays-2.1.0.tgz", - "integrity": "sha512-tHPGTZosbQSo82yb9x4YCsmJJtspKvAPL5kXVnyoB2Z5UoAU3VetIuh2VblfVT408us5nLJd9uDtwI3xWDHS6w==", - "dependencies": { - "@babel/runtime": "^7.4.5", - "@restart/hooks": "^0.3.12", - "dom-helpers": "^5.1.0", - "popper.js": "^1.15.0", - "prop-types": "^15.7.2", - "uncontrollable": "^7.0.0", - "warning": "^4.0.3" - }, - "peerDependencies": { - "react": ">=16.3.0", - "react-dom": ">=16.3.0" - } - }, - "node_modules/react-popper": { - "version": "1.3.11", - "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-1.3.11.tgz", - "integrity": "sha512-VSA/bS+pSndSF2fiasHK/PTEEAyOpX60+H5EPAjoArr8JGm+oihu4UbrqcEBpQibJxBVCpYyjAX7abJ+7DoYVg==", - "dependencies": { - "@babel/runtime": "^7.1.2", - "@hypnosphi/create-react-context": "^0.3.1", - "deep-equal": "^1.1.1", - "popper.js": "^1.14.4", - "prop-types": "^15.6.1", - "typed-styles": "^0.0.7", - "warning": "^4.0.2" - }, - "peerDependencies": { - "react": "0.14.x || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, - "node_modules/react-refresh": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.10.0.tgz", - "integrity": "sha512-PgidR3wST3dDYKr6b4pJoqQFpPGNKDSCDx4cZoshjXipw3LzO7mG1My2pwEzz2JVkF+inx3xRpDeQLFQGH/hsQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-select": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/react-select/-/react-select-4.3.1.tgz", - "integrity": "sha512-HBBd0dYwkF5aZk1zP81Wx5UsLIIT2lSvAY2JiJo199LjoLHoivjn9//KsmvQMEFGNhe58xyuOITjfxKCcGc62Q==", - "dependencies": { - "@babel/runtime": "^7.12.0", - "@emotion/cache": "^11.4.0", - "@emotion/react": "^11.1.1", - "memoize-one": "^5.0.0", - "prop-types": "^15.6.0", - "react-input-autosize": "^3.0.0", - "react-transition-group": "^4.3.0" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" - } - }, - "node_modules/react-select/node_modules/@babel/runtime": { - "version": "7.14.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.6.tgz", - "integrity": "sha512-/PCB2uJ7oM44tz8YhC4Z/6PeOKXp4K588f+5M3clr1M4zbqztlo0XEfJ2LEzj/FgwfgGcIdl8n7YYjTCI0BYwg==", - "dependencies": { - "regenerator-runtime": "^0.13.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/react-select/node_modules/memoize-one": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", - "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==" - }, - "node_modules/react-select/node_modules/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==" - }, - "node_modules/react-transition-group": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.2.tgz", - "integrity": "sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg==", - "dependencies": { - "@babel/runtime": "^7.5.5", - "dom-helpers": "^5.0.1", - "loose-envify": "^1.4.0", - "prop-types": "^15.6.2" - }, - "peerDependencies": { - "react": ">=16.6.0", - "react-dom": ">=16.6.0" - } - }, - "node_modules/read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "dependencies": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "dependencies": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-pkg-up/node_modules/find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "dependencies": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-pkg-up/node_modules/path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "dependencies": { - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readable-stream/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "optional": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true - }, - "node_modules/regenerate-unicode-properties": { - "version": "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==", - "dev": true, - "dependencies": { - "regenerate": "^1.4.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.13.3", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", - "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==" - }, - "node_modules/regenerator-transform": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", - "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.8.4" - } - }, - "node_modules/regenerator-transform/node_modules/@babel/runtime": { - "version": "7.14.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.6.tgz", - "integrity": "sha512-/PCB2uJ7oM44tz8YhC4Z/6PeOKXp4K588f+5M3clr1M4zbqztlo0XEfJ2LEzj/FgwfgGcIdl8n7YYjTCI0BYwg==", - "dev": true, - "dependencies": { - "regenerator-runtime": "^0.13.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/regenerator-transform/node_modules/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==", - "dev": true - }, - "node_modules/regex-cache": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", - "dev": true, - "dependencies": { - "is-equal-shallow": "^0.1.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "dependencies": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.2.0.tgz", - "integrity": "sha512-ztaw4M1VqgMwl9HlPpOuiYgItcHlunW0He2fE6eNfT6E/CF2FtYi9ofOYe4mKntstYk0Fyh/rDRBdS3AnxjlrA==", - "dependencies": { - "define-properties": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/regexpp": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz", - "integrity": "sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==", - "dev": true, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/regexpu-core": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", - "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", - "dev": true, - "dependencies": { - "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" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/registry-auth-token": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", - "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", - "dev": true, - "dependencies": { - "rc": "^1.2.8" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/registry-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", - "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", - "dev": true, - "dependencies": { - "rc": "^1.2.8" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/regjsgen": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", - "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", - "dev": true - }, - "node_modules/regjsparser": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz", - "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", - "dev": true, - "dependencies": { - "jsesc": "~0.5.0" - }, - "bin": { - "regjsparser": "bin/parser" - } - }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - } - }, - "node_modules/relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/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=", - "dev": true - }, - "node_modules/renderkid": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.7.tgz", - "integrity": "sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==", - "dev": true, - "dependencies": { - "css-select": "^4.1.3", - "dom-converter": "^0.2.0", - "htmlparser2": "^6.1.0", - "lodash": "^4.17.21", - "strip-ansi": "^3.0.1" - } - }, - "node_modules/renderkid/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/renderkid/node_modules/css-select": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", - "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^5.0.0", - "domhandler": "^4.2.0", - "domutils": "^2.6.0", - "nth-check": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/renderkid/node_modules/css-what": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.0.1.tgz", - "integrity": "sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg==", - "dev": true, - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/renderkid/node_modules/dom-serializer": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", - "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", - "dev": true, - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/renderkid/node_modules/domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/renderkid/node_modules/domutils": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.7.0.tgz", - "integrity": "sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg==", - "dev": true, - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/renderkid/node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/renderkid/node_modules/nth-check": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz", - "integrity": "sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/renderkid/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true, - "dependencies": { - "is-finite": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/request": { - "version": "2.88.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", - "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", - "dev": true, - "dependencies": { - "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.0", - "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.4.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/request-progress": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", - "integrity": "sha1-TKdUCBx/7GP1BeT6qCWqBs1mnb4=", - "dev": true, - "dependencies": { - "throttleit": "^1.0.0" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "lodash": "^4.17.19" - }, - "engines": { - "node": ">=0.10.0" - }, - "peerDependencies": { - "request": "^2.34" - } - }, - "node_modules/request-promise-core/node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/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==", - "deprecated": "request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142", - "dev": true, - "dependencies": { - "request-promise-core": "1.1.4", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - }, - "engines": { - "node": ">=0.12.0" - }, - "peerDependencies": { - "request": "^2.34" - } - }, - "node_modules/request/node_modules/punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - }, - "node_modules/request/node_modules/tough-cookie": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", - "dev": true, - "dependencies": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" - }, - "node_modules/require-uncached": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", - "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", - "dev": true, - "dependencies": { - "caller-path": "^0.1.0", - "resolve-from": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", - "dev": true - }, - "node_modules/resolve": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", - "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", - "dev": true, - "dependencies": { - "path-parse": "^1.0.6" - } - }, - "node_modules/resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", - "dev": true, - "dependencies": { - "resolve-from": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve-cwd/node_modules/resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve-from": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", - "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "deprecated": "https://github.com/lydell/resolve-url#deprecated", - "dev": true - }, - "node_modules/responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", - "dev": true, - "dependencies": { - "lowercase-keys": "^1.0.0" - } - }, - "node_modules/restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "dev": true, - "dependencies": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rgb-regex": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", - "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", - "dev": true - }, - "node_modules/rgba-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", - "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", - "dev": true - }, - "node_modules/rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "node_modules/rollup": { - "version": "2.53.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.53.2.tgz", - "integrity": "sha512-1CtEYuS5CRCzFZ7SNW5528SlDlk4VDXIRGwbm/2POQxA/G4+7/crIqJwkmnj8Q/74hGx4oVlNvh4E1CJQ5hZ6w==", - "dev": true, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=10.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/rollup-plugin-terser": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", - "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.10.4", - "jest-worker": "^26.2.1", - "serialize-javascript": "^4.0.0", - "terser": "^5.0.0" - }, - "peerDependencies": { - "rollup": "^2.0.0" - } - }, - "node_modules/rollup-plugin-terser/node_modules/@babel/code-frame": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", - "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/rollup-plugin-terser/node_modules/@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/rollup-plugin-terser/node_modules/serialize-javascript": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", - "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/rsvp": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-3.6.2.tgz", - "integrity": "sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw==", - "dev": true, - "engines": { - "node": "0.12.* || 4.* || 6.* || >= 7.*" - } - }, - "node_modules/run-async": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", - "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", - "dev": true, - "dependencies": { - "is-promise": "^2.1.0" - }, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/run-queue": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", - "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", - "dev": true, - "dependencies": { - "aproba": "^1.1.1" - } - }, - "node_modules/rx-lite": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", - "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", - "dev": true - }, - "node_modules/rx-lite-aggregates": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", - "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", - "dev": true, - "dependencies": { - "rx-lite": "*" - } - }, - "node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/sade": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/sade/-/sade-1.7.4.tgz", - "integrity": "sha512-y5yauMD93rX840MwUJr7C1ysLFBgMspsdTo4UVrDg3fXDvtwOyIqykhVAAm6fk/3au77773itJStObgK+LKaiA==", - "dev": true, - "dependencies": { - "mri": "^1.1.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "devOptional": true - }, - "node_modules/safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "dependencies": { - "ret": "~0.1.10" - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "node_modules/sane": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/sane/-/sane-2.5.2.tgz", - "integrity": "sha1-tNwYYcIbQn6SlQej51HiosuKs/o=", - "deprecated": "some dependency vulnerabilities fixed, support for node < 10 dropped, and newer ECMAScript syntax/features added", - "dev": true, - "dependencies": { - "anymatch": "^2.0.0", - "capture-exit": "^1.2.0", - "exec-sh": "^0.2.0", - "fb-watchman": "^2.0.0", - "micromatch": "^3.1.4", - "minimist": "^1.1.1", - "walker": "~1.0.5", - "watch": "~0.18.0" - }, - "bin": { - "sane": "src/cli.js" - }, - "engines": { - "node": ">=0.6.0" - }, - "optionalDependencies": { - "fsevents": "^1.2.3" - } - }, - "node_modules/sane/node_modules/arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sane/node_modules/array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sane/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sane/node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sane/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/sane/node_modules/expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "dependencies": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sane/node_modules/expand-brackets/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sane/node_modules/expand-brackets/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sane/node_modules/expand-brackets/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sane/node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sane/node_modules/expand-brackets/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sane/node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sane/node_modules/expand-brackets/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sane/node_modules/expand-brackets/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sane/node_modules/extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sane/node_modules/extglob/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sane/node_modules/extglob/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sane/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sane/node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sane/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sane/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/sane/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sane/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sane/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sane/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sane/node_modules/kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sane/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sane/node_modules/minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, - "node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "node_modules/saxes": { - "version": "3.1.11", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", - "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", - "dev": true, - "dependencies": { - "xmlchars": "^2.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 8.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/schema-utils/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/schema-utils/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/schema-utils/node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/schema-utils/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/secure-remote-password": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/secure-remote-password/-/secure-remote-password-0.3.1.tgz", - "integrity": "sha512-iEp/qLRfb9XYhfKFrPFfdeD7KVreCjhDKSTRP1G1nRIO0Sw1hjnVHD58ymOhiy9Zf5quHbDIbG9cTupji7qwnA==", - "dependencies": { - "array-buffer-to-hex": "^1.0.0", - "crypto-digest-sync": "^1.0.0", - "crypto-random-hex": "^1.0.0", - "encode-utf8": "^1.0.1", - "hex-to-array-buffer": "^1.1.0", - "jsbn": "^1.1.0", - "pad-start": "^1.0.2" - } - }, - "node_modules/select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", - "dev": true - }, - "node_modules/selfsigned": { - "version": "1.10.11", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.11.tgz", - "integrity": "sha512-aVmbPOfViZqOZPgRBT0+3u4yZFHpmnIghLMlAcb5/xhp5ZtB/RVnKhz5vl2M32CLXAqR4kha9zfhNg0Lf/sxKA==", - "dev": true, - "dependencies": { - "node-forge": "^0.10.0" - } - }, - "node_modules/semiver": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/semiver/-/semiver-1.1.0.tgz", - "integrity": "sha512-QNI2ChmuioGC1/xjyYwyZYADILWyW6AmS1UH6gDj/SFUUUS4MBAWs/7mxnkRPc/F4iHezDP+O8t0dO8WHiEOdg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/semver-diff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", - "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", - "dev": true, - "dependencies": { - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/semver-diff/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.7.2", - "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "node_modules/send/node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/send/node_modules/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==", - "dev": true - }, - "node_modules/serialize-javascript": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", - "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/serialize-query-params": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/serialize-query-params/-/serialize-query-params-1.3.5.tgz", - "integrity": "sha512-BrLH1RqgzVxm6dco+KP9S6BodeFiUVvKwtY3GSWQlupIdblT19KCGTRkHZ2yIU6Bjy0Prjts0tYe11VpTMbAeQ==", - "dev": true, - "peerDependencies": { - "query-string": ">=5.1.1" - } - }, - "node_modules/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", - "dev": true, - "dependencies": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/serve-index/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/serve-index/node_modules/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=", - "dev": true, - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-index/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "node_modules/serve-index/node_modules/setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - }, - "node_modules/serve-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==", - "dev": true, - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" - }, - "node_modules/set-value": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-3.0.2.tgz", - "integrity": "sha512-npjkVoz+ank0zjlV9F47Fdbjfj/PfXyVhZvGALWsyIYU/qrMzpi6avjKW3/7KeSU2Df3I46BrN1xOI1+6vW0hA==", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "dev": true - }, - "node_modules/setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", - "dev": true - }, - "node_modules/sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "bin": { - "sha.js": "bin.js" - } - }, - "node_modules/shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shallow-clone/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shellwords": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", - "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", - "dev": true - }, - "node_modules/signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true - }, - "node_modules/simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", - "dev": true, - "dependencies": { - "is-arrayish": "^0.3.1" - } - }, - "node_modules/simple-swizzle/node_modules/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==", - "dev": true - }, - "node_modules/sirv": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.12.tgz", - "integrity": "sha512-+jQoCxndz7L2tqQL4ZyzfDhky0W/4ZJip3XoOuxyQWnAwMxindLl3Xv1qT4x1YX/re0leShvTm8Uk0kQspGhBg==", - "dev": true, - "dependencies": { - "@polka/url": "^1.0.0-next.15", - "mime": "^2.3.1", - "totalist": "^1.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/sirv-cli": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/sirv-cli/-/sirv-cli-1.0.12.tgz", - "integrity": "sha512-Rs5PvF3a48zuLmrl8vcqVv9xF/WWPES19QawVkpdzqx7vD5SMZS07+ece1gK4umbslXN43YeIksYtQM5csgIzQ==", - "dev": true, - "dependencies": { - "console-clear": "^1.1.0", - "get-port": "^3.2.0", - "kleur": "^3.0.0", - "local-access": "^1.0.1", - "sade": "^1.6.0", - "semiver": "^1.0.0", - "sirv": "^1.0.12", - "tinydate": "^1.0.0" - }, - "bin": { - "sirv": "bin.js" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/sirv-cli/node_modules/get-port": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", - "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/sirv-cli/node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true - }, - "node_modules/size-plugin": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/size-plugin/-/size-plugin-3.0.0.tgz", - "integrity": "sha512-RPMSkgbvmS1e5XUwPNFZre7DLqcK9MhWARIm8UmGLgbUCAs173JLI6DPHco68wvo0cUdft8+GGRaJtNl5RWfew==", - "dev": true, - "dependencies": { - "axios": "^0.21.1", - "chalk": "^2.4.2", - "ci-env": "^1.9.0", - "escape-string-regexp": "^1.0.5", - "glob": "^7.1.4", - "minimatch": "^3.0.4", - "pretty-bytes": "^5.3.0", - "util.promisify": "^1.0.0" - }, - "peerDependencies": { - "webpack": "*" - } - }, - "node_modules/size-plugin/node_modules/pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/slice-ansi": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", - "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", - "dev": true, - "dependencies": { - "is-fullwidth-code-point": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "dependencies": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "dependencies": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "dependencies": { - "kind-of": "^3.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/snapdragon/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/socket.io-client": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.4.0.tgz", - "integrity": "sha512-M6xhnKQHuuZd4Ba9vltCLT9oa+YvTsP8j9NcEiLElfIg8KeYPyhWOes6x4t+LTAC8enQbE/995AdTem2uNyKKQ==", - "dependencies": { - "backo2": "1.0.2", - "component-bind": "1.0.0", - "component-emitter": "~1.3.0", - "debug": "~3.1.0", - "engine.io-client": "~3.5.0", - "has-binary2": "~1.0.2", - "indexof": "0.0.1", - "parseqs": "0.0.6", - "parseuri": "0.0.6", - "socket.io-parser": "~3.3.0", - "to-array": "0.1.4" - } - }, - "node_modules/socket.io-client/node_modules/component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" - }, - "node_modules/socket.io-parser": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.2.tgz", - "integrity": "sha512-FJvDBuOALxdCI9qwRrO/Rfp9yfndRtc1jSgVgV8FDraihmSP/MLGD5PEuJrNfjALvcQ+vMDM/33AWOYP/JSjDg==", - "dependencies": { - "component-emitter": "~1.3.0", - "debug": "~3.1.0", - "isarray": "2.0.1" - } - }, - "node_modules/socket.io-parser/node_modules/component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" - }, - "node_modules/sockjs": { - "version": "0.3.21", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz", - "integrity": "sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw==", - "dev": true, - "dependencies": { - "faye-websocket": "^0.11.3", - "uuid": "^3.4.0", - "websocket-driver": "^0.7.4" - } - }, - "node_modules/sockjs-client": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.5.1.tgz", - "integrity": "sha512-VnVAb663fosipI/m6pqRXakEOw7nvd7TUgdr3PlR/8V2I95QIdwT8L4nMxhyU8SmDBHYXU1TOElaKOmKLfYzeQ==", - "dev": true, - "dependencies": { - "debug": "^3.2.6", - "eventsource": "^1.0.7", - "faye-websocket": "^0.11.3", - "inherits": "^2.0.4", - "json3": "^3.3.3", - "url-parse": "^1.5.1" - } - }, - "node_modules/sockjs-client/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/sockjs-client/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/sockjs/node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "dev": true, - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/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==", - "dev": true - }, - "node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-js": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", - "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-resolve": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", - "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", - "dev": true, - "dependencies": { - "atob": "^2.1.1", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "node_modules/source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", - "dev": true, - "dependencies": { - "source-map": "^0.5.6" - } - }, - "node_modules/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=", - "dev": true - }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true - }, - "node_modules/spdx-correct": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", - "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", - "dev": true, - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", - "dev": true - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", - "dev": true, - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", - "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", - "dev": true - }, - "node_modules/spdy": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", - "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", - "dev": true, - "dependencies": { - "debug": "^4.1.0", - "handle-thing": "^2.0.0", - "http-deceiver": "^1.2.7", - "select-hose": "^2.0.0", - "spdy-transport": "^3.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/spdy-transport": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", - "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", - "dev": true, - "dependencies": { - "debug": "^4.1.0", - "detect-node": "^2.0.4", - "hpack.js": "^2.1.6", - "obuf": "^1.1.2", - "readable-stream": "^3.0.6", - "wbuf": "^1.7.3" - } - }, - "node_modules/spdy-transport/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/spdy-transport/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/spdy-transport/node_modules/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==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/spdy/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/spdy/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/split-on-first": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", - "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", - "engines": { - "node": ">=6" - } - }, - "node_modules/split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "dependencies": { - "extend-shallow": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "node_modules/sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "dev": true, - "dependencies": { - "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" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sshpk/node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true - }, - "node_modules/ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", - "dev": true, - "dependencies": { - "minipass": "^3.1.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "dev": true - }, - "node_modules/stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "dependencies": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "stream-shift": "^1.0.0" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "node_modules/stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", - "dev": true - }, - "node_modules/strict-uri-encode": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", - "integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY=", - "engines": { - "node": ">=4" - } - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string-length": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", - "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", - "dev": true, - "dependencies": { - "astral-regex": "^1.0.0", - "strip-ansi": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/string-length/node_modules/ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/string-length/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "dependencies": { - "ansi-regex": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/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==", - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimleft": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz", - "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/string.prototype.trimright": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz", - "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/stringify-object": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", - "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", - "dev": true, - "dependencies": { - "get-own-enumerable-property-symbols": "^3.0.0", - "is-obj": "^1.0.1", - "is-regexp": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/stringify-object/node_modules/is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "dependencies": { - "is-utf8": "^0.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz", - "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/style-loader": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-2.0.0.tgz", - "integrity": "sha512-Z0gYUJmzZ6ZdRUqpg1r8GsaFKypE+3xAzuFeMuoHgjc9KZv3wMyCRjQIWEbhoFSq7+7yoHXySDJyyWQaPajeiQ==", - "dev": true, - "dependencies": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/style-loader/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/style-loader/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/style-loader/node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/style-loader/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/style-loader/node_modules/schema-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", - "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.7", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/stylehacks/node_modules/postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/stylehacks/node_modules/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==", - "dev": true, - "dependencies": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/stylehacks/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/stylehacks/node_modules/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==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/stylis": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.0.10.tgz", - "integrity": "sha512-m3k+dk7QeJw660eIKRRn3xPF6uuvHs/FFzjX3HQ5ove0qYsiygoAhwn5a3IYKaZPo5LrYD0rfVmtv1gNY1uYwg==" - }, - "node_modules/superstruct": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-0.8.4.tgz", - "integrity": "sha512-48Ors8IVWZm/tMr8r0Si6+mJiB7mkD7jqvIzktjJ4+EnP5tBp0qOpiM1J8sCUorKx+TXWrfb3i1UcjdD1YK/wA==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.2", - "tiny-invariant": "^1.0.6" - } - }, - "node_modules/superstruct/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/svg.draggable.js": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/svg.draggable.js/-/svg.draggable.js-2.2.2.tgz", - "integrity": "sha512-JzNHBc2fLQMzYCZ90KZHN2ohXL0BQJGQimK1kGk6AvSeibuKcIdDX9Kr0dT9+UJ5O8nYA0RB839Lhvk4CY4MZw==", - "dependencies": { - "svg.js": "^2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/svg.easing.js": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/svg.easing.js/-/svg.easing.js-2.0.0.tgz", - "integrity": "sha1-iqmUawqOJ4V6XEChDrpAkeVpHxI=", - "dependencies": { - "svg.js": ">=2.3.x" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/svg.filter.js": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/svg.filter.js/-/svg.filter.js-2.0.2.tgz", - "integrity": "sha1-kQCOFROJ3ZIwd5/L5uLJo2LRwgM=", - "dependencies": { - "svg.js": "^2.2.5" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/svg.js": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/svg.js/-/svg.js-2.7.1.tgz", - "integrity": "sha512-ycbxpizEQktk3FYvn/8BH+6/EuWXg7ZpQREJvgacqn46gIddG24tNNe4Son6omdXCnSOaApnpZw6MPCBA1dODA==" - }, - "node_modules/svg.pathmorphing.js": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/svg.pathmorphing.js/-/svg.pathmorphing.js-0.1.3.tgz", - "integrity": "sha512-49HWI9X4XQR/JG1qXkSDV8xViuTLIWm/B/7YuQELV5KMOPtXjiwH4XPJvr/ghEDibmLQ9Oc22dpWpG0vUDDNww==", - "dependencies": { - "svg.js": "^2.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/svg.resize.js": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/svg.resize.js/-/svg.resize.js-1.4.3.tgz", - "integrity": "sha512-9k5sXJuPKp+mVzXNvxz7U0uC9oVMQrrf7cFsETznzUDDm0x8+77dtZkWdMfRlmbkEEYvUn9btKuZ3n41oNA+uw==", - "dependencies": { - "svg.js": "^2.6.5", - "svg.select.js": "^2.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/svg.resize.js/node_modules/svg.select.js": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/svg.select.js/-/svg.select.js-2.1.2.tgz", - "integrity": "sha512-tH6ABEyJsAOVAhwcCjF8mw4crjXSI1aa7j2VQR8ZuJ37H2MBUbyeqYr5nEO7sSN3cy9AR9DUwNg0t/962HlDbQ==", - "dependencies": { - "svg.js": "^2.2.5" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/svg.select.js": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/svg.select.js/-/svg.select.js-3.0.1.tgz", - "integrity": "sha512-h5IS/hKkuVCbKSieR9uQCj9w+zLHoPh+ce19bBYyqF53g6mnPB8sAtIbe1s9dh2S2fCmYX2xel1Ln3PJBbK4kw==", - "dependencies": { - "svg.js": "^2.6.5" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/svgo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", - "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", - "deprecated": "This SVGO version is no longer supported. Upgrade to v2.x.x.", - "dev": true, - "dependencies": { - "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" - }, - "bin": { - "svgo": "bin/svgo" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/symbol-observable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", - "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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==", - "dev": true - }, - "node_modules/table": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", - "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", - "dev": true, - "dependencies": { - "ajv": "^5.2.3", - "ajv-keywords": "^2.1.0", - "chalk": "^2.1.0", - "lodash": "^4.17.4", - "slice-ansi": "1.0.0", - "string-width": "^2.1.1" - } - }, - "node_modules/table/node_modules/ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/table/node_modules/string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/table/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "dependencies": { - "ansi-regex": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/tar": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz", - "integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==", - "dev": true, - "dependencies": { - "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" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/tar/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/tar/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/temp-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", - "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/tempy": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz", - "integrity": "sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==", - "dev": true, - "dependencies": { - "is-stream": "^2.0.0", - "temp-dir": "^2.0.0", - "type-fest": "^0.16.0", - "unique-string": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/tempy/node_modules/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==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/tempy/node_modules/type-fest": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", - "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/terser": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.7.1.tgz", - "integrity": "sha512-b3e+d5JbHAe/JSjwsC3Zn55wsBIM7AsHLjKxT31kGCldgbpFePaFo+PiddtO6uwRZWRw7sPXmAN8dTW61xmnSg==", - "dev": true, - "dependencies": { - "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.19" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "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" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/terser-webpack-plugin/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/terser-webpack-plugin/node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/terser-webpack-plugin/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", - "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.7", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/terser-webpack-plugin/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/terser/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/terser/node_modules/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==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/terser/node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/test-exclude": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.2.3.tgz", - "integrity": "sha512-SYbXgY64PT+4GAL2ocI3HwPa4Q4TBKm0cwAVeKOt/Aoc0gSpNRjJX8w0pA1LMKZ3LBmd8pYBqApFNQLII9kavA==", - "dev": true, - "dependencies": { - "arrify": "^1.0.1", - "micromatch": "^2.3.11", - "object-assign": "^4.1.0", - "read-pkg-up": "^1.0.1", - "require-main-filename": "^1.0.1" - } - }, - "node_modules/test-exclude/node_modules/require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "dev": true - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "node_modules/throat": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", - "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=", - "dev": true - }, - "node_modules/throttleit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", - "integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=", - "dev": true - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, - "node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/thunky": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", - "dev": true - }, - "node_modules/timers-browserify": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", - "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", - "dev": true, - "dependencies": { - "setimmediate": "^1.0.4" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/timsort": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", - "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", - "dev": true - }, - "node_modules/tiny-invariant": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.1.0.tgz", - "integrity": "sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw==", - "dev": true - }, - "node_modules/tinydate": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/tinydate/-/tinydate-1.3.0.tgz", - "integrity": "sha512-7cR8rLy2QhYHpsBDBVYnnWXm8uRTr38RoZakFSW7Bs7PzfMPNZthuMLkwqZv7MTu8lhQ91cOFYS5a7iFj2oR3w==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/tmpl": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", - "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", - "dev": true - }, - "node_modules/to-array": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", - "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=" - }, - "node_modules/to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", - "dev": true - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "devOptional": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "dependencies": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex-range/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/toposort": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz", - "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=", - "dev": true - }, - "node_modules/totalist": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz", - "integrity": "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", - "dev": true - }, - "node_modules/trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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==", - "dev": true, - "engines": { - "node": ">=6" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", - "dev": true - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true - }, - "node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/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==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/typed-styles": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/typed-styles/-/typed-styles-0.0.7.tgz", - "integrity": "sha512-pzP0PWoZUhsECYjABgCGQlRGL1n7tOHsgwYv3oIiEpJwGhFTuty/YNeduxQYzXXa3Ge5BdT6sHYIQYpl4uJ+5Q==" - }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, - "node_modules/typescript": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", - "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/uglify-js": { - "version": "3.6.9", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.9.tgz", - "integrity": "sha512-pcnnhaoG6RtrvHJ1dFncAe8Od6Nuy30oaJ82ts6//sGSXOP5UjBMEthiProjXmMNHOfd93sqlkztifFMcb+4yw==", - "dev": true, - "optional": true, - "dependencies": { - "commander": "~2.20.3", - "source-map": "~0.6.1" - }, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/uglify-js/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/unbox-primitive/node_modules/has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/uncontrollable": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.1.1.tgz", - "integrity": "sha512-EcPYhot3uWTS3w00R32R2+vS8Vr53tttrvMj/yA1uYRhf8hbTG2GyugGqWDY0qIskxn0uTTojVd6wPYW9ZEf8Q==", - "dependencies": { - "@babel/runtime": "^7.6.3", - "@types/react": "^16.9.11", - "invariant": "^2.2.4", - "react-lifecycles-compat": "^3.0.4" - }, - "peerDependencies": { - "react": ">=15.0.0" - } - }, - "node_modules/unfetch": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-4.2.0.tgz", - "integrity": "sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==", - "dev": true - }, - "node_modules/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==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/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==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/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==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, - "dependencies": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/union-value/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/union-value/node_modules/get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/union-value/node_modules/set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/uniq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", - "dev": true - }, - "node_modules/uniqs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", - "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", - "dev": true - }, - "node_modules/unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "dev": true, - "dependencies": { - "unique-slug": "^2.0.0" - } - }, - "node_modules/unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4" - } - }, - "node_modules/unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "dev": true, - "dependencies": { - "crypto-random-string": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/unistore": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/unistore/-/unistore-3.5.2.tgz", - "integrity": "sha512-2Aa4eX0Ua1umyiI3Eai6Li+wXYOHgaDBGOPB3Hvw7PAVuD30TAyh5kS4yNKb2fLDbQgizvPhKQRcYnOdfsm4VQ==", - "peerDependenciesMeta": { - "preact": { - "optional": true - }, - "react": { - "optional": true - } - } - }, - "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/unquote": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", - "dev": true - }, - "node_modules/unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "dependencies": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "dependencies": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "dependencies": { - "isarray": "1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "node_modules/untildify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", - "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true, - "engines": { - "node": ">=4", - "yarn": "*" - } - }, - "node_modules/update-notifier": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", - "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", - "dev": true, - "dependencies": { - "boxen": "^5.0.0", - "chalk": "^4.1.0", - "configstore": "^5.0.1", - "has-yarn": "^2.1.0", - "import-lazy": "^2.1.0", - "is-ci": "^2.0.0", - "is-installed-globally": "^0.4.0", - "is-npm": "^5.0.0", - "is-yarn-global": "^0.3.0", - "latest-version": "^5.1.0", - "pupa": "^2.1.1", - "semver": "^7.3.4", - "semver-diff": "^3.1.1", - "xdg-basedir": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/yeoman/update-notifier?sponsor=1" - } - }, - "node_modules/update-notifier/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/update-notifier/node_modules/chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/update-notifier/node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, - "node_modules/update-notifier/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/update-notifier/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/update-notifier/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/update-notifier/node_modules/is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dev": true, - "dependencies": { - "ci-info": "^2.0.0" - }, - "bin": { - "is-ci": "bin.js" - } - }, - "node_modules/update-notifier/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/update-notifier/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/update-notifier/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/update-notifier/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", - "dev": true - }, - "node_modules/uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "deprecated": "Please see https://github.com/lydell/urix#deprecated", - "dev": true - }, - "node_modules/url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "dependencies": { - "punycode": "1.3.2", - "querystring": "0.2.0" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "loader-utils": "^2.0.0", - "mime-types": "^2.1.27", - "schema-utils": "^3.0.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "file-loader": "*", - "webpack": "^4.0.0 || ^5.0.0" - }, - "peerDependenciesMeta": { - "file-loader": { - "optional": true - } - } - }, - "node_modules/url-loader/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/url-loader/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/url-loader/node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/url-loader/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/url-loader/node_modules/mime-db": { - "version": "1.48.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.48.0.tgz", - "integrity": "sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/url-loader/node_modules/mime-types": { - "version": "2.1.31", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.31.tgz", - "integrity": "sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==", - "dev": true, - "dependencies": { - "mime-db": "1.48.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/url-loader/node_modules/schema-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", - "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.7", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/url-parse": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.1.tgz", - "integrity": "sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q==", - "dev": true, - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "node_modules/url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "dev": true, - "dependencies": { - "prepend-http": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/url/node_modules/punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true - }, - "node_modules/use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/useragent-parser-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/useragent-parser-js/-/useragent-parser-js-1.0.3.tgz", - "integrity": "sha1-N6l7MbA+N5ySibl5eQPGzncruv0=" - }, - "node_modules/util": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", - "dev": true, - "dependencies": { - "inherits": "2.0.3" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "node_modules/util.promisify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", - "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.2", - "has-symbols": "^1.0.1", - "object.getownpropertydescriptors": "^2.1.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/util.promisify/node_modules/es-abstract": { - "version": "1.18.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.3.tgz", - "integrity": "sha512-nQIr12dxV7SSxE6r6f1l3DtAeEYdsGpps13dR0TwJg1S8gyp4ZPgy3FZcHBgbiQqnoqSTb+oC+kO4UQ0C/J8vw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "is-callable": "^1.2.3", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.3", - "is-string": "^1.0.6", - "object-inspect": "^1.10.3", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/util.promisify/node_modules/has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/util.promisify/node_modules/is-callable": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/util.promisify/node_modules/is-regex": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz", - "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/util.promisify/node_modules/object-inspect": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", - "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/util.promisify/node_modules/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==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/util/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "node_modules/utila": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", - "dev": true - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", - "dev": true, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/validate-npm-package-name": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", - "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", - "dev": true, - "dependencies": { - "builtins": "^1.0.3" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/vendors": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", - "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "node_modules/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==", - "dev": true - }, - "node_modules/vscode-json-languageservice": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/vscode-json-languageservice/-/vscode-json-languageservice-3.4.7.tgz", - "integrity": "sha512-y3MN2+/yph3yoIHGmHu4ScYpm285L58XVvfGkd49xTQzLja4apxSbwzsYcP9QsqS0W7KuvoyiPhqksiudoMwjg==", - "dev": true, - "dependencies": { - "jsonc-parser": "^2.2.0", - "vscode-languageserver-textdocument": "^1.0.0-next.4", - "vscode-languageserver-types": "^3.15.0-next.6", - "vscode-nls": "^4.1.1", - "vscode-uri": "^2.1.0" - } - }, - "node_modules/vscode-languageserver-textdocument": { - "version": "1.0.0-next.5", - "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.0-next.5.tgz", - "integrity": "sha512-1jp/zAidN/bF/sqPimhBX1orH5G4rzRw63k75TesukJDuxm8yW79ECStWbDSy41BHGOwSGN4M69QFvhancSr5A==", - "dev": true - }, - "node_modules/vscode-languageserver-types": { - "version": "3.15.0-next.8", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.15.0-next.8.tgz", - "integrity": "sha512-AEfWrSNyeamWMKPehh/kd3nBnKD9ZGCPhzfxMnW9YNqElSh28G2+Puk3knIQWyaWyV6Bzh28ok9BRJsPzXFCkQ==", - "dev": true - }, - "node_modules/vscode-nls": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/vscode-nls/-/vscode-nls-4.1.1.tgz", - "integrity": "sha512-4R+2UoUUU/LdnMnFjePxfLqNhBS8lrAFyX7pjb2ud/lqDkrUavFUTcG7wR0HBZFakae0Q6KLBFjMS6W93F403A==", - "dev": true - }, - "node_modules/vscode-uri": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-2.1.1.tgz", - "integrity": "sha512-eY9jmGoEnVf8VE8xr5znSah7Qt1P/xsCdErz+g8HYZtJ7bZqKH5E3d+6oVNm1AC/c6IHUDokbmVXKOi4qPAC9A==", - "dev": true - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "browser-process-hrtime": "^1.0.0" - } - }, - "node_modules/walker": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", - "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", - "dev": true, - "dependencies": { - "makeerror": "1.0.x" - } - }, - "node_modules/warning": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", - "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", - "dependencies": { - "loose-envify": "^1.0.0" - } - }, - "node_modules/watch": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/watch/-/watch-0.18.0.tgz", - "integrity": "sha1-KAlUdsbffJDJYxOJkMClQj60uYY=", - "dev": true, - "dependencies": { - "exec-sh": "^0.2.0", - "minimist": "^1.2.0" - }, - "bin": { - "watch": "cli.js" - }, - "engines": { - "node": ">=0.1.95" - } - }, - "node_modules/watch/node_modules/minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, - "node_modules/watchpack": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", - "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0" - }, - "optionalDependencies": { - "chokidar": "^3.4.1", - "watchpack-chokidar2": "^2.0.1" - } - }, - "node_modules/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==", - "dev": true, - "optional": true, - "dependencies": { - "chokidar": "^2.1.8" - } - }, - "node_modules/watchpack-chokidar2/node_modules/arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "optional": true, - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "deprecated": "Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.", - "dev": true, - "optional": true, - "dependencies": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "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" - }, - "optionalDependencies": { - "fsevents": "^1.2.7" - } - }, - "node_modules/watchpack-chokidar2/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "optional": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "optional": true, - "dependencies": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/expand-brackets/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "optional": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/expand-brackets/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "optional": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "optional": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/expand-brackets/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "optional": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "optional": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/expand-brackets/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "optional": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/expand-brackets/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "optional": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "optional": true, - "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/extglob/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "optional": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "optional": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "optional": true, - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/glob-parent/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "optional": true, - "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "optional": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/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=", - "dev": true, - "optional": true, - "dependencies": { - "binary-extensions": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "optional": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "optional": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/is-descriptor/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/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==", - "dev": true, - "optional": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "optional": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "optional": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/micromatch/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "optional": true, - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/micromatch/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "optional": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/micromatch/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "optional": true, - "dependencies": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", - "dev": true, - "dependencies": { - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", - "dev": true, - "dependencies": { - "defaults": "^1.0.3" - } - }, - "node_modules/webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true - }, - "node_modules/webpack": { - "version": "4.46.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", - "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==", - "dev": true, - "dependencies": { - "@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.5.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" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=6.11.5" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - }, - "webpack-command": { - "optional": true - } - } - }, - "node_modules/webpack-bundle-analyzer": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.4.2.tgz", - "integrity": "sha512-PIagMYhlEzFfhMYOzs5gFT55DkUdkyrJi/SxJp8EF3YMWhS+T9vvs2EoTetpk5qb6VsCq02eXTlRDOydRhDFAQ==", - "dev": true, - "dependencies": { - "acorn": "^8.0.4", - "acorn-walk": "^8.0.0", - "chalk": "^4.1.0", - "commander": "^6.2.0", - "gzip-size": "^6.0.0", - "lodash": "^4.17.20", - "opener": "^1.5.2", - "sirv": "^1.0.7", - "ws": "^7.3.1" - }, - "bin": { - "webpack-bundle-analyzer": "lib/bin/analyzer.js" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/acorn": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.4.1.tgz", - "integrity": "sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/acorn-walk": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.1.1.tgz", - "integrity": "sha512-FbJdceMlPHEAWJOILDk1fXD8lnTlEIWFkqtfk+MvmL5q/qlHfN7GEHcsFZWt/Tea9jRNPWUZG4G976nqAAmU9w==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/webpack-bundle-analyzer/node_modules/commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/webpack-bundle-analyzer/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "memory-fs": "^0.4.1", - "mime": "^2.4.4", - "mkdirp": "^0.5.1", - "range-parser": "^1.2.1", - "webpack-log": "^2.0.0" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/webpack-dev-server": { - "version": "3.11.2", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.2.tgz", - "integrity": "sha512-A80BkuHRQfCiNtGBS1EMf2ChTUs0x+B3wGDFmOeT4rmJOHhHTCH2naNxIHhmkr0/UillP4U3yeIyv1pNp+QDLQ==", - "dev": true, - "dependencies": { - "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.8", - "semver": "^6.3.0", - "serve-index": "^1.9.1", - "sockjs": "^0.3.21", - "sockjs-client": "^1.5.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" - }, - "bin": { - "webpack-dev-server": "bin/webpack-dev-server.js" - }, - "engines": { - "node": ">= 6.11.5" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-dev-server/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/webpack-dev-server/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/webpack-dev-server/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "deprecated": "Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.", - "dev": true, - "dependencies": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "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" - }, - "optionalDependencies": { - "fsevents": "^1.2.7" - } - }, - "node_modules/webpack-dev-server/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/webpack-dev-server/node_modules/debug/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/webpack-dev-server/node_modules/expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "dependencies": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/expand-brackets/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/webpack-dev-server/node_modules/expand-brackets/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/expand-brackets/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/expand-brackets/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/expand-brackets/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/expand-brackets/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/extglob/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/webpack-dev-server/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "node_modules/webpack-dev-server/node_modules/glob-parent/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/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==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/webpack-dev-server/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/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=", - "dev": true, - "dependencies": { - "binary-extensions": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/is-descriptor/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/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==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/webpack-dev-server/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/micromatch/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/micromatch/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/micromatch/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/webpack-dev-server/node_modules/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==", - "dev": true, - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/webpack-dev-server/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/webpack-dev-server/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/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==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-dev-server/node_modules/ws": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", - "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", - "dev": true, - "dependencies": { - "async-limiter": "~1.0.0" - } - }, - "node_modules/webpack-dev-server/node_modules/yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dev": true, - "dependencies": { - "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" - } - }, - "node_modules/webpack-dev-server/node_modules/yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - }, - "node_modules/webpack-fix-style-only-entries": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/webpack-fix-style-only-entries/-/webpack-fix-style-only-entries-0.6.1.tgz", - "integrity": "sha512-wyIhoxS3DD3Fr9JA8hQPA+ZmaWnqPxx12Nv166wcsI/0fbReqyEtiIk2llOFYIg57WVS3XX5cZJxw2ji70R0sA==", - "dev": true - }, - "node_modules/webpack-log": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", - "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", - "dev": true, - "dependencies": { - "ansi-colors": "^3.0.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", - "dev": true, - "dependencies": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/webpack-plugin-replace": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/webpack-plugin-replace/-/webpack-plugin-replace-1.2.0.tgz", - "integrity": "sha512-1HA3etHpJW55qonJqv84o5w5GY7iqF8fqSHpTWdNwarj1llkkt4jT4QSvYs1hoaU8Lu5akDnq/spHHO5mXwo1w==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, - "dependencies": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - }, - "node_modules/webpack-sources/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/webpack/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/webpack/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/webpack/node_modules/arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/cacache": { - "version": "12.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", - "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", - "dev": true, - "dependencies": { - "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" - } - }, - "node_modules/webpack/node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, - "node_modules/webpack/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/webpack/node_modules/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==", - "dev": true, - "dependencies": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/webpack/node_modules/expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "dependencies": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/expand-brackets/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/expand-brackets/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/expand-brackets/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/expand-brackets/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/expand-brackets/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/expand-brackets/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/extglob/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/extglob/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/webpack/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/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==", - "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/webpack/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/webpack/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/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==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/webpack/node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/webpack/node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "node_modules/webpack/node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/webpack/node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack/node_modules/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==", - "dev": true, - "dependencies": { - "find-up": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack/node_modules/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==", - "dev": true, - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/webpack/node_modules/serialize-javascript": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", - "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/webpack/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/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==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/webpack/node_modules/ssri": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", - "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", - "dev": true, - "dependencies": { - "figgy-pudding": "^3.5.1" - } - }, - "node_modules/webpack/node_modules/terser": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", - "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", - "dev": true, - "dependencies": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/webpack/node_modules/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==", - "dev": true, - "dependencies": { - "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" - }, - "engines": { - "node": ">= 6.9.0" - }, - "peerDependencies": { - "webpack": "^4.0.0" - } - }, - "node_modules/webpack/node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "dev": true, - "dependencies": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "iconv-lite": "0.4.24" - } - }, - "node_modules/whatwg-fetch": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz", - "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==", - "dev": true - }, - "node_modules/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==", - "dev": true - }, - "node_modules/whatwg-url": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-4.8.0.tgz", - "integrity": "sha1-0pgaqRSMHgCkHFphMRZqtGg7vMA=", - "dev": true, - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/whatwg-url/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", - "dev": true - }, - "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-boxed-primitive/node_modules/has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-boxed-primitive/node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" - }, - "node_modules/widest-line": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", - "dev": true, - "dependencies": { - "string-width": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/widest-line/node_modules/ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/widest-line/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/widest-line/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/widest-line/node_modules/string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/widest-line/node_modules/strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wildcard": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", - "dev": true - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/workbox-background-sync": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.1.5.tgz", - "integrity": "sha512-VbUmPLsdz+sLzuNxHvMylzyRTiM4q+q7rwLBk3p2mtRL5NZozI8j/KgoGbno96vs84jx4b9zCZMEOIKEUTPf6w==", - "dev": true, - "dependencies": { - "workbox-core": "^6.1.5" - } - }, - "node_modules/workbox-broadcast-update": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.1.5.tgz", - "integrity": "sha512-zGrTTs+n4wHpYtqYMqBg6kl/x5j1UrczGCQnODSHTxIDV8GXLb/GtA1BCZdysNxpMmdVSeLmTcgIYAAqWFamrA==", - "dev": true, - "dependencies": { - "workbox-core": "^6.1.5" - } - }, - "node_modules/workbox-build": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-6.1.5.tgz", - "integrity": "sha512-P+fakR5QFVqJN9l9xHVXtmafga72gh9I+jM3A9HiB/6UNRmOAejXnDgD+RMegOHgQHPwnB44TalMToFaXKWIyA==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.1", - "@babel/preset-env": "^7.11.0", - "@babel/runtime": "^7.11.2", - "@hapi/joi": "^16.1.8", - "@rollup/plugin-babel": "^5.2.0", - "@rollup/plugin-node-resolve": "^11.2.1", - "@rollup/plugin-replace": "^2.4.1", - "@surma/rollup-plugin-off-main-thread": "^1.4.1", - "common-tags": "^1.8.0", - "fast-json-stable-stringify": "^2.1.0", - "fs-extra": "^9.0.1", - "glob": "^7.1.6", - "lodash": "^4.17.20", - "pretty-bytes": "^5.3.0", - "rollup": "^2.43.1", - "rollup-plugin-terser": "^7.0.0", - "source-map": "^0.8.0-beta.0", - "source-map-url": "^0.4.0", - "stringify-object": "^3.3.0", - "strip-comments": "^2.0.1", - "tempy": "^0.6.0", - "upath": "^1.2.0", - "workbox-background-sync": "^6.1.5", - "workbox-broadcast-update": "^6.1.5", - "workbox-cacheable-response": "^6.1.5", - "workbox-core": "^6.1.5", - "workbox-expiration": "^6.1.5", - "workbox-google-analytics": "^6.1.5", - "workbox-navigation-preload": "^6.1.5", - "workbox-precaching": "^6.1.5", - "workbox-range-requests": "^6.1.5", - "workbox-recipes": "^6.1.5", - "workbox-routing": "^6.1.5", - "workbox-strategies": "^6.1.5", - "workbox-streams": "^6.1.5", - "workbox-sw": "^6.1.5", - "workbox-window": "^6.1.5" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/workbox-build/node_modules/@babel/runtime": { - "version": "7.14.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.6.tgz", - "integrity": "sha512-/PCB2uJ7oM44tz8YhC4Z/6PeOKXp4K588f+5M3clr1M4zbqztlo0XEfJ2LEzj/FgwfgGcIdl8n7YYjTCI0BYwg==", - "dev": true, - "dependencies": { - "regenerator-runtime": "^0.13.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/workbox-build/node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/workbox-build/node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/workbox-build/node_modules/pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/workbox-build/node_modules/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==", - "dev": true - }, - "node_modules/workbox-build/node_modules/source-map": { - "version": "0.8.0-beta.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", - "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", - "dev": true, - "dependencies": { - "whatwg-url": "^7.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/workbox-build/node_modules/tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/workbox-build/node_modules/whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "dev": true, - "dependencies": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "node_modules/workbox-cacheable-response": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.1.5.tgz", - "integrity": "sha512-x8DC71lO/JCgiaJ194l9le8wc8lFPLgUpDkLhp2si7mXV6S/wZO+8Osvw1LLgYa8YYTWGbhbFhFTXIkEMknIIA==", - "dev": true, - "dependencies": { - "workbox-core": "^6.1.5" - } - }, - "node_modules/workbox-core": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-6.1.5.tgz", - "integrity": "sha512-9SOEle7YcJzg3njC0xMSmrPIiFjfsFm9WjwGd5enXmI8Lwk8wLdy63B0nzu5LXoibEmS9k+aWF8EzaKtOWjNSA==", - "dev": true - }, - "node_modules/workbox-expiration": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.1.5.tgz", - "integrity": "sha512-6cN+FVbh8fNq56LFKPMchGNKCJeyboHsDuGBqmhDUPvD4uDjsegQpDQzn52VaE0cpywbSIsDF/BSq9E9Yjh5oQ==", - "dev": true, - "dependencies": { - "workbox-core": "^6.1.5" - } - }, - "node_modules/workbox-google-analytics": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.1.5.tgz", - "integrity": "sha512-LYsJ/VxTkYVLxM1uJKXZLz4cJdemidY7kPyAYtKVZ6EiDG89noASqis75/5lhqM1m3HwQfp2DtoPrelKSpSDBA==", - "dev": true, - "dependencies": { - "workbox-background-sync": "^6.1.5", - "workbox-core": "^6.1.5", - "workbox-routing": "^6.1.5", - "workbox-strategies": "^6.1.5" - } - }, - "node_modules/workbox-navigation-preload": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.1.5.tgz", - "integrity": "sha512-hDbNcWlffv0uvS21jCAC/mYk7NzaGRSWOQXv1p7bj2aONAX5l699D2ZK4D27G8TO0BaLHUmW/1A5CZcsvweQdg==", - "dev": true, - "dependencies": { - "workbox-core": "^6.1.5" - } - }, - "node_modules/workbox-precaching": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.1.5.tgz", - "integrity": "sha512-yhm1kb6wgi141JeM5X7z42XJxCry53tbMLB3NgrxktrZbwbrJF8JILzYy+RFKC9tHC6u2bPmL789GPLT2NCDzw==", - "dev": true, - "dependencies": { - "workbox-core": "^6.1.5", - "workbox-routing": "^6.1.5", - "workbox-strategies": "^6.1.5" - } - }, - "node_modules/workbox-range-requests": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.1.5.tgz", - "integrity": "sha512-iACChSapzB0yuIum3ascP/+cfBNuZi5DRrE+u4u5mCHigPlwfSWtlaY+y8p+a8EwcDTVTZVtnrGrRnF31SiLqQ==", - "dev": true, - "dependencies": { - "workbox-core": "^6.1.5" - } - }, - "node_modules/workbox-recipes": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.1.5.tgz", - "integrity": "sha512-MD1yabHca6O/oj1hrRdfj9cRwhKA5zqIE53rWOAg/dKMMzWQsf9nyRbXRgzK3a13iQvYKuQzURU4Cx58tdnR+Q==", - "dev": true, - "dependencies": { - "workbox-cacheable-response": "^6.1.5", - "workbox-core": "^6.1.5", - "workbox-expiration": "^6.1.5", - "workbox-precaching": "^6.1.5", - "workbox-routing": "^6.1.5", - "workbox-strategies": "^6.1.5" - } - }, - "node_modules/workbox-routing": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.1.5.tgz", - "integrity": "sha512-uC/Ctz+4GXGL42h1WxUNKxqKRik/38uS0NZ6VY/EHqL2F1ObLFqMHUZ4ZYvyQsKdyI82cxusvhJZHOrY0a2fIQ==", - "dev": true, - "dependencies": { - "workbox-core": "^6.1.5" - } - }, - "node_modules/workbox-strategies": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.1.5.tgz", - "integrity": "sha512-QhiOn9KT9YGBdbfWOmJT6pXZOIAxaVrs6J6AMYzRpkUegBTEcv36+ZhE/cfHoT0u2fxVtthHnskOQ/snEzaXQw==", - "dev": true, - "dependencies": { - "workbox-core": "^6.1.5" - } - }, - "node_modules/workbox-streams": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.1.5.tgz", - "integrity": "sha512-OI1kLvRHGFXV+soDvs6aEwfBwdAkvPB0mRryqdh3/K17qUj/1gRXc8QtpgU+83xqx/I/ar2bTCIj0KPzI/ChCQ==", - "dev": true, - "dependencies": { - "workbox-core": "^6.1.5", - "workbox-routing": "^6.1.5" - } - }, - "node_modules/workbox-sw": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.1.5.tgz", - "integrity": "sha512-IMDiqxYbKzPorZLGMUMacLB6r76iVQbdTzYthIZoPfy+uFURJFUtqiWQJKg1L+RMyuYXwKXTahCIGkgFs4jBeg==", - "dev": true - }, - "node_modules/workbox-webpack-plugin": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-6.1.5.tgz", - "integrity": "sha512-tsgeNAYiFP4STNPDxBVT58eiU8nGUmcv7Lq9FFJkQf5MMu6tPw1OLp+KpszhbCWP+R/nEdu85Gjexs6fY647Kg==", - "dev": true, - "dependencies": { - "fast-json-stable-stringify": "^2.1.0", - "pretty-bytes": "^5.4.1", - "source-map-url": "^0.4.0", - "upath": "^1.2.0", - "webpack-sources": "^1.4.3", - "workbox-build": "^6.1.5" - }, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "webpack": "^4.4.0 || ^5.9.0" - } - }, - "node_modules/workbox-webpack-plugin/node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/workbox-webpack-plugin/node_modules/pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/workbox-window": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-6.1.5.tgz", - "integrity": "sha512-akL0X6mAegai2yypnq78RgfazeqvKbsllRtEI4dnbhPcRINEY1NmecFmsQk8SD+zWLK1gw5OdwAOX+zHSRVmeA==", - "dev": true, - "dependencies": { - "workbox-core": "^6.1.5" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "errno": "~0.1.7" - } - }, - "node_modules/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==", + "lockfileVersion": 1, + "dependencies": { + "@ampproject/remapping": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz", + "integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==", "dev": true, - "dependencies": { - "microevent.ts": "~0.1.1" - } - }, - "node_modules/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==", - "dependencies": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "engines": { - "node": ">=6" + "requires": { + "@jridgewell/trace-mapping": "^0.3.0" } }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "node_modules/write": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", - "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "@apideck/better-ajv-errors": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.3.tgz", + "integrity": "sha512-9o+HO2MbJhJHjDYZaDxJmSDckvDpiuItEsrIShV0DXeCshXWRHhqYyU/PKHMkuClOmFnZhRd6wzv4vpDu/dRKg==", "dev": true, - "dependencies": { - "mkdirp": "^0.5.1" + "requires": { + "json-schema": "^0.4.0", + "jsonpointer": "^5.0.0", + "leven": "^3.1.0" }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/write-file-atomic": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", - "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", - "dev": true, "dependencies": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" - } - }, - "node_modules/ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true } } }, - "node_modules/xdg-basedir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", - "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/xml-name-validator": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz", - "integrity": "sha1-TYuPHszTQZqjYgYb7O9RXh5VljU=", - "dev": true - }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true - }, - "node_modules/xmlhttprequest-ssl": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.3.tgz", - "integrity": "sha512-3XfeQE/wNkvrIktn2Kf0869fC0BN6UpydVasGIeSm2B1Llihf7/0UfZM+eCkOw3P7bP4+qPgqhm7ZoxuJtFU0Q==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, - "engines": { - "node": ">=0.4" - } - }, - "node_modules/y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" - }, - "node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true - }, - "node_modules/yargs": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", - "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", - "dependencies": { - "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.1" - } - }, - "node_modules/yargs-parser": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", - "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - }, - "node_modules/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", - "dev": true, - "dependencies": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } - }, - "node_modules/yeast": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", - "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=" - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - }, - "dependencies": { "@babel/code-frame": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.44.tgz", - "integrity": "sha512-cuAuTTIQ9RqcFRJ/Y8PvTh+paepNcaGxwQwjIDRWPXmzzyAeCO4KqS9ikMvq0MCbRk6GlYKwfzStrcP3/jSL8g==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", "dev": true, "requires": { - "@babel/highlight": "7.0.0-beta.44" + "@babel/highlight": "^7.16.7" } }, "@babel/compat-data": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.7.tgz", - "integrity": "sha512-nS6dZaISCXJ3+518CWiBfEr//gHyMO02uDxBkXTKZDN5POruCnOZ1N4YBRZDCabwF8nZMWBpRxIicmXtBs+fvw==", - "devOptional": true + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz", + "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==", + "dev": true }, "@babel/core": { - "version": "7.14.6", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.6.tgz", - "integrity": "sha512-gJnOEWSqTk96qG5BoIrl5bVtc23DCycmIePPYnamY9RboYdI4nFy5vAQMSl81O5K/W0sLDWfGysnOECC+KUUCA==", - "devOptional": true, - "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.14.5", - "@babel/helper-compilation-targets": "^7.14.5", - "@babel/helper-module-transforms": "^7.14.5", - "@babel/helpers": "^7.14.6", - "@babel/parser": "^7.14.6", - "@babel/template": "^7.14.5", - "@babel/traverse": "^7.14.5", - "@babel/types": "^7.14.5", + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.8.tgz", + "integrity": "sha512-OdQDV/7cRBtJHLSOBqqbYNkOcydOgnX59TZx4puf41fzcVtN3e/4yqY8lMQsK+5X2lJtAdmA+6OHqsj1hBJ4IQ==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.7", + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helpers": "^7.17.8", + "@babel/parser": "^7.17.8", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.1.2", - "semver": "^6.3.0", - "source-map": "^0.5.0" + "semver": "^6.3.0" }, "dependencies": { - "@babel/code-frame": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", - "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", - "devOptional": true, - "requires": { - "@babel/highlight": "^7.14.5" - } - }, "@babel/generator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz", - "integrity": "sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==", - "devOptional": true, + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz", + "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==", + "dev": true, "requires": { - "@babel/types": "^7.14.5", + "@babel/types": "^7.17.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, "@babel/helper-function-name": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", - "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", - "devOptional": true, + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", + "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", + "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.14.5", - "@babel/template": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-get-function-arity": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/types": "^7.16.7" } }, "@babel/helper-get-function-arity": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", - "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", - "devOptional": true, + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", + "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", + "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.16.7" } }, "@babel/helper-split-export-declaration": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", - "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", - "devOptional": true, - "requires": { - "@babel/types": "^7.14.5" - } - }, - "@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "devOptional": true, + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "@babel/types": "^7.16.7" } }, "@babel/template": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", - "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", - "devOptional": true, + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "dev": true, "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" } }, "@babel/traverse": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.7.tgz", - "integrity": "sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ==", - "devOptional": true, - "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.14.5", - "@babel/helper-function-name": "^7.14.5", - "@babel/helper-hoist-variables": "^7.14.5", - "@babel/helper-split-export-declaration": "^7.14.5", - "@babel/parser": "^7.14.7", - "@babel/types": "^7.14.5", + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz", + "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.3", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.17.3", + "@babel/types": "^7.17.0", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", - "devOptional": true, + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.16.7", "to-fast-properties": "^2.0.0" } }, "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "devOptional": true, + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, "requires": { "ms": "2.1.2" } }, "json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "devOptional": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "devOptional": true + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "devOptional": true + "dev": true }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "devOptional": true + "dev": true } } }, @@ -30165,199 +191,149 @@ } }, "@babel/helper-annotate-as-pure": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.14.5.tgz", - "integrity": "sha512-EivH9EgBIb+G8ij1B2jAwSH36WnGvkQSEC6CkX/6v6ZFlw5fVOHvsgGF4uiEHO2GzMvunZb6tDLQEQSdrdocrA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.16.7" }, "dependencies": { "@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.16.7", "to-fast-properties": "^2.0.0" } } } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.14.5.tgz", - "integrity": "sha512-YTA/Twn0vBXDVGJuAX6PwW7x5zQei1luDDo2Pl6q1qZ7hVNl0RZrhHCQG/ArGpR29Vl7ETiB8eJyrvpuRp300w==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", + "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-explode-assignable-expression": "^7.16.7", + "@babel/types": "^7.16.7" }, "dependencies": { "@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.16.7", "to-fast-properties": "^2.0.0" } } } }, "@babel/helper-compilation-targets": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.14.5.tgz", - "integrity": "sha512-v+QtZqXEiOnpO6EYvlImB6zCD2Lel06RzOPzmkz/D/XgQiUu3C/Jb1LOqSt/AIA34TYi/Q+KlT8vTQrgdxkbLw==", - "devOptional": true, + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz", + "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==", + "dev": true, "requires": { - "@babel/compat-data": "^7.14.5", - "@babel/helper-validator-option": "^7.14.5", - "browserslist": "^4.16.6", + "@babel/compat-data": "^7.17.7", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.17.5", "semver": "^6.3.0" }, "dependencies": { - "browserslist": { - "version": "4.16.6", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", - "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", - "devOptional": true, - "requires": { - "caniuse-lite": "^1.0.30001219", - "colorette": "^1.2.2", - "electron-to-chromium": "^1.3.723", - "escalade": "^3.1.1", - "node-releases": "^1.1.71" - } - }, - "caniuse-lite": { - "version": "1.0.30001245", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001245.tgz", - "integrity": "sha512-768fM9j1PKXpOCKws6eTo3RHmvTUsG9UrpT4WoREFeZgJBTi4/X9g565azS/rVUGtqb8nt7FjLeF5u4kukERnA==", - "devOptional": true - }, - "electron-to-chromium": { - "version": "1.3.776", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.776.tgz", - "integrity": "sha512-V0w7eFSBoFPpdw4xexjVPZ770UDZIevSwkkj4W97XbE3IsCsTRFpa7/yXGZ88EOQAUEA09JMMsWK0xsw0kRAYw==", - "devOptional": true - }, - "node-releases": { - "version": "1.1.73", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz", - "integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==", - "devOptional": true - }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "devOptional": true + "dev": true } } }, "@babel/helper-create-class-features-plugin": { - "version": "7.14.6", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.6.tgz", - "integrity": "sha512-Z6gsfGofTxH/+LQXqYEK45kxmcensbzmk/oi8DmaQytlQCgqNZt9XQF8iqlI/SeXWVjaMNxvYvzaYw+kh42mDg==", + "version": "7.17.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.6.tgz", + "integrity": "sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.14.5", - "@babel/helper-function-name": "^7.14.5", - "@babel/helper-member-expression-to-functions": "^7.14.5", - "@babel/helper-optimise-call-expression": "^7.14.5", - "@babel/helper-replace-supers": "^7.14.5", - "@babel/helper-split-export-declaration": "^7.14.5" + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7" }, "dependencies": { - "@babel/code-frame": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", - "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.14.5" - } - }, "@babel/helper-function-name": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", - "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", + "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.14.5", - "@babel/template": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-get-function-arity": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/types": "^7.16.7" } }, "@babel/helper-get-function-arity": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", - "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", + "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.16.7" } }, "@babel/helper-split-export-declaration": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", - "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", - "dev": true, - "requires": { - "@babel/types": "^7.14.5" - } - }, - "@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "@babel/types": "^7.16.7" } }, "@babel/template": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", - "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", "dev": true, "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" } }, "@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.16.7", "to-fast-properties": "^2.0.0" } } } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.5.tgz", - "integrity": "sha512-TLawwqpOErY2HhWbGJ2nZT5wSkR192QpN+nBg1THfBfftrlvOh+WbhrxXCH4q4xJ9Gl16BGPR/48JA+Ryiho/A==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz", + "integrity": "sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.14.5", - "regexpu-core": "^4.7.1" + "@babel/helper-annotate-as-pure": "^7.16.7", + "regexpu-core": "^5.0.1" } }, "@babel/helper-define-polyfill-provider": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz", - "integrity": "sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", + "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", "dev": true, "requires": { "@babel/helper-compilation-targets": "^7.13.0", @@ -30370,117 +346,89 @@ "semver": "^6.1.2" }, "dependencies": { - "@babel/code-frame": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", - "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.14.5" - } - }, "@babel/generator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz", - "integrity": "sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz", + "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==", "dev": true, "requires": { - "@babel/types": "^7.14.5", + "@babel/types": "^7.17.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, "@babel/helper-function-name": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", - "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", + "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.14.5", - "@babel/template": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-get-function-arity": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/types": "^7.16.7" } }, "@babel/helper-get-function-arity": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", - "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", - "dev": true, - "requires": { - "@babel/types": "^7.14.5" - } - }, - "@babel/helper-module-imports": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", - "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", + "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.16.7" } }, "@babel/helper-split-export-declaration": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", - "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", - "dev": true, - "requires": { - "@babel/types": "^7.14.5" - } - }, - "@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "@babel/types": "^7.16.7" } }, "@babel/template": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", - "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", "dev": true, "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" } }, "@babel/traverse": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.7.tgz", - "integrity": "sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.14.5", - "@babel/helper-function-name": "^7.14.5", - "@babel/helper-hoist-variables": "^7.14.5", - "@babel/helper-split-export-declaration": "^7.14.5", - "@babel/parser": "^7.14.7", - "@babel/types": "^7.14.5", + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz", + "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.3", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.17.3", + "@babel/types": "^7.17.0", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.16.7", "to-fast-properties": "^2.0.0" } }, "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "requires": { "ms": "2.1.2" @@ -30492,14 +440,21 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", "dev": true, "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" } }, "semver": { @@ -30510,22 +465,43 @@ } } }, + "@babel/helper-environment-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", + "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + }, + "dependencies": { + "@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + } + } + }, "@babel/helper-explode-assignable-expression": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.14.5.tgz", - "integrity": "sha512-Htb24gnGJdIGT4vnRKMdoXiOIlqOLmdiUYpAQ0mYfgVT/GDm8GOYhgi4GL+hMKrkiPRohO4ts34ELFsGAPQLDQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", + "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.16.7" }, "dependencies": { "@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.16.7", "to-fast-properties": "^2.0.0" } } @@ -30552,175 +528,171 @@ } }, "@babel/helper-hoist-variables": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz", - "integrity": "sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ==", - "devOptional": true, + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.16.7" }, "dependencies": { "@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", - "devOptional": true, + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.16.7", "to-fast-properties": "^2.0.0" } } } }, "@babel/helper-member-expression-to-functions": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.14.7.tgz", - "integrity": "sha512-TMUt4xKxJn6ccjcOW7c4hlwyJArizskAhoSTOCkA0uZ+KghIaci0Qg9R043kUMWI9mtQfgny+NQ5QATnZ+paaA==", - "devOptional": true, + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", + "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", + "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.17.0" }, "dependencies": { "@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", - "devOptional": true, + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.16.7", "to-fast-properties": "^2.0.0" } } } }, - "@babel/helper-module-transforms": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.5.tgz", - "integrity": "sha512-iXpX4KW8LVODuAieD7MzhNjmM6dzYY5tfRqT+R9HDXWl0jPn/djKmA+G9s/2C2T9zggw5tK1QNqZ70USfedOwA==", - "devOptional": true, + "@babel/helper-module-imports": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", "requires": { - "@babel/helper-module-imports": "^7.14.5", - "@babel/helper-replace-supers": "^7.14.5", - "@babel/helper-simple-access": "^7.14.5", - "@babel/helper-split-export-declaration": "^7.14.5", - "@babel/helper-validator-identifier": "^7.14.5", - "@babel/template": "^7.14.5", - "@babel/traverse": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/types": "^7.16.7" }, "dependencies": { - "@babel/code-frame": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", - "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", - "devOptional": true, + "@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==" + }, + "@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", "requires": { - "@babel/highlight": "^7.14.5" + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" } - }, + } + } + }, + "@babel/helper-module-transforms": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", + "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0" + }, + "dependencies": { "@babel/generator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz", - "integrity": "sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==", - "devOptional": true, + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz", + "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==", + "dev": true, "requires": { - "@babel/types": "^7.14.5", + "@babel/types": "^7.17.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, "@babel/helper-function-name": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", - "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", - "devOptional": true, + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", + "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", + "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.14.5", - "@babel/template": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-get-function-arity": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/types": "^7.16.7" } }, "@babel/helper-get-function-arity": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", - "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", - "devOptional": true, - "requires": { - "@babel/types": "^7.14.5" - } - }, - "@babel/helper-module-imports": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", - "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", - "devOptional": true, + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", + "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", + "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.16.7" } }, "@babel/helper-split-export-declaration": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", - "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", - "devOptional": true, - "requires": { - "@babel/types": "^7.14.5" - } - }, - "@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "devOptional": true, + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "@babel/types": "^7.16.7" } }, "@babel/template": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", - "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", - "devOptional": true, + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "dev": true, "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" } }, "@babel/traverse": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.7.tgz", - "integrity": "sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ==", - "devOptional": true, - "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.14.5", - "@babel/helper-function-name": "^7.14.5", - "@babel/helper-hoist-variables": "^7.14.5", - "@babel/helper-split-export-declaration": "^7.14.5", - "@babel/parser": "^7.14.7", - "@babel/types": "^7.14.5", + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz", + "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.3", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.17.3", + "@babel/types": "^7.17.0", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", - "devOptional": true, + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.16.7", "to-fast-properties": "^2.0.0" } }, "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "devOptional": true, + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, "requires": { "ms": "2.1.2" } @@ -30729,26 +701,26 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "devOptional": true + "dev": true } } }, "@babel/helper-optimise-call-expression": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz", - "integrity": "sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA==", - "devOptional": true, + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", + "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", + "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.16.7" }, "dependencies": { "@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", - "devOptional": true, + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.16.7", "to-fast-properties": "^2.0.0" } } @@ -30757,147 +729,128 @@ "@babel/helper-plugin-utils": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", - "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", - "dev": true + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==" }, "@babel/helper-remap-async-to-generator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.14.5.tgz", - "integrity": "sha512-rLQKdQU+HYlxBwQIj8dk4/0ENOUEhA/Z0l4hN8BexpvmSMN9oA9EagjnhnDpNsRdWCfjwa4mn/HyBXO9yhQP6A==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", + "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.14.5", - "@babel/helper-wrap-function": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-wrap-function": "^7.16.8", + "@babel/types": "^7.16.8" }, "dependencies": { "@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.16.7", "to-fast-properties": "^2.0.0" } } } }, "@babel/helper-replace-supers": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.14.5.tgz", - "integrity": "sha512-3i1Qe9/8x/hCHINujn+iuHy+mMRLoc77b2nI9TB0zjH1hvn9qGlXjWlggdwUcju36PkPCy/lpM7LLUdcTyH4Ow==", - "devOptional": true, + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", + "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", + "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.14.5", - "@babel/helper-optimise-call-expression": "^7.14.5", - "@babel/traverse": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" }, "dependencies": { - "@babel/code-frame": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", - "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", - "devOptional": true, - "requires": { - "@babel/highlight": "^7.14.5" - } - }, "@babel/generator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz", - "integrity": "sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==", - "devOptional": true, + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz", + "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==", + "dev": true, "requires": { - "@babel/types": "^7.14.5", + "@babel/types": "^7.17.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, "@babel/helper-function-name": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", - "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", - "devOptional": true, + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", + "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", + "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.14.5", - "@babel/template": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-get-function-arity": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/types": "^7.16.7" } }, "@babel/helper-get-function-arity": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", - "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", - "devOptional": true, + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", + "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", + "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.16.7" } }, "@babel/helper-split-export-declaration": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", - "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", - "devOptional": true, - "requires": { - "@babel/types": "^7.14.5" - } - }, - "@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "devOptional": true, + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "@babel/types": "^7.16.7" } }, "@babel/template": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", - "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", - "devOptional": true, + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "dev": true, "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" } }, "@babel/traverse": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.7.tgz", - "integrity": "sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ==", - "devOptional": true, - "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.14.5", - "@babel/helper-function-name": "^7.14.5", - "@babel/helper-hoist-variables": "^7.14.5", - "@babel/helper-split-export-declaration": "^7.14.5", - "@babel/parser": "^7.14.7", - "@babel/types": "^7.14.5", + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz", + "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.3", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.17.3", + "@babel/types": "^7.17.0", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", - "devOptional": true, + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.16.7", "to-fast-properties": "^2.0.0" } }, "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "devOptional": true, + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, "requires": { "ms": "2.1.2" } @@ -30906,47 +859,47 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "devOptional": true + "dev": true } } }, "@babel/helper-simple-access": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.14.5.tgz", - "integrity": "sha512-nfBN9xvmCt6nrMZjfhkl7i0oTV3yxR4/FztsbOASyTvVcoYd0TRHh7eMLdlEcCqobydC0LAF3LtC92Iwxo0wyw==", - "devOptional": true, + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", + "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", + "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.17.0" }, "dependencies": { "@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", - "devOptional": true, + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.16.7", "to-fast-properties": "^2.0.0" } } } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.14.5.tgz", - "integrity": "sha512-dmqZB7mrb94PZSAOYtr+ZN5qt5owZIAgqtoTuqiFbHFtxgEcmQlRJVI+bO++fciBunXtB6MK7HrzrfcAzIz2NQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.16.0" }, "dependencies": { "@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.16.7", "to-fast-properties": "^2.0.0" } } @@ -30962,131 +915,112 @@ } }, "@babel/helper-validator-identifier": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz", - "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==", - "devOptional": true + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "dev": true }, "@babel/helper-validator-option": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", - "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", - "devOptional": true + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "dev": true }, "@babel/helper-wrap-function": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.14.5.tgz", - "integrity": "sha512-YEdjTCq+LNuNS1WfxsDCNpgXkJaIyqco6DAelTUjT4f2KIWC1nBcaCaSdHTBqQVLnTBexBcVcFhLSU1KnYuePQ==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", + "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.14.5", - "@babel/template": "^7.14.5", - "@babel/traverse": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-function-name": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.8", + "@babel/types": "^7.16.8" }, "dependencies": { - "@babel/code-frame": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", - "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.14.5" - } - }, "@babel/generator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz", - "integrity": "sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz", + "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==", "dev": true, "requires": { - "@babel/types": "^7.14.5", + "@babel/types": "^7.17.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, "@babel/helper-function-name": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", - "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", + "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.14.5", - "@babel/template": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-get-function-arity": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/types": "^7.16.7" } }, "@babel/helper-get-function-arity": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", - "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", + "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.16.7" } }, "@babel/helper-split-export-declaration": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", - "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", "dev": true, "requires": { - "@babel/types": "^7.14.5" - } - }, - "@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.14.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "@babel/types": "^7.16.7" } }, "@babel/template": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", - "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", "dev": true, "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" } }, "@babel/traverse": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.7.tgz", - "integrity": "sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.14.5", - "@babel/helper-function-name": "^7.14.5", - "@babel/helper-hoist-variables": "^7.14.5", - "@babel/helper-split-export-declaration": "^7.14.5", - "@babel/parser": "^7.14.7", - "@babel/types": "^7.14.5", + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz", + "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.3", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.17.3", + "@babel/types": "^7.17.0", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.16.7", "to-fast-properties": "^2.0.0" } }, "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "requires": { "ms": "2.1.2" @@ -31101,119 +1035,100 @@ } }, "@babel/helpers": { - "version": "7.14.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.6.tgz", - "integrity": "sha512-yesp1ENQBiLI+iYHSJdoZKUtRpfTlL1grDIX9NRlAVppljLw/4tTyYupIB7uIYmC3stW/imAv8EqaKaS/ibmeA==", - "devOptional": true, + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.8.tgz", + "integrity": "sha512-QcL86FGxpfSJwGtAvv4iG93UL6bmqBdmoVY0CMCU2g+oD2ezQse3PT5Pa+jiD6LJndBQi0EDlpzOWNlLuhz5gw==", + "dev": true, "requires": { - "@babel/template": "^7.14.5", - "@babel/traverse": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0" }, "dependencies": { - "@babel/code-frame": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", - "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", - "devOptional": true, - "requires": { - "@babel/highlight": "^7.14.5" - } - }, "@babel/generator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz", - "integrity": "sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==", - "devOptional": true, + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz", + "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==", + "dev": true, "requires": { - "@babel/types": "^7.14.5", + "@babel/types": "^7.17.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, "@babel/helper-function-name": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", - "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", - "devOptional": true, + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", + "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", + "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.14.5", - "@babel/template": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-get-function-arity": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/types": "^7.16.7" } }, "@babel/helper-get-function-arity": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", - "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", - "devOptional": true, + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", + "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", + "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.16.7" } }, "@babel/helper-split-export-declaration": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", - "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", - "devOptional": true, - "requires": { - "@babel/types": "^7.14.5" - } - }, - "@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "devOptional": true, + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "@babel/types": "^7.16.7" } }, "@babel/template": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", - "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", - "devOptional": true, + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "dev": true, "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" } }, "@babel/traverse": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.7.tgz", - "integrity": "sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ==", - "devOptional": true, - "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.14.5", - "@babel/helper-function-name": "^7.14.5", - "@babel/helper-hoist-variables": "^7.14.5", - "@babel/helper-split-export-declaration": "^7.14.5", - "@babel/parser": "^7.14.7", - "@babel/types": "^7.14.5", + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz", + "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.3", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.17.3", + "@babel/types": "^7.17.0", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", - "devOptional": true, + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.16.7", "to-fast-properties": "^2.0.0" } }, "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "devOptional": true, + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, "requires": { "ms": "2.1.2" } @@ -31222,213 +1137,360 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "devOptional": true + "dev": true } } }, "@babel/highlight": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.44.tgz", - "integrity": "sha512-Il19yJvy7vMFm8AVAh6OZzaFoAd0hbkeMZiX3P5HGD+z7dyI7RzndHB0dg6Urh/VAFfHtpOIzDUSxmY6coyZWQ==", + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", + "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", "dev": true, "requires": { + "@babel/helper-validator-identifier": "^7.16.7", "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^3.0.0" + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.8.tgz", + "integrity": "sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ==", + "dev": true + }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz", + "integrity": "sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" }, "dependencies": { - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", "dev": true } } }, - "@babel/parser": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.7.tgz", - "integrity": "sha512-X67Z5y+VBJuHB/RjwECp8kSl5uYi0BvRbNeWqkaJCVh+LiTPl19WBUfG627psSgp9rSf6ojuXghQM3ha6qHHdA==", - "devOptional": true - }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.14.5.tgz", - "integrity": "sha512-ZoJS2XCKPBfTmL122iP6NM9dOg+d4lc9fFk3zxc8iDjvt8Pk4+TlsHSKhIPf6X+L5ORCdBzqMZDjL/WHj7WknQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz", + "integrity": "sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5", - "@babel/plugin-proposal-optional-chaining": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.7" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.14.7.tgz", - "integrity": "sha512-RK8Wj7lXLY3bqei69/cc25gwS5puEc3dknoFPFbqfy3XxYQBQFvu4ioWpafMBAB+L9NyptQK4nMOa5Xz16og8Q==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz", + "integrity": "sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-remap-async-to-generator": "^7.14.5", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-remap-async-to-generator": "^7.16.8", "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, "@babel/plugin-proposal-class-properties": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz", - "integrity": "sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz", + "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, "@babel/plugin-proposal-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.14.5.tgz", - "integrity": "sha512-KBAH5ksEnYHCegqseI5N9skTdxgJdmDoAOc0uXa+4QMYKeZD0w5IARh4FMlTNtaHhbB8v+KzMdTgxMMzsIy6Yg==", + "version": "7.17.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz", + "integrity": "sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-create-class-features-plugin": "^7.17.6", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, "@babel/plugin-proposal-decorators": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.14.5.tgz", - "integrity": "sha512-LYz5nvQcvYeRVjui1Ykn28i+3aUiXwQ/3MGoEy0InTaz1pJo/lAzmIDXX+BQny/oufgHzJ6vnEEiXQ8KZjEVFg==", + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.17.8.tgz", + "integrity": "sha512-U69odN4Umyyx1xO1rTII0IDkAEC+RNlcKXtqOblfpzqy1C+aOplb76BQNq0+XdpVkOaPlpEDwd++joY8FNFJKA==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-decorators": "^7.14.5" + "@babel/helper-create-class-features-plugin": "^7.17.6", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/plugin-syntax-decorators": "^7.17.0", + "charcodes": "^0.2.0" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.5.tgz", - "integrity": "sha512-ExjiNYc3HDN5PXJx+bwC50GIx/KKanX2HiggnIUAYedbARdImiCU4RhhHfdf0Kd7JNXGpsBBBCOm+bBVy3Gb0g==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", + "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, "@babel/plugin-proposal-export-namespace-from": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.5.tgz", - "integrity": "sha512-g5POA32bXPMmSBu5Dx/iZGLGnKmKPc5AiY7qfZgurzrCYgIztDlHFbznSNCoQuv57YQLnQfaDi7dxCtLDIdXdA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz", + "integrity": "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, "@babel/plugin-proposal-json-strings": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.5.tgz", - "integrity": "sha512-NSq2fczJYKVRIsUJyNxrVUMhB27zb7N7pOFGQOhBKJrChbGcgEAqyZrmZswkPk18VMurEeJAaICbfm57vUeTbQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz", + "integrity": "sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.5.tgz", - "integrity": "sha512-YGn2AvZAo9TwyhlLvCCWxD90Xq8xJ4aSgaX3G5D/8DW94L8aaT+dS5cSP+Z06+rCJERGSr9GxMBZ601xoc2taw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz", + "integrity": "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.5.tgz", - "integrity": "sha512-gun/SOnMqjSb98Nkaq2rTKMwervfdAoz6NphdY0vTfuzMfryj+tDGb2n6UkDKwez+Y8PZDhE3D143v6Gepp4Hg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz", + "integrity": "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.5.tgz", - "integrity": "sha512-yiclALKe0vyZRZE0pS6RXgjUOt87GWv6FYa5zqj15PvhOGFO69R5DusPlgK/1K5dVnCtegTiWu9UaBSrLLJJBg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", + "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.14.7.tgz", - "integrity": "sha512-082hsZz+sVabfmDWo1Oct1u1AgbKbUAyVgmX4otIc7bdsRgHBXwTwb3DpDmD4Eyyx6DNiuz5UAATT655k+kL5g==", + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz", + "integrity": "sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw==", "dev": true, "requires": { - "@babel/compat-data": "^7.14.7", - "@babel/helper-compilation-targets": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", + "@babel/compat-data": "^7.17.0", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.14.5" + "@babel/plugin-transform-parameters": "^7.16.7" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.5.tgz", - "integrity": "sha512-3Oyiixm0ur7bzO5ybNcZFlmVsygSIQgdOa7cTfOYCMY+wEPAYhZAJxi3mixKFCTCKUhQXuCTtQ1MzrpL3WT8ZQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", + "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.5.tgz", - "integrity": "sha512-ycz+VOzo2UbWNI1rQXxIuMOzrDdHGrI23fRiz/Si2R4kv2XZQ1BK8ccdHwehMKBlcH/joGW/tzrUmo67gbJHlQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz", + "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, "@babel/plugin-proposal-private-methods": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.14.5.tgz", - "integrity": "sha512-838DkdUA1u+QTCplatfq4B7+1lnDa/+QMI89x5WZHBcnNv+47N8QEj2k9I2MUU9xIv8XJ4XvPCviM/Dj7Uwt9g==", + "version": "7.16.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz", + "integrity": "sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-create-class-features-plugin": "^7.16.10", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, "@babel/plugin-proposal-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-62EyfyA3WA0mZiF2e2IV9mc9Ghwxcg8YTu8BS4Wss4Y3PY725OmS9M0qLORbJwLqFtGh+jiE4wAmocK2CTUK2Q==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz", + "integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.14.5", - "@babel/helper-create-class-features-plugin": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.14.5.tgz", - "integrity": "sha512-6axIeOU5LnY471KenAB9vI8I5j7NQ2d652hIYwVyRfgaZT5UpiqFKCuVXCDMSrU+3VFafnu2c5m3lrWIlr6A5Q==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz", + "integrity": "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, "@babel/plugin-syntax-async-generators": { @@ -31459,12 +1521,20 @@ } }, "@babel/plugin-syntax-decorators": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.14.5.tgz", - "integrity": "sha512-c4sZMRWL4GSvP1EXy0woIP7m4jkVcEuG8R1TOZxPBPtp4FSM/kiPZub9UIs/Jrb5ZAOzvTUSGYrWsrSu1JvoPw==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.17.0.tgz", + "integrity": "sha512-qWe85yCXsvDEluNP0OyeQjH63DlhAR3W7K9BxxU1MvbDb48tgBG+Ao6IJJ6smPDrrVzSQZrbF6donpkFBMcs3A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, "@babel/plugin-syntax-dynamic-import": { @@ -31498,7 +1568,6 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz", "integrity": "sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } @@ -31576,562 +1645,770 @@ } }, "@babel/plugin-syntax-typescript": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz", - "integrity": "sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz", + "integrity": "sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.14.5.tgz", - "integrity": "sha512-KOnO0l4+tD5IfOdi4x8C1XmEIRWUjNRV8wc6K2vz/3e8yAOoZZvsRXRRIF/yo/MAOFb4QjtAw9xSxMXbSMRy8A==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz", + "integrity": "sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.14.5.tgz", - "integrity": "sha512-szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz", + "integrity": "sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-remap-async-to-generator": "^7.14.5" + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-remap-async-to-generator": "^7.16.8" }, "dependencies": { - "@babel/helper-module-imports": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", - "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", - "dev": true, - "requires": { - "@babel/types": "^7.14.5" - } - }, - "@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.14.5", - "to-fast-properties": "^2.0.0" - } + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true } } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.14.5.tgz", - "integrity": "sha512-dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", + "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, "@babel/plugin-transform-block-scoping": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.5.tgz", - "integrity": "sha512-LBYm4ZocNgoCqyxMLoOnwpsmQ18HWTQvql64t3GvMUzLQrNoV1BDG0lNftC8QKYERkZgCCT/7J5xWGObGAyHDw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz", + "integrity": "sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, "@babel/plugin-transform-classes": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.14.5.tgz", - "integrity": "sha512-J4VxKAMykM06K/64z9rwiL6xnBHgB1+FVspqvlgCdwD1KUbQNfszeKVVOMh59w3sztHYIZDgnhOC4WbdEfHFDA==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.14.5", - "@babel/helper-function-name": "^7.14.5", - "@babel/helper-optimise-call-expression": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-replace-supers": "^7.14.5", - "@babel/helper-split-export-declaration": "^7.14.5", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz", + "integrity": "sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", "globals": "^11.1.0" }, "dependencies": { - "@babel/code-frame": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", - "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.14.5" - } - }, "@babel/helper-function-name": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", - "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", + "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.14.5", - "@babel/template": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-get-function-arity": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/types": "^7.16.7" } }, "@babel/helper-get-function-arity": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", - "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", + "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.16.7" } }, - "@babel/helper-split-export-declaration": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", - "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", - "dev": true, - "requires": { - "@babel/types": "^7.14.5" - } + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true }, - "@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "@babel/helper-split-export-declaration": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "@babel/types": "^7.16.7" } }, "@babel/template": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", - "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", "dev": true, "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" } }, "@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.16.7", "to-fast-properties": "^2.0.0" } } } }, "@babel/plugin-transform-computed-properties": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.14.5.tgz", - "integrity": "sha512-pWM+E4283UxaVzLb8UBXv4EIxMovU4zxT1OPnpHJcmnvyY9QbPPTKZfEj31EUvG3/EQRbYAGaYEUZ4yWOBC2xg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz", + "integrity": "sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, "@babel/plugin-transform-destructuring": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.7.tgz", - "integrity": "sha512-0mDE99nK+kVh3xlc5vKwB6wnP9ecuSj+zQCa/n0voENtP/zymdT4HH6QEb65wjjcbqr1Jb/7z9Qp7TF5FtwYGw==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz", + "integrity": "sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.14.5.tgz", - "integrity": "sha512-loGlnBdj02MDsFaHhAIJzh7euK89lBrGIdM9EAtHFo6xKygCUGuuWe07o1oZVk287amtW1n0808sQM99aZt3gw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", + "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.14.5.tgz", - "integrity": "sha512-iJjbI53huKbPDAsJ8EmVmvCKeeq21bAze4fu9GBQtSLqfvzj2oRuHVx4ZkDwEhg1htQ+5OBZh/Ab0XDf5iBZ7A==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz", + "integrity": "sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.14.5.tgz", - "integrity": "sha512-jFazJhMBc9D27o9jDnIE5ZErI0R0m7PbKXVq77FFvqFbzvTMuv8jaAwLZ5PviOLSFttqKIW0/wxNSDbjLk0tYA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", + "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, "@babel/plugin-transform-for-of": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.14.5.tgz", - "integrity": "sha512-CfmqxSUZzBl0rSjpoQSFoR9UEj3HzbGuGNL21/iFTmjb5gFggJp3ph0xR1YBhexmLoKRHzgxuFvty2xdSt6gTA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz", + "integrity": "sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, "@babel/plugin-transform-function-name": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.14.5.tgz", - "integrity": "sha512-vbO6kv0fIzZ1GpmGQuvbwwm+O4Cbm2NrPzwlup9+/3fdkuzo1YqOZcXw26+YUJB84Ja7j9yURWposEHLYwxUfQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", + "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" }, "dependencies": { - "@babel/code-frame": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", - "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.14.5" - } - }, "@babel/helper-function-name": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", - "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", + "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.14.5", - "@babel/template": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-get-function-arity": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/types": "^7.16.7" } }, "@babel/helper-get-function-arity": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", - "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", + "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.16.7" } }, - "@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.14.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true }, "@babel/template": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", - "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", "dev": true, "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" } }, "@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.16.7", "to-fast-properties": "^2.0.0" } } } }, "@babel/plugin-transform-literals": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.14.5.tgz", - "integrity": "sha512-ql33+epql2F49bi8aHXxvLURHkxJbSmMKl9J5yHqg4PLtdE6Uc48CH1GS6TQvZ86eoB/ApZXwm7jlA+B3kra7A==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz", + "integrity": "sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.14.5.tgz", - "integrity": "sha512-WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", + "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, "@babel/plugin-transform-modules-amd": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.5.tgz", - "integrity": "sha512-3lpOU8Vxmp3roC4vzFpSdEpGUWSMsHFreTWOMMLzel2gNGfHE5UWIh/LN6ghHs2xurUp4jRFYMUIZhuFbody1g==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz", + "integrity": "sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.5.tgz", - "integrity": "sha512-en8GfBtgnydoao2PS+87mKyw62k02k7kJ9ltbKe0fXTHrQmG6QZZflYuGI1VVG7sVpx4E1n7KBpNlPb8m78J+A==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.7.tgz", + "integrity": "sha512-ITPmR2V7MqioMJyrxUo2onHNC3e+MvfFiFIR0RP21d3PtlVb6sfzoxNKiphSZUOM9hEIdzCcZe83ieX3yoqjUA==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-simple-access": "^7.14.5", + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.14.5.tgz", - "integrity": "sha512-mNMQdvBEE5DcMQaL5LbzXFMANrQjd2W7FPzg34Y4yEz7dBgdaC+9B84dSO+/1Wba98zoDbInctCDo4JGxz1VYA==", + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz", + "integrity": "sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.14.5", - "@babel/helper-module-transforms": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, "@babel/plugin-transform-modules-umd": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.5.tgz", - "integrity": "sha512-RfPGoagSngC06LsGUYyM9QWSXZ8MysEjDJTAea1lqRjNECE3y0qIJF/qbvJxc4oA4s99HumIMdXOrd+TdKaAAA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz", + "integrity": "sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.14.7.tgz", - "integrity": "sha512-DTNOTaS7TkW97xsDMrp7nycUVh6sn/eq22VaxWfEdzuEbRsiaOU0pqU7DlyUGHVsbQbSghvjKRpEl+nUCKGQSg==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz", + "integrity": "sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5" + "@babel/helper-create-regexp-features-plugin": "^7.16.7" } }, "@babel/plugin-transform-new-target": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.14.5.tgz", - "integrity": "sha512-Nx054zovz6IIRWEB49RDRuXGI4Gy0GMgqG0cII9L3MxqgXz/+rgII+RU58qpo4g7tNEx1jG7rRVH4ihZoP4esQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz", + "integrity": "sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, "@babel/plugin-transform-object-assign": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.14.5.tgz", - "integrity": "sha512-lvhjk4UN9xJJYB1mI5KC0/o1D5EcJXdbhVe+4fSk08D6ZN+iuAIs7LJC+71h8av9Ew4+uRq9452v9R93SFmQlQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.16.7.tgz", + "integrity": "sha512-R8mawvm3x0COTJtveuoqZIjNypn2FjfvXZr4pSQ8VhEFBuQGBz4XhHasZtHXjgXU4XptZ4HtGof3NoYc93ZH9Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, "@babel/plugin-transform-object-super": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.14.5.tgz", - "integrity": "sha512-MKfOBWzK0pZIrav9z/hkRqIk/2bTv9qvxHzPQc12RcVkMOzpIKnFCNYJip00ssKWYkd8Sf5g0Wr7pqJ+cmtuFg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", + "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-replace-supers": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, "@babel/plugin-transform-parameters": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.14.5.tgz", - "integrity": "sha512-Tl7LWdr6HUxTmzQtzuU14SqbgrSKmaR77M0OKyq4njZLQTPfOvzblNKyNkGwOfEFCEx7KeYHQHDI0P3F02IVkA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz", + "integrity": "sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, "@babel/plugin-transform-property-literals": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.14.5.tgz", - "integrity": "sha512-r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", + "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, "@babel/plugin-transform-react-jsx": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.14.5.tgz", - "integrity": "sha512-7RylxNeDnxc1OleDm0F5Q/BSL+whYRbOAR+bwgCxIr0L32v7UFh/pz1DLMZideAUxKT6eMoS2zQH6fyODLEi8Q==", + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.3.tgz", + "integrity": "sha512-9tjBm4O07f7mzKSIlEmPdiE6ub7kfIe6Cd+w+oQebpATfTQMAgW+YOuWxogbKVTulA+MEO7byMeIUtQ1z+z+ZQ==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.14.5", - "@babel/helper-module-imports": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-jsx": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-jsx": "^7.16.7", + "@babel/types": "^7.17.0" }, "dependencies": { - "@babel/helper-module-imports": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", - "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + }, + "@babel/plugin-syntax-jsx": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz", + "integrity": "sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.16.7", "to-fast-properties": "^2.0.0" } } } }, "@babel/plugin-transform-regenerator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.14.5.tgz", - "integrity": "sha512-NVIY1W3ITDP5xQl50NgTKlZ0GrotKtLna08/uGY6ErQt6VEQZXla86x/CTddm5gZdcr+5GSsvMeTmWA5Ii6pkg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz", + "integrity": "sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q==", "dev": true, "requires": { "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.14.5.tgz", - "integrity": "sha512-cv4F2rv1nD4qdexOGsRQXJrOcyb5CrgjUH9PKrrtyhSDBNWGxd0UIitjyJiWagS+EbUGjG++22mGH1Pub8D6Vg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz", + "integrity": "sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.14.5.tgz", - "integrity": "sha512-xLucks6T1VmGsTB+GWK5Pl9Jl5+nRXD1uoFdA5TSO6xtiNjtXTjKkmPdFXVLGlK5A2/or/wQMKfmQ2Y0XJfn5g==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", + "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, "@babel/plugin-transform-spread": { - "version": "7.14.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.14.6.tgz", - "integrity": "sha512-Zr0x0YroFJku7n7+/HH3A2eIrGMjbmAIbJSVv0IZ+t3U2WUQUA64S/oeied2e+MaGSjmt4alzBCsK9E8gh+fag==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz", + "integrity": "sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.14.5.tgz", - "integrity": "sha512-Z7F7GyvEMzIIbwnziAZmnSNpdijdr4dWt+FJNBnBLz5mwDFkqIXU9wmBcWWad3QeJF5hMTkRe4dAq2sUZiG+8A==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", + "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, "@babel/plugin-transform-template-literals": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.14.5.tgz", - "integrity": "sha512-22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz", + "integrity": "sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.14.5.tgz", - "integrity": "sha512-lXzLD30ffCWseTbMQzrvDWqljvZlHkXU+CnseMhkMNqU1sASnCsz3tSzAaH3vCUXb9PHeUb90ZT1BdFTm1xxJw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz", + "integrity": "sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, "@babel/plugin-transform-typescript": { - "version": "7.14.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.14.6.tgz", - "integrity": "sha512-XlTdBq7Awr4FYIzqhmYY80WN0V0azF74DMPyFqVHBvf81ZUgc4X7ZOpx6O8eLDK6iM5cCQzeyJw0ynTaefixRA==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.8.tgz", + "integrity": "sha512-bHdQ9k7YpBDO2d0NVfkj51DpQcvwIzIusJ7mEUaMlbZq3Kt/U47j24inXZHQ5MDiYpCs+oZiwnXyKedE8+q7AQ==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.14.6", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-typescript": "^7.14.5" + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-typescript": "^7.16.7" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.14.5.tgz", - "integrity": "sha512-crTo4jATEOjxj7bt9lbYXcBAM3LZaUrbP2uUdxb6WIorLmjNKSpHfIybgY4B8SRpbf8tEVIWH3Vtm7ayCrKocA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", + "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.14.5.tgz", - "integrity": "sha512-UygduJpC5kHeCiRw/xDVzC+wj8VaYSoKl5JNVmbP7MadpNinAm3SvZCxZ42H37KZBKztz46YC73i9yV34d0Tzw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", + "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, "@babel/preset-env": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.14.7.tgz", - "integrity": "sha512-itOGqCKLsSUl0Y+1nSfhbuuOlTs0MJk2Iv7iSH+XT/mR8U1zRLO7NjWlYXB47yhK4J/7j+HYty/EhFZDYKa/VA==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.14.7", - "@babel/helper-compilation-targets": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.14.5", - "@babel/plugin-proposal-async-generator-functions": "^7.14.7", - "@babel/plugin-proposal-class-properties": "^7.14.5", - "@babel/plugin-proposal-class-static-block": "^7.14.5", - "@babel/plugin-proposal-dynamic-import": "^7.14.5", - "@babel/plugin-proposal-export-namespace-from": "^7.14.5", - "@babel/plugin-proposal-json-strings": "^7.14.5", - "@babel/plugin-proposal-logical-assignment-operators": "^7.14.5", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5", - "@babel/plugin-proposal-numeric-separator": "^7.14.5", - "@babel/plugin-proposal-object-rest-spread": "^7.14.7", - "@babel/plugin-proposal-optional-catch-binding": "^7.14.5", - "@babel/plugin-proposal-optional-chaining": "^7.14.5", - "@babel/plugin-proposal-private-methods": "^7.14.5", - "@babel/plugin-proposal-private-property-in-object": "^7.14.5", - "@babel/plugin-proposal-unicode-property-regex": "^7.14.5", + "version": "7.16.11", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.11.tgz", + "integrity": "sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.16.8", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.7", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.7", + "@babel/plugin-proposal-async-generator-functions": "^7.16.8", + "@babel/plugin-proposal-class-properties": "^7.16.7", + "@babel/plugin-proposal-class-static-block": "^7.16.7", + "@babel/plugin-proposal-dynamic-import": "^7.16.7", + "@babel/plugin-proposal-export-namespace-from": "^7.16.7", + "@babel/plugin-proposal-json-strings": "^7.16.7", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.7", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7", + "@babel/plugin-proposal-numeric-separator": "^7.16.7", + "@babel/plugin-proposal-object-rest-spread": "^7.16.7", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", + "@babel/plugin-proposal-optional-chaining": "^7.16.7", + "@babel/plugin-proposal-private-methods": "^7.16.11", + "@babel/plugin-proposal-private-property-in-object": "^7.16.7", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.7", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", @@ -32146,54 +2423,60 @@ "@babel/plugin-syntax-optional-chaining": "^7.8.3", "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.14.5", - "@babel/plugin-transform-async-to-generator": "^7.14.5", - "@babel/plugin-transform-block-scoped-functions": "^7.14.5", - "@babel/plugin-transform-block-scoping": "^7.14.5", - "@babel/plugin-transform-classes": "^7.14.5", - "@babel/plugin-transform-computed-properties": "^7.14.5", - "@babel/plugin-transform-destructuring": "^7.14.7", - "@babel/plugin-transform-dotall-regex": "^7.14.5", - "@babel/plugin-transform-duplicate-keys": "^7.14.5", - "@babel/plugin-transform-exponentiation-operator": "^7.14.5", - "@babel/plugin-transform-for-of": "^7.14.5", - "@babel/plugin-transform-function-name": "^7.14.5", - "@babel/plugin-transform-literals": "^7.14.5", - "@babel/plugin-transform-member-expression-literals": "^7.14.5", - "@babel/plugin-transform-modules-amd": "^7.14.5", - "@babel/plugin-transform-modules-commonjs": "^7.14.5", - "@babel/plugin-transform-modules-systemjs": "^7.14.5", - "@babel/plugin-transform-modules-umd": "^7.14.5", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.14.7", - "@babel/plugin-transform-new-target": "^7.14.5", - "@babel/plugin-transform-object-super": "^7.14.5", - "@babel/plugin-transform-parameters": "^7.14.5", - "@babel/plugin-transform-property-literals": "^7.14.5", - "@babel/plugin-transform-regenerator": "^7.14.5", - "@babel/plugin-transform-reserved-words": "^7.14.5", - "@babel/plugin-transform-shorthand-properties": "^7.14.5", - "@babel/plugin-transform-spread": "^7.14.6", - "@babel/plugin-transform-sticky-regex": "^7.14.5", - "@babel/plugin-transform-template-literals": "^7.14.5", - "@babel/plugin-transform-typeof-symbol": "^7.14.5", - "@babel/plugin-transform-unicode-escapes": "^7.14.5", - "@babel/plugin-transform-unicode-regex": "^7.14.5", - "@babel/preset-modules": "^0.1.4", - "@babel/types": "^7.14.5", - "babel-plugin-polyfill-corejs2": "^0.2.2", - "babel-plugin-polyfill-corejs3": "^0.2.2", - "babel-plugin-polyfill-regenerator": "^0.2.2", - "core-js-compat": "^3.15.0", + "@babel/plugin-transform-arrow-functions": "^7.16.7", + "@babel/plugin-transform-async-to-generator": "^7.16.8", + "@babel/plugin-transform-block-scoped-functions": "^7.16.7", + "@babel/plugin-transform-block-scoping": "^7.16.7", + "@babel/plugin-transform-classes": "^7.16.7", + "@babel/plugin-transform-computed-properties": "^7.16.7", + "@babel/plugin-transform-destructuring": "^7.16.7", + "@babel/plugin-transform-dotall-regex": "^7.16.7", + "@babel/plugin-transform-duplicate-keys": "^7.16.7", + "@babel/plugin-transform-exponentiation-operator": "^7.16.7", + "@babel/plugin-transform-for-of": "^7.16.7", + "@babel/plugin-transform-function-name": "^7.16.7", + "@babel/plugin-transform-literals": "^7.16.7", + "@babel/plugin-transform-member-expression-literals": "^7.16.7", + "@babel/plugin-transform-modules-amd": "^7.16.7", + "@babel/plugin-transform-modules-commonjs": "^7.16.8", + "@babel/plugin-transform-modules-systemjs": "^7.16.7", + "@babel/plugin-transform-modules-umd": "^7.16.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.8", + "@babel/plugin-transform-new-target": "^7.16.7", + "@babel/plugin-transform-object-super": "^7.16.7", + "@babel/plugin-transform-parameters": "^7.16.7", + "@babel/plugin-transform-property-literals": "^7.16.7", + "@babel/plugin-transform-regenerator": "^7.16.7", + "@babel/plugin-transform-reserved-words": "^7.16.7", + "@babel/plugin-transform-shorthand-properties": "^7.16.7", + "@babel/plugin-transform-spread": "^7.16.7", + "@babel/plugin-transform-sticky-regex": "^7.16.7", + "@babel/plugin-transform-template-literals": "^7.16.7", + "@babel/plugin-transform-typeof-symbol": "^7.16.7", + "@babel/plugin-transform-unicode-escapes": "^7.16.7", + "@babel/plugin-transform-unicode-regex": "^7.16.7", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.16.8", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.20.2", "semver": "^6.3.0" }, "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + }, "@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.16.7", "to-fast-properties": "^2.0.0" } }, @@ -32206,9 +2489,9 @@ } }, "@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==", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -32219,26 +2502,34 @@ }, "dependencies": { "@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.16.7", "to-fast-properties": "^2.0.0" } } } }, "@babel/preset-typescript": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.14.5.tgz", - "integrity": "sha512-u4zO6CdbRKbS9TypMqrlGH7sd2TAJppZwn3c/ZRLeO/wGsbddxgbPDUZVNrie3JWYLQ9vpineKlsrWFvO6Pwkw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.16.7.tgz", + "integrity": "sha512-WbVEmgXdIyvzB77AQjGBEyYPZx+8tTsO50XtfozQrkW8QB2rLJpH2lgx0TRw5EJrBxOZQ+wCcyPVQvS8tjEHpQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-transform-typescript": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-transform-typescript": "^7.16.7" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, "@babel/runtime": { @@ -32259,6 +2550,34 @@ "@babel/types": "7.0.0-beta.44", "babylon": "7.0.0-beta.44", "lodash": "^4.2.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.44.tgz", + "integrity": "sha512-cuAuTTIQ9RqcFRJ/Y8PvTh+paepNcaGxwQwjIDRWPXmzzyAeCO4KqS9ikMvq0MCbRk6GlYKwfzStrcP3/jSL8g==", + "dev": true, + "requires": { + "@babel/highlight": "7.0.0-beta.44" + } + }, + "@babel/highlight": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.44.tgz", + "integrity": "sha512-Il19yJvy7vMFm8AVAh6OZzaFoAd0hbkeMZiX3P5HGD+z7dyI7RzndHB0dg6Urh/VAFfHtpOIzDUSxmY6coyZWQ==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^3.0.0" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + } } }, "@babel/traverse": { @@ -32277,6 +2596,34 @@ "globals": "^11.1.0", "invariant": "^2.2.0", "lodash": "^4.2.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.44.tgz", + "integrity": "sha512-cuAuTTIQ9RqcFRJ/Y8PvTh+paepNcaGxwQwjIDRWPXmzzyAeCO4KqS9ikMvq0MCbRk6GlYKwfzStrcP3/jSL8g==", + "dev": true, + "requires": { + "@babel/highlight": "7.0.0-beta.44" + } + }, + "@babel/highlight": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.44.tgz", + "integrity": "sha512-Il19yJvy7vMFm8AVAh6OZzaFoAd0hbkeMZiX3P5HGD+z7dyI7RzndHB0dg6Urh/VAFfHtpOIzDUSxmY6coyZWQ==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^3.0.0" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + } } }, "@babel/types": { @@ -32290,16 +2637,46 @@ "to-fast-properties": "^2.0.0" } }, + "@bundle-stats/plugin-webpack-filter": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/@bundle-stats/plugin-webpack-filter/-/plugin-webpack-filter-3.3.2.tgz", + "integrity": "sha512-eb6fAhV62Gta4PjTvx/cSLxbybDvLlYw4Lsjpj1fqre6U62XZz6FdfAwZ4Kt9fP3Qag2kWHYwiTaHuM7dfcZSQ==", + "dev": true + }, + "@bundle-stats/plugin-webpack-validate": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/@bundle-stats/plugin-webpack-validate/-/plugin-webpack-validate-3.3.2.tgz", + "integrity": "sha512-97WurPu6wZnmLTvt0vTH0PwJOaP2+rXLTeT4NUyfhZFnZ7FL6A32cQzXVBgQmBNV+wfTCJxMI1vad/ffV04zow==", + "dev": true, + "requires": { + "superstruct": "0.8.3" + } + }, "@bundle-stats/utils": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@bundle-stats/utils/-/utils-3.0.1.tgz", - "integrity": "sha512-FWGtsbEUyEpKpAN2hA7cZQIUqbH2I9WHClOcKmv7kdsNRhvNn2YPAho0eGz0ZMxjH2Goz3a17Y5BjIxDHJMDQA==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/@bundle-stats/utils/-/utils-3.3.2.tgz", + "integrity": "sha512-HYbFwGPN2dbGKlA/L/cNnTlY47M+WZR4/oEL+4f//52IuEUts8ABeEKVutqe+OeZYXPo00oIQIpcYenlpi5w0Q==", "dev": true, "requires": { - "convert-units": "^2.3.4", - "query-string": "^7.0.0", - "serialize-query-params": "^1.3.3", - "superstruct": "^0.8.3" + "@bundle-stats/plugin-webpack-filter": "^3.3.2", + "@bundle-stats/plugin-webpack-validate": "^3.3.2", + "convert-units": "3.0.0-beta.2", + "query-string": "7.1.1", + "serialize-query-params": "1.3.6" + }, + "dependencies": { + "query-string": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.1.tgz", + "integrity": "sha512-MplouLRDHBZSG9z7fpuAAcI7aAYjDLhtsiVZsevsfaHWDS2IDdORKbSd1kWUA+V4zyva/HZoSfpwnYMMQDhb0w==", + "dev": true, + "requires": { + "decode-uri-component": "^0.2.0", + "filter-obj": "^1.1.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" + } + } } }, "@ctrlpanel/pbkdf2": { @@ -32344,47 +2721,12 @@ "supports-color": "^2.0.0" } }, - "cli-cursor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", - "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", - "dev": true, - "requires": { - "restore-cursor": "^1.0.1" - } - }, "date-fns": { "version": "1.30.1", "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==", "dev": true }, - "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" - } - }, - "onetime": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", - "dev": true - }, - "restore-cursor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", - "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", - "dev": true, - "requires": { - "exit-hook": "^1.0.0", - "onetime": "^1.0.0" - } - }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", @@ -32393,13 +2735,19 @@ "requires": { "ansi-regex": "^2.0.0" } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true } } }, "@cypress/request": { - "version": "2.88.5", - "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.5.tgz", - "integrity": "sha512-TzEC1XMi1hJkywWpRfD2clreTa/Z+lOrXDCxxBTBPEcY5azdPi56A6Xw+O4tWJnaJH3iIE7G5aDXZC6JgRZLcA==", + "version": "2.88.10", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.10.tgz", + "integrity": "sha512-Zp7F+R93N0yZyG34GutyTNr+okam7s/Fzc1+i3kcqOP8vk6OuajuE9qZJ6Rs+10/1JFtXFYMdyarnU1rZuJesg==", "dev": true, "requires": { "aws-sign2": "~0.7.0", @@ -32409,19 +2757,25 @@ "extend": "~3.0.2", "forever-agent": "~0.6.1", "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", + "http-signature": "~1.3.6", "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" + "uuid": "^8.3.2" + }, + "dependencies": { + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + } } }, "@cypress/xvfb": { @@ -32434,16 +2788,50 @@ "lodash.once": "^4.1.1" } }, + "@emotion/babel-plugin": { + "version": "11.7.2", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.7.2.tgz", + "integrity": "sha512-6mGSCWi9UzXut/ZAN6lGFu33wGR3SJisNl3c0tvlmb8XChH1b2SUvxvnOh7hvLpqyRdHHU9AiazV3Cwbk5SXKQ==", + "requires": { + "@babel/helper-module-imports": "^7.12.13", + "@babel/plugin-syntax-jsx": "^7.12.13", + "@babel/runtime": "^7.13.10", + "@emotion/hash": "^0.8.0", + "@emotion/memoize": "^0.7.5", + "@emotion/serialize": "^1.0.2", + "babel-plugin-macros": "^2.6.1", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "4.0.13" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.8.tgz", + "integrity": "sha512-dQpEpK0O9o6lj6oPu0gRDbbnk+4LeHlNcBpspf6Olzt3GIX4P1lWF1gS+pHLDFlaJvbR6q7jCfQ08zA4QJBnmA==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" + } + } + }, "@emotion/cache": { - "version": "11.4.0", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.4.0.tgz", - "integrity": "sha512-Zx70bjE7LErRO9OaZrhf22Qye1y4F7iDl+ITjet0J+i+B88PrAOBkKvaAWhxsZf72tDLajwCgfCjJ2dvH77C3g==", + "version": "11.7.1", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.7.1.tgz", + "integrity": "sha512-r65Zy4Iljb8oyjtLeCuBH8Qjiy107dOYC6SJq7g7GV5UCQWMObY4SJDPGFjiiVpPrOJ2hmJOoBiYTC7hwx9E2A==", "requires": { "@emotion/memoize": "^0.7.4", - "@emotion/sheet": "^1.0.0", + "@emotion/sheet": "^1.1.0", "@emotion/utils": "^1.0.0", "@emotion/weak-memoize": "^0.2.5", - "stylis": "^4.0.3" + "stylis": "4.0.13" } }, "@emotion/hash": { @@ -32457,31 +2845,26 @@ "integrity": "sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ==" }, "@emotion/react": { - "version": "11.4.0", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.4.0.tgz", - "integrity": "sha512-4XklWsl9BdtatLoJpSjusXhpKv9YVteYKh9hPKP1Sxl+mswEFoUe0WtmtWjxEjkA51DQ2QRMCNOvKcSlCQ7ivg==", + "version": "11.8.2", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.8.2.tgz", + "integrity": "sha512-+1bcHBaNJv5nkIIgnGKVsie3otS0wF9f1T1hteF3WeVvMNQEtfZ4YyFpnphGoot3ilU/wWMgP2SgIDuHLE/wAA==", "requires": { "@babel/runtime": "^7.13.10", - "@emotion/cache": "^11.4.0", + "@emotion/babel-plugin": "^11.7.1", + "@emotion/cache": "^11.7.1", "@emotion/serialize": "^1.0.2", - "@emotion/sheet": "^1.0.1", - "@emotion/utils": "^1.0.0", + "@emotion/utils": "^1.1.0", "@emotion/weak-memoize": "^0.2.5", "hoist-non-react-statics": "^3.3.1" }, "dependencies": { "@babel/runtime": { - "version": "7.14.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.6.tgz", - "integrity": "sha512-/PCB2uJ7oM44tz8YhC4Z/6PeOKXp4K588f+5M3clr1M4zbqztlo0XEfJ2LEzj/FgwfgGcIdl8n7YYjTCI0BYwg==", + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.8.tgz", + "integrity": "sha512-dQpEpK0O9o6lj6oPu0gRDbbnk+4LeHlNcBpspf6Olzt3GIX4P1lWF1gS+pHLDFlaJvbR6q7jCfQ08zA4QJBnmA==", "requires": { "regenerator-runtime": "^0.13.4" } - }, - "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==" } } }, @@ -32495,19 +2878,12 @@ "@emotion/unitless": "^0.7.5", "@emotion/utils": "^1.0.0", "csstype": "^3.0.2" - }, - "dependencies": { - "csstype": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.8.tgz", - "integrity": "sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw==" - } } }, "@emotion/sheet": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.0.1.tgz", - "integrity": "sha512-GbIvVMe4U+Zc+929N1V7nW6YYJtidj31lidSmdYcWozwoBIObXBnaJkKNDjZrLm9Nc0BR+ZyHNaRZxqNZbof5g==" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.1.0.tgz", + "integrity": "sha512-u0AX4aSo25sMAygCuQTzS+HsImZFuS8llY8O7b9MDRzbJM0kVJlAz6KNDqcG7pOuQZJmj/8X/rAW+66kMnMW+g==" }, "@emotion/unitless": { "version": "0.7.5", @@ -32515,15 +2891,21 @@ "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" }, "@emotion/utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.0.0.tgz", - "integrity": "sha512-mQC2b3XLDs6QCW+pDQDiyO/EdGZYOygE8s5N5rrzjSI4M3IejPE/JPndCBwRT9z982aqQNi6beWs1UeayrQxxA==" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.1.0.tgz", + "integrity": "sha512-iRLa/Y4Rs5H/f2nimczYmS5kFJEbpiVvgN3XVfZ022IYhuNA1IRSHEizcof88LtCTXtl9S2Cxt32KgaXEu72JQ==" }, "@emotion/weak-memoize": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz", "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==" }, + "@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true + }, "@gladysassistant/gladys-gateway-js": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/@gladysassistant/gladys-gateway-js/-/gladys-gateway-js-3.5.0.tgz", @@ -32544,52 +2926,6 @@ "resolved": "https://registry.npmjs.org/@gladysassistant/theme-optimized/-/theme-optimized-1.0.3.tgz", "integrity": "sha512-FhcHgDFXPb3BCw31wK9p2Cr/4L+oApzmPnIyk7GaybIYyznLWOuhYf0TXzaA9uMlARbpK5HgMmzJUaloXgiykA==" }, - "@hapi/address": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", - "integrity": "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==", - "dev": true - }, - "@hapi/formula": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@hapi/formula/-/formula-1.2.0.tgz", - "integrity": "sha512-UFbtbGPjstz0eWHb+ga/GM3Z9EzqKXFWIbSOFURU0A/Gku0Bky4bCk9/h//K2Xr3IrCfjFNhMm4jyZ5dbCewGA==", - "dev": true - }, - "@hapi/hoek": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz", - "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==", - "dev": true - }, - "@hapi/joi": { - "version": "16.1.8", - "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-16.1.8.tgz", - "integrity": "sha512-wAsVvTPe+FwSrsAurNt5vkg3zo+TblvC5Bb1zMVK6SJzZqw9UrJnexxR+76cpePmtUZKHAPxcQ2Bf7oVHyahhg==", - "dev": true, - "requires": { - "@hapi/address": "^2.1.2", - "@hapi/formula": "^1.2.0", - "@hapi/hoek": "^8.2.4", - "@hapi/pinpoint": "^1.0.2", - "@hapi/topo": "^3.1.3" - } - }, - "@hapi/pinpoint": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@hapi/pinpoint/-/pinpoint-1.0.2.tgz", - "integrity": "sha512-dtXC/WkZBfC5vxscazuiJ6iq4j9oNx1SHknmIr8hofarpKUZKmlUVYVIhNVzIEgK5Wrc4GMHL5lZtt1uS2flmQ==", - "dev": true - }, - "@hapi/topo": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz", - "integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==", - "dev": true, - "requires": { - "@hapi/hoek": "^8.3.0" - } - }, "@hypnosphi/create-react-context": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/@hypnosphi/create-react-context/-/create-react-context-0.3.1.tgz", @@ -32613,6 +2949,28 @@ "preact": "^10.0.0" } }, + "@jridgewell/resolve-uri": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", + "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.11", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", + "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz", + "integrity": "sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, "@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -32639,6 +2997,42 @@ "fastq": "^1.6.0" } }, + "@npmcli/fs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", + "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", + "dev": true, + "requires": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, "@npmcli/move-file": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", @@ -32654,22 +3048,13 @@ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } } } }, "@polka/url": { - "version": "1.0.0-next.15", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.15.tgz", - "integrity": "sha512-15spi3V28QdevleWBNXE4pIls3nFZmBbUGrW9IVPwiQczuSb9n76TCB4bsk8TSel+I1OkHEdPhu5QKMfY6rQHA==", + "version": "1.0.0-next.21", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", + "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==", "dev": true }, "@preact/async-loader": { @@ -32683,94 +3068,54 @@ } }, "@prefresh/babel-plugin": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@prefresh/babel-plugin/-/babel-plugin-0.4.1.tgz", - "integrity": "sha512-gj3ekiYtHlZNz0zFI1z6a9mcYX80Qacw84+2++7V1skvO7kQoV2ux56r8bJkTBbKMVxwAgaYrxxIdUCYlclE7Q==", + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@prefresh/babel-plugin/-/babel-plugin-0.4.3.tgz", + "integrity": "sha512-fYAWbU1WDSLn108kKY4eDaaeUcnszFqXjgaGKYXNZ5NLulpRTpsrY+Sbfo9q8LDpWrBpqIgzjrwNnvglWI1xNQ==", "dev": true }, "@prefresh/core": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@prefresh/core/-/core-1.3.2.tgz", - "integrity": "sha512-Iv+uI698KDgWsrKpLvOgN3hmAMyvhVgn09mcnhZ98BUNdg/qrxE7tcUf5yFCImkgqED5/Dcn8G5hFy4IikEDvg==", - "dev": true, - "requires": {} + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@prefresh/core/-/core-1.3.4.tgz", + "integrity": "sha512-s7iNsnyJ3lZEUrYIgmVIB/hKtp4U6mdD91a31Zg7Q8M49O0x2KThrbrMQYraoDDrs4STdFB8Zv6bceUguOoX1A==", + "dev": true }, "@prefresh/utils": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@prefresh/utils/-/utils-1.1.1.tgz", - "integrity": "sha512-MUhT5m2XNN5NsZl4GnpuvlzLo6VSTa/+wBfBd3fiWUvHGhv0GF9hnA1pd//v0uJaKwUnVRQ1hYElxCV7DtYsCQ==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@prefresh/utils/-/utils-1.1.3.tgz", + "integrity": "sha512-Mb9abhJTOV4yCfkXrMrcgFiFT7MfNOw8sDa+XyZBdq/Ai2p4Zyxqsb3EgHLOEdHpMj6J9aiZ54W8H6FTam1u+A==", "dev": true }, "@prefresh/webpack": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/@prefresh/webpack/-/webpack-3.3.2.tgz", - "integrity": "sha512-1cX0t5G7IXWO2164sl2O32G02BzDl6C4UUZWfDb0x1CQM1g3It9PSLWd+rIlHfSg4MEU9YHM8e6/OK8uavRJhA==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@prefresh/webpack/-/webpack-3.3.3.tgz", + "integrity": "sha512-uT+A7ZuA7fuuUPNEde6Gmzr4oFnzreW9xw6iqw01nPpDiv46o6YWq1j0oGCbdffzHl3fBpcgkPuY07vIfmZ9Lg==", "dev": true, "requires": { - "@prefresh/core": "^1.3.1", - "@prefresh/utils": "^1.1.0" + "@prefresh/core": "^1.3.3", + "@prefresh/utils": "^1.1.2" } }, "@relative-ci/agent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@relative-ci/agent/-/agent-2.0.0.tgz", - "integrity": "sha512-W/Mew+z7PRnFNxceAf4H3BI49FEanT3EGr3Q2LN/5JNvDBfzs+x2jYr1DAmBjHrNR88+emxSir2mQv+5GCNCbg==", - "dev": true, - "requires": { - "@bundle-stats/utils": "^3.0.0", - "@relative-ci/env-ci": "^5.3.1", - "core-js": "^3.6.4", - "cosmiconfig": "^7.0.0", - "debug": "^4.1.1", - "dotenv": "^8.2.0", - "fs-extra": "^9.0.0", - "isomorphic-fetch": "^3.0.0", - "lodash": "^4.17.15" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", - "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.14.5" - } - }, - "@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.14.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "core-js": { - "version": "3.15.2", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.15.2.tgz", - "integrity": "sha512-tKs41J7NJVuaya8DxIOCnl8QuPHx5/ZVbFo1oKgVl1qHFBBrDctzQGtuLjPpRdNTWmKPH6oEvgN/MUID+l485Q==", - "dev": true - }, - "cosmiconfig": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", - "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", - "dev": true, - "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" - } - }, + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@relative-ci/agent/-/agent-2.0.0.tgz", + "integrity": "sha512-W/Mew+z7PRnFNxceAf4H3BI49FEanT3EGr3Q2LN/5JNvDBfzs+x2jYr1DAmBjHrNR88+emxSir2mQv+5GCNCbg==", + "dev": true, + "requires": { + "@bundle-stats/utils": "^3.0.0", + "@relative-ci/env-ci": "^5.3.1", + "core-js": "^3.6.4", + "cosmiconfig": "^7.0.0", + "debug": "^4.1.1", + "dotenv": "^8.2.0", + "fs-extra": "^9.0.0", + "isomorphic-fetch": "^3.0.0", + "lodash": "^4.17.15" + }, + "dependencies": { "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "requires": { "ms": "2.1.2" @@ -32782,51 +3127,11 @@ "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", "dev": true }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true - }, - "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true } } }, @@ -32838,152 +3143,24 @@ "requires": { "execa": "^4.0.0", "java-properties": "^1.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==", - "dev": true, - "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==", - "dev": true, - "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==", - "dev": true, - "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==", - "dev": true - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } } }, "@restart/hooks": { - "version": "0.3.15", - "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.3.15.tgz", - "integrity": "sha512-rVNba1A2oMzKBg16fCrrHmCf4JjOzFhT9TWR8J+Y8iOcY4zffxtP3ke7mEsakvghHZT+9//uDOPSSeuBDW41GQ==", - "requires": {} + "version": "0.3.27", + "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.3.27.tgz", + "integrity": "sha512-s984xV/EapUIfkjlf8wz9weP2O9TNKR96C68FfMEy2bE69+H4cNv3RD4Mf97lW7Htt7PjZrYTjSC8f3SB9VCXw==", + "requires": { + "dequal": "^2.0.2" + } }, "@rollup/plugin-babel": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz", - "integrity": "sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", + "integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.10.4", "@rollup/pluginutils": "^3.1.0" - }, - "dependencies": { - "@babel/helper-module-imports": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", - "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", - "dev": true, - "requires": { - "@babel/types": "^7.14.5" - } - }, - "@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.14.5", - "to-fast-properties": "^2.0.0" - } - } } }, "@rollup/plugin-node-resolve": { @@ -33006,14 +3183,21 @@ "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", "dev": true }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", "dev": true, "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" } } } @@ -33055,13 +3239,23 @@ "dev": true }, "@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==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz", + "integrity": "sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==", "dev": true, "requires": { - "ejs": "^2.6.1", - "magic-string": "^0.25.0" + "ejs": "^3.1.6", + "json5": "^2.2.0", + "magic-string": "^0.25.0", + "string.prototype.matchall": "^4.0.6" + }, + "dependencies": { + "json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true + } } }, "@szmarczak/http-timer": { @@ -33074,9 +3268,9 @@ } }, "@trysound/sax": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.1.1.tgz", - "integrity": "sha512-Z6DoceYb/1xSg5+e+ZlPZ9v0N16ZvZ+wYMraFue4HYrE4ttONKtsvruIRf6t9TBR0YvSOfi1hUU0fJfBLCDYow==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", "dev": true }, "@types/estree": { @@ -33086,9 +3280,9 @@ "dev": true }, "@types/glob": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", "dev": true, "requires": { "@types/minimatch": "*", @@ -33096,9 +3290,9 @@ } }, "@types/json-schema": { - "version": "7.0.8", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.8.tgz", - "integrity": "sha512-YSBPTLTVm2e2OoQIDYx8HaeWJ5tTToLH67kXR7zYNGupXMEHa2++G8k+DczX2cFVgalypqtyZIcU19AFcmOpmg==", + "version": "7.0.10", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.10.tgz", + "integrity": "sha512-BLO9bBq59vW3fxCpD4o0N4U+DXsvwvIcl+jofw0frQo/GrBFC+/jRZj1E7kgp6dvTyNmA4y6JCV5Id/r3mNP5A==", "dev": true }, "@types/minimatch": { @@ -33108,21 +3302,20 @@ "dev": true }, "@types/node": { - "version": "16.3.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.3.2.tgz", - "integrity": "sha512-jJs9ErFLP403I+hMLGnqDRWT0RYKSvArxuBVh2veudHV7ifEC1WAmjJADacZ7mRbA2nWgHtn8xyECMAot0SkAw==", + "version": "12.12.50", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.50.tgz", + "integrity": "sha512-5ImO01Fb8YsEOYpV+aeyGYztcYcjGsBvN4D7G5r1ef2cuQOpymjWNQi5V0rKHE6PC2ru3HkoUr/Br2/8GUA84w==", "dev": true }, "@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==", - "dev": true + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" }, "@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==" + "version": "15.7.4", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz", + "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==" }, "@types/q": { "version": "1.5.5", @@ -33131,12 +3324,13 @@ "dev": true }, "@types/react": { - "version": "16.9.11", - "resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.11.tgz", - "integrity": "sha512-UBT4GZ3PokTXSWmdgC/GeCGEJXE5ofWyibCcecRLUVN2ZBpXQGVgQGtG2foS7CrTKFKlQVVswLvf7Js6XA/CVQ==", + "version": "16.14.24", + "resolved": "https://registry.npmjs.org/@types/react/-/react-16.14.24.tgz", + "integrity": "sha512-e7U2WC8XQP/xfR7bwhOhNFZKPTfW1ph+MiqtudKb8tSV8RyCsovQx2sNVtKoOryjxFKpHPPC/yNiGfdeVM5Gyw==", "requires": { "@types/prop-types": "*", - "csstype": "^2.2.0" + "@types/scheduler": "*", + "csstype": "^3.0.2" } }, "@types/resolve": { @@ -33148,10 +3342,15 @@ "@types/node": "*" } }, + "@types/scheduler": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" + }, "@types/sinonjs__fake-timers": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.3.tgz", - "integrity": "sha512-E1dU4fzC9wN2QK2Cr1MLCfyHM8BoNnRFvuf45LYMPNDA+WqbNzC45S4UzPxvp1fFJ1rvSGU0bPvdd35VLmXG8g==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.4.tgz", + "integrity": "sha512-IFQTJARgMUBF+xVd2b+hIgXWrZEjND3vJtRCvIelcFB5SIXfjV4bOHbHJ0eXKh+0COrBRc8MqteKAz/j88rE0A==", "dev": true }, "@types/sizzle": { @@ -33160,6 +3359,12 @@ "integrity": "sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==", "dev": true }, + "@types/trusted-types": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.2.tgz", + "integrity": "sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg==", + "dev": true + }, "@webassemblyjs/ast": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", @@ -33350,8 +3555,7 @@ "@yaireo/tagify": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/@yaireo/tagify/-/tagify-4.5.0.tgz", - "integrity": "sha512-fYy9IVFt0i41KuTX3kwJ1sEzGeYhFe9b6GGDGIz/La9pyG1VaGJPFyKEtsDkkyNKptRU83yXSPtM6laldF1q1A==", - "requires": {} + "integrity": "sha512-fYy9IVFt0i41KuTX3kwJ1sEzGeYhFe9b6GGDGIz/La9pyG1VaGJPFyKEtsDkkyNKptRU83yXSPtM6laldF1q1A==" }, "abab": { "version": "1.0.4", @@ -33360,13 +3564,13 @@ "dev": true }, "accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dev": true, "requires": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" + "mime-types": "~2.1.34", + "negotiator": "0.6.3" } }, "acorn": { @@ -33432,6 +3636,14 @@ "requires": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" + }, + "dependencies": { + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + } } }, "ajv": { @@ -33450,15 +3662,13 @@ "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==", - "dev": true, - "requires": {} + "dev": true }, "ajv-keywords": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", - "dev": true, - "requires": {} + "dev": true }, "alphanum-sort": { "version": "1.0.2", @@ -33467,12 +3677,52 @@ "dev": true }, "ansi-align": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", - "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", "dev": true, "requires": { - "string-width": "^3.0.0" + "string-width": "^4.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + } } }, "ansi-colors": { @@ -33487,16 +3737,16 @@ "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", "dev": true }, - "ansi-html": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", - "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", "dev": true }, "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==" }, "ansi-styles": { "version": "3.2.1", @@ -33732,12 +3982,6 @@ "kind-of": "^6.0.0" } }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, "is-data-descriptor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", @@ -33778,12 +4022,6 @@ } } }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - }, "micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -33889,13 +4127,16 @@ "dev": true }, "array-includes": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", - "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", + "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.7.0" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1", + "get-intrinsic": "^1.1.1", + "is-string": "^1.0.7" } }, "array-union": { @@ -33916,6 +4157,17 @@ "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", "dev": true }, + "array.prototype.flatmap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz", + "integrity": "sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0" + } + }, "arraybuffer.slice": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", @@ -33928,9 +4180,9 @@ "dev": true }, "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", "dev": true, "requires": { "safer-buffer": "~2.1.0" @@ -34002,13 +4254,10 @@ "dev": true }, "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", - "dev": true, - "requires": { - "lodash": "^4.17.14" - } + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", + "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==", + "dev": true }, "async-each": { "version": "1.0.3", @@ -34049,50 +4298,17 @@ } }, "autoprefixer": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.3.1.tgz", - "integrity": "sha512-L8AmtKzdiRyYg7BUXJTzigmhbQRCXFKz6SA1Lqo0+AR2FBbQ4aTAPFSDlOutnFkjhiz8my4agGXog1xlMjPJ6A==", + "version": "10.4.4", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.4.tgz", + "integrity": "sha512-Tm8JxsB286VweiZ5F0anmbyGiNI3v3wGv3mz9W+cxEDYB/6jbnj6GM9H9mK3wIL8ftgl+C07Lcwb8PG5PCCPzA==", "dev": true, "requires": { - "browserslist": "^4.16.6", - "caniuse-lite": "^1.0.30001243", - "colorette": "^1.2.2", - "fraction.js": "^4.1.1", + "browserslist": "^4.20.2", + "caniuse-lite": "^1.0.30001317", + "fraction.js": "^4.2.0", "normalize-range": "^0.1.2", - "postcss-value-parser": "^4.1.0" - }, - "dependencies": { - "browserslist": { - "version": "4.16.6", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", - "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001219", - "colorette": "^1.2.2", - "electron-to-chromium": "^1.3.723", - "escalade": "^3.1.1", - "node-releases": "^1.1.71" - } - }, - "caniuse-lite": { - "version": "1.0.30001245", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001245.tgz", - "integrity": "sha512-768fM9j1PKXpOCKws6eTo3RHmvTUsG9UrpT4WoREFeZgJBTi4/X9g565azS/rVUGtqb8nt7FjLeF5u4kukERnA==", - "dev": true - }, - "electron-to-chromium": { - "version": "1.3.776", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.776.tgz", - "integrity": "sha512-V0w7eFSBoFPpdw4xexjVPZ770UDZIevSwkkj4W97XbE3IsCsTRFpa7/yXGZ88EOQAUEA09JMMsWK0xsw0kRAYw==", - "dev": true - }, - "node-releases": { - "version": "1.1.73", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz", - "integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==", - "dev": true - } + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" } }, "aws-sign2": { @@ -34102,9 +4318,9 @@ "dev": true }, "aws4": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", "dev": true }, "axios": { @@ -34113,13 +4329,6 @@ "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", "requires": { "follow-redirects": "^1.10.0" - }, - "dependencies": { - "follow-redirects": { - "version": "1.13.3", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.3.tgz", - "integrity": "sha512-DUgl6+HDzB0iEptNQEXLx/KhTmDb8tZUHSeLqpnjpknR70H0nC2t9N73BK6fN4hOvJ84pKlIQVQ4k5FFlBedKA==" - } } }, "babel-code-frame": { @@ -34172,6 +4381,12 @@ "requires": { "ansi-regex": "^2.0.0" } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true } } }, @@ -34233,6 +4448,26 @@ "eslint-visitor-keys": "^1.0.0" }, "dependencies": { + "@babel/code-frame": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.44.tgz", + "integrity": "sha512-cuAuTTIQ9RqcFRJ/Y8PvTh+paepNcaGxwQwjIDRWPXmzzyAeCO4KqS9ikMvq0MCbRk6GlYKwfzStrcP3/jSL8g==", + "dev": true, + "requires": { + "@babel/highlight": "7.0.0-beta.44" + } + }, + "@babel/highlight": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.44.tgz", + "integrity": "sha512-Il19yJvy7vMFm8AVAh6OZzaFoAd0hbkeMZiX3P5HGD+z7dyI7RzndHB0dg6Urh/VAFfHtpOIzDUSxmY6coyZWQ==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^3.0.0" + } + }, "eslint-scope": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", @@ -34242,6 +4477,12 @@ "esrecurse": "^4.1.0", "estraverse": "^4.1.1" } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true } } }, @@ -34322,9 +4563,9 @@ } }, "babel-loader": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.2.tgz", - "integrity": "sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g==", + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.3.tgz", + "integrity": "sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw==", "dev": true, "requires": { "find-cache-dir": "^3.3.1", @@ -34352,12 +4593,6 @@ "emojis-list": "^3.0.0", "json5": "^1.0.1" } - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true } } }, @@ -34442,14 +4677,77 @@ "integrity": "sha512-yi5QuiVyyvhBUDLP4ButAnhYzkdrUwWDtvUJv71hjH3fclhnZg4HkDeqaitcR2dZZx/E67kGkRcPVjtVu+SJfQ==", "dev": true }, + "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": { + "@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "requires": { + "@babel/highlight": "^7.16.7" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==" + }, + "@babel/highlight": { + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", + "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "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" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" + } + } + }, "babel-plugin-polyfill-corejs2": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz", - "integrity": "sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", + "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", "dev": true, "requires": { "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.2.2", + "@babel/helper-define-polyfill-provider": "^0.3.1", "semver": "^6.1.1" }, "dependencies": { @@ -34462,22 +4760,22 @@ } }, "babel-plugin-polyfill-corejs3": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.3.tgz", - "integrity": "sha512-rCOFzEIJpJEAU14XCcV/erIf/wZQMmMT5l5vXOpL5uoznyOGfDIjPj6FVytMvtzaKSTSVKouOCTPJ5OMUZH30g==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz", + "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.2.2", - "core-js-compat": "^3.14.0" + "@babel/helper-define-polyfill-provider": "^0.3.1", + "core-js-compat": "^3.21.0" } }, "babel-plugin-polyfill-regenerator": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz", - "integrity": "sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", + "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.2.2" + "@babel/helper-define-polyfill-provider": "^0.3.1" } }, "babel-plugin-syntax-object-rest-spread": { @@ -34515,6 +4813,14 @@ "lodash": "^4.17.4", "mkdirp": "^0.5.1", "source-map-support": "^0.4.15" + }, + "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==", + "dev": true + } } }, "babel-runtime": { @@ -34527,6 +4833,12 @@ "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==", + "dev": true + }, "regenerator-runtime": { "version": "0.11.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", @@ -34628,9 +4940,9 @@ "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" }, "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, "base": { @@ -34685,12 +4997,6 @@ "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" } - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true } } }, @@ -34732,6 +5038,16 @@ "dev": true, "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==", + "dev": true, + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, "bl": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", @@ -34743,16 +5059,6 @@ "readable-stream": "^3.4.0" }, "dependencies": { - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, "readable-stream": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", @@ -34790,27 +5096,27 @@ "dev": true }, "body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==", "dev": true, "requires": { - "bytes": "3.1.0", + "bytes": "3.1.2", "content-type": "~1.0.4", "debug": "2.6.9", "depd": "~1.1.2", - "http-errors": "1.7.2", + "http-errors": "1.8.1", "iconv-lite": "0.4.24", "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" + "qs": "6.9.7", + "raw-body": "2.4.3", + "type-is": "~1.6.18" }, "dependencies": { "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true }, "debug": { @@ -34823,9 +5129,9 @@ } }, "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==", "dev": true } } @@ -34851,25 +5157,25 @@ "dev": true }, "boxen": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.0.1.tgz", - "integrity": "sha512-49VBlw+PrWEF51aCmy7QIteYPIFZxSpvqBdP/2itCPPlJ49kj9zg/XPRFrdkne2W+CfwXUls8exMvu1RysZpKA==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", + "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", "dev": true, "requires": { "ansi-align": "^3.0.0", "camelcase": "^6.2.0", "chalk": "^4.1.0", "cli-boxes": "^2.2.1", - "string-width": "^4.2.0", + "string-width": "^4.2.2", "type-fest": "^0.20.2", "widest-line": "^3.1.0", "wrap-ansi": "^7.0.0" }, "dependencies": { "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, "ansi-styles": { @@ -34882,15 +5188,15 @@ } }, "camelcase": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", - "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true }, "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -34918,12 +5224,6 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, "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", @@ -34931,32 +5231,23 @@ "dev": true }, "string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "strip-ansi": "^6.0.1" } }, "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.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==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "requires": { - "has-flag": "^4.0.0" + "ansi-regex": "^5.0.1" } }, "wrap-ansi": { @@ -35124,14 +5415,16 @@ } }, "browserslist": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.7.2.tgz", - "integrity": "sha512-uZavT/gZXJd2UTi9Ov7/Z340WOSQ3+m1iBVRUknf+okKxonL9P83S3ctiBDtuRmRu8PiCHjqyueqQ9HYlJhxiw==", + "version": "4.20.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.2.tgz", + "integrity": "sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001004", - "electron-to-chromium": "^1.3.295", - "node-releases": "^1.1.38" + "caniuse-lite": "^1.0.30001317", + "electron-to-chromium": "^1.4.84", + "escalade": "^3.1.1", + "node-releases": "^2.0.2", + "picocolors": "^1.0.0" } }, "bser": { @@ -35144,12 +5437,12 @@ } }, "buffer": { - "version": "5.4.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.4.3.tgz", - "integrity": "sha512-zvj65TkFeIt3i6aj5bIvJDzjjQQGs4o/sNoezg1F1kYap9Nu2jcUdpwzRSJTHMMzG0H7bZkn4rNQpImhuxWX2A==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4" + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" } }, "buffer-alloc": { @@ -35219,11 +5512,12 @@ "dev": true }, "cacache": { - "version": "15.2.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.2.0.tgz", - "integrity": "sha512-uKoJSHmnrqXgthDFx/IU6ED/5xd+NNGe+Bb+kLZy7Ku4P+BaiWEUflAKPZ7eAzsYGcsAGASJZsybXp+quEcHTw==", + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", "dev": true, "requires": { + "@npmcli/fs": "^1.0.0", "@npmcli/move-file": "^1.0.1", "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -35258,13 +5552,13 @@ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "dev": true, "requires": { - "glob": "^7.1.3" + "aggregate-error": "^3.0.0" } }, "yallist": { @@ -35336,15 +5630,6 @@ "responselike": "^1.0.2" }, "dependencies": { - "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==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, "lowercase-keys": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", @@ -35369,7 +5654,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, "requires": { "function-bind": "^1.1.1", "get-intrinsic": "^1.0.2" @@ -35435,15 +5719,15 @@ } }, "caniuse-db": { - "version": "1.0.30001009", - "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30001009.tgz", - "integrity": "sha512-klfjT6Tmyg/1GINznqr1oE89cw08gKHkA8yU801fxZGE4lao1EL7+W1fAXLniGUOS3kSuHT9dE7ZSTgSAs27iQ==", + "version": "1.0.30001319", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30001319.tgz", + "integrity": "sha512-fSBlalNv/ON++nNaSnXGocVeDwVcyTx2lwkwVxQ6YEt814v1DhC/Kt0lj4MJJ3phAa/Z6zP37C2G726nHopLOg==", "dev": true }, "caniuse-lite": { - "version": "1.0.30001009", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001009.tgz", - "integrity": "sha512-M3rEqHN6SaVjgo4bIik7HsGcWXsi+lI9WA0p51RPMFx5gXfduyOXWJrc0R4xBkSK1pgNf4CNgy5M+6H+WiEP8g==", + "version": "1.0.30001319", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001319.tgz", + "integrity": "sha512-xjlIAFHucBRSMUo1kb5D4LYgcN1M45qdKP++lhqowDpwJwGkpIRTt5qQqnhxjj1vHcI7nrJxWhCC1ATrCEBTcw==", "dev": true }, "capture-exit": { @@ -35465,7 +5749,6 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "devOptional": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -35476,13 +5759,18 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "devOptional": true, "requires": { "has-flag": "^3.0.0" } } } }, + "charcodes": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/charcodes/-/charcodes-0.2.0.tgz", + "integrity": "sha512-Y4kiDb+AM4Ecy58YkuZrrSRJBDQdQ2L+NyS1vHHFtNtUjgutcZfx3yp1dAONI/oPaPmyGfCLx5CxL+zauIMyKQ==", + "dev": true + }, "chardet": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", @@ -35496,9 +5784,9 @@ "dev": true }, "chokidar": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", - "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, "optional": true, "requires": { @@ -35543,6 +5831,13 @@ "to-regex-range": "^5.0.1" } }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, "glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", @@ -35561,9 +5856,9 @@ "optional": true }, "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==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "optional": true, "requires": { @@ -35609,15 +5904,15 @@ "dev": true }, "ci-env": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/ci-env/-/ci-env-1.16.0.tgz", - "integrity": "sha512-ucF9caQEX5wQlY449KZBIJPx91+kRg9tJ3tWSc4+KzrvC5KNiPm/3g1noP8VhdI3046+Vw3jLmKAD0fjCRJTmw==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/ci-env/-/ci-env-1.17.0.tgz", + "integrity": "sha512-NtTjhgSEqv4Aj90TUYHQLxHdnCPXnjdtuGG1X8lTfp/JqeXTdw0FTWl/vUAPuvbWZTF8QVpv6ASe/XacE+7R2A==", "dev": true }, "ci-info": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", - "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", "dev": true }, "cipher-base": { @@ -35665,9 +5960,9 @@ "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==" }, "clean-css": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", - "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz", + "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==", "dev": true, "requires": { "source-map": "~0.6.0" @@ -35694,35 +5989,34 @@ "dev": true }, "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", "dev": true, "requires": { - "restore-cursor": "^2.0.0" + "restore-cursor": "^1.0.1" } }, "cli-spinners": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.0.tgz", - "integrity": "sha512-t+4/y50K/+4xcCRosKkA7W4gTr1MySvLV0q+PxmG7FJ5g+66ChKurYjxBCjHggHH3HA5Hh9cy+lcUGWDqVH+4Q==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", + "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", "dev": true }, "cli-table3": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.0.tgz", - "integrity": "sha512-gnB85c3MGC7Nm9I/FkiasNBOKjOiO1RNuXXarQms37q4QMpWdlbBgD/VnOStA2faG1dpXMv31RFApjX1/QdgWQ==", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.1.tgz", + "integrity": "sha512-w0q/enDHhPLq44ovMGdQeeDLvwxwavsJX7oQGYt/LrBlYsyaxyDnp6z3QzFut/6kLLKnlcUVJLrpB7KBfgG/RA==", "dev": true, "requires": { - "colors": "^1.1.2", - "object-assign": "^4.1.0", + "colors": "1.4.0", "string-width": "^4.2.0" }, "dependencies": { "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, "emoji-regex": { @@ -35738,23 +6032,23 @@ "dev": true }, "string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "strip-ansi": "^6.0.1" } }, "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "requires": { - "ansi-regex": "^5.0.0" + "ansi-regex": "^5.0.1" } } } @@ -35784,12 +6078,6 @@ "number-is-nan": "^1.0.0" } }, - "slice-ansi": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", - "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", - "dev": true - }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", @@ -35813,9 +6101,9 @@ } }, "cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", "dev": true }, "cliui": { @@ -35843,14 +6131,6 @@ "is-plain-object": "^2.0.4", "kind-of": "^6.0.2", "shallow-clone": "^3.0.0" - }, - "dependencies": { - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - } } }, "clone-response": { @@ -35863,9 +6143,9 @@ } }, "clsx": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.0.4.tgz", - "integrity": "sha512-1mQ557MIZTrL/140j+JVdRM6e31/OA4vTYxXgqIIZlndyfjHpyawKZia1Im05Vp9BWmImkcNrNtFYQMyFcgJDg==" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz", + "integrity": "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==" }, "co": { "version": "4.6.0", @@ -35901,13 +6181,13 @@ } }, "color": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/color/-/color-3.1.3.tgz", - "integrity": "sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", "dev": true, "requires": { - "color-convert": "^1.9.1", - "color-string": "^1.5.4" + "color-convert": "^1.9.3", + "color-string": "^1.6.0" } }, "color-convert": { @@ -35924,9 +6204,9 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, "color-string": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.5.tgz", - "integrity": "sha512-jgIoum0OfQfq9Whcfc2z/VhCNcmQjWbey6qBX0vqt7YICflUmBCh9E9CiQD5GSJ+Uehixm3NUwHVhqUAWRivZg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.0.tgz", + "integrity": "sha512-9Mrz2AQLefkH1UvASKj6v6hj/7eWgjnT/cVsR8CumieLoT+g900exWeNogqtweI8dxloXN9BDQTYro1oWu/5CQ==", "dev": true, "requires": { "color-name": "^1.0.0", @@ -35934,21 +6214,15 @@ } }, "colord": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.1.0.tgz", - "integrity": "sha512-H5sDP9XDk2uP+x/xSGkgB9SEFc1bojdI5DMKU0jmSXQtml2GIe48dj1DcSS0e53QQAHn+JKqUXbGeGX24xWD7w==", + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.2.tgz", + "integrity": "sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ==", "dev": true }, - "colorette": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", - "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", - "devOptional": true - }, "colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", "dev": true }, "combined-stream": { @@ -35961,15 +6235,15 @@ } }, "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==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", "dev": true }, "common-tags": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", - "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==", + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", "dev": true }, "commondir": { @@ -35982,120 +6256,37 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/compare-json/-/compare-json-0.4.0.tgz", "integrity": "sha512-DSXzNQQa6J7VyuJmpeETgL3LaTgDgvltUE50AX1hsZCprjrZe1A9yVyDzng5md6YYOyMaThewRxc8yZm13UjYQ==", - "dev": true, - "requires": { - "colors": "^1.1.2", - "glob": "^7.1.2", - "lodash": "^4.17.4", - "yargs": "^12.0.5" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", - "dev": true, - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - } - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "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" - } - }, - "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", - "dev": true - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", - "dev": true - }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", - "dev": true, - "requires": { - "invert-kv": "^2.0.0" - } - }, - "mem": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", - "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", - "dev": true, - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "requires": { + "colors": "^1.1.2", + "glob": "^7.1.2", + "lodash": "^4.17.4", + "yargs": "^12.0.5" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, - "os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", "dev": true, "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" } }, - "p-is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", - "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", "dev": true }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, "require-main-filename": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", @@ -36206,9 +6397,9 @@ "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=" }, "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", "dev": true }, "component-inherit": { @@ -36223,14 +6414,6 @@ "dev": true, "requires": { "mime-db": ">= 1.43.0 < 2" - }, - "dependencies": { - "mime-db": { - "version": "1.48.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.48.0.tgz", - "integrity": "sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==", - "dev": true - } } }, "compression": { @@ -36288,8 +6471,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} + "dev": true }, "fast-deep-equal": { "version": "3.1.3", @@ -36304,12 +6486,12 @@ "dev": true }, "schema-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", - "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", "dev": true, "requires": { - "@types/json-schema": "^7.0.7", + "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", "ajv-keywords": "^3.5.2" } @@ -36387,12 +6569,20 @@ "dev": true }, "content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "dev": true, "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "5.2.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } } }, "content-type": { @@ -36411,25 +6601,20 @@ "version": "1.7.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", - "devOptional": true, "requires": { "safe-buffer": "~5.1.1" } }, "convert-units": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/convert-units/-/convert-units-2.3.4.tgz", - "integrity": "sha512-ERHfdA0UhHJp1IpwE6PnFJx8LqG7B1ZjJ20UvVCmopEnVCfER68Tbe3kvN63dLbYXDA2xFWRE6zd4Wsf0w7POg==", - "dev": true, - "requires": { - "lodash.foreach": "2.3.x", - "lodash.keys": "2.3.x" - } + "version": "3.0.0-beta.2", + "resolved": "https://registry.npmjs.org/convert-units/-/convert-units-3.0.0-beta.2.tgz", + "integrity": "sha512-ib0pIcx+gMP/gpvMpZkol0MZr3mXTSLvt+BtspAB7Ff0QPo5VIJCcxmYd0GBnvV5i5B0lyySBZzkv/l3gWhx1A==", + "dev": true }, "cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", "dev": true }, "cookie-signature": { @@ -36450,6 +6635,17 @@ "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==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } } }, "copy-descriptor": { @@ -36493,8 +6689,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} + "dev": true }, "fast-deep-equal": { "version": "3.1.3", @@ -36518,9 +6713,9 @@ "dev": true }, "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==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "requires": { "is-extglob": "^2.1.1" @@ -36548,12 +6743,12 @@ } }, "schema-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", - "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", "dev": true, "requires": { - "@types/json-schema": "^7.0.7", + "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", "ajv-keywords": "^3.5.2" } @@ -36561,52 +6756,21 @@ } }, "core-js": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", - "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==", + "version": "3.21.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.21.1.tgz", + "integrity": "sha512-FRq5b/VMrWlrmCzwRrpDYNxyHP9BcAZC+xHJaqTgIE5091ZV1NTmyh0sGOg5XqpnHvR0svdy0sv1gWA1zmhxig==", "dev": true }, "core-js-compat": { - "version": "3.15.2", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.15.2.tgz", - "integrity": "sha512-Wp+BJVvwopjI+A1EFqm2dwUmWYXrvucmtIB2LgXn/Rb+gWPKYxtmb4GKHGKG/KGF1eK9jfjzT38DITbTOCX/SQ==", + "version": "3.21.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.21.1.tgz", + "integrity": "sha512-gbgX5AUvMb8gwxC7FLVWYT7Kkgu/y7+h/h1X43yJkNqhlK2fuYyQimqvKGNZFAY6CKii/GFKJ2cp/1/42TN36g==", "dev": true, "requires": { - "browserslist": "^4.16.6", + "browserslist": "^4.19.1", "semver": "7.0.0" }, "dependencies": { - "browserslist": { - "version": "4.16.6", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", - "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001219", - "colorette": "^1.2.2", - "electron-to-chromium": "^1.3.723", - "escalade": "^3.1.1", - "node-releases": "^1.1.71" - } - }, - "caniuse-lite": { - "version": "1.0.30001245", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001245.tgz", - "integrity": "sha512-768fM9j1PKXpOCKws6eTo3RHmvTUsG9UrpT4WoREFeZgJBTi4/X9g565azS/rVUGtqb8nt7FjLeF5u4kukERnA==", - "dev": true - }, - "electron-to-chromium": { - "version": "1.3.776", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.776.tgz", - "integrity": "sha512-V0w7eFSBoFPpdw4xexjVPZ770UDZIevSwkkj4W97XbE3IsCsTRFpa7/yXGZ88EOQAUEA09JMMsWK0xsw0kRAYw==", - "dev": true - }, - "node-releases": { - "version": "1.1.73", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz", - "integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==", - "dev": true - }, "semver": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", @@ -36622,9 +6786,9 @@ "dev": true }, "cosmiconfig": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", - "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", "dev": true, "requires": { "@types/parse-json": "^4.0.0", @@ -36632,52 +6796,6 @@ "parse-json": "^5.0.0", "path-type": "^4.0.0", "yaml": "^1.10.0" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", - "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.14.5" - } - }, - "@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.14.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, - "yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true - } } }, "create-ecdh": { @@ -36820,32 +6938,34 @@ "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", "dev": true }, + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, + "pretty-bytes": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-4.0.2.tgz", + "integrity": "sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=", + "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==", "dev": true }, - "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==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, "tr46": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", @@ -36855,6 +6975,12 @@ "punycode": "^2.1.0" } }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, "whatwg-url": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", @@ -36895,19 +7021,62 @@ "dev": true, "requires": { "cross-spawn": "^6.0.5" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "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=", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } } }, "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" } }, "cross-spawn-promise": { @@ -36929,6 +7098,30 @@ "shebang-command": "^1.2.0", "which": "^1.2.9" } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "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=", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } } } }, @@ -37006,15 +7199,20 @@ "timsort": "^0.3.0" }, "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "source-map": { @@ -37022,15 +7220,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "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==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -37068,8 +7257,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} + "dev": true }, "fast-deep-equal": { "version": "3.1.3", @@ -37093,12 +7281,12 @@ } }, "schema-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", - "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", "dev": true, "requires": { - "@types/json-schema": "^7.0.7", + "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", "ajv-keywords": "^3.5.2" } @@ -37221,15 +7409,20 @@ "json-parse-better-errors": "^1.0.1" } }, + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "resolve-from": { @@ -37243,15 +7436,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "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==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -37293,15 +7477,20 @@ "postcss-unique-selectors": "^4.0.1" }, "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "source-map": { @@ -37309,15 +7498,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "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==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -37342,31 +7522,27 @@ "postcss": "^7.0.0" }, "dependencies": { - "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", - "dev": true, - "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==", + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", "dev": true }, - "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==", + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "picocolors": "^0.2.1", + "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==", + "dev": true } } }, @@ -37377,11 +7553,10 @@ "dev": true }, "cssnano-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-2.0.1.tgz", - "integrity": "sha512-i8vLRZTnEH9ubIyfdZCAdIdgnHAUeQeByEeQ2I7oTilvP9oHO6RScpeq3GsFUVqeB8uZgOQ9pw8utofNn32hhQ==", - "dev": true, - "requires": {} + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", + "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", + "dev": true }, "csso": { "version": "4.2.0", @@ -37432,9 +7607,9 @@ } }, "csstype": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.7.tgz", - "integrity": "sha512-9Mcn9sFbGBAdmimWb2gLVDtFJzeKtDGIr76TUqmjZrw9LFXBMSU70lcs+C0/7fyCd6iBDqmksUcCOUIkisPHsQ==" + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.11.tgz", + "integrity": "sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==" }, "cyclist": { "version": "1.0.1", @@ -37490,12 +7665,6 @@ "yauzl": "^2.10.0" }, "dependencies": { - "@types/node": { - "version": "12.12.50", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.50.tgz", - "integrity": "sha512-5ImO01Fb8YsEOYpV+aeyGYztcYcjGsBvN4D7G5r1ef2cuQOpymjWNQi5V0rKHE6PC2ru3HkoUr/Br2/8GUA84w==", - "dev": true - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -37506,21 +7675,15 @@ } }, "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -37536,23 +7699,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "commander": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", - "dev": true - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, "debug": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", @@ -37562,188 +7708,17 @@ "ms": "2.1.2" } }, - "execa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", - "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", - "dev": true, - "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==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "global-dirs": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.1.0.tgz", - "integrity": "sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==", - "dev": true, - "requires": { - "ini": "1.3.7" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "ini": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", - "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==", - "dev": true - }, - "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dev": true, - "requires": { - "ci-info": "^2.0.0" - } - }, - "is-installed-globally": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", - "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", - "dev": true, - "requires": { - "global-dirs": "^2.0.1", - "is-path-inside": "^3.0.1" - } - }, - "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==", - "dev": true - }, "lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "dev": true - }, - "ramda": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.1.tgz", - "integrity": "sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "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" - } - }, - "tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "dev": true, - "requires": { - "rimraf": "^3.0.0" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } } } }, @@ -37782,6 +7757,12 @@ "punycode": "^2.1.0" } }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, "whatwg-url": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", @@ -37796,9 +7777,9 @@ } }, "date-arithmetic": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/date-arithmetic/-/date-arithmetic-4.0.1.tgz", - "integrity": "sha512-fawhJU3ajJud093das8L3PSXqDb+LjclKhRTIbVX1xC+QeHtL/30kNTkS8s/lOiKMGMngxKvwEzQhBEmK/KQnQ==" + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/date-arithmetic/-/date-arithmetic-4.1.0.tgz", + "integrity": "sha512-QWxYLR5P/6GStZcdem+V1xoto6DMadYWpMXU82ES3/RfR3Wdwr3D0+be7mgOJ+Ov0G9D5Dmb9T17sNLQYj9XOg==" }, "date-fns": { "version": "2.22.1", @@ -37862,9 +7843,9 @@ "dev": true }, "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=", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, "deepcopy": { @@ -37892,6 +7873,19 @@ "ip-regex": "^2.1.0" }, "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, "execa": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", @@ -37915,6 +7909,51 @@ "requires": { "pump": "^3.0.0" } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "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=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "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=", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } } } }, @@ -37988,12 +8027,6 @@ "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" } - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true } } }, @@ -38042,17 +8075,20 @@ } } }, - "p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "dev": true - }, "pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } } } }, @@ -38068,6 +8104,11 @@ "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", "dev": true }, + "dequal": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.2.tgz", + "integrity": "sha512-q9K8BlJVxK7hQYqa6XISGmBZbtQQWVXSrRrWreHC94rMt1QL/Impruc+7p2CYSYuVIUr+YCt6hjrs1kkdJRTug==" + }, "des.js": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", @@ -38125,9 +8166,9 @@ } }, "dijkstrajs": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.1.tgz", - "integrity": "sha1-082BIh4+pAdCz83lVtTpnpjdxxs=" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.2.tgz", + "integrity": "sha512-QV6PMaHTCNmKSeP6QoXhVTw9snc9VD8MulTT0Bd99Pacp4SS1cjcrYPgBPmibqKVtMJJfqC6XvOXgPMEEPH/fg==" }, "dir-glob": { "version": "3.0.1", @@ -38136,14 +8177,6 @@ "dev": true, "requires": { "path-type": "^4.0.0" - }, - "dependencies": { - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - } } }, "dlv": { @@ -38195,12 +8228,22 @@ } }, "dom-helpers": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.1.3.tgz", - "integrity": "sha512-nZD1OtwfWGRBWlpANxacBEZrEuLa16o1nh7YopFWeoF68Zt8GGEmzHu6Xv4F3XaFIC+YXtTLrzgqKxFgLEe4jw==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", "requires": { - "@babel/runtime": "^7.6.3", - "csstype": "^2.6.7" + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.8.tgz", + "integrity": "sha512-dQpEpK0O9o6lj6oPu0gRDbbnk+4LeHlNcBpspf6Olzt3GIX4P1lWF1gS+pHLDFlaJvbR6q7jCfQ08zA4QJBnmA==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + } } }, "dom-serializer": { @@ -38240,12 +8283,20 @@ "dev": true, "requires": { "webidl-conversions": "^4.0.2" + }, + "dependencies": { + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + } } }, "domhandler": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.0.tgz", - "integrity": "sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", "dev": true, "requires": { "domelementtype": "^2.2.0" @@ -38332,10 +8383,13 @@ "dev": true }, "ejs": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", - "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==", - "dev": true + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.6.tgz", + "integrity": "sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw==", + "dev": true, + "requires": { + "jake": "^10.6.1" + } }, "ejs-loader": { "version": "0.5.0", @@ -38348,9 +8402,9 @@ } }, "electron-to-chromium": { - "version": "1.3.306", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.306.tgz", - "integrity": "sha512-frDqXvrIROoYvikSKTIKbHbzO6M3/qC6kCIt/1FOa9kALe++c4VAJnwjSFvf1tYLEUsP2n9XZ4XSCyqc3l7A/A==", + "version": "1.4.89", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.89.tgz", + "integrity": "sha512-z1Axg0Fu54fse8wN4fd+GAINdU5mJmLtcl6bqIcYyzNVGONcfHAeeJi88KYMQVKalhXlYuVPzKkFIU5VD0raUw==", "dev": true }, "elegant-spinner": { @@ -38486,9 +8540,9 @@ "dev": true }, "errno": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", - "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", "dev": true, "requires": { "prr": "~1.0.1" @@ -38498,27 +8552,48 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, "requires": { "is-arrayish": "^0.2.1" } }, "es-abstract": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.16.0.tgz", - "integrity": "sha512-xdQnfykZ9JMEiasTAJZJdMWCQ1Vm00NBw79/AWi7ELfZuuPCSOMDZbT9mkOfSctVtfhb+sAAzrm+j//GjjLHLg==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", "dev": true, "requires": { - "es-to-primitive": "^1.2.0", + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", "has": "^1.0.3", - "has-symbols": "^1.0.0", - "is-callable": "^1.1.4", - "is-regex": "^1.0.4", - "object-inspect": "^1.6.0", + "has-symbols": "^1.0.2", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", "object-keys": "^1.1.1", - "string.prototype.trimleft": "^2.1.0", - "string.prototype.trimright": "^2.1.0" + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.1" + }, + "dependencies": { + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + } } }, "es-to-primitive": { @@ -38536,7 +8611,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "devOptional": true + "dev": true }, "escape-goat": { "version": "2.1.1", @@ -38553,28 +8628,21 @@ "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=", - "devOptional": true + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "escodegen": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.12.0.tgz", - "integrity": "sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg==", + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", "dev": true, "requires": { - "esprima": "^3.1.3", + "esprima": "^4.0.1", "estraverse": "^4.2.0", "esutils": "^2.0.2", "optionator": "^0.8.1", "source-map": "~0.6.1" }, "dependencies": { - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", - "dev": true - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -38647,6 +8715,21 @@ "which": "^1.2.9" } }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "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=", + "dev": true + }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", @@ -38655,6 +8738,15 @@ "requires": { "ansi-regex": "^3.0.0" } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } } } }, @@ -38716,6 +8808,14 @@ "dev": true, "requires": { "ramda": "^0.25.0" + }, + "dependencies": { + "ramda": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.25.0.tgz", + "integrity": "sha512-GXpfrYVPwx3K7RQ6aYT8KPS8XViSXUVJT1ONhoKPE9VAleW42YE+U+8VEyGWt41EnEQW7gwecYJriTI0pKoecQ==", + "dev": true + } } }, "eslint-plugin-preact-i18n": { @@ -38725,23 +8825,74 @@ "dev": true, "requires": { "minimatch": "3.0.4" + }, + "dependencies": { + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } } }, "eslint-plugin-react": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.16.0.tgz", - "integrity": "sha512-GacBAATewhhptbK3/vTP09CbFrgUJmBSaaRcWdbQLFvUZy9yVcQxigBNHGPU/KE2AyHpzj3AWXpxoMTsIDiHug==", + "version": "7.29.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.29.4.tgz", + "integrity": "sha512-CVCXajliVh509PcZYRFyu/BoUEz452+jtQJq2b3Bae4v3xBUWPLCmtmBM+ZinG4MzwmxJgJ2M5rMqhqLVn7MtQ==", "dev": true, "requires": { - "array-includes": "^3.0.3", + "array-includes": "^3.1.4", + "array.prototype.flatmap": "^1.2.5", "doctrine": "^2.1.0", - "has": "^1.0.3", - "jsx-ast-utils": "^2.2.1", - "object.entries": "^1.1.0", - "object.fromentries": "^2.0.0", - "object.values": "^1.1.0", - "prop-types": "^15.7.2", - "resolve": "^1.12.0" + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.5", + "object.fromentries": "^2.0.5", + "object.hasown": "^1.1.0", + "object.values": "^1.1.5", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.3", + "semver": "^6.3.0", + "string.prototype.matchall": "^4.0.6" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "resolve": { + "version": "2.0.0-next.3", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", + "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", + "dev": true, + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } } }, "eslint-scope": { @@ -38755,9 +8906,9 @@ } }, "eslint-visitor-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", - "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true }, "esm": { @@ -38783,21 +8934,37 @@ "dev": true }, "esquery": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", - "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", "dev": true, "requires": { - "estraverse": "^4.0.0" + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } } }, "esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, "requires": { - "estraverse": "^4.1.0" + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } } }, "estraverse": { @@ -38825,9 +8992,9 @@ "dev": true }, "eventemitter2": { - "version": "6.4.4", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.4.tgz", - "integrity": "sha512-HLU3NDY6wARrLCEwyGKRBvuWYyvW6mHYv72SJJAH3iJN3a6eVUvkjFkcxah1bcTgGVBBrFdIopBJPhCQFMLyXw==", + "version": "6.4.5", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.5.tgz", + "integrity": "sha512-bXE7Dyc1i6oQElDG0jMRZJrRAn9QR2xyyFGmBdZleNmyQX0FqGYmhZIrIrpPfm/w//LTo4tVQGOGQcGCb5q9uw==", "dev": true }, "eventemitter3": { @@ -38871,31 +9038,20 @@ } }, "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", "dev": true, "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.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" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - } + "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" } }, "executable": { @@ -38905,14 +9061,6 @@ "dev": true, "requires": { "pify": "^2.2.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } } }, "exit-hook": { @@ -38954,17 +9102,17 @@ } }, "express": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "version": "4.17.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz", + "integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==", "dev": true, "requires": { - "accepts": "~1.3.7", + "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", + "body-parser": "1.19.2", + "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.4.0", + "cookie": "0.4.2", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "~1.1.2", @@ -38978,13 +9126,13 @@ "on-finished": "~2.3.0", "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", + "proxy-addr": "~2.0.7", + "qs": "6.9.7", "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", + "safe-buffer": "5.2.1", + "send": "0.17.2", + "serve-static": "1.14.2", + "setprototypeof": "1.2.0", "statuses": "~1.5.0", "type-is": "~1.6.18", "utils-merge": "1.0.1", @@ -39007,9 +9155,15 @@ } }, "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==", + "dev": true + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true } } @@ -39050,6 +9204,17 @@ "chardet": "^0.4.0", "iconv-lite": "^0.4.17", "tmp": "^0.0.33" + }, + "dependencies": { + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + } } }, "extglob": { @@ -39081,21 +9246,6 @@ "requires": { "ms": "2.0.0" } - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } } } }, @@ -39121,9 +9271,9 @@ "dev": true }, "fast-glob": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", - "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", @@ -39167,9 +9317,9 @@ "dev": true }, "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==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "requires": { "is-extglob": "^2.1.1" @@ -39203,9 +9353,9 @@ } }, "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, "fast-levenshtein": { @@ -39215,9 +9365,9 @@ "dev": true }, "fastq": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.1.tgz", - "integrity": "sha512-HOnr8Mc60eNYl1gzwp6r5RoUyAn5/glBolUzP/Ez6IFVPMPirxn/9phgL6zhOtaTy7ISwPvQ+wT+hfcRZh/bzw==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", "dev": true, "requires": { "reusify": "^1.0.4" @@ -39233,12 +9383,12 @@ } }, "fb-watchman": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz", - "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", "dev": true, "requires": { - "bser": "^2.0.0" + "bser": "2.1.1" } }, "fd-slicer": { @@ -39257,12 +9407,13 @@ "dev": true }, "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", "dev": true, "requires": { - "escape-string-regexp": "^1.0.5" + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" } }, "file-entry-cache": { @@ -39301,8 +9452,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} + "dev": true }, "fast-deep-equal": { "version": "3.1.3", @@ -39317,18 +9467,34 @@ "dev": true }, "schema-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", - "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", "dev": true, "requires": { - "@types/json-schema": "^7.0.7", + "@types/json-schema": "^7.0.8", "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==", + "dev": true, + "optional": true + }, + "filelist": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.2.tgz", + "integrity": "sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ==", + "dev": true, + "requires": { + "minimatch": "^3.0.4" + } + }, "filename-regex": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", @@ -39407,9 +9573,9 @@ } }, "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==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", "dev": true, "requires": { "commondir": "^1.0.1", @@ -39417,6 +9583,11 @@ "pkg-dir": "^4.1.0" } }, + "find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" + }, "find-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", @@ -39435,6 +9606,17 @@ "graceful-fs": "^4.1.2", "rimraf": "~2.6.2", "write": "^0.2.1" + }, + "dependencies": { + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } } }, "flush-write-stream": { @@ -39450,8 +9632,7 @@ "follow-redirects": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.1.tgz", - "integrity": "sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg==", - "dev": true + "integrity": "sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg==" }, "for-in": { "version": "1.0.2", @@ -39489,26 +9670,6 @@ "worker-rpc": "^0.1.0" }, "dependencies": { - "@babel/code-frame": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", - "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.14.5" - } - }, - "@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.14.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, "arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", @@ -39759,12 +9920,6 @@ } } }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, "micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -39806,9 +9961,9 @@ "dev": true }, "fraction.js": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.1.tgz", - "integrity": "sha512-MHOhvvxHTfRFpF1geTK9czMIZ6xclsEor2wkIGYYq+PxcQqT7vStJqjhe6S1TenZrMZzo+wlqOufBDVepUEgPg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", "dev": true }, "fragment-cache": { @@ -39875,6 +10030,17 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -39890,7 +10056,7 @@ "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==", - "devOptional": true + "dev": true }, "get-caller-file": { "version": "2.0.5", @@ -39901,7 +10067,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dev": true, "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -39909,10 +10074,9 @@ }, "dependencies": { "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" } } }, @@ -39935,10 +10099,23 @@ "dev": true }, "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } }, "get-value": { "version": "3.0.1", @@ -39955,14 +10132,6 @@ "dev": true, "requires": { "async": "^3.2.0" - }, - "dependencies": { - "async": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", - "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==", - "dev": true - } } }, "getpass": { @@ -40018,19 +10187,25 @@ "minipass": "^2.9.0" } }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, "tar": { - "version": "4.4.13", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", - "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", + "version": "4.4.19", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz", + "integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==", "dev": true, "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.8.6", - "minizlib": "^1.2.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.3" + "chownr": "^1.1.4", + "fs-minipass": "^1.2.7", + "minipass": "^2.9.0", + "minizlib": "^1.3.3", + "mkdirp": "^0.5.5", + "safe-buffer": "^5.2.1", + "yallist": "^3.1.1" } }, "yallist": { @@ -40042,9 +10217,9 @@ } }, "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -40075,38 +10250,38 @@ } }, "global-dirs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", - "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.1.0.tgz", + "integrity": "sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==", "dev": true, "requires": { - "ini": "2.0.0" + "ini": "1.3.7" } }, "globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "devOptional": true + "dev": true }, "globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, "requires": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", "slash": "^3.0.0" }, "dependencies": { "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "dev": true }, "slash": { @@ -40154,9 +10329,9 @@ } }, "graceful-fs": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", + "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", "dev": true }, "growly": { @@ -40186,15 +10361,16 @@ "dev": true }, "handlebars": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.1.tgz", - "integrity": "sha512-C29UoFzHe9yM61lOsIlCE5/mQVGrnIOrOq7maQl76L7tYPCgC1og0Ajt6uWnX4ZTxBPnjw+CUvawphwCfJgUnA==", + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", "dev": true, "requires": { + "minimist": "^1.2.5", "neo-async": "^2.6.0", - "optimist": "^0.6.1", "source-map": "^0.6.1", - "uglify-js": "^3.1.4" + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" }, "dependencies": { "source-map": { @@ -40212,31 +10388,31 @@ "dev": true }, "har-validator": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", "dev": true, "requires": { - "ajv": "^6.5.5", + "ajv": "^6.12.3", "har-schema": "^2.0.0" }, "dependencies": { "ajv": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "requires": { - "fast-deep-equal": "^2.0.1", + "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, "json-schema-traverse": { @@ -40248,9 +10424,9 @@ } }, "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==", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz", + "integrity": "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==", "dev": true }, "has": { @@ -40300,15 +10476,29 @@ "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "devOptional": true + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, "has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "requires": { + "has-symbols": "^1.0.2" + }, + "dependencies": { + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + } + } + }, "has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", @@ -40338,12 +10528,6 @@ "kind-of": "^4.0.0" }, "dependencies": { - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", @@ -40468,9 +10652,9 @@ } }, "hosted-git-info": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", - "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==", + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, "hpack.js": { @@ -40646,9 +10830,9 @@ "dev": true }, "domutils": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.7.0.tgz", - "integrity": "sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", "dev": true, "requires": { "dom-serializer": "^1.0.1", @@ -40671,30 +10855,22 @@ "dev": true }, "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==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", "dev": true, "requires": { "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", "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=", - "dev": true - } + "toidentifier": "1.0.1" } }, "http-parser-js": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz", - "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==", + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz", + "integrity": "sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==", "dev": true }, "http-proxy": { @@ -40957,9 +11133,9 @@ "dev": true }, "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==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "requires": { "is-extglob": "^2.1.1" @@ -40985,12 +11161,6 @@ } } }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, "micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -41015,14 +11185,14 @@ } }, "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz", + "integrity": "sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==", "dev": true, "requires": { "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" + "jsprim": "^2.0.2", + "sshpk": "^1.14.1" } }, "https-browserify": { @@ -41050,8 +11220,13 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true, - "requires": {} + "dev": true + }, + "idb": { + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/idb/-/idb-6.1.5.tgz", + "integrity": "sha512-IJtugpKkiVXQn5Y+LteyBCNk1N8xpGV3wWZk9EVtZWH8DYkjBn0bX1XnGP9RkyZF0sAcywa6unHqSWKe7q4LGw==", + "dev": true }, "identity-obj-proxy": { "version": "3.0.0", @@ -41084,20 +11259,10 @@ "resolved": "https://registry.npmjs.org/immutability-helper/-/immutability-helper-3.1.1.tgz", "integrity": "sha512-Q0QaXjPjwIju/28TsugCHNEASwoCcJSyJV3uO1sOIQGI0jKgm9f41Lvz0DZj3n46cNCyAZTsEYoY4C2bVRUzyQ==" }, - "import-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-3.0.0.tgz", - "integrity": "sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg==", - "dev": true, - "requires": { - "import-from": "^3.0.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==", - "dev": true, "requires": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -41106,25 +11271,7 @@ "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - } - } - }, - "import-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/import-from/-/import-from-3.0.0.tgz", - "integrity": "sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==", - "dev": true, - "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==", - "dev": true + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" } } }, @@ -41162,9 +11309,9 @@ "dev": true }, "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", "dev": true }, "indexes-of": { @@ -41201,9 +11348,9 @@ "dev": true }, "ini": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", + "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==", "dev": true }, "inquirer": { @@ -41234,6 +11381,49 @@ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -41265,6 +11455,17 @@ "ipaddr.js": "^1.9.0" } }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, "invariant": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", @@ -41274,9 +11475,9 @@ } }, "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", "dev": true }, "ip": { @@ -41310,24 +11511,41 @@ "dev": true, "requires": { "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, "is-arguments": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", - "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^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=", - "dev": true + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" }, "is-bigint": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.2.tgz", - "integrity": "sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA==", - "dev": true + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "requires": { + "has-bigints": "^1.0.1" + } }, "is-binary-path": { "version": "2.1.0", @@ -41340,12 +11558,13 @@ } }, "is-boolean-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.1.tgz", - "integrity": "sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "dev": true, "requires": { - "call-bind": "^1.0.2" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" } }, "is-buffer": { @@ -41364,18 +11583,18 @@ } }, "is-callable": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", - "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", "dev": true }, "is-ci": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", - "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", "dev": true, "requires": { - "ci-info": "^1.5.0" + "ci-info": "^2.0.0" } }, "is-color-stop": { @@ -41393,9 +11612,9 @@ } }, "is-core-module": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.5.0.tgz", - "integrity": "sha512-TXCMSDsEHMEEZ6eCA8rwRDbLu55MRGmrctljsBX/2v1d9/GzqHOxW5c5oPSgrUt2vBFXebu9rGqckXGPWOlYpg==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", + "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", "dev": true, "requires": { "has": "^1.0.3" @@ -41408,6 +11627,17 @@ "dev": true, "requires": { "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, "is-date-object": { @@ -41468,13 +11698,10 @@ "dev": true }, "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", + "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", + "dev": true }, "is-fullwidth-code-point": { "version": "2.0.0", @@ -41491,13 +11718,13 @@ } }, "is-installed-globally": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", - "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", + "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", "dev": true, "requires": { - "global-dirs": "^3.0.0", - "is-path-inside": "^3.0.2" + "global-dirs": "^2.0.1", + "is-path-inside": "^3.0.1" } }, "is-interactive": { @@ -41513,9 +11740,9 @@ "dev": true }, "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==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", "dev": true }, "is-npm": { @@ -41531,13 +11758,27 @@ "dev": true, "requires": { "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, "is-number-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz", - "integrity": "sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw==", - "dev": true + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", + "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } }, "is-obj": { "version": "2.0.0", @@ -41607,9 +11848,9 @@ "dev": true }, "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", "dev": true }, "is-regex": { @@ -41632,25 +11873,34 @@ "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", "dev": true }, + "is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", + "dev": true + }, "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true }, "is-string": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.6.tgz", - "integrity": "sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w==", - "dev": true + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } }, "is-symbol": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", - "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "dev": true, "requires": { - "has-symbols": "^1.0.0" + "has-symbols": "^1.0.2" } }, "is-typedarray": { @@ -41671,6 +11921,15 @@ "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", "dev": true }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -41713,14 +11972,6 @@ "requires": { "node-fetch": "^2.6.1", "whatwg-fetch": "^3.4.1" - }, - "dependencies": { - "node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", - "dev": true - } } }, "isomorphic-unfetch": { @@ -41756,6 +12007,17 @@ "js-yaml": "^3.7.0", "mkdirp": "^0.5.1", "once": "^1.4.0" + }, + "dependencies": { + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + } } }, "istanbul-lib-coverage": { @@ -41825,28 +12087,93 @@ } } }, - "istanbul-lib-source-maps": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.6.tgz", - "integrity": "sha512-TtbsY5GIHgbMsMiRw35YBHGpZ1DVFEO19vxxeiDMYaeOFOCzfnYVxvl6pOUIZR4dtPhAGpSMup8OyF8ubsaqEg==", - "dev": true, - "requires": { - "debug": "^3.1.0", - "istanbul-lib-coverage": "^1.2.1", - "mkdirp": "^0.5.1", - "rimraf": "^2.6.1", - "source-map": "^0.5.3" - } - }, - "istanbul-reports": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.5.1.tgz", - "integrity": "sha512-+cfoZ0UXzWjhAdzosCPP3AN8vvef8XDkWtTfgaN+7L3YTpNYITnCaEkceo5SEYy644VkHka/P1FvkWvrG/rrJw==", - "dev": true, - "requires": { - "handlebars": "^4.0.3" - } - }, + "istanbul-lib-source-maps": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.6.tgz", + "integrity": "sha512-TtbsY5GIHgbMsMiRw35YBHGpZ1DVFEO19vxxeiDMYaeOFOCzfnYVxvl6pOUIZR4dtPhAGpSMup8OyF8ubsaqEg==", + "dev": true, + "requires": { + "debug": "^3.1.0", + "istanbul-lib-coverage": "^1.2.1", + "mkdirp": "^0.5.1", + "rimraf": "^2.6.1", + "source-map": "^0.5.3" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "istanbul-reports": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.5.1.tgz", + "integrity": "sha512-+cfoZ0UXzWjhAdzosCPP3AN8vvef8XDkWtTfgaN+7L3YTpNYITnCaEkceo5SEYy644VkHka/P1FvkWvrG/rrJw==", + "dev": true, + "requires": { + "handlebars": "^4.0.3" + } + }, + "jake": { + "version": "10.8.4", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.4.tgz", + "integrity": "sha512-MtWeTkl1qGsWUtbl/Jsca/8xSoK3x0UmS82sNbjqxxG/de/M/3b1DntdjHgPMC50enlTNwXOCRqPXLLt5cCfZA==", + "dev": true, + "requires": { + "async": "0.9.x", + "chalk": "^4.0.2", + "filelist": "^1.0.1", + "minimatch": "^3.0.4" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "async": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", + "dev": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } + } + }, "java-properties": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/java-properties/-/java-properties-1.0.2.tgz", @@ -41874,6 +12201,12 @@ "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", "dev": true }, + "ci-info": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", + "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==", + "dev": true + }, "cliui": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", @@ -41913,6 +12246,32 @@ } } }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.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" + } + }, "find-up": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", @@ -41928,6 +12287,27 @@ "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", "dev": true }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "is-ci": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", + "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", + "dev": true, + "requires": { + "ci-info": "^1.5.0" + } + }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", @@ -41937,6 +12317,12 @@ "number-is-nan": "^1.0.0" } }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, "jest-cli": { "version": "21.2.1", "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-21.2.1.tgz", @@ -41974,6 +12360,15 @@ "yargs": "^9.0.0" } }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, "load-json-file": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", @@ -42004,6 +12399,41 @@ "path-exists": "^3.0.0" } }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "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=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "dev": true, + "requires": { + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" + } + }, "p-limit": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", @@ -42028,6 +12458,21 @@ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, "path-type": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", @@ -42045,6 +12490,12 @@ } } }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, "read-pkg": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", @@ -42072,6 +12523,21 @@ "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", "dev": true }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "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=", + "dev": true + }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -42105,6 +12571,15 @@ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", "dev": true }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", @@ -42144,9 +12619,9 @@ } }, "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", "dev": true }, "yargs": { @@ -42354,6 +12829,14 @@ "pify": "^3.0.0", "throat": "^4.0.0", "worker-farm": "^1.3.1" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } } }, "jest-runtime": { @@ -42417,6 +12900,32 @@ } } }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.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" + } + }, "find-up": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", @@ -42432,6 +12941,18 @@ "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", "dev": true }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", @@ -42441,6 +12962,21 @@ "number-is-nan": "^1.0.0" } }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, "load-json-file": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", @@ -42463,6 +12999,41 @@ "path-exists": "^3.0.0" } }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "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=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "dev": true, + "requires": { + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" + } + }, "p-limit": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", @@ -42487,6 +13058,21 @@ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, "path-type": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", @@ -42496,12 +13082,6 @@ "pify": "^2.0.0" } }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, "read-pkg": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", @@ -42529,6 +13109,21 @@ "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", "dev": true }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "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=", + "dev": true + }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -42577,6 +13172,15 @@ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", "dev": true }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", @@ -42601,9 +13205,9 @@ } }, "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", "dev": true }, "yargs": { @@ -42696,23 +13300,6 @@ "@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==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } } }, "js-tokens": { @@ -42721,9 +13308,9 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, "requires": { "argparse": "^1.0.7", @@ -42767,6 +13354,30 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", "dev": true + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "whatwg-url": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-4.8.0.tgz", + "integrity": "sha1-0pgaqRSMHgCkHFphMRZqtGg7vMA=", + "dev": true, + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + }, + "dependencies": { + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "dev": true + } + } } } }, @@ -42774,7 +13385,7 @@ "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "devOptional": true + "dev": true }, "json-buffer": { "version": "3.0.0", @@ -42791,13 +13402,12 @@ "json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true + "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=", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", "dev": true }, "json-schema-traverse": { @@ -42827,12 +13437,6 @@ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", "dev": true }, - "json3": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", - "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==", - "dev": true - }, "json5": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", @@ -42840,9 +13444,9 @@ "dev": true }, "jsonc-parser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.2.0.tgz", - "integrity": "sha512-4fLQxW1j/5fWj6p78vAlAafoCKtuBm6ghv+Ij5W2DrDx0qE+ZdEl2c6Ko1mgJNF5ftX1iEWQQ4Ap7+3GlhjkOA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", + "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", "dev": true }, "jsonfile": { @@ -42861,26 +13465,32 @@ "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", "dev": true }, + "jsonpointer": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.0.tgz", + "integrity": "sha512-PNYZIdMjVIvVgDSYKTT63Y+KZ6IZvGRNNWcxwD+GNnUz1MKPfv30J8ueCjdwcN0nDx2SlshgyB7Oy0epAzVRRg==", + "dev": true + }, "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz", + "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==", "dev": true, "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", - "json-schema": "0.2.3", + "json-schema": "0.4.0", "verror": "1.10.0" } }, "jsx-ast-utils": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.2.3.tgz", - "integrity": "sha512-EdIHFMm+1BPynpKOpdPqiOsvnIrInRGJD7bzPZdPkjitQEqpdpUuFpq4T0npZFKTiB3RhWFdGN+oqOJIdhDhQA==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz", + "integrity": "sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA==", "dev": true, "requires": { - "array-includes": "^3.0.3", - "object.assign": "^4.1.0" + "array-includes": "^3.1.3", + "object.assign": "^4.1.2" } }, "keyv": { @@ -42899,21 +13509,10 @@ "dev": true }, "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - }, - "dependencies": { - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - } - } + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true }, "kleur": { "version": "4.1.4", @@ -42922,9 +13521,9 @@ "dev": true }, "klona": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.4.tgz", - "integrity": "sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", + "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", "dev": true }, "last-call-webpack-plugin": { @@ -42953,12 +13552,12 @@ "dev": true }, "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", "dev": true, "requires": { - "invert-kv": "^1.0.0" + "invert-kv": "^2.0.0" } }, "leaflet": { @@ -42983,16 +13582,15 @@ } }, "lilconfig": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.3.tgz", - "integrity": "sha512-EHKqr/+ZvdKCifpNrJCKxBTgk5XupZA3y/aCPY9mxfgBzmgh93Mt/WqjjQ38oMxXuvDokaKiM3lAgvSH2sjtHg==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.4.tgz", + "integrity": "sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==", "dev": true }, "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=", - "dev": true + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=" }, "linkstate": { "version": "1.1.1", @@ -43016,10 +13614,10 @@ "rxjs": "^6.3.3" }, "dependencies": { - "p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "dev": true } } @@ -43071,22 +13669,6 @@ "supports-color": "^2.0.0" } }, - "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" - } - }, - "indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", - "dev": true - }, "log-symbols": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", @@ -43104,6 +13686,12 @@ "requires": { "ansi-regex": "^2.0.0" } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true } } }, @@ -43119,11 +13707,54 @@ "figures": "^2.0.0" }, "dependencies": { + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, "date-fns": { "version": "1.30.1", "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==", "dev": true + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } } } }, @@ -43140,11 +13771,14 @@ "strip-bom": "^2.0.0" }, "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } } } }, @@ -43155,9 +13789,9 @@ "dev": true }, "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==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", "dev": true, "requires": { "big.js": "^5.2.2", @@ -43166,18 +13800,9 @@ }, "dependencies": { "json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", "dev": true } } @@ -43203,114 +13828,9 @@ "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" }, "lodash-es": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.15.tgz", - "integrity": "sha512-rlrc3yU3+JNOpZ9zj5pQtxnx2THmvRykwL4Xlxoa8I9lHBlVbbyPhgyPMioxVZ4NqyxaVVtaJnzsyOidQIhyyQ==" - }, - "lodash._basebind": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/lodash._basebind/-/lodash._basebind-2.3.0.tgz", - "integrity": "sha1-K1vEUqDhBhQ7IYafIzvbWHQX0kg=", - "dev": true, - "requires": { - "lodash._basecreate": "~2.3.0", - "lodash._setbinddata": "~2.3.0", - "lodash.isobject": "~2.3.0" - } - }, - "lodash._basecreate": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-2.3.0.tgz", - "integrity": "sha1-m4ioak3P97fzxh2Dovz8BnHsneA=", - "dev": true, - "requires": { - "lodash._renative": "~2.3.0", - "lodash.isobject": "~2.3.0", - "lodash.noop": "~2.3.0" - } - }, - "lodash._basecreatecallback": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/lodash._basecreatecallback/-/lodash._basecreatecallback-2.3.0.tgz", - "integrity": "sha1-N7KrF1kaM56YjbMln81GAZ16w2I=", - "dev": true, - "requires": { - "lodash._setbinddata": "~2.3.0", - "lodash.bind": "~2.3.0", - "lodash.identity": "~2.3.0", - "lodash.support": "~2.3.0" - } - }, - "lodash._basecreatewrapper": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/lodash._basecreatewrapper/-/lodash._basecreatewrapper-2.3.0.tgz", - "integrity": "sha1-qgxhrZYETDkzN2ExSDqXWcNlEkc=", - "dev": true, - "requires": { - "lodash._basecreate": "~2.3.0", - "lodash._setbinddata": "~2.3.0", - "lodash._slice": "~2.3.0", - "lodash.isobject": "~2.3.0" - } - }, - "lodash._createwrapper": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/lodash._createwrapper/-/lodash._createwrapper-2.3.0.tgz", - "integrity": "sha1-0arhEC2t9EDo4G/BM6bt1/4UYHU=", - "dev": true, - "requires": { - "lodash._basebind": "~2.3.0", - "lodash._basecreatewrapper": "~2.3.0", - "lodash.isfunction": "~2.3.0" - } - }, - "lodash._objecttypes": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/lodash._objecttypes/-/lodash._objecttypes-2.3.0.tgz", - "integrity": "sha1-aj6jmH3W7rgCGy1cnDA1Scwrrh4=", - "dev": true - }, - "lodash._renative": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/lodash._renative/-/lodash._renative-2.3.0.tgz", - "integrity": "sha1-d9jt1M7SbdWXH54Vpfdy5OMX+9M=", - "dev": true - }, - "lodash._setbinddata": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/lodash._setbinddata/-/lodash._setbinddata-2.3.0.tgz", - "integrity": "sha1-5WEEkKzRMnfVmFjZW18nJ/FQjwQ=", - "dev": true, - "requires": { - "lodash._renative": "~2.3.0", - "lodash.noop": "~2.3.0" - } - }, - "lodash._shimkeys": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/lodash._shimkeys/-/lodash._shimkeys-2.3.0.tgz", - "integrity": "sha1-YR+TFJ4+bHIQlrSHae8pU3rai6k=", - "dev": true, - "requires": { - "lodash._objecttypes": "~2.3.0" - } - }, - "lodash._slice": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/lodash._slice/-/lodash._slice-2.3.0.tgz", - "integrity": "sha1-FHGYEyhZly5GgMoppZkshVZpqlw=", - "dev": true - }, - "lodash.bind": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-2.3.0.tgz", - "integrity": "sha1-wqjhi2jl7MFS4rFoJmEW/qWwFsw=", - "dev": true, - "requires": { - "lodash._createwrapper": "~2.3.0", - "lodash._renative": "~2.3.0", - "lodash._slice": "~2.3.0" - } + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" }, "lodash.debounce": { "version": "4.0.8", @@ -43318,77 +13838,18 @@ "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", "dev": true }, - "lodash.foreach": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-2.3.0.tgz", - "integrity": "sha1-CDQEyR6EbudyRf3512UZxosq8Wg=", - "dev": true, - "requires": { - "lodash._basecreatecallback": "~2.3.0", - "lodash.forown": "~2.3.0" - } - }, - "lodash.forown": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/lodash.forown/-/lodash.forown-2.3.0.tgz", - "integrity": "sha1-JPtKr4ANRfwtxgv+w84EyDajrX8=", - "dev": true, - "requires": { - "lodash._basecreatecallback": "~2.3.0", - "lodash._objecttypes": "~2.3.0", - "lodash.keys": "~2.3.0" - } - }, - "lodash.identity": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/lodash.identity/-/lodash.identity-2.3.0.tgz", - "integrity": "sha1-awGiEMlIU1XCqRO0i2cRIZoXPe0=", - "dev": true - }, "lodash.isequal": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", "dev": true }, - "lodash.isfunction": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-2.3.0.tgz", - "integrity": "sha1-aylz5HpkfPEucNZ2rqE2Q3BuUmc=", - "dev": true - }, - "lodash.isobject": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-2.3.0.tgz", - "integrity": "sha1-LhbT/Fg9qYMZaJU/LY5tc0NPZ5k=", - "dev": true, - "requires": { - "lodash._objecttypes": "~2.3.0" - } - }, - "lodash.keys": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.3.0.tgz", - "integrity": "sha1-s1D0+Syqn0WkouzwGEVM8vKK4lM=", - "dev": true, - "requires": { - "lodash._renative": "~2.3.0", - "lodash._shimkeys": "~2.3.0", - "lodash.isobject": "~2.3.0" - } - }, "lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", "dev": true }, - "lodash.noop": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/lodash.noop/-/lodash.noop-2.3.0.tgz", - "integrity": "sha1-MFnWKNUbv5N80qC2/Dp/ISpmnCw=", - "dev": true - }, "lodash.once": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", @@ -43401,15 +13862,6 @@ "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", "dev": true }, - "lodash.support": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/lodash.support/-/lodash.support-2.3.0.tgz", - "integrity": "sha1-fq8DivTw1qq3drRKptz8gDNMm/0=", - "dev": true, - "requires": { - "lodash._renative": "~2.3.0" - } - }, "lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", @@ -43436,9 +13888,9 @@ } }, "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -43459,21 +13911,6 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } } } }, @@ -43494,6 +13931,40 @@ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -43526,9 +13997,9 @@ } }, "loglevel": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz", - "integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.0.tgz", + "integrity": "sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA==", "dev": true }, "loose-envify": { @@ -43562,12 +14033,12 @@ } }, "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==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", "dev": true, "requires": { - "sourcemap-codec": "^1.4.4" + "sourcemap-codec": "^1.4.8" } }, "make-dir": { @@ -43588,12 +14059,12 @@ } }, "makeerror": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", - "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", "dev": true, "requires": { - "tmpl": "1.0.x" + "tmpl": "1.0.5" } }, "map-age-cleaner": { @@ -43659,12 +14130,14 @@ "dev": true }, "mem": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", "dev": true, "requires": { - "mimic-fn": "^1.0.0" + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" } }, "memoize-one": { @@ -43737,6 +14210,17 @@ "object.omit": "^2.0.0", "parse-glob": "^3.0.4", "regex-cache": "^0.4.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, "miller-rabin": { @@ -43758,30 +14242,30 @@ } }, "mime": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", - "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true }, "mime-db": { - "version": "1.42.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.42.0.tgz", - "integrity": "sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ==", + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true }, "mime-types": { - "version": "2.1.25", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.25.tgz", - "integrity": "sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg==", + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, "requires": { - "mime-db": "1.42.0" + "mime-db": "1.52.0" } }, "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true }, "mimic-response": { @@ -43817,8 +14301,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} + "dev": true }, "fast-deep-equal": { "version": "3.1.3", @@ -43833,12 +14316,12 @@ "dev": true }, "schema-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", - "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", "dev": true, "requires": { - "@types/json-schema": "^7.0.7", + "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", "ajv-keywords": "^3.5.2" } @@ -43858,24 +14341,24 @@ "dev": true }, "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true }, "minipass": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", - "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", "dev": true, "requires": { "yallist": "^4.0.0" @@ -43974,12 +14457,12 @@ } }, "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", "dev": true, "requires": { - "minimist": "0.0.8" + "minimist": "^1.2.5" } }, "moment": { @@ -44000,12 +14483,29 @@ "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==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } } }, "mri": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.1.6.tgz", - "integrity": "sha512-oi1b3MfbyGa7FJMP9GmLTttni5JoICpYBRlq+x5V16fZbLsnL9N3wFqqIm/nIG43FjUFkFh9Epzp/kzUGUnJxQ==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "dev": true + }, + "mrmime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.0.tgz", + "integrity": "sha512-a70zx7zFfVO7XpnQ2IX1Myh9yY4UYvfld/dikWRnsXxbyvMcfz+u6UfgNAtH+k2QqtJuzVpv6eLTx1G2+WKZbQ==", "dev": true }, "ms": { @@ -44035,10 +14535,17 @@ "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", "dev": true }, + "nan": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", + "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", + "dev": true, + "optional": true + }, "nanoid": { - "version": "3.1.23", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.23.tgz", - "integrity": "sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", + "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", "dev": true }, "nanomatch": { @@ -44071,12 +14578,6 @@ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true } } }, @@ -44096,15 +14597,15 @@ "dev": true }, "negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "dev": true }, "neo-async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", - "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, "nice-try": { @@ -44123,10 +14624,13 @@ } }, "node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", - "dev": true + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dev": true, + "requires": { + "whatwg-url": "^5.0.0" + } }, "node-forge": { "version": "0.10.0", @@ -44197,9 +14701,9 @@ } }, "node-notifier": { - "version": "5.4.3", - "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.3.tgz", - "integrity": "sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q==", + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.5.tgz", + "integrity": "sha512-tVbHs7DyTLtzOiN78izLA85zRqB9NvEXkAf014Vx3jtSvn/xBl6bR8ZYifj+dFcFrKI21huSQgJZ6ZtL3B4HfQ==", "dev": true, "requires": { "growly": "^1.3.0", @@ -44207,31 +14711,31 @@ "semver": "^5.5.0", "shellwords": "^0.1.1", "which": "^1.3.0" - } - }, - "node-releases": { - "version": "1.1.40", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.40.tgz", - "integrity": "sha512-r4LPcC5b/bS8BdtWH1fbeK88ib/wg9aqmg6/s3ngNLn2Ewkn/8J6Iw3P9RTlfIAdSdvYvQl2thCY5Y+qTAQ2iQ==", - "dev": true, - "requires": { - "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==", - "dev": true + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } } } }, + "node-releases": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", + "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==", + "dev": true + }, "nodent-compiler": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/nodent-compiler/-/nodent-compiler-3.2.11.tgz", - "integrity": "sha512-rfDrGWdgIJYomPUzR8nXiWNuIhJ7cVodPeZP3Ho65LEycuaX2uVNZ0ytpcfrmUKzdFeLRtye9+pHe8OynPZuPQ==", + "version": "3.2.13", + "resolved": "https://registry.npmjs.org/nodent-compiler/-/nodent-compiler-3.2.13.tgz", + "integrity": "sha512-nzzWPXZwSdsWie34om+4dLrT/5l1nT/+ig1v06xuSgMtieJVAnMQFuZihUwREM+M7dFso9YoHfDmweexEXXrrw==", "requires": { - "acorn": ">= 2.5.2 <= 5.7.3", + "acorn": ">= 2.5.2 <= 5.7.5", "acorn-es7-plugin": "^1.1.7", "nodent-transform": "^3.2.9", "source-map": "^0.5.7" @@ -44281,12 +14785,12 @@ "dev": true }, "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=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, "requires": { - "path-key": "^2.0.0" + "path-key": "^3.0.0" } }, "nth-check": { @@ -44346,19 +14850,32 @@ "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=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } } } }, "object-inspect": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", + "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", "dev": true }, "object-is": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.1.tgz", - "integrity": "sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY=" + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } }, "object-keys": { "version": "1.1.1", @@ -44375,116 +14892,58 @@ } }, "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" + "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.0", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.0.tgz", - "integrity": "sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", + "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", "dev": true, "requires": { + "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.12.0", - "function-bind": "^1.1.1", - "has": "^1.0.3" + "es-abstract": "^1.19.1" } }, "object.fromentries": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.1.tgz", - "integrity": "sha512-PUQv8Hbg3j2QX0IQYv3iAGCbGcu4yY4KQ92/dhA4sFSixBmSmp13UpDLs6jGK8rBtbmhNNIK99LD2k293jpiGA==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", + "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", "dev": true, "requires": { + "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.15.0", - "function-bind": "^1.1.1", - "has": "^1.0.3" + "es-abstract": "^1.19.1" } }, "object.getownpropertydescriptors": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz", - "integrity": "sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz", + "integrity": "sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw==", "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2" - }, - "dependencies": { - "es-abstract": { - "version": "1.18.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.3.tgz", - "integrity": "sha512-nQIr12dxV7SSxE6r6f1l3DtAeEYdsGpps13dR0TwJg1S8gyp4ZPgy3FZcHBgbiQqnoqSTb+oC+kO4UQ0C/J8vw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "is-callable": "^1.2.3", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.3", - "is-string": "^1.0.6", - "object-inspect": "^1.10.3", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" - } - }, - "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true - }, - "is-callable": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", - "dev": true - }, - "is-regex": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz", - "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-symbols": "^1.0.2" - } - }, - "object-inspect": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", - "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", - "dev": true - }, - "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==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - } - } + "es-abstract": "^1.19.1" + } + }, + "object.hasown": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.0.tgz", + "integrity": "sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" } }, "object.omit": { @@ -44507,15 +14966,14 @@ } }, "object.values": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.0.tgz", - "integrity": "sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", + "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", "dev": true, "requires": { + "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.12.0", - "function-bind": "^1.1.1", - "has": "^1.0.3" + "es-abstract": "^1.19.1" } }, "obuf": { @@ -44549,12 +15007,12 @@ } }, "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, "requires": { - "mimic-fn": "^1.0.0" + "mimic-fn": "^2.1.0" } }, "opener": { @@ -44572,16 +15030,6 @@ "is-wsl": "^1.1.0" } }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "dev": true, - "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - } - }, "optimize-css-assets-webpack-plugin": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-6.0.1.tgz", @@ -44593,91 +15041,32 @@ "postcss": "^8.2.1" }, "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "browserslist": { - "version": "4.16.6", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", - "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001219", - "colorette": "^1.2.2", - "electron-to-chromium": "^1.3.723", - "escalade": "^3.1.1", - "node-releases": "^1.1.71" - } - }, - "caniuse-lite": { - "version": "1.0.30001245", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001245.tgz", - "integrity": "sha512-768fM9j1PKXpOCKws6eTo3RHmvTUsG9UrpT4WoREFeZgJBTi4/X9g565azS/rVUGtqb8nt7FjLeF5u4kukERnA==", - "dev": true - }, - "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "commander": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "dev": true }, - "css-color-names": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-1.0.1.tgz", - "integrity": "sha512-/loXYOch1qU1biStIFsHH8SxTmOseh1IJqFvy8IujXOm1h+QjUdDhkzOrR5HG8K8mlxREj0yfi8ewCHx0eMxzA==", - "dev": true - }, "css-declaration-sorter": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.0.3.tgz", - "integrity": "sha512-52P95mvW1SMzuRZegvpluT6yEv0FqQusydKQPZsNN5Q7hh8EwQvN8E2nwuJ16BBvNN6LcoIZXu/Bk58DAhrrxw==", + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.1.4.tgz", + "integrity": "sha512-lpfkqS0fctcmZotJGhnxkIyJWvBXgpyi2wsFd4J8VB7wzyrT6Ch/3Q+FMNJpjK4gu1+GN5khOnpU2ZVKrLbhCw==", "dev": true, "requires": { "timsort": "^0.3.0" } }, "css-select": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", - "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.2.1.tgz", + "integrity": "sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ==", "dev": true, "requires": { "boolbase": "^1.0.0", - "css-what": "^5.0.0", - "domhandler": "^4.2.0", - "domutils": "^2.6.0", - "nth-check": "^2.0.0" + "css-what": "^5.1.0", + "domhandler": "^4.3.0", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" } }, "css-tree": { @@ -44691,57 +15080,57 @@ } }, "css-what": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.0.1.tgz", - "integrity": "sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", + "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", "dev": true }, "cssnano": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.0.6.tgz", - "integrity": "sha512-NiaLH/7yqGksFGsFNvSRe2IV/qmEBAeDE64dYeD8OBrgp6lE8YoMeQJMtsv5ijo6MPyhuoOvFhI94reahBRDkw==", + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.5.tgz", + "integrity": "sha512-VZO1e+bRRVixMeia1zKagrv0lLN1B/r/u12STGNNUFxnp97LIFgZHQa0JxqlwEkvzUyA9Oz/WnCTAFkdEbONmg==", "dev": true, "requires": { - "cosmiconfig": "^7.0.0", - "cssnano-preset-default": "^5.1.3", - "is-resolvable": "^1.1.0" + "cssnano-preset-default": "^5.2.5", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" } }, "cssnano-preset-default": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.1.3.tgz", - "integrity": "sha512-qo9tX+t4yAAZ/yagVV3b+QBKeLklQbmgR3wI7mccrDcR+bEk9iHgZN1E7doX68y9ThznLya3RDmR+nc7l6/2WQ==", + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.5.tgz", + "integrity": "sha512-WopL7PzN7sos3X8B54/QGl+CZUh1f0qN4ds+y2d5EPwRSSc3jsitVw81O+Uyop0pXyOfPfZxnc+LmA8w/Ki/WQ==", "dev": true, "requires": { "css-declaration-sorter": "^6.0.3", - "cssnano-utils": "^2.0.1", - "postcss-calc": "^8.0.0", - "postcss-colormin": "^5.2.0", - "postcss-convert-values": "^5.0.1", - "postcss-discard-comments": "^5.0.1", - "postcss-discard-duplicates": "^5.0.1", - "postcss-discard-empty": "^5.0.1", - "postcss-discard-overridden": "^5.0.1", - "postcss-merge-longhand": "^5.0.2", - "postcss-merge-rules": "^5.0.2", - "postcss-minify-font-values": "^5.0.1", - "postcss-minify-gradients": "^5.0.1", - "postcss-minify-params": "^5.0.1", - "postcss-minify-selectors": "^5.1.0", - "postcss-normalize-charset": "^5.0.1", - "postcss-normalize-display-values": "^5.0.1", - "postcss-normalize-positions": "^5.0.1", - "postcss-normalize-repeat-style": "^5.0.1", - "postcss-normalize-string": "^5.0.1", - "postcss-normalize-timing-functions": "^5.0.1", - "postcss-normalize-unicode": "^5.0.1", - "postcss-normalize-url": "^5.0.2", - "postcss-normalize-whitespace": "^5.0.1", - "postcss-ordered-values": "^5.0.2", - "postcss-reduce-initial": "^5.0.1", - "postcss-reduce-transforms": "^5.0.1", - "postcss-svgo": "^5.0.2", - "postcss-unique-selectors": "^5.0.1" + "cssnano-utils": "^3.1.0", + "postcss-calc": "^8.2.3", + "postcss-colormin": "^5.3.0", + "postcss-convert-values": "^5.1.0", + "postcss-discard-comments": "^5.1.1", + "postcss-discard-duplicates": "^5.1.0", + "postcss-discard-empty": "^5.1.1", + "postcss-discard-overridden": "^5.1.0", + "postcss-merge-longhand": "^5.1.3", + "postcss-merge-rules": "^5.1.1", + "postcss-minify-font-values": "^5.1.0", + "postcss-minify-gradients": "^5.1.1", + "postcss-minify-params": "^5.1.2", + "postcss-minify-selectors": "^5.2.0", + "postcss-normalize-charset": "^5.1.0", + "postcss-normalize-display-values": "^5.1.0", + "postcss-normalize-positions": "^5.1.0", + "postcss-normalize-repeat-style": "^5.1.0", + "postcss-normalize-string": "^5.1.0", + "postcss-normalize-timing-functions": "^5.1.0", + "postcss-normalize-unicode": "^5.1.0", + "postcss-normalize-url": "^5.1.0", + "postcss-normalize-whitespace": "^5.1.1", + "postcss-ordered-values": "^5.1.1", + "postcss-reduce-initial": "^5.1.0", + "postcss-reduce-transforms": "^5.1.0", + "postcss-svgo": "^5.1.0", + "postcss-unique-selectors": "^5.1.1" } }, "dom-serializer": { @@ -44762,9 +15151,9 @@ "dev": true }, "domutils": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.7.0.tgz", - "integrity": "sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", "dev": true, "requires": { "dom-serializer": "^1.0.1", @@ -44772,36 +15161,12 @@ "domhandler": "^4.2.0" } }, - "electron-to-chromium": { - "version": "1.3.776", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.776.tgz", - "integrity": "sha512-V0w7eFSBoFPpdw4xexjVPZ770UDZIevSwkkj4W97XbE3IsCsTRFpa7/yXGZ88EOQAUEA09JMMsWK0xsw0kRAYw==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "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==", - "dev": true - }, "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==", "dev": true }, - "node-releases": { - "version": "1.1.73", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz", - "integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==", - "dev": true - }, "normalize-url": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", @@ -44809,274 +15174,257 @@ "dev": true }, "nth-check": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz", - "integrity": "sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", "dev": true, "requires": { "boolbase": "^1.0.0" } }, "postcss-calc": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.0.0.tgz", - "integrity": "sha512-5NglwDrcbiy8XXfPM11F3HeC6hoT9W7GUH/Zi5U/p7u3Irv4rHhdDcIZwG0llHXV4ftsBjpfWMXAnXNl4lnt8g==", + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", + "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", "dev": true, "requires": { - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.2" + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0" } }, "postcss-colormin": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.2.0.tgz", - "integrity": "sha512-+HC6GfWU3upe5/mqmxuqYZ9B2Wl4lcoUUNkoaX59nEWV4EtADCMiBqui111Bu8R8IvaZTmqmxrqOAqjbHIwXPw==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz", + "integrity": "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==", "dev": true, "requires": { "browserslist": "^4.16.6", "caniuse-api": "^3.0.0", - "colord": "^2.0.1", - "postcss-value-parser": "^4.1.0" + "colord": "^2.9.1", + "postcss-value-parser": "^4.2.0" } }, "postcss-convert-values": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.0.1.tgz", - "integrity": "sha512-C3zR1Do2BkKkCgC0g3sF8TS0koF2G+mN8xxayZx3f10cIRmTaAnpgpRQZjNekTZxM2ciSPoh2IWJm0VZx8NoQg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.0.tgz", + "integrity": "sha512-GkyPbZEYJiWtQB0KZ0X6qusqFHUepguBCNFi9t5JJc7I2OTXG7C0twbTLvCfaKOLl3rSXmpAwV7W5txd91V84g==", "dev": true, "requires": { - "postcss-value-parser": "^4.1.0" + "postcss-value-parser": "^4.2.0" } }, "postcss-discard-comments": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.0.1.tgz", - "integrity": "sha512-lgZBPTDvWrbAYY1v5GYEv8fEO/WhKOu/hmZqmCYfrpD6eyDWWzAOsl2rF29lpvziKO02Gc5GJQtlpkTmakwOWg==", - "dev": true, - "requires": {} + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.1.tgz", + "integrity": "sha512-5JscyFmvkUxz/5/+TB3QTTT9Gi9jHkcn8dcmmuN68JQcv3aQg4y88yEHHhwFB52l/NkaJ43O0dbksGMAo49nfQ==", + "dev": true }, "postcss-discard-duplicates": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.1.tgz", - "integrity": "sha512-svx747PWHKOGpAXXQkCc4k/DsWo+6bc5LsVrAsw+OU+Ibi7klFZCyX54gjYzX4TH+f2uzXjRviLARxkMurA2bA==", - "dev": true, - "requires": {} + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", + "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", + "dev": true }, "postcss-discard-empty": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.0.1.tgz", - "integrity": "sha512-vfU8CxAQ6YpMxV2SvMcMIyF2LX1ZzWpy0lqHDsOdaKKLQVQGVP1pzhrI9JlsO65s66uQTfkQBKBD/A5gp9STFw==", - "dev": true, - "requires": {} + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", + "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", + "dev": true }, "postcss-discard-overridden": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.0.1.tgz", - "integrity": "sha512-Y28H7y93L2BpJhrdUR2SR2fnSsT+3TVx1NmVQLbcnZWwIUpJ7mfcTC6Za9M2PG6w8j7UQRfzxqn8jU2VwFxo3Q==", - "dev": true, - "requires": {} + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", + "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", + "dev": true }, "postcss-merge-longhand": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.0.2.tgz", - "integrity": "sha512-BMlg9AXSI5G9TBT0Lo/H3PfUy63P84rVz3BjCFE9e9Y9RXQZD3+h3YO1kgTNsNJy7bBc1YQp8DmSnwLIW5VPcw==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.3.tgz", + "integrity": "sha512-lX8GPGvZ0iGP/IboM7HXH5JwkXvXod1Rr8H8ixwiA372hArk0zP4ZcCy4z4Prg/bfNlbbTf0KCOjCF9kKnpP/w==", "dev": true, "requires": { - "css-color-names": "^1.0.1", - "postcss-value-parser": "^4.1.0", - "stylehacks": "^5.0.1" + "postcss-value-parser": "^4.2.0", + "stylehacks": "^5.1.0" } }, "postcss-merge-rules": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.0.2.tgz", - "integrity": "sha512-5K+Md7S3GwBewfB4rjDeol6V/RZ8S+v4B66Zk2gChRqLTCC8yjnHQ601omj9TKftS19OPGqZ/XzoqpzNQQLwbg==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.1.tgz", + "integrity": "sha512-8wv8q2cXjEuCcgpIB1Xx1pIy8/rhMPIQqYKNzEdyx37m6gpq83mQQdCxgIkFgliyEnKvdwJf/C61vN4tQDq4Ww==", "dev": true, "requires": { "browserslist": "^4.16.6", "caniuse-api": "^3.0.0", - "cssnano-utils": "^2.0.1", - "postcss-selector-parser": "^6.0.5", - "vendors": "^1.0.3" + "cssnano-utils": "^3.1.0", + "postcss-selector-parser": "^6.0.5" } }, "postcss-minify-font-values": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.0.1.tgz", - "integrity": "sha512-7JS4qIsnqaxk+FXY1E8dHBDmraYFWmuL6cgt0T1SWGRO5bzJf8sUoelwa4P88LEWJZweHevAiDKxHlofuvtIoA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", + "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", "dev": true, "requires": { - "postcss-value-parser": "^4.1.0" + "postcss-value-parser": "^4.2.0" } }, "postcss-minify-gradients": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.0.1.tgz", - "integrity": "sha512-odOwBFAIn2wIv+XYRpoN2hUV3pPQlgbJ10XeXPq8UY2N+9ZG42xu45lTn/g9zZ+d70NKSQD6EOi6UiCMu3FN7g==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", + "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", "dev": true, "requires": { - "cssnano-utils": "^2.0.1", - "is-color-stop": "^1.1.0", - "postcss-value-parser": "^4.1.0" + "colord": "^2.9.1", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" } }, "postcss-minify-params": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.0.1.tgz", - "integrity": "sha512-4RUC4k2A/Q9mGco1Z8ODc7h+A0z7L7X2ypO1B6V8057eVK6mZ6xwz6QN64nHuHLbqbclkX1wyzRnIrdZehTEHw==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.2.tgz", + "integrity": "sha512-aEP+p71S/urY48HWaRHasyx4WHQJyOYaKpQ6eXl8k0kxg66Wt/30VR6/woh8THgcpRbonJD5IeD+CzNhPi1L8g==", "dev": true, "requires": { - "alphanum-sort": "^1.0.2", - "browserslist": "^4.16.0", - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0", - "uniqs": "^2.0.0" + "browserslist": "^4.16.6", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" } }, "postcss-minify-selectors": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.1.0.tgz", - "integrity": "sha512-NzGBXDa7aPsAcijXZeagnJBKBPMYLaJJzB8CQh6ncvyl2sIndLVWfbcDi0SBjRWk5VqEjXvf8tYwzoKf4Z07og==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.0.tgz", + "integrity": "sha512-vYxvHkW+iULstA+ctVNx0VoRAR4THQQRkG77o0oa4/mBS0OzGvvzLIvHDv/nNEM0crzN2WIyFU5X7wZhaUK3RA==", "dev": true, "requires": { - "alphanum-sort": "^1.0.2", "postcss-selector-parser": "^6.0.5" } }, "postcss-normalize-charset": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.0.1.tgz", - "integrity": "sha512-6J40l6LNYnBdPSk+BHZ8SF+HAkS4q2twe5jnocgd+xWpz/mx/5Sa32m3W1AA8uE8XaXN+eg8trIlfu8V9x61eg==", - "dev": true, - "requires": {} + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", + "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", + "dev": true }, "postcss-normalize-display-values": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.0.1.tgz", - "integrity": "sha512-uupdvWk88kLDXi5HEyI9IaAJTE3/Djbcrqq8YgjvAVuzgVuqIk3SuJWUisT2gaJbZm1H9g5k2w1xXilM3x8DjQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", + "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", "dev": true, "requires": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" + "postcss-value-parser": "^4.2.0" } }, "postcss-normalize-positions": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.0.1.tgz", - "integrity": "sha512-rvzWAJai5xej9yWqlCb1OWLd9JjW2Ex2BCPzUJrbaXmtKtgfL8dBMOOMTX6TnvQMtjk3ei1Lswcs78qKO1Skrg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.0.tgz", + "integrity": "sha512-8gmItgA4H5xiUxgN/3TVvXRoJxkAWLW6f/KKhdsH03atg0cB8ilXnrB5PpSshwVu/dD2ZsRFQcR1OEmSBDAgcQ==", "dev": true, "requires": { - "postcss-value-parser": "^4.1.0" + "postcss-value-parser": "^4.2.0" } }, "postcss-normalize-repeat-style": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.0.1.tgz", - "integrity": "sha512-syZ2itq0HTQjj4QtXZOeefomckiV5TaUO6ReIEabCh3wgDs4Mr01pkif0MeVwKyU/LHEkPJnpwFKRxqWA/7O3w==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.0.tgz", + "integrity": "sha512-IR3uBjc+7mcWGL6CtniKNQ4Rr5fTxwkaDHwMBDGGs1x9IVRkYIT/M4NelZWkAOBdV6v3Z9S46zqaKGlyzHSchw==", "dev": true, "requires": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" + "postcss-value-parser": "^4.2.0" } }, "postcss-normalize-string": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.0.1.tgz", - "integrity": "sha512-Ic8GaQ3jPMVl1OEn2U//2pm93AXUcF3wz+OriskdZ1AOuYV25OdgS7w9Xu2LO5cGyhHCgn8dMXh9bO7vi3i9pA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", + "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", "dev": true, "requires": { - "postcss-value-parser": "^4.1.0" + "postcss-value-parser": "^4.2.0" } }, "postcss-normalize-timing-functions": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.0.1.tgz", - "integrity": "sha512-cPcBdVN5OsWCNEo5hiXfLUnXfTGtSFiBU9SK8k7ii8UD7OLuznzgNRYkLZow11BkQiiqMcgPyh4ZqXEEUrtQ1Q==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", + "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", "dev": true, "requires": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" + "postcss-value-parser": "^4.2.0" } }, "postcss-normalize-unicode": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.0.1.tgz", - "integrity": "sha512-kAtYD6V3pK0beqrU90gpCQB7g6AOfP/2KIPCVBKJM2EheVsBQmx/Iof+9zR9NFKLAx4Pr9mDhogB27pmn354nA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz", + "integrity": "sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ==", "dev": true, "requires": { - "browserslist": "^4.16.0", - "postcss-value-parser": "^4.1.0" + "browserslist": "^4.16.6", + "postcss-value-parser": "^4.2.0" } }, "postcss-normalize-url": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.0.2.tgz", - "integrity": "sha512-k4jLTPUxREQ5bpajFQZpx8bCF2UrlqOTzP9kEqcEnOfwsRshWs2+oAFIHfDQB8GO2PaUaSE0NlTAYtbluZTlHQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", + "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", "dev": true, "requires": { - "is-absolute-url": "^3.0.3", "normalize-url": "^6.0.1", - "postcss-value-parser": "^4.1.0" + "postcss-value-parser": "^4.2.0" } }, "postcss-normalize-whitespace": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.0.1.tgz", - "integrity": "sha512-iPklmI5SBnRvwceb/XH568yyzK0qRVuAG+a1HFUsFRf11lEJTiQQa03a4RSCQvLKdcpX7XsI1Gen9LuLoqwiqA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", + "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", "dev": true, "requires": { - "postcss-value-parser": "^4.1.0" + "postcss-value-parser": "^4.2.0" } }, "postcss-ordered-values": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.0.2.tgz", - "integrity": "sha512-8AFYDSOYWebJYLyJi3fyjl6CqMEG/UVworjiyK1r573I56kb3e879sCJLGvR3merj+fAdPpVplXKQZv+ey6CgQ==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.1.tgz", + "integrity": "sha512-7lxgXF0NaoMIgyihL/2boNAEZKiW0+HkMhdKMTD93CjW8TdCy2hSdj8lsAo+uwm7EDG16Da2Jdmtqpedl0cMfw==", "dev": true, "requires": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" } }, "postcss-reduce-initial": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.0.1.tgz", - "integrity": "sha512-zlCZPKLLTMAqA3ZWH57HlbCjkD55LX9dsRyxlls+wfuRfqCi5mSlZVan0heX5cHr154Dq9AfbH70LyhrSAezJw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz", + "integrity": "sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw==", "dev": true, "requires": { - "browserslist": "^4.16.0", + "browserslist": "^4.16.6", "caniuse-api": "^3.0.0" } }, "postcss-reduce-transforms": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.0.1.tgz", - "integrity": "sha512-a//FjoPeFkRuAguPscTVmRQUODP+f3ke2HqFNgGPwdYnpeC29RZdCBvGRGTsKpMURb/I3p6jdKoBQ2zI+9Q7kA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", + "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", "dev": true, "requires": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" + "postcss-value-parser": "^4.2.0" } }, "postcss-svgo": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.0.2.tgz", - "integrity": "sha512-YzQuFLZu3U3aheizD+B1joQ94vzPfE6BNUcSYuceNxlVnKKsOtdo6hL9/zyC168Q8EwfLSgaDSalsUGa9f2C0A==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", + "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", "dev": true, "requires": { - "postcss-value-parser": "^4.1.0", - "svgo": "^2.3.0" + "postcss-value-parser": "^4.2.0", + "svgo": "^2.7.0" } }, "postcss-unique-selectors": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.0.1.tgz", - "integrity": "sha512-gwi1NhHV4FMmPn+qwBNuot1sG1t2OmacLQ/AX29lzyggnjd+MnVD5uqQmpXO3J17KGL2WAxQruj1qTd3H0gG/w==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", + "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", "dev": true, "requires": { - "alphanum-sort": "^1.0.2", - "postcss-selector-parser": "^6.0.5", - "uniqs": "^2.0.0" + "postcss-selector-parser": "^6.0.5" } }, "source-map": { @@ -45086,36 +15434,27 @@ "dev": true }, "stylehacks": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.0.1.tgz", - "integrity": "sha512-Es0rVnHIqbWzveU1b24kbw92HsebBepxfcqe5iix7t9j0PQqhs0IxXVXv0pY2Bxa08CgMkzD6OWql7kbGOuEdA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz", + "integrity": "sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q==", "dev": true, "requires": { - "browserslist": "^4.16.0", + "browserslist": "^4.16.6", "postcss-selector-parser": "^6.0.4" } }, - "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" - } - }, "svgo": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.3.1.tgz", - "integrity": "sha512-riDDIQgXpEnn0BEl9Gvhh1LNLIyiusSpt64IR8upJu7MwxnzetmF/Y57pXQD2NMX2lVyMRzXt5f2M5rO4wG7Dw==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", "dev": true, "requires": { - "@trysound/sax": "0.1.1", - "chalk": "^4.1.0", - "commander": "^7.1.0", + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", "css-select": "^4.1.3", - "css-tree": "^1.1.2", + "css-tree": "^1.1.3", "csso": "^4.2.0", + "picocolors": "^1.0.0", "stable": "^0.1.8" } } @@ -45153,9 +15492,9 @@ }, "dependencies": { "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, "ansi-styles": { @@ -45168,9 +15507,9 @@ } }, "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -45201,27 +15540,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, "restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", @@ -45233,21 +15551,12 @@ } }, "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.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==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "requires": { - "has-flag": "^4.0.0" + "ansi-regex": "^5.0.1" } } } @@ -45274,14 +15583,98 @@ "dev": true }, "os-locale": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", "dev": true, "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "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" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "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=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "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=", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } } }, "os-tmpdir": { @@ -45314,6 +15707,12 @@ "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", "dev": true }, + "p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "dev": true + }, "p-limit": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", @@ -45348,13 +15747,10 @@ } }, "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true }, "p-retry": { "version": "3.0.1", @@ -45425,7 +15821,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, "requires": { "callsites": "^3.0.0" }, @@ -45433,8 +15828,7 @@ "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" } } }, @@ -45464,12 +15858,15 @@ } }, "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, "requires": { - "error-ex": "^1.2.0" + "@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": { @@ -45530,16 +15927,15 @@ "dev": true }, "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true }, "path-parse": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", - "dev": true + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" }, "path-to-regexp": { "version": "0.1.7", @@ -45548,23 +15944,10 @@ "dev": true }, "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "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=", - "dev": true - } - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true }, "pbkdf2": { "version": "3.1.2", @@ -45597,16 +15980,22 @@ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", "dev": true }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, "picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true }, "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true }, "pinkie": { @@ -45652,6 +16041,15 @@ "p-locate": "^4.1.0" } }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, "p-locate": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", @@ -45659,17 +16057,6 @@ "dev": true, "requires": { "p-limit": "^2.2.0" - }, - "dependencies": { - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - } } }, "path-exists": { @@ -45698,18 +16085,18 @@ "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==" }, "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==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.7.0.tgz", + "integrity": "sha512-2Rb3vm+EXble/sMXNSu6eoBx8e79gKqhNq9F5ZWW6ERNCTE/Q0wQNne5541tE5vKjfM8hpNCYL+LGc1YTfI0dg==", "dev": true, "requires": { "ts-pnp": "^1.1.6" } }, "popper.js": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.0.tgz", - "integrity": "sha512-+G+EkOPoE5S/zChTpmBSSDYmhXJ5PsW8eMhH8cP/CQHMFPBG/kC9Y5IIw6qNYgdJ+/COf0ddY2li28iHaZRSjw==" + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", + "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==" }, "portfinder": { "version": "1.0.28", @@ -45722,6 +16109,15 @@ "mkdirp": "^0.5.5" }, "dependencies": { + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, "debug": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", @@ -45731,21 +16127,6 @@ "ms": "^2.1.1" } }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, "ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -45761,14 +16142,14 @@ "dev": true }, "postcss": { - "version": "8.3.5", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.5.tgz", - "integrity": "sha512-NxTuJocUhYGsMiMFHDUkmjSKT3EdH4/WbGF6GCi1NDGk+vbcUTun4fpbOqaPtD8IIsztA2ilZm2DhYCuyN58gA==", + "version": "8.4.12", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.12.tgz", + "integrity": "sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==", "dev": true, "requires": { - "colorette": "^1.2.2", - "nanoid": "^3.1.23", - "source-map-js": "^0.6.2" + "nanoid": "^3.3.1", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" } }, "postcss-calc": { @@ -45782,15 +16163,20 @@ "postcss-value-parser": "^4.0.2" }, "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "source-map": { @@ -45798,15 +16184,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "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==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -45823,15 +16200,20 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "postcss-value-parser": { @@ -45845,15 +16227,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "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==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -45867,15 +16240,20 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "postcss-value-parser": { @@ -45889,15 +16267,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "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==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -45910,31 +16279,27 @@ "postcss": "^7.0.0" }, "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "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==", - "dev": true - }, - "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==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true } } }, @@ -45947,15 +16312,20 @@ "postcss": "^7.0.0" }, "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "source-map": { @@ -45963,15 +16333,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "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==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -45984,15 +16345,20 @@ "postcss": "^7.0.0" }, "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "source-map": { @@ -46000,15 +16366,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "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==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -46021,15 +16378,20 @@ "postcss": "^7.0.0" }, "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "source-map": { @@ -46037,35 +16399,17 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "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==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, "postcss-load-config": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.0.tgz", - "integrity": "sha512-ipM8Ds01ZUophjDTQYSVP70slFSYg3T0/zyfII5vzhN6V57YSxMgG5syXuwi5VtS8wSf3iL30v0uBdoIVx4Q0g==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.3.tgz", + "integrity": "sha512-5EYgaM9auHGtO//ljHH+v/aC/TQ5LHXtL7bQajNAUBKUVKiYE8rYpFms7+V26D9FncaGe2zwCoPQsFKb5zF/Hw==", "dev": true, "requires": { - "import-cwd": "^3.0.0", - "lilconfig": "^2.0.3", + "lilconfig": "^2.0.4", "yaml": "^1.10.2" - }, - "dependencies": { - "yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true - } } }, "postcss-loader": { @@ -46097,8 +16441,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} + "dev": true }, "fast-deep-equal": { "version": "3.1.3", @@ -46122,12 +16465,12 @@ } }, "schema-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", - "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", "dev": true, "requires": { - "@types/json-schema": "^7.0.7", + "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", "ajv-keywords": "^3.5.2" } @@ -46161,15 +16504,20 @@ "stylehacks": "^4.0.0" }, "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "postcss-value-parser": { @@ -46183,15 +16531,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "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==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -46209,15 +16548,20 @@ "vendors": "^1.0.0" }, "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "postcss-selector-parser": { @@ -46236,15 +16580,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "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==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -46258,15 +16593,20 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "postcss-value-parser": { @@ -46280,15 +16620,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "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==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -46304,15 +16635,20 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "postcss-value-parser": { @@ -46326,15 +16662,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "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==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -46352,15 +16679,20 @@ "uniqs": "^2.0.0" }, "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "postcss-value-parser": { @@ -46374,15 +16706,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "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==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -46398,15 +16721,20 @@ "postcss-selector-parser": "^3.0.0" }, "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "postcss-selector-parser": { @@ -46425,15 +16753,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "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==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -46441,8 +16760,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", - "dev": true, - "requires": {} + "dev": true }, "postcss-modules-local-by-default": { "version": "4.0.0", @@ -46482,15 +16800,20 @@ "postcss": "^7.0.0" }, "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "source-map": { @@ -46498,15 +16821,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "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==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -46521,15 +16835,20 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "postcss-value-parser": { @@ -46543,15 +16862,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "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==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -46567,15 +16877,20 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "postcss-value-parser": { @@ -46589,15 +16904,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "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==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -46613,15 +16919,20 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "postcss-value-parser": { @@ -46635,15 +16946,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "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==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -46658,15 +16960,20 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "postcss-value-parser": { @@ -46680,15 +16987,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "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==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -46703,15 +17001,20 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "postcss-value-parser": { @@ -46725,15 +17028,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "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==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -46748,15 +17042,20 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "postcss-value-parser": { @@ -46770,15 +17069,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "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==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -46794,15 +17084,20 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "postcss-value-parser": { @@ -46812,19 +17107,10 @@ "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==", - "dev": true - }, - "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==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true } } }, @@ -46838,15 +17124,20 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "postcss-value-parser": { @@ -46860,15 +17151,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "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==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -46883,15 +17165,20 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "postcss-value-parser": { @@ -46905,15 +17192,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "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==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -46929,15 +17207,20 @@ "postcss": "^7.0.0" }, "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "source-map": { @@ -46945,15 +17228,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "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==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -46969,15 +17243,20 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "postcss-value-parser": { @@ -46991,22 +17270,13 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "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==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, "postcss-selector-parser": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz", - "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==", + "version": "6.0.9", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz", + "integrity": "sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ==", "dev": true, "requires": { "cssesc": "^3.0.0", @@ -47024,15 +17294,20 @@ "svgo": "^1.0.0" }, "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "postcss-value-parser": { @@ -47046,15 +17321,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "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==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -47069,15 +17335,20 @@ "uniqs": "^2.0.0" }, "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "source-map": { @@ -47085,22 +17356,13 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "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==", - "dev": true, - "requires": { - "has-flag": "^3.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==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", "dev": true }, "preact": { @@ -47195,9 +17457,9 @@ }, "dependencies": { "@babel/runtime": { - "version": "7.14.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.6.tgz", - "integrity": "sha512-/PCB2uJ7oM44tz8YhC4Z/6PeOKXp4K588f+5M3clr1M4zbqztlo0XEfJ2LEzj/FgwfgGcIdl8n7YYjTCI0BYwg==", + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.8.tgz", + "integrity": "sha512-dQpEpK0O9o6lj6oPu0gRDbbnk+4LeHlNcBpspf6Olzt3GIX4P1lWF1gS+pHLDFlaJvbR6q7jCfQ08zA4QJBnmA==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" @@ -47214,60 +17476,21 @@ "resolve": "^1.19.0" } }, - "browserslist": { - "version": "4.16.6", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", - "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001219", - "colorette": "^1.2.2", - "electron-to-chromium": "^1.3.723", - "escalade": "^3.1.1", - "node-releases": "^1.1.71" - } - }, - "caniuse-lite": { - "version": "1.0.30001245", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001245.tgz", - "integrity": "sha512-768fM9j1PKXpOCKws6eTo3RHmvTUsG9UrpT4WoREFeZgJBTi4/X9g565azS/rVUGtqb8nt7FjLeF5u4kukERnA==", - "dev": true - }, - "electron-to-chromium": { - "version": "1.3.776", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.776.tgz", - "integrity": "sha512-V0w7eFSBoFPpdw4xexjVPZ770UDZIevSwkkj4W97XbE3IsCsTRFpa7/yXGZ88EOQAUEA09JMMsWK0xsw0kRAYw==", - "dev": true - }, - "node-releases": { - "version": "1.1.73", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz", - "integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==", - "dev": true - }, - "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==", + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, - "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - } - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", "dev": true, "requires": { - "glob": "^7.1.3" + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" } }, "source-map": { @@ -47275,15 +17498,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } } } }, @@ -47307,8 +17521,7 @@ "preact-markup": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/preact-markup/-/preact-markup-2.1.1.tgz", - "integrity": "sha512-8JL2p36mzK8XkspOyhBxUSPjYwMxDM0L5BWBZWxsZMVW8WsGQrYQDgVuDKkRspt2hwrle+Cxr/053hpc9BJwfw==", - "requires": {} + "integrity": "sha512-8JL2p36mzK8XkspOyhBxUSPjYwMxDM0L5BWBZWxsZMVW8WsGQrYQDgVuDKkRspt2hwrle+Cxr/053hpc9BJwfw==" }, "preact-render-spy": { "version": "1.3.0", @@ -47341,8 +17554,7 @@ "preact-router": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/preact-router/-/preact-router-3.2.1.tgz", - "integrity": "sha512-KEN2VN1DxUlTwzW5IFkF13YIA2OdQ2OvgJTkQREF+AA2NrHRLaGbB68EjS4IeZOa1shvQ1FvEm3bSLta4sXBhg==", - "requires": {} + "integrity": "sha512-KEN2VN1DxUlTwzW5IFkF13YIA2OdQ2OvgJTkQREF+AA2NrHRLaGbB68EjS4IeZOa1shvQ1FvEm3bSLta4sXBhg==" }, "prelude-ls": { "version": "1.1.2", @@ -47369,9 +17581,9 @@ "dev": true }, "pretty-bytes": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-4.0.2.tgz", - "integrity": "sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", "dev": true }, "pretty-error": { @@ -47477,21 +17689,6 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } } } }, @@ -47502,15 +17699,15 @@ "dev": true }, "promise-polyfill": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.2.0.tgz", - "integrity": "sha512-k/TC0mIcPVF6yHhUvwAp7cvL6I2fFV7TzF1DuGPI8mBh4QQazf36xCKEHKTZKRysEoTQoQdKyP25J8MPJp7j5g==", + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.2.3.tgz", + "integrity": "sha512-Og0+jCRQetV84U8wVjMNccfGCnMQ9mGs9Hv78QFe+pSDD3gWTpz0y+1QCuxy5d/vBFuZ3iwP2eycAkvqIMPmWg==", "dev": true }, "prompts": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.1.tgz", - "integrity": "sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", "dev": true, "requires": { "kleur": "^3.0.3", @@ -47558,9 +17755,9 @@ "dev": true }, "psl": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.4.0.tgz", - "integrity": "sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", "dev": true }, "public-encrypt": { @@ -47654,9 +17851,9 @@ } }, "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", "dev": true }, "query-string": { @@ -47695,9 +17892,9 @@ "dev": true }, "ramda": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.25.0.tgz", - "integrity": "sha512-GXpfrYVPwx3K7RQ6aYT8KPS8XViSXUVJT1ONhoKPE9VAleW42YE+U+8VEyGWt41EnEQW7gwecYJriTI0pKoecQ==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.2.tgz", + "integrity": "sha512-SbiLPU40JuJniHexQSAgad32hfwd+DRUdwF2PlVuI5RZD0/vahUco7R8vD86J/tcEKKF9vZrUVwgtmGCqlCKyA==", "dev": true }, "randomatic": { @@ -47716,12 +17913,6 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true } } }, @@ -47751,21 +17942,21 @@ "dev": true }, "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==", + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz", + "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==", "dev": true, "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.2", + "bytes": "3.1.2", + "http-errors": "1.8.1", "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==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true } } @@ -47796,8 +17987,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} + "dev": true }, "fast-deep-equal": { "version": "3.1.3", @@ -47812,12 +18002,12 @@ "dev": true }, "schema-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", - "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", "dev": true, "requires": { - "@types/json-schema": "^7.0.7", + "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", "ajv-keywords": "^3.5.2" } @@ -47834,20 +18024,6 @@ "ini": "~1.3.0", "minimist": "^1.2.0", "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - } } }, "react-big-calendar": { @@ -47890,9 +18066,9 @@ } }, "react-is": { - "version": "16.11.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.11.0.tgz", - "integrity": "sha512-gbBVYR2p8mnriqAwWx9LbuUrShnAuSCNnuPGyc7GJrMVQtPDAh8iLpv7FRuMPFb56KkaVZIYSz1PrjI9q0QPCw==" + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, "react-lifecycles-compat": { "version": "3.0.4", @@ -47900,15 +18076,14 @@ "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" }, "react-onclickoutside": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/react-onclickoutside/-/react-onclickoutside-6.10.0.tgz", - "integrity": "sha512-7i2L3ef+0ILXpL6P+Hg304eCQswh4jl3ynwR71BSlMU49PE2uk31k8B2GkP6yE9s2D4jTGKnzuSpzWxu4YxfQQ==", - "requires": {} + "version": "6.12.1", + "resolved": "https://registry.npmjs.org/react-onclickoutside/-/react-onclickoutside-6.12.1.tgz", + "integrity": "sha512-a5Q7CkWznBRUWPmocCvE8b6lEYw1s6+opp/60dCunhO+G6E4tDTO2Sd2jKE+leEnnrLAE2Wj5DlDHNqj5wPv1Q==" }, "react-overlays": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/react-overlays/-/react-overlays-2.1.0.tgz", - "integrity": "sha512-tHPGTZosbQSo82yb9x4YCsmJJtspKvAPL5kXVnyoB2Z5UoAU3VetIuh2VblfVT408us5nLJd9uDtwI3xWDHS6w==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/react-overlays/-/react-overlays-2.1.1.tgz", + "integrity": "sha512-gaQJwmb8Ij2IGVt4D1HmLtl4A0mDVYxlsv/8i0dHWK7Mw0kNat6ORelbbEWzaXTK1TqMeQtJw/jraL3WOADz3w==", "requires": { "@babel/runtime": "^7.4.5", "@restart/hooks": "^0.3.12", @@ -47954,9 +18129,9 @@ }, "dependencies": { "@babel/runtime": { - "version": "7.14.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.6.tgz", - "integrity": "sha512-/PCB2uJ7oM44tz8YhC4Z/6PeOKXp4K588f+5M3clr1M4zbqztlo0XEfJ2LEzj/FgwfgGcIdl8n7YYjTCI0BYwg==", + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.8.tgz", + "integrity": "sha512-dQpEpK0O9o6lj6oPu0gRDbbnk+4LeHlNcBpspf6Olzt3GIX4P1lWF1gS+pHLDFlaJvbR6q7jCfQ08zA4QJBnmA==", "requires": { "regenerator-runtime": "^0.13.4" } @@ -47965,11 +18140,6 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==" - }, - "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==" } } }, @@ -47993,6 +18163,19 @@ "load-json-file": "^1.0.0", "normalize-package-data": "^2.3.2", "path-type": "^1.0.0" + }, + "dependencies": { + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + } } }, "read-pkg-up": { @@ -48027,9 +18210,9 @@ } }, "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "requires": { "core-util-is": "~1.0.0", @@ -48066,18 +18249,18 @@ "dev": true }, "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==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", + "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", "dev": true, "requires": { - "regenerate": "^1.4.0" + "regenerate": "^1.4.2" } }, "regenerator-runtime": { - "version": "0.13.3", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", - "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==" + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" }, "regenerator-transform": { "version": "0.14.5", @@ -48089,19 +18272,13 @@ }, "dependencies": { "@babel/runtime": { - "version": "7.14.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.6.tgz", - "integrity": "sha512-/PCB2uJ7oM44tz8YhC4Z/6PeOKXp4K588f+5M3clr1M4zbqztlo0XEfJ2LEzj/FgwfgGcIdl8n7YYjTCI0BYwg==", + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.8.tgz", + "integrity": "sha512-dQpEpK0O9o6lj6oPu0gRDbbnk+4LeHlNcBpspf6Olzt3GIX4P1lWF1gS+pHLDFlaJvbR6q7jCfQ08zA4QJBnmA==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" } - }, - "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==", - "dev": true } } }, @@ -48125,11 +18302,12 @@ } }, "regexp.prototype.flags": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.2.0.tgz", - "integrity": "sha512-ztaw4M1VqgMwl9HlPpOuiYgItcHlunW0He2fE6eNfT6E/CF2FtYi9ofOYe4mKntstYk0Fyh/rDRBdS3AnxjlrA==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz", + "integrity": "sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ==", "requires": { - "define-properties": "^1.1.2" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, "regexpp": { @@ -48139,17 +18317,17 @@ "dev": true }, "regexpu-core": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", - "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz", + "integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==", "dev": true, "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" + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.0.1", + "regjsgen": "^0.6.0", + "regjsparser": "^0.8.2", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" } }, "registry-auth-token": { @@ -48171,15 +18349,15 @@ } }, "regjsgen": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", - "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", + "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", "dev": true }, "regjsparser": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz", - "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", + "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", "dev": true, "requires": { "jsesc": "~0.5.0" @@ -48225,22 +18403,22 @@ "dev": true }, "css-select": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", - "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.2.1.tgz", + "integrity": "sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ==", "dev": true, "requires": { "boolbase": "^1.0.0", - "css-what": "^5.0.0", - "domhandler": "^4.2.0", - "domutils": "^2.6.0", - "nth-check": "^2.0.0" + "css-what": "^5.1.0", + "domhandler": "^4.3.0", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" } }, "css-what": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.0.1.tgz", - "integrity": "sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", + "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", "dev": true }, "dom-serializer": { @@ -48261,9 +18439,9 @@ "dev": true }, "domutils": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.7.0.tgz", - "integrity": "sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", "dev": true, "requires": { "dom-serializer": "^1.0.1", @@ -48278,9 +18456,9 @@ "dev": true }, "nth-check": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz", - "integrity": "sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", "dev": true, "requires": { "boolbase": "^1.0.0" @@ -48298,9 +18476,9 @@ } }, "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", "dev": true }, "repeat-string": { @@ -48319,9 +18497,9 @@ } }, "request": { - "version": "2.88.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", "dev": true, "requires": { "aws-sign2": "~0.7.0", @@ -48331,7 +18509,7 @@ "extend": "~3.0.2", "forever-agent": "~0.6.1", "form-data": "~2.3.2", - "har-validator": "~5.1.0", + "har-validator": "~5.1.3", "http-signature": "~1.2.0", "is-typedarray": "~1.0.0", "isstream": "~0.1.2", @@ -48341,25 +18519,32 @@ "performance-now": "^2.1.0", "qs": "~6.5.2", "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", + "tough-cookie": "~2.5.0", "tunnel-agent": "^0.6.0", "uuid": "^3.3.2" }, "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } }, - "tough-cookie": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", "dev": true, "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" } } } @@ -48406,6 +18591,12 @@ "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==", + "dev": true + }, "require-main-filename": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", @@ -48431,7 +18622,6 @@ "version": "1.12.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", - "dev": true, "requires": { "path-parse": "^1.0.6" } @@ -48475,13 +18665,21 @@ } }, "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", "dev": true, "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" + }, + "dependencies": { + "onetime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "dev": true + } } }, "ret": { @@ -48515,9 +18713,9 @@ "dev": true }, "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "requires": { "glob": "^7.1.3" @@ -48534,12 +18732,21 @@ } }, "rollup": { - "version": "2.53.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.53.2.tgz", - "integrity": "sha512-1CtEYuS5CRCzFZ7SNW5528SlDlk4VDXIRGwbm/2POQxA/G4+7/crIqJwkmnj8Q/74hGx4oVlNvh4E1CJQ5hZ6w==", + "version": "2.70.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.70.1.tgz", + "integrity": "sha512-CRYsI5EuzLbXdxC6RnYhOuRdtz4bhejPMSWjsFLfVM/7w/85n2szZv6yExqUXsBdz5KT8eoubeyDUDjhLHEslA==", "dev": true, "requires": { "fsevents": "~2.3.2" + }, + "dependencies": { + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + } } }, "rollup-plugin-terser": { @@ -48554,26 +18761,6 @@ "terser": "^5.0.0" }, "dependencies": { - "@babel/code-frame": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", - "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.14.5" - } - }, - "@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.14.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, "serialize-javascript": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", @@ -48592,13 +18779,10 @@ "dev": true }, "run-async": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", - "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", - "dev": true, - "requires": { - "is-promise": "^2.1.0" - } + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true }, "run-parallel": { "version": "1.2.0", @@ -48643,9 +18827,9 @@ } }, "sade": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/sade/-/sade-1.7.4.tgz", - "integrity": "sha512-y5yauMD93rX840MwUJr7C1ysLFBgMspsdTo4UVrDg3fXDvtwOyIqykhVAAm6fk/3au77773itJStObgK+LKaiA==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", "dev": true, "requires": { "mri": "^1.1.0" @@ -48654,8 +18838,7 @@ "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==", - "devOptional": true + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "safe-regex": { "version": "1.1.0", @@ -48899,12 +19082,6 @@ "kind-of": "^6.0.0" } }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, "is-data-descriptor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", @@ -48942,14 +19119,8 @@ "requires": { "is-buffer": "^1.1.5" } - } - } - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true + } + } }, "micromatch": { "version": "3.1.10", @@ -48971,12 +19142,6 @@ "snapdragon": "^0.8.1", "to-regex": "^3.0.2" } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true } } }, @@ -49022,8 +19187,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} + "dev": true }, "fast-deep-equal": { "version": "3.1.3", @@ -49060,9 +19224,9 @@ "dev": true }, "selfsigned": { - "version": "1.10.11", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.11.tgz", - "integrity": "sha512-aVmbPOfViZqOZPgRBT0+3u4yZFHpmnIghLMlAcb5/xhp5ZtB/RVnKhz5vl2M32CLXAqR4kha9zfhNg0Lf/sxKA==", + "version": "1.10.14", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.14.tgz", + "integrity": "sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA==", "dev": true, "requires": { "node-forge": "^0.10.0" @@ -49098,9 +19262,9 @@ } }, "send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "version": "0.17.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", + "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", "dev": true, "requires": { "debug": "2.6.9", @@ -49110,9 +19274,9 @@ "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", - "http-errors": "~1.7.2", + "http-errors": "1.8.1", "mime": "1.6.0", - "ms": "2.1.1", + "ms": "2.1.3", "on-finished": "~2.3.0", "range-parser": "~1.2.1", "statuses": "~1.5.0" @@ -49135,16 +19299,10 @@ } } }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true - }, "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==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true } } @@ -49159,11 +19317,10 @@ } }, "serialize-query-params": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/serialize-query-params/-/serialize-query-params-1.3.5.tgz", - "integrity": "sha512-BrLH1RqgzVxm6dco+KP9S6BodeFiUVvKwtY3GSWQlupIdblT19KCGTRkHZ2yIU6Bjy0Prjts0tYe11VpTMbAeQ==", - "dev": true, - "requires": {} + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/serialize-query-params/-/serialize-query-params-1.3.6.tgz", + "integrity": "sha512-VlH7sfWNyPVZClPkRacopn6sn5uQMXBsjPVz1+pBHX895VpcYVznfJtZ49e6jymcrz+l/vowkepCZn/7xEAEdw==", + "dev": true }, "serve-index": { "version": "1.9.1", @@ -49216,15 +19373,15 @@ } }, "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==", + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", + "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", "dev": true, "requires": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.17.1" + "send": "0.17.2" } }, "set-blocking": { @@ -49247,9 +19404,9 @@ "dev": true }, "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "dev": true }, "sha.js": { @@ -49269,29 +19426,21 @@ "dev": true, "requires": { "kind-of": "^6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - } } }, "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "requires": { - "shebang-regex": "^1.0.0" + "shebang-regex": "^3.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=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, "shellwords": { @@ -49300,10 +19449,21 @@ "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", "dev": true }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, "simple-swizzle": { @@ -49324,13 +19484,13 @@ } }, "sirv": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.12.tgz", - "integrity": "sha512-+jQoCxndz7L2tqQL4ZyzfDhky0W/4ZJip3XoOuxyQWnAwMxindLl3Xv1qT4x1YX/re0leShvTm8Uk0kQspGhBg==", + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.19.tgz", + "integrity": "sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==", "dev": true, "requires": { - "@polka/url": "^1.0.0-next.15", - "mime": "^2.3.1", + "@polka/url": "^1.0.0-next.20", + "mrmime": "^1.0.0", "totalist": "^1.0.0" } }, @@ -49384,14 +19544,6 @@ "minimatch": "^3.0.4", "pretty-bytes": "^5.3.0", "util.promisify": "^1.0.0" - }, - "dependencies": { - "pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "dev": true - } } }, "slash": { @@ -49401,13 +19553,10 @@ "dev": true }, "slice-ansi": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", - "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0" - } + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", + "dev": true }, "snapdragon": { "version": "0.8.2", @@ -49502,12 +19651,6 @@ "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" } - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true } } }, @@ -49518,6 +19661,17 @@ "dev": true, "requires": { "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, "socket.io-client": { @@ -49563,36 +19717,35 @@ } }, "sockjs": { - "version": "0.3.21", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz", - "integrity": "sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw==", + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", "dev": true, "requires": { "faye-websocket": "^0.11.3", - "uuid": "^3.4.0", + "uuid": "^8.3.2", "websocket-driver": "^0.7.4" }, "dependencies": { "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true } } }, "sockjs-client": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.5.1.tgz", - "integrity": "sha512-VnVAb663fosipI/m6pqRXakEOw7nvd7TUgdr3PlR/8V2I95QIdwT8L4nMxhyU8SmDBHYXU1TOElaKOmKLfYzeQ==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.6.0.tgz", + "integrity": "sha512-qVHJlyfdHFht3eBFZdKEXKTlb7I4IV41xnVNo8yUKA1UHcPJwgW2SvTq9LhnjjCywSkSK7c/e4nghU0GOoMCRQ==", "dev": true, "requires": { - "debug": "^3.2.6", - "eventsource": "^1.0.7", - "faye-websocket": "^0.11.3", + "debug": "^3.2.7", + "eventsource": "^1.1.0", + "faye-websocket": "^0.11.4", "inherits": "^2.0.4", - "json3": "^3.3.3", - "url-parse": "^1.5.1" + "url-parse": "^1.5.10" }, "dependencies": { "debug": { @@ -49624,18 +19777,18 @@ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" }, "source-map-js": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", - "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", "dev": true }, "source-map-resolve": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", - "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", "dev": true, "requires": { - "atob": "^2.1.1", + "atob": "^2.1.2", "decode-uri-component": "^0.2.0", "resolve-url": "^0.2.1", "source-map-url": "^0.4.0", @@ -49652,9 +19805,9 @@ } }, "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=", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", "dev": true }, "sourcemap-codec": { @@ -49664,9 +19817,9 @@ "dev": true }, "spdx-correct": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", - "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", "dev": true, "requires": { "spdx-expression-parse": "^3.0.0", @@ -49674,15 +19827,15 @@ } }, "spdx-exceptions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", "dev": true }, "spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, "requires": { "spdx-exceptions": "^2.1.0", @@ -49690,9 +19843,9 @@ } }, "spdx-license-ids": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", - "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", + "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", "dev": true }, "spdy": { @@ -49709,9 +19862,9 @@ }, "dependencies": { "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "requires": { "ms": "2.1.2" @@ -49740,9 +19893,9 @@ }, "dependencies": { "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "requires": { "ms": "2.1.2" @@ -49788,9 +19941,9 @@ "dev": true }, "sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", "dev": true, "requires": { "asn1": "~0.2.3", @@ -49910,15 +20063,6 @@ "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", "integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY=" }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, "string-length": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", @@ -49956,34 +20100,30 @@ "strip-ansi": "^5.1.0" } }, - "string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "string.prototype.matchall": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz", + "integrity": "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "string.prototype.trimleft": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz", - "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==", - "dev": true, - "requires": { "define-properties": "^1.1.3", - "function-bind": "^1.1.1" + "es-abstract": "^1.19.1", + "get-intrinsic": "^1.1.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "regexp.prototype.flags": "^1.4.1", + "side-channel": "^1.0.4" } }, - "string.prototype.trimright": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz", - "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==", + "string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", "dev": true, "requires": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, "string.prototype.trimstart": { @@ -49996,6 +20136,15 @@ "define-properties": "^1.1.3" } }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, "stringify-object": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", @@ -50082,8 +20231,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} + "dev": true }, "fast-deep-equal": { "version": "3.1.3", @@ -50098,12 +20246,12 @@ "dev": true }, "schema-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", - "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", "dev": true, "requires": { - "@types/json-schema": "^7.0.7", + "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", "ajv-keywords": "^3.5.2" } @@ -50121,15 +20269,20 @@ "postcss-selector-parser": "^3.0.0" }, "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "postcss-selector-parser": { @@ -50148,45 +20301,45 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "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==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, "stylis": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.0.10.tgz", - "integrity": "sha512-m3k+dk7QeJw660eIKRRn3xPF6uuvHs/FFzjX3HQ5ove0qYsiygoAhwn5a3IYKaZPo5LrYD0rfVmtv1gNY1uYwg==" + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.0.13.tgz", + "integrity": "sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag==" }, "superstruct": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-0.8.4.tgz", - "integrity": "sha512-48Ors8IVWZm/tMr8r0Si6+mJiB7mkD7jqvIzktjJ4+EnP5tBp0qOpiM1J8sCUorKx+TXWrfb3i1UcjdD1YK/wA==", + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-0.8.3.tgz", + "integrity": "sha512-LbtbFpktW1FcwxVIJlxdk7bCyBq/GzOx2FSFLRLTUhWIA1gHkYPIl3aXRG5mBdGZtnPNT6t+4eEcLDCMOuBHww==", "dev": true, "requires": { "kind-of": "^6.0.2", "tiny-invariant": "^1.0.6" + } + }, + "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" }, "dependencies": { - "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==", + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true } } }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true }, "svg.draggable.js": { @@ -50306,6 +20459,15 @@ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, + "slice-ansi": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", + "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0" + } + }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -50334,9 +20496,9 @@ "dev": true }, "tar": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz", - "integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==", + "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", "dev": true, "requires": { "chownr": "^2.0.0", @@ -50379,12 +20541,6 @@ "unique-string": "^2.0.0" }, "dependencies": { - "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==", - "dev": true - }, "type-fest": { "version": "0.16.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", @@ -50394,16 +20550,29 @@ } }, "terser": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.7.1.tgz", - "integrity": "sha512-b3e+d5JbHAe/JSjwsC3Zn55wsBIM7AsHLjKxT31kGCldgbpFePaFo+PiddtO6uwRZWRw7sPXmAN8dTW61xmnSg==", + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.12.1.tgz", + "integrity": "sha512-NXbs+7nisos5E+yXwAD+y7zrcTkMqb0dEJxIGtSKPdCBzopf7ni4odPul2aechpV7EXNvOudYOX2bb5tln1jbQ==", "dev": true, "requires": { + "acorn": "^8.5.0", "commander": "^2.20.0", "source-map": "~0.7.2", - "source-map-support": "~0.5.19" + "source-map-support": "~0.5.20" }, "dependencies": { + "acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "dev": true + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, "source-map": { "version": "0.7.3", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", @@ -50411,9 +20580,9 @@ "dev": true }, "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==", + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -50463,8 +20632,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} + "dev": true }, "fast-deep-equal": { "version": "3.1.3", @@ -50488,12 +20656,12 @@ } }, "schema-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", - "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", "dev": true, "requires": { - "@types/json-schema": "^7.0.7", + "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", "ajv-keywords": "^3.5.2" } @@ -50583,9 +20751,9 @@ "dev": true }, "tiny-invariant": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.1.0.tgz", - "integrity": "sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.2.0.tgz", + "integrity": "sha512-1Uhn/aqw5C6RI4KejVeTg6mIS7IqxnLJ8Mv2tV5rTc0qWobay7pDUz6Wi392Cnc8ak1H0F2cjoRzb2/AW4+Fvg==", "dev": true }, "tinydate": { @@ -50595,18 +20763,18 @@ "dev": true }, "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", "dev": true, "requires": { - "os-tmpdir": "~1.0.2" + "rimraf": "^3.0.0" } }, "tmpl": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", - "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", "dev": true }, "to-array": { @@ -50623,8 +20791,7 @@ "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=", - "devOptional": true + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" }, "to-object-path": { "version": "0.3.0", @@ -50633,6 +20800,17 @@ "dev": true, "requires": { "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, "to-readable-stream": { @@ -50671,13 +20849,22 @@ "requires": { "kind-of": "^3.0.2" } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } } } }, "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true }, "toposort": { @@ -50799,30 +20986,17 @@ } }, "typescript": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", - "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==", + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.2.tgz", + "integrity": "sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg==", "dev": true }, "uglify-js": { - "version": "3.6.9", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.9.tgz", - "integrity": "sha512-pcnnhaoG6RtrvHJ1dFncAe8Od6Nuy30oaJ82ts6//sGSXOP5UjBMEthiProjXmMNHOfd93sqlkztifFMcb+4yw==", + "version": "3.15.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.3.tgz", + "integrity": "sha512-6iCVm2omGJbsu3JWac+p6kUiOpg3wFO2f8lIXjfEb8RrmLjzog1wTPMmwKB7swfzzqxj9YM+sGUM++u1qN4qJg==", "dev": true, - "optional": true, - "requires": { - "commander": "~2.20.3", - "source-map": "~0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true - } - } + "optional": true }, "unbox-primitive": { "version": "1.0.1", @@ -50834,23 +21008,15 @@ "has-bigints": "^1.0.1", "has-symbols": "^1.0.2", "which-boxed-primitive": "^1.0.2" - }, - "dependencies": { - "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true - } } }, "uncontrollable": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.1.1.tgz", - "integrity": "sha512-EcPYhot3uWTS3w00R32R2+vS8Vr53tttrvMj/yA1uYRhf8hbTG2GyugGqWDY0qIskxn0uTTojVd6wPYW9ZEf8Q==", + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.2.1.tgz", + "integrity": "sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ==", "requires": { "@babel/runtime": "^7.6.3", - "@types/react": "^16.9.11", + "@types/react": ">=16.9.11", "invariant": "^2.2.4", "react-lifecycles-compat": "^3.0.4" } @@ -50862,31 +21028,31 @@ "dev": true }, "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==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", "dev": true }, "unicode-match-property-ecmascript": { - "version": "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==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, "requires": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" } }, "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==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", "dev": true }, "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==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", "dev": true }, "union-value": { @@ -51088,21 +21254,15 @@ } }, "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -51118,19 +21278,29 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "global-dirs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", + "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", + "dev": true, + "requires": { + "ini": "2.0.0" + } }, - "is-ci": { + "ini": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "dev": true + }, + "is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", "dev": true, "requires": { - "ci-info": "^2.0.0" + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" } }, "lru-cache": { @@ -51151,15 +21321,6 @@ "lru-cache": "^6.0.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==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -51175,9 +21336,9 @@ "dev": true }, "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, "requires": { "punycode": "^2.1.0" @@ -51234,8 +21395,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} + "dev": true }, "fast-deep-equal": { "version": "3.1.3", @@ -51249,28 +21409,13 @@ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, - "mime-db": { - "version": "1.48.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.48.0.tgz", - "integrity": "sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==", - "dev": true - }, - "mime-types": { - "version": "2.1.31", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.31.tgz", - "integrity": "sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==", - "dev": true, - "requires": { - "mime-db": "1.48.0" - } - }, "schema-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", - "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", "dev": true, "requires": { - "@types/json-schema": "^7.0.7", + "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", "ajv-keywords": "^3.5.2" } @@ -51278,9 +21423,9 @@ } }, "url-parse": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.1.tgz", - "integrity": "sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q==", + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", "dev": true, "requires": { "querystringify": "^2.1.1", @@ -51340,72 +21485,6 @@ "es-abstract": "^1.17.2", "has-symbols": "^1.0.1", "object.getownpropertydescriptors": "^2.1.0" - }, - "dependencies": { - "es-abstract": { - "version": "1.18.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.3.tgz", - "integrity": "sha512-nQIr12dxV7SSxE6r6f1l3DtAeEYdsGpps13dR0TwJg1S8gyp4ZPgy3FZcHBgbiQqnoqSTb+oC+kO4UQ0C/J8vw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "is-callable": "^1.2.3", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.3", - "is-string": "^1.0.6", - "object-inspect": "^1.10.3", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" - } - }, - "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true - }, - "is-callable": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", - "dev": true - }, - "is-regex": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz", - "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-symbols": "^1.0.2" - } - }, - "object-inspect": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", - "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", - "dev": true - }, - "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==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - } - } } }, "utila": { @@ -51474,40 +21553,40 @@ "dev": true }, "vscode-json-languageservice": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/vscode-json-languageservice/-/vscode-json-languageservice-3.4.7.tgz", - "integrity": "sha512-y3MN2+/yph3yoIHGmHu4ScYpm285L58XVvfGkd49xTQzLja4apxSbwzsYcP9QsqS0W7KuvoyiPhqksiudoMwjg==", + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/vscode-json-languageservice/-/vscode-json-languageservice-3.11.0.tgz", + "integrity": "sha512-QxI+qV97uD7HHOCjh3MrM1TfbdwmTXrMckri5Tus1/FQiG3baDZb2C9Y0y8QThs7PwHYBIQXcAc59ZveCRZKPA==", "dev": true, "requires": { - "jsonc-parser": "^2.2.0", - "vscode-languageserver-textdocument": "^1.0.0-next.4", - "vscode-languageserver-types": "^3.15.0-next.6", - "vscode-nls": "^4.1.1", - "vscode-uri": "^2.1.0" + "jsonc-parser": "^3.0.0", + "vscode-languageserver-textdocument": "^1.0.1", + "vscode-languageserver-types": "3.16.0-next.2", + "vscode-nls": "^5.0.0", + "vscode-uri": "^2.1.2" } }, "vscode-languageserver-textdocument": { - "version": "1.0.0-next.5", - "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.0-next.5.tgz", - "integrity": "sha512-1jp/zAidN/bF/sqPimhBX1orH5G4rzRw63k75TesukJDuxm8yW79ECStWbDSy41BHGOwSGN4M69QFvhancSr5A==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.4.tgz", + "integrity": "sha512-/xhqXP/2A2RSs+J8JNXpiiNVvvNM0oTosNVmQnunlKvq9o4mupHOBAnnzH0lwIPKazXKvAKsVp1kr+H/K4lgoQ==", "dev": true }, "vscode-languageserver-types": { - "version": "3.15.0-next.8", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.15.0-next.8.tgz", - "integrity": "sha512-AEfWrSNyeamWMKPehh/kd3nBnKD9ZGCPhzfxMnW9YNqElSh28G2+Puk3knIQWyaWyV6Bzh28ok9BRJsPzXFCkQ==", + "version": "3.16.0-next.2", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0-next.2.tgz", + "integrity": "sha512-QjXB7CKIfFzKbiCJC4OWC8xUncLsxo19FzGVp/ADFvvi87PlmBSCAtZI5xwGjF5qE0xkLf0jjKUn3DzmpDP52Q==", "dev": true }, "vscode-nls": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/vscode-nls/-/vscode-nls-4.1.1.tgz", - "integrity": "sha512-4R+2UoUUU/LdnMnFjePxfLqNhBS8lrAFyX7pjb2ud/lqDkrUavFUTcG7wR0HBZFakae0Q6KLBFjMS6W93F403A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/vscode-nls/-/vscode-nls-5.0.0.tgz", + "integrity": "sha512-u0Lw+IYlgbEJFF6/qAqG2d1jQmJl0eyAGJHoAJqr2HT4M2BNuQYSEiSE75f52pXHSJm8AlTjnLLbBFPrdz2hpA==", "dev": true }, "vscode-uri": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-2.1.1.tgz", - "integrity": "sha512-eY9jmGoEnVf8VE8xr5znSah7Qt1P/xsCdErz+g8HYZtJ7bZqKH5E3d+6oVNm1AC/c6IHUDokbmVXKOi4qPAC9A==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-2.1.2.tgz", + "integrity": "sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==", "dev": true }, "w3c-hr-time": { @@ -51520,12 +21599,12 @@ } }, "walker": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", - "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", "dev": true, "requires": { - "makeerror": "1.0.x" + "makeerror": "1.0.12" } }, "warning": { @@ -51544,14 +21623,6 @@ "requires": { "exec-sh": "^0.2.0", "minimist": "^1.2.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } } }, "watchpack": { @@ -51890,9 +21961,9 @@ "optional": true }, "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==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "optional": true, "requires": { @@ -51909,6 +21980,16 @@ "kind-of": "^3.0.2" } }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "optional": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, "micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -52001,9 +22082,9 @@ } }, "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", "dev": true }, "webpack": { @@ -52059,8 +22140,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} + "dev": true }, "arr-diff": { "version": "4.0.0", @@ -52132,6 +22212,12 @@ "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", "dev": true }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -52383,12 +22469,6 @@ "minimist": "^1.2.0" } }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, "loader-utils": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", @@ -52440,21 +22520,6 @@ "to-regex": "^3.0.2" } }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, "pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", @@ -52470,6 +22535,15 @@ "find-up": "^3.0.0" } }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, "schema-utils": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", @@ -52497,9 +22571,9 @@ "dev": true }, "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==", + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -52552,15 +22626,15 @@ } }, "webpack-bundle-analyzer": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.4.2.tgz", - "integrity": "sha512-PIagMYhlEzFfhMYOzs5gFT55DkUdkyrJi/SxJp8EF3YMWhS+T9vvs2EoTetpk5qb6VsCq02eXTlRDOydRhDFAQ==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.5.0.tgz", + "integrity": "sha512-GUMZlM3SKwS8Z+CKeIFx7CVoHn3dXFcUAjT/dcZQQmfSZGvitPfMob2ipjai7ovFFqPvTqkEZ/leL4O0YOdAYQ==", "dev": true, "requires": { "acorn": "^8.0.4", "acorn-walk": "^8.0.0", "chalk": "^4.1.0", - "commander": "^6.2.0", + "commander": "^7.2.0", "gzip-size": "^6.0.0", "lodash": "^4.17.20", "opener": "^1.5.2", @@ -52569,15 +22643,15 @@ }, "dependencies": { "acorn": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.4.1.tgz", - "integrity": "sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA==", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", "dev": true }, "acorn-walk": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.1.1.tgz", - "integrity": "sha512-FbJdceMlPHEAWJOILDk1fXD8lnTlEIWFkqtfk+MvmL5q/qlHfN7GEHcsFZWt/Tea9jRNPWUZG4G976nqAAmU9w==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", "dev": true }, "ansi-styles": { @@ -52590,9 +22664,9 @@ } }, "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -52615,15 +22689,9 @@ "dev": true }, "commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", - "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==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "dev": true }, "lodash": { @@ -52631,15 +22699,6 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "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" - } } } }, @@ -52654,15 +22713,23 @@ "mkdirp": "^0.5.1", "range-parser": "^1.2.1", "webpack-log": "^2.0.0" + }, + "dependencies": { + "mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true + } } }, "webpack-dev-server": { - "version": "3.11.2", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.2.tgz", - "integrity": "sha512-A80BkuHRQfCiNtGBS1EMf2ChTUs0x+B3wGDFmOeT4rmJOHhHTCH2naNxIHhmkr0/UillP4U3yeIyv1pNp+QDLQ==", + "version": "3.11.3", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.3.tgz", + "integrity": "sha512-3x31rjbEQWKMNzacUZRE6wXvUFuGpH7vr0lIEbYpMAG9BOxi0928QU1BBswOAP3kg3H1O4hiS+sq4YyAn6ANnA==", "dev": true, "requires": { - "ansi-html": "0.0.7", + "ansi-html-community": "0.0.8", "bonjour": "^3.5.0", "chokidar": "^2.1.8", "compression": "^1.7.4", @@ -52713,8 +22780,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} + "dev": true }, "ansi-regex": { "version": "2.1.1", @@ -52779,9 +22845,9 @@ } }, "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "requires": { "ms": "2.1.2" @@ -53037,9 +23103,9 @@ "dev": true }, "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==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "requires": { "is-extglob": "^2.1.1" @@ -53060,6 +23126,15 @@ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, "micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -53168,34 +23243,6 @@ "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==", - "dev": true, - "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==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } } } }, @@ -53288,27 +23335,19 @@ "dev": true }, "whatwg-url": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-4.8.0.tgz", - "integrity": "sha1-0pgaqRSMHgCkHFphMRZqtGg7vMA=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", "dev": true, "requires": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" - }, - "dependencies": { - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", - "dev": true - } } }, "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "requires": { "isexe": "^2.0.0" @@ -53325,23 +23364,6 @@ "is-number-object": "^1.0.4", "is-string": "^1.0.5", "is-symbol": "^1.0.3" - }, - "dependencies": { - "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true - }, - "is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "requires": { - "has-symbols": "^1.0.2" - } - } } }, "which-module": { @@ -53359,9 +23381,9 @@ }, "dependencies": { "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, "emoji-regex": { @@ -53377,23 +23399,23 @@ "dev": true }, "string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "strip-ansi": "^6.0.1" } }, "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "requires": { - "ansi-regex": "^5.0.0" + "ansi-regex": "^5.0.1" } } } @@ -53411,43 +23433,45 @@ "dev": true }, "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", "dev": true }, "workbox-background-sync": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.1.5.tgz", - "integrity": "sha512-VbUmPLsdz+sLzuNxHvMylzyRTiM4q+q7rwLBk3p2mtRL5NZozI8j/KgoGbno96vs84jx4b9zCZMEOIKEUTPf6w==", + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.5.1.tgz", + "integrity": "sha512-T5a35fagLXQvV8Dr4+bDU+XYsP90jJ3eBLjZMKuCNELMQZNj+VekCODz1QK44jgoBeQk+vp94pkZV6G+e41pgg==", "dev": true, "requires": { - "workbox-core": "^6.1.5" + "idb": "^6.1.4", + "workbox-core": "6.5.1" } }, "workbox-broadcast-update": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.1.5.tgz", - "integrity": "sha512-zGrTTs+n4wHpYtqYMqBg6kl/x5j1UrczGCQnODSHTxIDV8GXLb/GtA1BCZdysNxpMmdVSeLmTcgIYAAqWFamrA==", + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.5.1.tgz", + "integrity": "sha512-mb/oyblyEpDbw167cCTyHnC3RqCnCQHtFYuYZd+QTpuExxM60qZuBH1AuQCgvLtDcztBKdEYK2VFD9SZYgRbaQ==", "dev": true, "requires": { - "workbox-core": "^6.1.5" + "workbox-core": "6.5.1" } }, "workbox-build": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-6.1.5.tgz", - "integrity": "sha512-P+fakR5QFVqJN9l9xHVXtmafga72gh9I+jM3A9HiB/6UNRmOAejXnDgD+RMegOHgQHPwnB44TalMToFaXKWIyA==", + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-6.5.1.tgz", + "integrity": "sha512-coDUDzHvFZ1ADOl3wKCsCSyOBvkPKlPgcQDb6LMMShN1zgF31Mev/1HzN3+9T2cjjWAgFwZKkuRyExqc1v21Zw==", "dev": true, "requires": { + "@apideck/better-ajv-errors": "^0.3.1", "@babel/core": "^7.11.1", "@babel/preset-env": "^7.11.0", "@babel/runtime": "^7.11.2", - "@hapi/joi": "^16.1.8", "@rollup/plugin-babel": "^5.2.0", "@rollup/plugin-node-resolve": "^11.2.1", "@rollup/plugin-replace": "^2.4.1", - "@surma/rollup-plugin-off-main-thread": "^1.4.1", + "@surma/rollup-plugin-off-main-thread": "^2.2.3", + "ajv": "^8.6.0", "common-tags": "^1.8.0", "fast-json-stable-stringify": "^2.1.0", "fs-extra": "^9.0.1", @@ -53457,41 +23481,58 @@ "rollup": "^2.43.1", "rollup-plugin-terser": "^7.0.0", "source-map": "^0.8.0-beta.0", - "source-map-url": "^0.4.0", "stringify-object": "^3.3.0", "strip-comments": "^2.0.1", "tempy": "^0.6.0", "upath": "^1.2.0", - "workbox-background-sync": "^6.1.5", - "workbox-broadcast-update": "^6.1.5", - "workbox-cacheable-response": "^6.1.5", - "workbox-core": "^6.1.5", - "workbox-expiration": "^6.1.5", - "workbox-google-analytics": "^6.1.5", - "workbox-navigation-preload": "^6.1.5", - "workbox-precaching": "^6.1.5", - "workbox-range-requests": "^6.1.5", - "workbox-recipes": "^6.1.5", - "workbox-routing": "^6.1.5", - "workbox-strategies": "^6.1.5", - "workbox-streams": "^6.1.5", - "workbox-sw": "^6.1.5", - "workbox-window": "^6.1.5" + "workbox-background-sync": "6.5.1", + "workbox-broadcast-update": "6.5.1", + "workbox-cacheable-response": "6.5.1", + "workbox-core": "6.5.1", + "workbox-expiration": "6.5.1", + "workbox-google-analytics": "6.5.1", + "workbox-navigation-preload": "6.5.1", + "workbox-precaching": "6.5.1", + "workbox-range-requests": "6.5.1", + "workbox-recipes": "6.5.1", + "workbox-routing": "6.5.1", + "workbox-strategies": "6.5.1", + "workbox-streams": "6.5.1", + "workbox-sw": "6.5.1", + "workbox-window": "6.5.1" }, "dependencies": { "@babel/runtime": { - "version": "7.14.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.6.tgz", - "integrity": "sha512-/PCB2uJ7oM44tz8YhC4Z/6PeOKXp4K588f+5M3clr1M4zbqztlo0XEfJ2LEzj/FgwfgGcIdl8n7YYjTCI0BYwg==", + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.8.tgz", + "integrity": "sha512-dQpEpK0O9o6lj6oPu0gRDbbnk+4LeHlNcBpspf6Olzt3GIX4P1lWF1gS+pHLDFlaJvbR6q7jCfQ08zA4QJBnmA==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" } }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "ajv": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz", + "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true }, "lodash": { @@ -53500,18 +23541,6 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, - "pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "dev": true - }, - "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==", - "dev": true - }, "source-map": { "version": "0.8.0-beta.0", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", @@ -53530,6 +23559,12 @@ "punycode": "^2.1.0" } }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, "whatwg-url": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", @@ -53544,153 +23579,140 @@ } }, "workbox-cacheable-response": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.1.5.tgz", - "integrity": "sha512-x8DC71lO/JCgiaJ194l9le8wc8lFPLgUpDkLhp2si7mXV6S/wZO+8Osvw1LLgYa8YYTWGbhbFhFTXIkEMknIIA==", + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.5.1.tgz", + "integrity": "sha512-3TdtH/luDiytmM+Cn72HCBLZXmbeRNJqZx2yaVOfUZhj0IVwZqQXhNarlGE9/k6U5Jelb+TtpH2mLVhnzfiSMg==", "dev": true, "requires": { - "workbox-core": "^6.1.5" + "workbox-core": "6.5.1" } }, "workbox-core": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-6.1.5.tgz", - "integrity": "sha512-9SOEle7YcJzg3njC0xMSmrPIiFjfsFm9WjwGd5enXmI8Lwk8wLdy63B0nzu5LXoibEmS9k+aWF8EzaKtOWjNSA==", + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-6.5.1.tgz", + "integrity": "sha512-qObXZ39aFJ2N8X7IUbGrJHKWguliCuU1jOXM/I4MTT84u9BiKD2rHMkIzgeRP1Ixu9+cXU4/XHJq3Cy0Qqc5hw==", "dev": true }, "workbox-expiration": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.1.5.tgz", - "integrity": "sha512-6cN+FVbh8fNq56LFKPMchGNKCJeyboHsDuGBqmhDUPvD4uDjsegQpDQzn52VaE0cpywbSIsDF/BSq9E9Yjh5oQ==", + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.5.1.tgz", + "integrity": "sha512-iY/cTADAQATMmPkUBRmQdacqq0TJd2wMHimBQz+tRnPGHSMH+/BoLPABPnu7O7rT/g/s59CUYYRGxe3mEgoJCA==", "dev": true, "requires": { - "workbox-core": "^6.1.5" + "idb": "^6.1.4", + "workbox-core": "6.5.1" } }, "workbox-google-analytics": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.1.5.tgz", - "integrity": "sha512-LYsJ/VxTkYVLxM1uJKXZLz4cJdemidY7kPyAYtKVZ6EiDG89noASqis75/5lhqM1m3HwQfp2DtoPrelKSpSDBA==", + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.5.1.tgz", + "integrity": "sha512-qZU46/h4dbionYT6Yk6iBkUwpiEzAfnO1W7KkI+AMmY7G9/gA03dQQ7rpTw8F4vWrG7ahTUGWDFv6fERtaw1BQ==", "dev": true, "requires": { - "workbox-background-sync": "^6.1.5", - "workbox-core": "^6.1.5", - "workbox-routing": "^6.1.5", - "workbox-strategies": "^6.1.5" + "workbox-background-sync": "6.5.1", + "workbox-core": "6.5.1", + "workbox-routing": "6.5.1", + "workbox-strategies": "6.5.1" } }, "workbox-navigation-preload": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.1.5.tgz", - "integrity": "sha512-hDbNcWlffv0uvS21jCAC/mYk7NzaGRSWOQXv1p7bj2aONAX5l699D2ZK4D27G8TO0BaLHUmW/1A5CZcsvweQdg==", + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.5.1.tgz", + "integrity": "sha512-aKrgAbn2IMgzTowTi/ZyKdQUcES2m++9aGtpxqsX7Gn9ovCY8zcssaMEAMMwrIeveij5HiWNBrmj6MWDHi+0rg==", "dev": true, "requires": { - "workbox-core": "^6.1.5" + "workbox-core": "6.5.1" } }, "workbox-precaching": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.1.5.tgz", - "integrity": "sha512-yhm1kb6wgi141JeM5X7z42XJxCry53tbMLB3NgrxktrZbwbrJF8JILzYy+RFKC9tHC6u2bPmL789GPLT2NCDzw==", + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.5.1.tgz", + "integrity": "sha512-EzlPBxvmjGfE56YZzsT/vpVkpLG1XJhoplgXa5RPyVWLUL1LbwEAxhkrENElSS/R9tgiTw80IFwysidfUqLihg==", "dev": true, "requires": { - "workbox-core": "^6.1.5", - "workbox-routing": "^6.1.5", - "workbox-strategies": "^6.1.5" + "workbox-core": "6.5.1", + "workbox-routing": "6.5.1", + "workbox-strategies": "6.5.1" } }, "workbox-range-requests": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.1.5.tgz", - "integrity": "sha512-iACChSapzB0yuIum3ascP/+cfBNuZi5DRrE+u4u5mCHigPlwfSWtlaY+y8p+a8EwcDTVTZVtnrGrRnF31SiLqQ==", + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.5.1.tgz", + "integrity": "sha512-57Da/qRbd9v33YlHX0rlSUVFmE4THCjKqwkmfhY3tNLnSKN2L5YBS3qhWeDO0IrMNgUj+rGve2moKYXeUqQt4A==", "dev": true, "requires": { - "workbox-core": "^6.1.5" + "workbox-core": "6.5.1" } }, "workbox-recipes": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.1.5.tgz", - "integrity": "sha512-MD1yabHca6O/oj1hrRdfj9cRwhKA5zqIE53rWOAg/dKMMzWQsf9nyRbXRgzK3a13iQvYKuQzURU4Cx58tdnR+Q==", + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.5.1.tgz", + "integrity": "sha512-DGsyKygHggcGPQpWafC/Nmbm1Ny3sB2vE9r//3UbeidXiQ+pLF14KEG1/0NNGRaY+lfOXOagq6d1H7SC8KA+rA==", "dev": true, "requires": { - "workbox-cacheable-response": "^6.1.5", - "workbox-core": "^6.1.5", - "workbox-expiration": "^6.1.5", - "workbox-precaching": "^6.1.5", - "workbox-routing": "^6.1.5", - "workbox-strategies": "^6.1.5" + "workbox-cacheable-response": "6.5.1", + "workbox-core": "6.5.1", + "workbox-expiration": "6.5.1", + "workbox-precaching": "6.5.1", + "workbox-routing": "6.5.1", + "workbox-strategies": "6.5.1" } }, "workbox-routing": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.1.5.tgz", - "integrity": "sha512-uC/Ctz+4GXGL42h1WxUNKxqKRik/38uS0NZ6VY/EHqL2F1ObLFqMHUZ4ZYvyQsKdyI82cxusvhJZHOrY0a2fIQ==", + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.5.1.tgz", + "integrity": "sha512-yAAncdTwanvlR8KPjubyvFKeAok8ZcIws6UKxvIAg0I+wsf7UYi93DXNuZr6RBSQrByrN6HkCyjuhmk8P63+PA==", "dev": true, "requires": { - "workbox-core": "^6.1.5" + "workbox-core": "6.5.1" } }, "workbox-strategies": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.1.5.tgz", - "integrity": "sha512-QhiOn9KT9YGBdbfWOmJT6pXZOIAxaVrs6J6AMYzRpkUegBTEcv36+ZhE/cfHoT0u2fxVtthHnskOQ/snEzaXQw==", + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.5.1.tgz", + "integrity": "sha512-JNaTXPy8wXzKkr+6za7/eJX9opoZk7UgY261I2kPxl80XQD8lMjz0vo9EOcBwvD72v3ZhGJbW84ZaDwFEhFvWA==", "dev": true, "requires": { - "workbox-core": "^6.1.5" + "workbox-core": "6.5.1" } }, "workbox-streams": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.1.5.tgz", - "integrity": "sha512-OI1kLvRHGFXV+soDvs6aEwfBwdAkvPB0mRryqdh3/K17qUj/1gRXc8QtpgU+83xqx/I/ar2bTCIj0KPzI/ChCQ==", + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.5.1.tgz", + "integrity": "sha512-7jaTWm6HRGJ/ewECnhb+UgjTT50R42E0/uNCC4eTKQwnLO/NzNGjoXTdQgFjo4zteR+L/K6AtFAiYKH3ZJbAYw==", "dev": true, "requires": { - "workbox-core": "^6.1.5", - "workbox-routing": "^6.1.5" + "workbox-core": "6.5.1", + "workbox-routing": "6.5.1" } }, "workbox-sw": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.1.5.tgz", - "integrity": "sha512-IMDiqxYbKzPorZLGMUMacLB6r76iVQbdTzYthIZoPfy+uFURJFUtqiWQJKg1L+RMyuYXwKXTahCIGkgFs4jBeg==", + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.5.1.tgz", + "integrity": "sha512-hVrQa19yo9wzN1fQQ/h2JlkzFpkuH2qzYT2/rk7CLaWt6tLnTJVFCNHlGRRPhytZSf++LoIy7zThT714sowT/Q==", "dev": true }, "workbox-webpack-plugin": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-6.1.5.tgz", - "integrity": "sha512-tsgeNAYiFP4STNPDxBVT58eiU8nGUmcv7Lq9FFJkQf5MMu6tPw1OLp+KpszhbCWP+R/nEdu85Gjexs6fY647Kg==", + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-6.5.1.tgz", + "integrity": "sha512-SHtlQBpKruI16CAYhICDMkgjXE2fH5Yp+D+1UmBfRVhByZYzusVOykvnPm8ObJb9d/tXgn9yoppoxafFS7D4vQ==", "dev": true, "requires": { "fast-json-stable-stringify": "^2.1.0", "pretty-bytes": "^5.4.1", - "source-map-url": "^0.4.0", "upath": "^1.2.0", "webpack-sources": "^1.4.3", - "workbox-build": "^6.1.5" - }, - "dependencies": { - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "dev": true - } + "workbox-build": "6.5.1" } }, "workbox-window": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-6.1.5.tgz", - "integrity": "sha512-akL0X6mAegai2yypnq78RgfazeqvKbsllRtEI4dnbhPcRINEY1NmecFmsQk8SD+zWLK1gw5OdwAOX+zHSRVmeA==", + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-6.5.1.tgz", + "integrity": "sha512-oRlun9u7b7YEjo2fIDBqJkU2hXtrEljXcOytRhfeQRbqXxjUOpFgXSGRSAkmDx1MlKUNOSbr+zfi8h5n7In3yA==", "dev": true, "requires": { - "workbox-core": "^6.1.5" + "@types/trusted-types": "^2.0.2", + "workbox-core": "6.5.1" } }, "worker-farm": { @@ -53750,8 +23772,7 @@ "ws": { "version": "7.4.6", "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", - "requires": {} + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==" }, "xdg-basedir": { "version": "4.0.0", @@ -53793,10 +23814,15 @@ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", "dev": true }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" + }, "yargs": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", - "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", + "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", @@ -53807,13 +23833,13 @@ "string-width": "^3.0.0", "which-module": "^2.0.0", "y18n": "^4.0.0", - "yargs-parser": "^13.1.1" + "yargs-parser": "^13.1.2" } }, "yargs-parser": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", - "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", + "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" diff --git a/server/package-lock.json b/server/package-lock.json index 674e21e5ab..8adeb835be 100644 --- a/server/package-lock.json +++ b/server/package-lock.json @@ -1,12690 +1,7 @@ { "name": "gladys-server", - "lockfileVersion": 2, "requires": true, - "packages": { - "": { - "name": "gladys-server", - "hasInstallScript": true, - "license": "Apache-2.0", - "dependencies": { - "@gladysassistant/gladys-gateway-js": "^3.5.0", - "@hapi/joi": "^17.1.0", - "@hapi/joi-date": "^2.0.1", - "axios": "^0.21.1", - "bcrypt": "^5.0.1", - "bluebird": "^3.5.3", - "compression": "^1.7.4", - "cross-env": "^5.2.0", - "dayjs": "^1.10.4", - "dockerode": "^3.2.1", - "downsample": "^1.4.0", - "express": "^4.16.4", - "express-rate-limit": "^4.0.3", - "form-data": "^2.3.3", - "fs-extra": "^8.0.1", - "get-value": "^3.0.1", - "handlebars": "^4.7.7", - "joi": "^14.3.1", - "jsonwebtoken": "^8.4.0", - "lodash.clonedeep": "^4.5.0", - "node-nlp": "^4.19.7", - "node-schedule": "^1.3.2", - "node-webcrypto-ossl": "^1.0.48", - "path-to-regexp": "^3.0.0", - "query-string": "^7.0.1", - "queue": "^6.0.0", - "semver": "^6.1.1", - "sequelize": "^6.5.0", - "sequelize-cli": "^6.2.0", - "set-value": "^3.0.2", - "simple-oauth2": "^4.3.0", - "sqlite3": "^5.0.2", - "suncalc": "^1.8.0", - "tracer": "^1.1.4", - "umzug": "^2.2.0", - "uuid": "^3.3.2", - "ws": "^6.2.1" - }, - "devDependencies": { - "apidoc": "^0.17.7", - "chai": "^4.2.0", - "chai-as-promised": "^7.1.1", - "dotenv": "^6.2.0", - "eslint": "^7.22.0", - "eslint-config-airbnb": "^17.1.0", - "eslint-config-prettier": "^4.3.0", - "eslint-plugin-import": "^2.22.1", - "eslint-plugin-jsdoc": "^4.1.0", - "eslint-plugin-no-call": "^1.2.5", - "eslint-plugin-require-jsdoc": "^1.0.4", - "jsdoc": "^3.6.7", - "mocha": "^8.3.2", - "mock-express-request": "^0.2.2", - "mock-http-server": "^1.4.5", - "nock": "^13.0.11", - "nodemon": "^2.0.7", - "npm-run-all": "^4.1.5", - "nyc": "^15.1.0", - "oauth2-mock-server": "^4.1.1", - "prettier": "^1.17.1", - "proxyquire": "^2.1.0", - "shx": "^0.3.2", - "sinon": "^7.2.4", - "supertest": "^3.4.2" - }, - "engines": { - "node": "14.x", - "npm": "6.x" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.12.tgz", - "integrity": "sha512-3eJJ841uKxeV8dcN/2yGEUy+RfgQspPEgQat85umsE1rotuquQ2AbIub4S6j7c50a2d+4myc+zSlnXeIHrOnhQ==", - "dev": true - }, - "node_modules/@babel/core": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.10.tgz", - "integrity": "sha512-bfIYcT0BdKeAZrovpMqX2Mx5NrgAckGbwT982AkdS5GNfn3KMGiprlBAtmBcFZRUmpaufS6WZFP8trvx8ptFDw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-compilation-targets": "^7.13.10", - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helpers": "^7.13.10", - "@babel/parser": "^7.13.10", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "lodash": "^4.17.19", - "semver": "^6.3.0", - "source-map": "^0.5.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/@babel/code-frame": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", - "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.12.13" - } - }, - "node_modules/@babel/core/node_modules/@babel/generator": { - "version": "7.13.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", - "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.13.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - } - }, - "node_modules/@babel/core/node_modules/@babel/helper-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", - "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", - "dev": true, - "dependencies": { - "@babel/helper-get-function-arity": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/types": "^7.12.13" - } - }, - "node_modules/@babel/core/node_modules/@babel/helper-get-function-arity": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", - "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.12.13" - } - }, - "node_modules/@babel/core/node_modules/@babel/helper-split-export-declaration": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", - "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.12.13" - } - }, - "node_modules/@babel/core/node_modules/@babel/highlight": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", - "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.12.11", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "node_modules/@babel/core/node_modules/@babel/parser": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.12.tgz", - "integrity": "sha512-4T7Pb244rxH24yR116LAuJ+adxXXnHhZaLJjegJVKSdoNCe4x1eDBaud5YIcQFcqzsaD5BHvJw5BQ0AZapdCRw==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/core/node_modules/@babel/template": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", - "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13" - } - }, - "node_modules/@babel/core/node_modules/@babel/traverse": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.0.tgz", - "integrity": "sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.0", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.13.0", - "@babel/types": "^7.13.0", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.19" - } - }, - "node_modules/@babel/core/node_modules/@babel/types": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz", - "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "node_modules/@babel/core/node_modules/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==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.1" - } - }, - "node_modules/@babel/core/node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@babel/core/node_modules/json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@babel/core/node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/@babel/core/node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "node_modules/@babel/core/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@babel/core/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.10.tgz", - "integrity": "sha512-/Xju7Qg1GQO4mHZ/Kcs6Au7gfafgZnwm+a7sy/ow/tV1sHeraRUHbjdat8/UvDor4Tez+siGKDk6zIKtCPKVJA==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.13.8", - "@babel/helper-validator-option": "^7.12.17", - "browserslist": "^4.14.5", - "semver": "^6.3.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", - "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.13.12" - } - }, - "node_modules/@babel/helper-member-expression-to-functions/node_modules/@babel/types": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz", - "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "node_modules/@babel/helper-member-expression-to-functions/node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", - "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.13.12" - } - }, - "node_modules/@babel/helper-module-imports/node_modules/@babel/types": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz", - "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "node_modules/@babel/helper-module-imports/node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.12.tgz", - "integrity": "sha512-7zVQqMO3V+K4JOOj40kxiCrMf6xlQAkewBB0eu2b03OO/Q21ZutOzjpfD79A5gtE/2OWi1nv625MrDlGlkbknQ==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.13.12", - "@babel/helper-replace-supers": "^7.13.12", - "@babel/helper-simple-access": "^7.13.12", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/helper-validator-identifier": "^7.12.11", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.12" - } - }, - "node_modules/@babel/helper-module-transforms/node_modules/@babel/code-frame": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", - "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.12.13" - } - }, - "node_modules/@babel/helper-module-transforms/node_modules/@babel/generator": { - "version": "7.13.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", - "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.13.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - } - }, - "node_modules/@babel/helper-module-transforms/node_modules/@babel/helper-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", - "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", - "dev": true, - "dependencies": { - "@babel/helper-get-function-arity": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/types": "^7.12.13" - } - }, - "node_modules/@babel/helper-module-transforms/node_modules/@babel/helper-get-function-arity": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", - "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.12.13" - } - }, - "node_modules/@babel/helper-module-transforms/node_modules/@babel/helper-split-export-declaration": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", - "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.12.13" - } - }, - "node_modules/@babel/helper-module-transforms/node_modules/@babel/highlight": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", - "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.12.11", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "node_modules/@babel/helper-module-transforms/node_modules/@babel/parser": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.12.tgz", - "integrity": "sha512-4T7Pb244rxH24yR116LAuJ+adxXXnHhZaLJjegJVKSdoNCe4x1eDBaud5YIcQFcqzsaD5BHvJw5BQ0AZapdCRw==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/helper-module-transforms/node_modules/@babel/template": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", - "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13" - } - }, - "node_modules/@babel/helper-module-transforms/node_modules/@babel/traverse": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.0.tgz", - "integrity": "sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.0", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.13.0", - "@babel/types": "^7.13.0", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.19" - } - }, - "node_modules/@babel/helper-module-transforms/node_modules/@babel/types": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz", - "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "node_modules/@babel/helper-module-transforms/node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@babel/helper-module-transforms/node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/@babel/helper-module-transforms/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@babel/helper-module-transforms/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", - "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.12.13" - } - }, - "node_modules/@babel/helper-optimise-call-expression/node_modules/@babel/types": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz", - "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "node_modules/@babel/helper-optimise-call-expression/node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", - "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", - "dev": true, - "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.13.12", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.12" - } - }, - "node_modules/@babel/helper-replace-supers/node_modules/@babel/code-frame": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", - "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.12.13" - } - }, - "node_modules/@babel/helper-replace-supers/node_modules/@babel/generator": { - "version": "7.13.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", - "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.13.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - } - }, - "node_modules/@babel/helper-replace-supers/node_modules/@babel/helper-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", - "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", - "dev": true, - "dependencies": { - "@babel/helper-get-function-arity": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/types": "^7.12.13" - } - }, - "node_modules/@babel/helper-replace-supers/node_modules/@babel/helper-get-function-arity": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", - "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.12.13" - } - }, - "node_modules/@babel/helper-replace-supers/node_modules/@babel/helper-split-export-declaration": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", - "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.12.13" - } - }, - "node_modules/@babel/helper-replace-supers/node_modules/@babel/highlight": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", - "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.12.11", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "node_modules/@babel/helper-replace-supers/node_modules/@babel/parser": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.12.tgz", - "integrity": "sha512-4T7Pb244rxH24yR116LAuJ+adxXXnHhZaLJjegJVKSdoNCe4x1eDBaud5YIcQFcqzsaD5BHvJw5BQ0AZapdCRw==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/helper-replace-supers/node_modules/@babel/template": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", - "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13" - } - }, - "node_modules/@babel/helper-replace-supers/node_modules/@babel/traverse": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.0.tgz", - "integrity": "sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.0", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.13.0", - "@babel/types": "^7.13.0", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.19" - } - }, - "node_modules/@babel/helper-replace-supers/node_modules/@babel/types": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz", - "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "node_modules/@babel/helper-replace-supers/node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@babel/helper-replace-supers/node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/@babel/helper-replace-supers/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@babel/helper-replace-supers/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", - "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.13.12" - } - }, - "node_modules/@babel/helper-simple-access/node_modules/@babel/types": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz", - "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "node_modules/@babel/helper-simple-access/node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/@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==", - "dev": true - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", - "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==", - "dev": true - }, - "node_modules/@babel/helpers": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.10.tgz", - "integrity": "sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==", - "dev": true, - "dependencies": { - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" - } - }, - "node_modules/@babel/helpers/node_modules/@babel/code-frame": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", - "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.12.13" - } - }, - "node_modules/@babel/helpers/node_modules/@babel/generator": { - "version": "7.13.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", - "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.13.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - } - }, - "node_modules/@babel/helpers/node_modules/@babel/helper-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", - "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", - "dev": true, - "dependencies": { - "@babel/helper-get-function-arity": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/types": "^7.12.13" - } - }, - "node_modules/@babel/helpers/node_modules/@babel/helper-get-function-arity": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", - "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.12.13" - } - }, - "node_modules/@babel/helpers/node_modules/@babel/helper-split-export-declaration": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", - "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.12.13" - } - }, - "node_modules/@babel/helpers/node_modules/@babel/highlight": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", - "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.12.11", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "node_modules/@babel/helpers/node_modules/@babel/parser": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.12.tgz", - "integrity": "sha512-4T7Pb244rxH24yR116LAuJ+adxXXnHhZaLJjegJVKSdoNCe4x1eDBaud5YIcQFcqzsaD5BHvJw5BQ0AZapdCRw==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/helpers/node_modules/@babel/template": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", - "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13" - } - }, - "node_modules/@babel/helpers/node_modules/@babel/traverse": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.0.tgz", - "integrity": "sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.0", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.13.0", - "@babel/types": "^7.13.0", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.19" - } - }, - "node_modules/@babel/helpers/node_modules/@babel/types": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz", - "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "node_modules/@babel/helpers/node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@babel/helpers/node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/@babel/helpers/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@babel/helpers/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.2.tgz", - "integrity": "sha512-IoVDIHpsgE/fu7eXBeRWt8zLbDrSvD7H1gpomOkPpBoEN8KCruCqSDdqo8dddwQQrui30KSvQBaMUOJiuFu6QQ==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@ctrlpanel/pbkdf2": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@ctrlpanel/pbkdf2/-/pbkdf2-1.0.0.tgz", - "integrity": "sha512-NC/J3R2tRUciBPQKcJJ8rz9BGIJYVCPbl699fblp6fBXCHWwAnrOu1oEdDqKhspxsKDj/yZTTDlnSLkmO+ovfA==" - }, - "node_modules/@eslint/eslintrc": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.0.tgz", - "integrity": "sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog==", - "dev": true, - "dependencies": { - "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", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/@eslint/eslintrc/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@eslint/eslintrc/node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@eslint/eslintrc/node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", - "dev": true, - "dependencies": { - "type-fest": "^0.8.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@eslint/eslintrc/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@eslint/eslintrc/node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@gladysassistant/gladys-gateway-js": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@gladysassistant/gladys-gateway-js/-/gladys-gateway-js-3.5.0.tgz", - "integrity": "sha512-4nd1ueZW4izHnl7tx1zPHib2RDQDNIb9B2sF7sJPJ+4Kvj1CCAr/BlYnQbhT2vZsHvdspm7lUsE3foniS9hHTA==", - "dependencies": { - "@ctrlpanel/pbkdf2": "^1.0.0", - "array-buffer-to-hex": "^1.0.0", - "auto-bind": "^2.1.0", - "axios": "^0.21.1", - "encode-utf8": "^1.0.2", - "hex-to-array-buffer": "^1.1.0", - "secure-remote-password": "^0.3.1", - "socket.io-client": "^2.3.0" - } - }, - "node_modules/@hapi/address": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@hapi/address/-/address-4.0.0.tgz", - "integrity": "sha512-GDDpkCdSUfkQCznmWUHh9dDN85BWf/V8TFKQ2JLuHdGB4Yy3YTEGBzZxoBNxfNBEvreSR/o+ZxBBSNNEVzY+lQ==", - "deprecated": "Moved to 'npm install @sideway/address'", - "dependencies": { - "@hapi/hoek": "^9.0.0" - } - }, - "node_modules/@hapi/boom": { - "version": "9.1.4", - "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-9.1.4.tgz", - "integrity": "sha512-Ls1oH8jaN1vNsqcaHVYJrKmgMcKsC1wcp8bujvXrHaAqD2iDYq3HoOwsxwo09Cuda5R5nC0o0IxlrlTuvPuzSw==", - "dependencies": { - "@hapi/hoek": "9.x.x" - } - }, - "node_modules/@hapi/bourne": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-2.0.0.tgz", - "integrity": "sha512-WEezM1FWztfbzqIUbsDzFRVMxSoLy3HugVcux6KDDtTqzPsLE8NDRHfXvev66aH1i2oOKKar3/XDjbvh/OUBdg==" - }, - "node_modules/@hapi/formula": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@hapi/formula/-/formula-2.0.0.tgz", - "integrity": "sha512-V87P8fv7PI0LH7LiVi8Lkf3x+KCO7pQozXRssAHNXXL9L1K+uyu4XypLXwxqVDKgyQai6qj3/KteNlrqDx4W5A==", - "deprecated": "Moved to 'npm install @sideway/formula'" - }, - "node_modules/@hapi/hoek": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.0.3.tgz", - "integrity": "sha512-jKtjLLDiH95b002sJVc5c74PE6KKYftuyVdVmsuYId5stTaWcRFqE+5ukZI4gDUKjGn8wv2C3zPn3/nyjEI7gg==", - "deprecated": "This version has been deprecated and is no longer supported or maintained" - }, - "node_modules/@hapi/joi": { - "version": "17.1.0", - "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-17.1.0.tgz", - "integrity": "sha512-ob67RcPlwRWxBzLCnWvcwx5qbwf88I3ykD7gcJLWOTRfLLgosK7r6aeChz4thA3XRvuBfI0KB1tPVl2EQFlPXw==", - "deprecated": "Switch to 'npm install joi'", - "dependencies": { - "@hapi/address": "^4.0.0", - "@hapi/formula": "^2.0.0", - "@hapi/hoek": "^9.0.0", - "@hapi/pinpoint": "^2.0.0", - "@hapi/topo": "^5.0.0" - } - }, - "node_modules/@hapi/joi-date": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@hapi/joi-date/-/joi-date-2.0.1.tgz", - "integrity": "sha512-8be8JUEC8Wm1Do3ryJy+TXmkAL13b2JwXn7gILBoor8LopY/M+hJskodzOOxfJdckkfWnbmbnMEyJW3d/gZMfA==", - "dependencies": { - "moment": "2.x.x" - } - }, - "node_modules/@hapi/pinpoint": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@hapi/pinpoint/-/pinpoint-2.0.0.tgz", - "integrity": "sha512-vzXR5MY7n4XeIvLpfl3HtE3coZYO4raKXW766R6DZw/6aLqR26iuZ109K7a0NtF2Db0jxqh7xz2AxkUwpUFybw==", - "deprecated": "Moved to 'npm install @sideway/pinpoint'" - }, - "node_modules/@hapi/topo": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.0.0.tgz", - "integrity": "sha512-tFJlT47db0kMqVm3H4nQYgn6Pwg10GTZHb1pwmSiv1K4ks6drQOtfEF5ZnPjkvC+y4/bUPHK+bc87QvLcL+WMw==", - "dependencies": { - "@hapi/hoek": "^9.0.0" - } - }, - "node_modules/@hapi/wreck": { - "version": "17.1.0", - "resolved": "https://registry.npmjs.org/@hapi/wreck/-/wreck-17.1.0.tgz", - "integrity": "sha512-nx6sFyfqOpJ+EFrHX+XWwJAxs3ju4iHdbB/bwR8yTNZOiYmuhA8eCe7lYPtYmb4j7vyK/SlbaQsmTtUrMvPEBw==", - "dependencies": { - "@hapi/boom": "9.x.x", - "@hapi/bourne": "2.x.x", - "@hapi/hoek": "9.x.x" - } - }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@mapbox/node-pre-gyp": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.1.tgz", - "integrity": "sha512-CUBdThIZMoLEQQxACwhLsPg/puxBca0abTH3ixuvBQkhjJ80Hdp99jmVjxFCOa52/tZqN9d70IbGUf+OuKDHGA==", - "dependencies": { - "detect-libc": "^1.0.3", - "http-proxy-agent": "^4.0.1", - "make-dir": "^3.1.0", - "node-fetch": "^2.6.1", - "nopt": "^5.0.0", - "npmlog": "^4.1.2", - "rimraf": "^3.0.2", - "semver": "^7.3.4", - "tar": "^6.1.0" - }, - "bin": { - "node-pre-gyp": "bin/node-pre-gyp" - } - }, - "node_modules/@mapbox/node-pre-gyp/node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "engines": { - "node": ">=10" - } - }, - "node_modules/@mapbox/node-pre-gyp/node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@mapbox/node-pre-gyp/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@mapbox/node-pre-gyp/node_modules/minipass": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", - "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@mapbox/node-pre-gyp/node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@mapbox/node-pre-gyp/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@mapbox/node-pre-gyp/node_modules/nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@mapbox/node-pre-gyp/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@mapbox/node-pre-gyp/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@mapbox/node-pre-gyp/node_modules/tar": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz", - "integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==", - "dependencies": { - "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" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@mapbox/node-pre-gyp/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/@microsoft/recognizers-text": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@microsoft/recognizers-text/-/recognizers-text-1.3.0.tgz", - "integrity": "sha512-0gUhtS/0qSF6veB3Olu55IuJ0Skwg4u1IbJX9KFj1QeK8z6cw69/p637IPD2NgXLlXCy2HEqLvUW/mgbDp3rWg==", - "engines": { - "node": ">=10.3.0" - } - }, - "node_modules/@microsoft/recognizers-text-choice": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@microsoft/recognizers-text-choice/-/recognizers-text-choice-1.3.0.tgz", - "integrity": "sha512-I2LQAJJ9TJthJYWZNzooJD6+5KUkr+H+m54XpjY+vKjR81DPVFUL/SWZVyv+cC7eePFwrDv3gUnkXYS+Lp0hmA==", - "dependencies": { - "@microsoft/recognizers-text": "~1.3.0", - "grapheme-splitter": "^1.0.2" - }, - "engines": { - "node": ">=10.3.0" - } - }, - "node_modules/@microsoft/recognizers-text-data-types-timex-expression": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@microsoft/recognizers-text-data-types-timex-expression/-/recognizers-text-data-types-timex-expression-1.3.0.tgz", - "integrity": "sha512-REHUXmMUI1jL3b9v+aSdzKxLxRdejsfg9McYRxY3LW0Gu4UbwD7Q+K6mtSo40cwg8uh6fiV9GY8hDuKXHH6dVA==", - "engines": { - "node": ">=10.3.0" - } - }, - "node_modules/@microsoft/recognizers-text-date-time": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@microsoft/recognizers-text-date-time/-/recognizers-text-date-time-1.3.0.tgz", - "integrity": "sha512-bgw4TS726maTg53M6SQRHQOzOH0za0zmBWnnGo0wQdbDfK+bgq5aeDSD4k/HhXvfkOD6zzRd3+tG3Dqyp/kFaQ==", - "dependencies": { - "@microsoft/recognizers-text": "~1.3.0", - "@microsoft/recognizers-text-number": "~1.3.0", - "@microsoft/recognizers-text-number-with-unit": "~1.3.0", - "lodash.isequal": "^4.5.0", - "lodash.tonumber": "^4.0.3" - }, - "engines": { - "node": ">=10.3.0" - } - }, - "node_modules/@microsoft/recognizers-text-number": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@microsoft/recognizers-text-number/-/recognizers-text-number-1.3.0.tgz", - "integrity": "sha512-KVFxvaXW9E7UkuF0EYCghvCn0u+N5L7bBXeP4IKB6fXkQd6GAZ9zNA2Acdm9lJzCRxcsBYFbRLcRMrPHwAa32w==", - "dependencies": { - "@microsoft/recognizers-text": "~1.3.0", - "bignumber.js": "^7.2.1", - "lodash.escaperegexp": "^4.1.2", - "lodash.sortby": "^4.7.0", - "lodash.trimend": "^4.5.1" - }, - "engines": { - "node": ">=10.3.0" - } - }, - "node_modules/@microsoft/recognizers-text-number-with-unit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@microsoft/recognizers-text-number-with-unit/-/recognizers-text-number-with-unit-1.3.0.tgz", - "integrity": "sha512-FxBD1ZQLvr4c+ssVyqUjblg+i21GbzIsDEHd5VWon5wg+2qrqixlmP1mXsXG+iGRV3qqeZCtTFdqkwJ3MWhovA==", - "dependencies": { - "@microsoft/recognizers-text": "~1.3.0", - "@microsoft/recognizers-text-number": "~1.3.0", - "lodash.escaperegexp": "^4.1.2", - "lodash.last": "^3.0.0", - "lodash.max": "^4.0.1" - }, - "engines": { - "node": ">=10.3.0" - } - }, - "node_modules/@microsoft/recognizers-text-sequence": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@microsoft/recognizers-text-sequence/-/recognizers-text-sequence-1.3.0.tgz", - "integrity": "sha512-LXZ9AakClrdPVfEphCJFETjw6n8w/LwW1Yoj9ZKcGI9PGvH6RR+haS4GSZuHeMhEacmaa3NkzD+I44qYIvym8Q==", - "dependencies": { - "@microsoft/recognizers-text": "~1.3.0", - "grapheme-splitter": "^1.0.2" - }, - "engines": { - "node": ">=10.3.0" - } - }, - "node_modules/@microsoft/recognizers-text-suite": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@microsoft/recognizers-text-suite/-/recognizers-text-suite-1.3.0.tgz", - "integrity": "sha512-uqG4vzy5N2CmBaeINny0bLdnGp0jDbT1moNoLC+Yim3G8kHOU9lpDfwA6VN6HTYaDM5854SNMEzLjJdS1TPFTw==", - "dependencies": { - "@microsoft/recognizers-text": "~1.3.0", - "@microsoft/recognizers-text-choice": "~1.3.0", - "@microsoft/recognizers-text-data-types-timex-expression": "~1.3.0", - "@microsoft/recognizers-text-date-time": "~1.3.0", - "@microsoft/recognizers-text-number": "~1.3.0", - "@microsoft/recognizers-text-number-with-unit": "~1.3.0", - "@microsoft/recognizers-text-sequence": "~1.3.0" - }, - "engines": { - "node": ">=10.3.0" - } - }, - "node_modules/@nlpjs/builtin-duckling": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@nlpjs/builtin-duckling/-/builtin-duckling-4.19.1.tgz", - "integrity": "sha512-XrmVAxMTfZ+a7D0cHLpP1gFz5KxAhCMzm43DrnHP1aVSFW9uLtGffWEkCa04uIWNv6yqSf3AIc58n0xssn0YqQ==", - "dependencies": { - "@nlpjs/core": "^4.19.1" - } - }, - "node_modules/@nlpjs/builtin-microsoft": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@nlpjs/builtin-microsoft/-/builtin-microsoft-4.19.1.tgz", - "integrity": "sha512-dYLTGgpb0wpRAS4MHe3pTHt8jGBslSm/dsGB/jwPY9QaEngw8DdwOIjOngMVpb5g6NPUUzQowbrGOya6oRdkCA==", - "dependencies": { - "@microsoft/recognizers-text-suite": "1.3.0", - "@nlpjs/core": "^4.19.1" - } - }, - "node_modules/@nlpjs/core": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@nlpjs/core/-/core-4.19.1.tgz", - "integrity": "sha512-ClJaYE0ZfJzTGlx8QMFsyUHIdICjN/Q/Hpy0lCG3uyrf3+QfEQe3JeNogEyv0Wxrq0LvdWpYu3p8wYnZTPv34g==" - }, - "node_modules/@nlpjs/core-loader": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@nlpjs/core-loader/-/core-loader-4.19.1.tgz", - "integrity": "sha512-Vn4SbA4YESHimjpyRBRuvtbfLJQ9+RkGyot10WvM3nuIVvoeVBz3ijbGLU+I+jAgN6e8V55tE30AXGN7i4XhoA==", - "dependencies": { - "@nlpjs/core": "^4.19.1", - "@nlpjs/request": "^4.17.0" - } - }, - "node_modules/@nlpjs/emoji": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@nlpjs/emoji/-/emoji-4.19.1.tgz", - "integrity": "sha512-nNjGsh+lYGDy9e+aLbb9qpmbszPkaER0rOOZA7Qz6CWu57SMWAUHAqwMiRcQUupVVnUUhTx8b5+XQzoOW+AJsQ==", - "dependencies": { - "@nlpjs/core": "^4.19.1" - } - }, - "node_modules/@nlpjs/evaluator": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/@nlpjs/evaluator/-/evaluator-4.17.1.tgz", - "integrity": "sha512-dHaqDyfM6B6QmbNehG5lMukMWOZwcd/WwiC7jAh3eG/X73jNsPz9p66H3XyYpc3s9kfpxWIgc+S789Sar4uT/Q==", - "dependencies": { - "escodegen": "^2.0.0", - "esprima": "^4.0.1" - } - }, - "node_modules/@nlpjs/lang-all": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-all/-/lang-all-4.19.1.tgz", - "integrity": "sha512-vUmz36sH8rhPYcxR/10+X/hH47Vi9X8MrE/dIb2Omq2N+dMLkEBqBmAFiaFGOF3+8PzHea8mgVJm5QVBaxmSwA==", - "dependencies": { - "@nlpjs/core": "^4.19.1", - "@nlpjs/lang-ar": "^4.19.1", - "@nlpjs/lang-bn": "^4.19.1", - "@nlpjs/lang-ca": "^4.19.1", - "@nlpjs/lang-cs": "^4.19.1", - "@nlpjs/lang-da": "^4.19.1", - "@nlpjs/lang-de": "^4.19.1", - "@nlpjs/lang-el": "^4.19.1", - "@nlpjs/lang-en": "^4.19.1", - "@nlpjs/lang-es": "^4.19.1", - "@nlpjs/lang-eu": "^4.19.1", - "@nlpjs/lang-fa": "^4.19.1", - "@nlpjs/lang-fi": "^4.19.1", - "@nlpjs/lang-fr": "^4.19.1", - "@nlpjs/lang-ga": "^4.19.1", - "@nlpjs/lang-gl": "^4.19.1", - "@nlpjs/lang-hi": "^4.19.1", - "@nlpjs/lang-hu": "^4.19.1", - "@nlpjs/lang-hy": "^4.19.1", - "@nlpjs/lang-id": "^4.19.1", - "@nlpjs/lang-it": "^4.19.1", - "@nlpjs/lang-ja": "^4.19.1", - "@nlpjs/lang-ko": "^4.19.1", - "@nlpjs/lang-lt": "^4.19.1", - "@nlpjs/lang-ms": "^4.19.1", - "@nlpjs/lang-ne": "^4.19.1", - "@nlpjs/lang-nl": "^4.19.1", - "@nlpjs/lang-no": "^4.19.1", - "@nlpjs/lang-pl": "^4.19.1", - "@nlpjs/lang-pt": "^4.19.1", - "@nlpjs/lang-ro": "^4.19.1", - "@nlpjs/lang-ru": "^4.19.1", - "@nlpjs/lang-sl": "^4.19.1", - "@nlpjs/lang-sr": "^4.19.1", - "@nlpjs/lang-sv": "^4.19.1", - "@nlpjs/lang-ta": "^4.19.1", - "@nlpjs/lang-th": "^4.19.1", - "@nlpjs/lang-tl": "^4.19.1", - "@nlpjs/lang-tr": "^4.19.1", - "@nlpjs/lang-uk": "^4.19.1", - "@nlpjs/lang-zh": "^4.19.1" - } - }, - "node_modules/@nlpjs/lang-ar": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-ar/-/lang-ar-4.19.1.tgz", - "integrity": "sha512-+7HZ64eFqOS6ztvi/gZ7UjHchf9dRa/0IwO+5dX70CigmO2lSQPR8dFdLvYzwduekmzTd9OfqY0dXWCnuKJzDg==", - "dependencies": { - "@nlpjs/core": "^4.19.1" - } - }, - "node_modules/@nlpjs/lang-bn": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-bn/-/lang-bn-4.19.1.tgz", - "integrity": "sha512-uWZ6ocxQHmQRXBjRbmb+7mwScbTqeaixP/+YAb84OasdQ8pBNXNYBbpC/i1jzzHGYMnDBu6iE71Q02LQZUsatw==", - "dependencies": { - "@nlpjs/core": "^4.19.1" - } - }, - "node_modules/@nlpjs/lang-ca": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-ca/-/lang-ca-4.19.1.tgz", - "integrity": "sha512-KYQsFKhLjMC3otT/rTh/9Gc3QbhAKBzTVNSLHwY3IaOMUmQEK0CI+KLtSirzL/NUwJZ6XO0ngNyjlYzZW3sBGg==", - "dependencies": { - "@nlpjs/core": "^4.19.1" - } - }, - "node_modules/@nlpjs/lang-cs": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-cs/-/lang-cs-4.19.1.tgz", - "integrity": "sha512-sfEwCwy94zEGMeTI/YDBXiSCjypHK9qVKtZvw2C/jJTvZOU+ra5t0PK1lj877JLW1d33wQvLq6TxwivXvbSdEA==", - "dependencies": { - "@nlpjs/core": "^4.19.1" - } - }, - "node_modules/@nlpjs/lang-da": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-da/-/lang-da-4.19.1.tgz", - "integrity": "sha512-2Fjb3iEesrrKrJSZpfojYltkn0VIaf/zDdAFYwRZi7DeHM2W0l6nqDXROqv3s741fKbPtz2Y1oS8Q/6z7VYwZA==", - "dependencies": { - "@nlpjs/core": "^4.19.1" - } - }, - "node_modules/@nlpjs/lang-de": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-de/-/lang-de-4.19.1.tgz", - "integrity": "sha512-mSpigSN+qtW46XctBjJeZO1VwzFCd5ieOZCFJLm8sdsc0BTzi8ycbTLpbmKAowL2Cy6vxYEA6DYJeV11q2Ymxw==", - "dependencies": { - "@nlpjs/core": "^4.19.1" - } - }, - "node_modules/@nlpjs/lang-el": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-el/-/lang-el-4.19.1.tgz", - "integrity": "sha512-Rf5D/Tw/ZsSzi2eMLKGHiEc9RcLdZfu4GzFgKJWvoYQHcZu+a2ieCQWr4/AlUCEoRkhiKxKyKGXXZGRWL3YiQw==", - "dependencies": { - "@nlpjs/core": "^4.19.1" - } - }, - "node_modules/@nlpjs/lang-en": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-en/-/lang-en-4.19.1.tgz", - "integrity": "sha512-/WymRzeEf9TXTmHkcCe3hbH4lKMjeqJBN3x6DF/pn9v8IXNQREUCxmdGgEkNvoqmenvHzxs5jsqb2M4q5/HeoQ==", - "dependencies": { - "@nlpjs/core": "^4.19.1", - "@nlpjs/lang-en-min": "^4.19.1" - } - }, - "node_modules/@nlpjs/lang-en-min": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-en-min/-/lang-en-min-4.19.1.tgz", - "integrity": "sha512-HGfTrOrnou2qlUu5KD7xPGZWhS9jxIZgGeq3CEW8SEvVtjaqB9roCKIvurkTCEdSK7dwINamo2db2VcdSS4Tzw==", - "dependencies": { - "@nlpjs/core": "^4.19.1" - } - }, - "node_modules/@nlpjs/lang-es": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-es/-/lang-es-4.19.1.tgz", - "integrity": "sha512-LkQUQWBD7F8O7uF9mYyp/xxKU43RLRNZkmrM2flhFtMF/lLU0kKTLDicpcbpuurzmKmjdRTYWhrFrbZQg2tM2g==", - "dependencies": { - "@nlpjs/core": "^4.19.1" - } - }, - "node_modules/@nlpjs/lang-eu": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-eu/-/lang-eu-4.19.1.tgz", - "integrity": "sha512-NwwZnT/vn/CVcyllwKsME1rkoVPg0mA5VNAVIuqR1m0RX/SYfYDtA+SWY4Hy/Ncf+Yb7WVHTRD6yoM/qWaCKXQ==", - "dependencies": { - "@nlpjs/core": "^4.19.1" - } - }, - "node_modules/@nlpjs/lang-fa": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-fa/-/lang-fa-4.19.1.tgz", - "integrity": "sha512-XajQ3HsCydZK+AAtX+d4Ous/9Gee74eJP9mgPZQ/I4LJ9/kIQ2r4QcJK/wEsPZPU0bRP3JAnwoOeD80fmRk7BQ==", - "dependencies": { - "@nlpjs/core": "^4.19.1" - } - }, - "node_modules/@nlpjs/lang-fi": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-fi/-/lang-fi-4.19.1.tgz", - "integrity": "sha512-V3gDI5D1rPUJV0ojO2QojVCamArqa/R12iuyDV/Gj4j5CKfw0SoesXCaVQO7BKlfcAjUKs7oWmQMogmmPDd4Bw==", - "dependencies": { - "@nlpjs/core": "^4.19.1" - } - }, - "node_modules/@nlpjs/lang-fr": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-fr/-/lang-fr-4.19.1.tgz", - "integrity": "sha512-rXdAsCtJe+Pw3IvhtSSQZYSpPa1LCFw57b8d6n8udzECPgnzP42nnrzsj3jglTzIEE5MFls2/dhFvMOEeKIPfQ==", - "dependencies": { - "@nlpjs/core": "^4.19.1" - } - }, - "node_modules/@nlpjs/lang-ga": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-ga/-/lang-ga-4.19.1.tgz", - "integrity": "sha512-ujzU+a3Km24sWWjk52HlxYZdnv61vzF9OzU/t+9sSWvphfNYqg2Ej2FL8j3y49KgwBZMILsGleNKhq8cy2Ljug==", - "dependencies": { - "@nlpjs/core": "^4.19.1" - } - }, - "node_modules/@nlpjs/lang-gl": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-gl/-/lang-gl-4.19.1.tgz", - "integrity": "sha512-0WGJwwoByfWvwlrzECNQOuAP8EqPC+Ztj1ephTcqvqezluUcDX3Xza05N6s2PpqpJMgnpeQMJk+coKcSS7I2bA==", - "dependencies": { - "@nlpjs/core": "^4.19.1" - } - }, - "node_modules/@nlpjs/lang-hi": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-hi/-/lang-hi-4.19.1.tgz", - "integrity": "sha512-4dr4ZTKw0BBKbpU6VvDUZMiyfBDgAXpCJYrbqZjTsjbQPKDK2vBUD3A8sWtp+kT0WxHQsLDuBbFhXLEvGaXdYg==", - "dependencies": { - "@nlpjs/core": "^4.19.1" - } - }, - "node_modules/@nlpjs/lang-hu": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-hu/-/lang-hu-4.19.1.tgz", - "integrity": "sha512-pnTirJ95+8d035FPNt7pSenBUT6++xCvVoyjlp6Dj7X7emr7Oj2TJaS2pPZzx7wRNEkULpFrHjo32WNsuFehdA==", - "dependencies": { - "@nlpjs/core": "^4.19.1" - } - }, - "node_modules/@nlpjs/lang-hy": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-hy/-/lang-hy-4.19.1.tgz", - "integrity": "sha512-32evM4Y2M/ljZQm603hH0eYC5NvKvB1lyExTInwKbtEjQzUBJ0PQEUQvKzD8pmqpUP5j5CIpRfIAPGrfYu9b2A==", - "dependencies": { - "@nlpjs/core": "^4.19.1" - } - }, - "node_modules/@nlpjs/lang-id": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-id/-/lang-id-4.19.1.tgz", - "integrity": "sha512-u0HheO4vn1L/iXCn5+RREIBMoz96fpFoTbqErsXnbomt88H0OoParfmQOr0ueyi0Akhq9cyHkgsecq123yx47Q==", - "dependencies": { - "@nlpjs/core": "^4.19.1" - } - }, - "node_modules/@nlpjs/lang-it": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-it/-/lang-it-4.19.1.tgz", - "integrity": "sha512-1hn/5qbameBKdQogDcSA7R/lrS2P1eXtNW6PYKopZwY1VFfatBuNOvbB2+X+X0naZdAnPIli6d82cOrZ+CR+Kg==", - "dependencies": { - "@nlpjs/core": "^4.19.1" - } - }, - "node_modules/@nlpjs/lang-ja": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-ja/-/lang-ja-4.19.1.tgz", - "integrity": "sha512-tfHxCoHEgyF3wU+4Hkb8MGwFYx7ZVFAYUiq3D9L6ncwl6ZKxIsEZBel6XjlfhWv1alBGZgZNSm9x5+Vqa2RmQQ==", - "dependencies": { - "@nlpjs/core": "^4.19.1", - "kuromoji": "^0.1.2" - } - }, - "node_modules/@nlpjs/lang-ko": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-ko/-/lang-ko-4.19.1.tgz", - "integrity": "sha512-xj44BX+UDRWoelFtCqAlFrsGj3bf7qO5fJpuXW82NT4X6YptjkInze97LTNEWkTJWVasZm4M0lLmN68iT9zKqg==", - "dependencies": { - "@nlpjs/core": "^4.19.1" - } - }, - "node_modules/@nlpjs/lang-lt": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-lt/-/lang-lt-4.19.1.tgz", - "integrity": "sha512-sE/N3R4kXYE74ZbH192pfF4+lCMXp1wAo12iKDtTvzI3KtgUa7AAR7lQg80obGDNkQ4b065ZxGy8rudqO/kCnw==", - "dependencies": { - "@nlpjs/core": "^4.19.1" - } - }, - "node_modules/@nlpjs/lang-ms": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-ms/-/lang-ms-4.19.1.tgz", - "integrity": "sha512-AKNb5chebVKRd4tpu4TNRNCUxhVpHglSfixqQrJ/aAlvT4YUHU8ZqVTYntZlEyhRPMSfsvfgI0+eaNU0TKtxtw==", - "dependencies": { - "@nlpjs/core": "^4.19.1", - "@nlpjs/lang-id": "^4.19.1" - } - }, - "node_modules/@nlpjs/lang-ne": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-ne/-/lang-ne-4.19.1.tgz", - "integrity": "sha512-QLwalf1jv+vgudKUiMY6RRc99zAPuEciuPvMRJmJKVqRinhXJyb+EEsGOZgWaVCfebIftdB3pMY96R8Ca+XwTg==", - "dependencies": { - "@nlpjs/core": "^4.19.1" - } - }, - "node_modules/@nlpjs/lang-nl": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-nl/-/lang-nl-4.19.1.tgz", - "integrity": "sha512-R6LnIy/oHb8Uw67WB5X3ebDPGFj1cYZLIe/kgdCEzFkZE/vA2a6S5F65tLgtarNtTQ9REVB2JEkajKHbCUFfPg==", - "dependencies": { - "@nlpjs/core": "^4.19.1" - } - }, - "node_modules/@nlpjs/lang-no": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-no/-/lang-no-4.19.1.tgz", - "integrity": "sha512-95g4OhSZqjlJMFbcIhqrRSOoL1JO/L/YZqZPVqOJd0xZZix24FEx8JDATmGfD0owMeZGxgxd5Lb3oTgFU6VR8A==", - "dependencies": { - "@nlpjs/core": "^4.19.1" - } - }, - "node_modules/@nlpjs/lang-pl": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-pl/-/lang-pl-4.19.1.tgz", - "integrity": "sha512-BHPbvbPx9e/uxAxJkLNyvjbqIwcUpTHnCA1lOKuTUqCkDJ0p7d0l6Cf2cIoN5gcV2XHcJmE/qMJwMmS8hmu/BQ==", - "dependencies": { - "@nlpjs/core": "^4.19.1" - } - }, - "node_modules/@nlpjs/lang-pt": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-pt/-/lang-pt-4.19.1.tgz", - "integrity": "sha512-YWivCQPX05FZmQVZxXH/TtpHqrz7vGNWD1li9KAP/2JL4zR+vE1Ec3ZiuJ0agPHpTcvbwGejfiW+s7YkWqCrcA==", - "dependencies": { - "@nlpjs/core": "^4.19.1" - } - }, - "node_modules/@nlpjs/lang-ro": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-ro/-/lang-ro-4.19.1.tgz", - "integrity": "sha512-xxmTU1GlszoSQtteziTs1072W5QkOLDTe4RO/phxxCjCEaFQvHDlKrVLO9pYoVUeQtKUbwb7wyrRkCDqPSmNNA==", - "dependencies": { - "@nlpjs/core": "^4.19.1" - } - }, - "node_modules/@nlpjs/lang-ru": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-ru/-/lang-ru-4.19.1.tgz", - "integrity": "sha512-Nqff30jwLeZA4WI9d9bgfVc1yBiNlTlsCdNQBlvBP7/TCizsYZBo3b+SLmzA87TsVfW0NyZpdhbmkeXW4TVC+Q==", - "dependencies": { - "@nlpjs/core": "^4.19.1" - } - }, - "node_modules/@nlpjs/lang-sl": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-sl/-/lang-sl-4.19.1.tgz", - "integrity": "sha512-JzqdPMx1moUE6GHZL+huhK/W9BHCv6GxLZSND6EjM+5/hfwc97xeQjnGdC3M5Z+a06rqjzTIXj4vtv61EhdrwA==", - "dependencies": { - "@nlpjs/core": "^4.19.1" - } - }, - "node_modules/@nlpjs/lang-sr": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-sr/-/lang-sr-4.19.1.tgz", - "integrity": "sha512-46zkBYyfTg8GUG6eBSCh8MRc3ZsEe6x4iSxu95Hs/aaYeADrkkPwreTg9xKCoFVLGXBPjiK6ukkPhborhoJLcw==", - "dependencies": { - "@nlpjs/core": "^4.19.1" - } - }, - "node_modules/@nlpjs/lang-sv": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-sv/-/lang-sv-4.19.1.tgz", - "integrity": "sha512-lC+QndPWivcQ1zNY5tUoX3hcfBFP4s4F+dgRo3QoDp1sLKhXIfevTB8XxDFmklKZ2iUhEvoe+fENdz2Iva8KQw==", - "dependencies": { - "@nlpjs/core": "^4.19.1" - } - }, - "node_modules/@nlpjs/lang-ta": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-ta/-/lang-ta-4.19.1.tgz", - "integrity": "sha512-2hpDU6HlzCH8T5DTmViuqsImp/oiZ3y4cHwYiv6a8lLmL/RE1t2p5wcAXhtSHHA4mc8n/ReMXHHZBuevwIaAJg==", - "dependencies": { - "@nlpjs/core": "^4.19.1" - } - }, - "node_modules/@nlpjs/lang-th": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-th/-/lang-th-4.19.1.tgz", - "integrity": "sha512-nWi7crXkR5pZbVvXMk7sCkHDxZWaq/mQMWSB/CoZWdARlbLiuX8xNXdbtLq9pCTENCRwZMzl1mY67O6enYOSBQ==", - "dependencies": { - "@nlpjs/core": "^4.19.1" - } - }, - "node_modules/@nlpjs/lang-tl": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-tl/-/lang-tl-4.19.1.tgz", - "integrity": "sha512-gRDPPOZSf7DAT4CxHsEEgWg5Nk2luQgzgaQZCcaex0DJqt0wtzvPcLACipzrwu7EgT0jNdKaR/rDU9wJbDn1sA==", - "dependencies": { - "@nlpjs/core": "^4.19.1" - } - }, - "node_modules/@nlpjs/lang-tr": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-tr/-/lang-tr-4.19.1.tgz", - "integrity": "sha512-o1Zj7QMG92HRKVJ7gIdmSA1QX5XYNqb7WJPWngCwys3HpfHHYRKIWDC20cs8DRo6nopr8p6xv6j9d0qvQ9Jzxg==", - "dependencies": { - "@nlpjs/core": "^4.19.1" - } - }, - "node_modules/@nlpjs/lang-uk": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-uk/-/lang-uk-4.19.1.tgz", - "integrity": "sha512-vFXxw7Mq4NRb1rlGmnaYUe7ymhS+xw2FTOAZIaoRc6Hy4Dv2RmkfPLjZlt3KwGLoK1cyG1cGl2tHgfzLUT+SSg==", - "dependencies": { - "@nlpjs/core": "^4.19.1" - } - }, - "node_modules/@nlpjs/lang-zh": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-zh/-/lang-zh-4.19.1.tgz", - "integrity": "sha512-2nF+2oxpWfiErkM/Kza4oTzQ+vjz6yTKM79FTKZOfKxRntGflwZyCkyQbDHn5iIXcC2hvH8hl3qMoYVPJT4oNw==", - "dependencies": { - "@nlpjs/core": "^4.19.1" - } - }, - "node_modules/@nlpjs/language": { - "version": "4.17.0", - "resolved": "https://registry.npmjs.org/@nlpjs/language/-/language-4.17.0.tgz", - "integrity": "sha512-oYIztvs2c0NX9edQC0X3GMh/00L0iREU2j3cTagDm+CtWxV7+UsfrxxJHMVm4g+Dr6vDMVgQvfksGDRPAIgTsQ==" - }, - "node_modules/@nlpjs/language-min": { - "version": "4.17.0", - "resolved": "https://registry.npmjs.org/@nlpjs/language-min/-/language-min-4.17.0.tgz", - "integrity": "sha512-MBmG28YyPY24q5mKlzufmZNNwiynmcjWT0r4mSI6hEKjiAhGLLakgAEtJNmOC1827G5bNqspR1PUGBaCxr/XeQ==" - }, - "node_modules/@nlpjs/ner": { - "version": "4.19.7", - "resolved": "https://registry.npmjs.org/@nlpjs/ner/-/ner-4.19.7.tgz", - "integrity": "sha512-UiqoTFuDo844tKmsc+q74PNi2qelpRqaKhdNXMy+5MxYf9zr/25sPik7SOMzy3VApoTmGIcejiyYZye+ypXWrQ==", - "dependencies": { - "@nlpjs/core": "^4.19.1", - "@nlpjs/language-min": "^4.17.0", - "@nlpjs/similarity": "^4.17.0" - } - }, - "node_modules/@nlpjs/neural": { - "version": "4.17.0", - "resolved": "https://registry.npmjs.org/@nlpjs/neural/-/neural-4.17.0.tgz", - "integrity": "sha512-3LUfHPRs27Z4W22O2AIq3e4y8NUDtKUVoMKT4N/4T/Hoy+PrL0aJRkorcu90w5CvkJwKMpLv8Dx0+dgQBsFH5g==" - }, - "node_modules/@nlpjs/nlg": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@nlpjs/nlg/-/nlg-4.19.1.tgz", - "integrity": "sha512-lAkJ82e2IjXuJD3MFpLEJCQSALS8JqsEfsvBoqwm2Ev54asirUrsXyQ7m/MTfyfNCn+nMFWf5vPFWIVKQhtF1g==", - "dependencies": { - "@nlpjs/core": "^4.19.1" - } - }, - "node_modules/@nlpjs/nlp": { - "version": "4.19.7", - "resolved": "https://registry.npmjs.org/@nlpjs/nlp/-/nlp-4.19.7.tgz", - "integrity": "sha512-Orc+dC2dgcgJp9djunOH12z7DydfYSjBm7TRZOvL9MRS3wNbS/SZKf0f02y0H+gQ904YpzHKnGUbOmefeBGs3Q==", - "dependencies": { - "@nlpjs/core": "^4.19.1", - "@nlpjs/ner": "^4.19.7", - "@nlpjs/nlg": "^4.19.1", - "@nlpjs/nlu": "^4.19.1", - "@nlpjs/sentiment": "^4.19.1", - "@nlpjs/slot": "^4.19.0" - } - }, - "node_modules/@nlpjs/nlu": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@nlpjs/nlu/-/nlu-4.19.1.tgz", - "integrity": "sha512-S5xfv0vpj2U7Y3g4yRtXMvO6IbyjBJl5qHHwbcojhTvIZ44kReO8qzVQjxx55nULdPKQwuZtghDrI0cRIuL6Vw==", - "dependencies": { - "@nlpjs/core": "^4.19.1", - "@nlpjs/language-min": "^4.17.0", - "@nlpjs/neural": "^4.17.0", - "@nlpjs/similarity": "^4.17.0" - } - }, - "node_modules/@nlpjs/request": { - "version": "4.17.0", - "resolved": "https://registry.npmjs.org/@nlpjs/request/-/request-4.17.0.tgz", - "integrity": "sha512-9LIdTcY5pAA+hPlX0qekeA699ux8JzcMe9Odjd2t2NEH0cVZSvrtNi+KHn/Eclk732H1erP7ciVncnT+hv9lAw==", - "dependencies": { - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0" - } - }, - "node_modules/@nlpjs/sentiment": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@nlpjs/sentiment/-/sentiment-4.19.1.tgz", - "integrity": "sha512-8Swmw7cDf6kUoOGWmTm1FORj01BmV98x4pjiJCvqFpLBDMfg8QniO6ejNKD++Bk4nu0Vtolp641ULEhYwn5l2w==", - "dependencies": { - "@nlpjs/core": "^4.19.1", - "@nlpjs/language-min": "^4.17.0", - "@nlpjs/neural": "^4.17.0" - } - }, - "node_modules/@nlpjs/similarity": { - "version": "4.17.0", - "resolved": "https://registry.npmjs.org/@nlpjs/similarity/-/similarity-4.17.0.tgz", - "integrity": "sha512-LCLlT2FuWtNtSpGtiwqv6n9n0i125jxcRHeyyVouMPlEGfsEgnRIe0AQH8N65PUNOChK1DG2NHjPPDMSUByfNg==" - }, - "node_modules/@nlpjs/slot": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/@nlpjs/slot/-/slot-4.19.0.tgz", - "integrity": "sha512-iIUrFPh9NGkhrF1Kf0IEKw6086sjlWrfJGf+JDN2Yomw1c6QJJjDGaBQh4Au5+7pD00kdA22xa+vLDGChhIp4A==" - }, - "node_modules/@nlpjs/xtables": { - "version": "4.17.0", - "resolved": "https://registry.npmjs.org/@nlpjs/xtables/-/xtables-4.17.0.tgz", - "integrity": "sha512-AA7OZlxQ8Dgis4kVii5YZ13BrWdvIwiDxmKuPTIgkdOjZ4m5MmJdA72DpOSKV/oG/TtH4mPkOz9/yva/0fiA0Q==", - "dependencies": { - "xlsx": "^0.16.2" - } - }, - "node_modules/@sideway/address": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.2.tgz", - "integrity": "sha512-idTz8ibqWFrPU8kMirL0CoPH/A29XOzzAzpyN3zQ4kAWnzmNfFmRaoMNN6VI8ske5M73HZyhIaW4OuSFIdM4oA==", - "dependencies": { - "@hapi/hoek": "^9.0.0" - } - }, - "node_modules/@sideway/formula": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", - "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==" - }, - "node_modules/@sideway/pinpoint": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", - "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" - }, - "node_modules/@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sinonjs/commons": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.6.0.tgz", - "integrity": "sha512-w4/WHG7C4WWFyE5geCieFJF6MZkbW4VAriol5KlmQXpAQdxvV0p26sqNZOW6Qyw6Y0l9K4g+cHvvczR2sEEpqg==", - "dev": true, - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/formatio": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-3.2.2.tgz", - "integrity": "sha512-B8SEsgd8gArBLMD6zpRw3juQ2FVSsmdd7qlevyDqzS9WTCtvF55/gAL+h6gue8ZvPYcdiPdvueM/qm//9XzyTQ==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^1", - "@sinonjs/samsam": "^3.1.0" - } - }, - "node_modules/@sinonjs/samsam": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-3.3.3.tgz", - "integrity": "sha512-bKCMKZvWIjYD0BLGnNrxVuw4dkWCYsLqFOUWw8VgKF/+5Y+mE7LfHWPIYoDXowH+3a9LsWDMo0uAP8YDosPvHQ==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^1.3.0", - "array-from": "^2.1.1", - "lodash": "^4.17.15" - } - }, - "node_modules/@sinonjs/text-encoding": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz", - "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==", - "dev": true - }, - "node_modules/@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "dev": true, - "dependencies": { - "defer-to-connect": "^1.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", - "dev": true - }, - "node_modules/@types/node": { - "version": "14.14.32", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.32.tgz", - "integrity": "sha512-/Ctrftx/zp4m8JOujM5ZhwzlWLx22nbQJiVqz8/zE15gOeEW+uly3FSX4fGFpcfEvFzXcMCJwq9lGVWgyARXhg==" - }, - "node_modules/@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==" - }, - "node_modules/@types/react": { - "version": "16.14.8", - "resolved": "https://registry.npmjs.org/@types/react/-/react-16.14.8.tgz", - "integrity": "sha512-QN0/Qhmx+l4moe7WJuTxNiTsjBwlBGHqKGvInSQCBdo7Qio0VtOqwsC0Wq7q3PbJlB0cR4Y4CVo1OOe6BOsOmA==", - "dependencies": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - } - }, - "node_modules/@types/scheduler": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.1.tgz", - "integrity": "sha512-EaCxbanVeyxDRTQBkdLb3Bvl/HK7PBK6UJjsSixB0iHKoWxE5uu2Q/DgtpOhPIojN0Zl1whvOd7PoHs2P0s5eA==" - }, - "node_modules/@ungap/promise-all-settled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", - "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", - "dev": true - }, - "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" - }, - "node_modules/accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", - "dependencies": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-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==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/adler-32": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.2.0.tgz", - "integrity": "sha1-aj5r8KY5ALoVZSgIyxXGgT0aXyU=", - "dependencies": { - "exit-on-epipe": "~1.0.1", - "printj": "~1.1.0" - }, - "bin": { - "adler32": "bin/adler32.njs" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/after": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", - "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=" - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/agent-base/node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/agent-base/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ajv": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "node_modules/ansi-align": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", - "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==", - "dev": true, - "dependencies": { - "string-width": "^3.0.0" - } - }, - "node_modules/ansi-align/node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-align/node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "node_modules/ansi-align/node_modules/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=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/ansi-align/node_modules/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==", - "dev": true, - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-align/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/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==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=" - }, - "node_modules/anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/apidoc": { - "version": "0.17.7", - "resolved": "https://registry.npmjs.org/apidoc/-/apidoc-0.17.7.tgz", - "integrity": "sha512-9Wf4bRPwCuWOIOxR42dDnsXnFw+rhJg5VrMQK+KmNxJwyIh30UqX6gvjjXSG6YO74MqE87F18bbQXUENK9dPGg==", - "dev": true, - "dependencies": { - "apidoc-core": "~0.8.2", - "commander": "^2.19.0", - "fs-extra": "^7.0.0", - "lodash": "^4.17.10", - "markdown-it": "^8.3.1", - "winston": "^3.0.0" - }, - "bin": { - "apidoc": "bin/apidoc" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/apidoc-core": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/apidoc-core/-/apidoc-core-0.8.3.tgz", - "integrity": "sha1-2dY1RYKd8lDSzKBJaDqH53U2S5Y=", - "dev": true, - "dependencies": { - "fs-extra": "^3.0.1", - "glob": "^7.1.1", - "iconv-lite": "^0.4.17", - "klaw-sync": "^2.1.0", - "lodash": "~4.17.4", - "semver": "~5.3.0" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/apidoc-core/node_modules/fs-extra": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", - "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^3.0.0", - "universalify": "^0.1.0" - } - }, - "node_modules/apidoc-core/node_modules/jsonfile": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", - "integrity": "sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/apidoc-core/node_modules/semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/apidoc/node_modules/fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" - }, - "node_modules/archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", - "dev": true - }, - "node_modules/are-we-there-yet": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/array-buffer-to-hex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-to-hex/-/array-buffer-to-hex-1.0.0.tgz", - "integrity": "sha512-arycdkxgK1cj6s03GDb96tlCxOl1n3kg9M2OHseUc6Pqyqp+lgfceFPmG507eI5V+oxOSEnlOw/dFc7LXBXF4Q==" - }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" - }, - "node_modules/array-from": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz", - "integrity": "sha1-z+nYwmYoudxa7MYqn12PHzUsEZU=", - "dev": true - }, - "node_modules/array-includes": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz", - "integrity": "sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2", - "get-intrinsic": "^1.1.1", - "is-string": "^1.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-includes/node_modules/es-abstract": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", - "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "is-callable": "^1.2.3", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.2", - "is-string": "^1.0.5", - "object-inspect": "^1.9.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-includes/node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-includes/node_modules/has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-includes/node_modules/is-callable": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-includes/node_modules/is-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", - "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-symbols": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-includes/node_modules/object-inspect": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", - "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-includes/node_modules/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==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat/node_modules/es-abstract": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", - "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "is-callable": "^1.2.3", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.2", - "is-string": "^1.0.5", - "object-inspect": "^1.9.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat/node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat/node_modules/has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat/node_modules/is-callable": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat/node_modules/is-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", - "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-symbols": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat/node_modules/object-inspect": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", - "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat/node_modules/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==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/arraybuffer.slice": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", - "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==" - }, - "node_modules/asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "dependencies": { - "safer-buffer": "~2.1.0" - } - }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "optional": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", - "dependencies": { - "lodash": "^4.17.14" - } - }, - "node_modules/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==" - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, - "node_modules/auto-bind": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-2.1.1.tgz", - "integrity": "sha512-NUwV1i9D3vxxY1KnfZgSZ716d6ovY7o8LfOwLhGIPFBowIb6Ln6DBW64+jCqPzUznel2hRSkQnYQqvh7/ldw8A==", - "dependencies": { - "@types/react": "^16.8.12" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/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=", - "optional": true, - "engines": { - "node": "*" - } - }, - "node_modules/aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", - "optional": true - }, - "node_modules/axios": { - "version": "0.21.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", - "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", - "dependencies": { - "follow-redirects": "^1.10.0" - } - }, - "node_modules/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=", - "dependencies": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, - "node_modules/backo2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" - }, - "node_modules/balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "node_modules/base64-arraybuffer": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz", - "integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI=", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/basic-auth": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", - "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", - "dev": true, - "dependencies": { - "safe-buffer": "5.1.2" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/bcrypt": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.0.1.tgz", - "integrity": "sha512-9BTgmrhZM2t1bNuDtrtIMVSmmxZBrJ71n8Wg+YgdjHuIWYF7SjjmCPZFB+/5i/o/PIeRpwVJR3P+NrpIItUjqw==", - "hasInstallScript": true, - "dependencies": { - "@mapbox/node-pre-gyp": "^1.0.0", - "node-addon-api": "^3.1.0" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dependencies": { - "tweetnacl": "^0.14.3" - } - }, - "node_modules/bignumber.js": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-7.2.1.tgz", - "integrity": "sha512-S4XzBk5sMB+Rcb/LNcpzXr57VRTxgAvaAEDAl1AwRx27j00hT84O6OkteE7u8UB3NuaaygCRrEpqox4uDOrbdQ==", - "engines": { - "node": "*" - } - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/bl/node_modules/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==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/blob": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", - "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==" - }, - "node_modules/block-stream": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", - "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", - "optional": true, - "dependencies": { - "inherits": "~2.0.0" - }, - "engines": { - "node": "0.4 || >=0.5.8" - } - }, - "node_modules/bluebird": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.1.tgz", - "integrity": "sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg==" - }, - "node_modules/body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", - "dependencies": { - "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" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/body-parser/node_modules/bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/boxen": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz", - "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==", - "dev": true, - "dependencies": { - "ansi-align": "^3.0.0", - "camelcase": "^5.3.1", - "chalk": "^3.0.0", - "cli-boxes": "^2.2.0", - "string-width": "^4.1.0", - "term-size": "^2.1.0", - "type-fest": "^0.8.1", - "widest-line": "^3.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/boxen/node_modules/ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/boxen/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/boxen/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/boxen/node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/boxen/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/boxen/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/boxen/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/boxen/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/boxen/node_modules/string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/boxen/node_modules/strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/boxen/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "node_modules/browserslist": { - "version": "4.16.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", - "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", - "dev": true, - "dependencies": { - "caniuse-lite": "^1.0.30001181", - "colorette": "^1.2.1", - "electron-to-chromium": "^1.3.649", - "escalade": "^3.1.1", - "node-releases": "^1.1.70" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" - }, - "node_modules/bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "dev": true, - "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cacheable-request/node_modules/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==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cacheable-request/node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", - "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001204", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001204.tgz", - "integrity": "sha512-JUdjWpcxfJ9IPamy2f5JaRDCaqJOxDzOSKtbdx4rH9VivMd1vIzoPumsJa9LoMIi4Fx2BV2KZOxWhNkBjaYivQ==", - "dev": true - }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "optional": true - }, - "node_modules/catharsis": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz", - "integrity": "sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A==", - "dev": true, - "dependencies": { - "lodash": "^4.17.15" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/cfb": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/cfb/-/cfb-1.2.0.tgz", - "integrity": "sha512-sXMvHsKCICVR3Naq+J556K+ExBo9n50iKl6LGarlnvuA2035uMlGA/qVrc0wQtow5P1vJEw9UyrKLCbtIKz+TQ==", - "dependencies": { - "adler-32": "~1.2.0", - "crc-32": "~1.2.0", - "printj": "~1.1.2" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/chai": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", - "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", - "dev": true, - "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^3.0.1", - "get-func-name": "^2.0.0", - "pathval": "^1.1.0", - "type-detect": "^4.0.5" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chai-as-promised": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz", - "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==", - "dev": true, - "dependencies": { - "check-error": "^1.0.2" - }, - "peerDependencies": { - "chai": ">= 2.1.2 < 5" - } - }, - "node_modules/chai/node_modules/deep-eql": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", - "dev": true, - "dependencies": { - "type-detect": "^4.0.0" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/chokidar": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", - "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", - "dev": true, - "dependencies": { - "anymatch": "~3.1.1", - "braces": "~3.0.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" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.1" - } - }, - "node_modules/chownr": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.3.tgz", - "integrity": "sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw==" - }, - "node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/cli-boxes": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", - "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-color": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-1.4.0.tgz", - "integrity": "sha512-xu6RvQqqrWEo6MPR1eixqGPywhYBHRs653F9jfXB2Hx4jdM/3WxiNE1vppRmxtMIfl16SFYTpYlrnqH/HsK/2w==", - "dependencies": { - "ansi-regex": "^2.1.1", - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "memoizee": "^0.4.14", - "timers-ext": "^0.1.5" - } - }, - "node_modules/cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dependencies": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/cliui/node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" - }, - "node_modules/cliui/node_modules/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=", - "engines": { - "node": ">=4" - } - }, - "node_modules/cliui/node_modules/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==", - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "dev": true, - "dependencies": { - "mimic-response": "^1.0.0" - } - }, - "node_modules/code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/codepage": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/codepage/-/codepage-1.14.0.tgz", - "integrity": "sha1-jL4lSBMjVZ19MHVxsP/5HnodL5k=", - "dependencies": { - "commander": "~2.14.1", - "exit-on-epipe": "~1.0.1" - }, - "bin": { - "codepage": "bin/codepage.njs" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/codepage/node_modules/commander": { - "version": "2.14.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.14.1.tgz", - "integrity": "sha512-+YR16o3rK53SmWHU3rEM3tPAh2rwb1yPcQX5irVn7mb0gXbwuCCrnkbV5+PBfETdfg1vui07nM6PCG1zndcjQw==" - }, - "node_modules/color": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/color/-/color-3.0.0.tgz", - "integrity": "sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.1", - "color-string": "^1.5.2" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "node_modules/color-string": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", - "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", - "dev": true, - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "node_modules/colorette": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", - "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", - "dev": true - }, - "node_modules/colornames": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/colornames/-/colornames-1.1.1.tgz", - "integrity": "sha1-+IiQMGhcfE/54qVZ9Qd+t2qBb5Y=", - "dev": true - }, - "node_modules/colors": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz", - "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==", - "dev": true, - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/colorspace": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.2.tgz", - "integrity": "sha512-vt+OoIP2d76xLhjwbBaucYlNSpPsrJWPlBTtwCpQKIu6/CSMutyzX93O/Do0qzpH3YoHEes8YEFXyZ797rEhzQ==", - "dev": true, - "dependencies": { - "color": "3.0.x", - "text-hex": "1.0.x" - } - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - }, - "node_modules/comment-parser": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-0.5.5.tgz", - "integrity": "sha512-oB3TinFT+PV3p8UwDQt71+HkG03+zwPwikDlKU6ZDmql6QX2zFlQ+G0GGSDqyJhdZi4PSlzFBm+YJ+ebOX3Vgw==", - "dev": true - }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "node_modules/component-bind": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", - "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=" - }, - "node_modules/component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", - "dev": true - }, - "node_modules/component-inherit": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", - "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=" - }, - "node_modules/compressible": { - "version": "2.0.17", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.17.tgz", - "integrity": "sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw==", - "dependencies": { - "mime-db": ">= 1.40.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "dependencies": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/compression/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "node_modules/config-chain": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", - "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", - "dependencies": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" - } - }, - "node_modules/configstore": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", - "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", - "dev": true, - "dependencies": { - "dot-prop": "^5.2.0", - "graceful-fs": "^4.1.2", - "make-dir": "^3.0.0", - "unique-string": "^2.0.0", - "write-file-atomic": "^3.0.0", - "xdg-basedir": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/confusing-browser-globals": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz", - "integrity": "sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw==", - "dev": true - }, - "node_modules/connect": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", - "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "finalhandler": "1.1.2", - "parseurl": "~1.3.3", - "utils-merge": "1.0.1" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/connect/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" - }, - "node_modules/contains-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", - "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", - "dependencies": { - "safe-buffer": "5.1.2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" - }, - "node_modules/cookiejar": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz", - "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==", - "dev": true - }, - "node_modules/core-js": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", - "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==", - "deprecated": "core-js@<3.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.", - "hasInstallScript": true - }, - "node_modules/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=" - }, - "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dev": true, - "dependencies": { - "object-assign": "^4", - "vary": "^1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/crc-32": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz", - "integrity": "sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA==", - "dependencies": { - "exit-on-epipe": "~1.0.1", - "printj": "~1.1.0" - }, - "bin": { - "crc32": "bin/crc32.njs" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/cron-parser": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-2.13.0.tgz", - "integrity": "sha512-UWeIpnRb0eyoWPVk+pD3TDpNx3KCFQeezO224oJIkktBrcW6RoAPOx5zIKprZGfk6vcYSmA8yQXItejSaDBhbQ==", - "dependencies": { - "is-nan": "^1.2.1", - "moment-timezone": "^0.5.25" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/cross-env": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-5.2.1.tgz", - "integrity": "sha512-1yHhtcfAd1r4nwQgknowuUNfIT9E8dOMMspC36g45dN+iD1blloi7xp8X/xAIDnjHWyt1uQ8PHk2fkNaym7soQ==", - "dependencies": { - "cross-spawn": "^6.0.5" - }, - "bin": { - "cross-env": "dist/bin/cross-env.js", - "cross-env-shell": "dist/bin/cross-env-shell.js" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "node_modules/cross-spawn/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/crypto-digest-sync": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/crypto-digest-sync/-/crypto-digest-sync-1.0.0.tgz", - "integrity": "sha512-UQBOB5z+HF4iA8shKQ3PPwhCmdFAihwcytD1Qh4uiz78x04cZZmKtZ1F1VyAjkrA8uEZqXt2tMXfj3dJHtcbng==" - }, - "node_modules/crypto-random-hex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-hex/-/crypto-random-hex-1.0.0.tgz", - "integrity": "sha512-1DuZQ03El13TRgfrqbbjW40Gvi4OKInny/Wxqj23/JMXe214C/3Tlz92bKXWDW3NZT5RjXUGdYW4qiIOUPf+cA==", - "dependencies": { - "array-buffer-to-hex": "^1.0.0" - } - }, - "node_modules/crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/csstype": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.8.tgz", - "integrity": "sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw==" - }, - "node_modules/d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "dependencies": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "optional": true, - "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/dateformat": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", - "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", - "engines": { - "node": "*" - } - }, - "node_modules/dayjs": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.10.4.tgz", - "integrity": "sha512-RI/Hh4kqRc1UKLOAf/T5zdMMX5DQIlDxwUe3wSyMMnEbGunnpENCdbUgM+dW7kXidZqCttBrmw7BhN4TMddkCw==" - }, - "node_modules/debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "dev": true, - "dependencies": { - "mimic-response": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/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=" - }, - "node_modules/defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", - "dev": true - }, - "node_modules/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==", - "dependencies": { - "object-keys": "^1.0.12" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" - }, - "node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" - }, - "node_modules/detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", - "bin": { - "detect-libc": "bin/detect-libc.js" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/diagnostics": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/diagnostics/-/diagnostics-1.1.1.tgz", - "integrity": "sha512-8wn1PmdunLJ9Tqbx+Fx/ZEuHfJf4NKSN2ZBj7SJC/OWRWha843+WsTjqMe1B5E3p28jqBlp+mJ2fPVxPyNgYKQ==", - "dev": true, - "dependencies": { - "colorspace": "1.1.x", - "enabled": "1.0.x", - "kuler": "1.0.x" - } - }, - "node_modules/diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/docker-modem": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/docker-modem/-/docker-modem-2.1.4.tgz", - "integrity": "sha512-vDTzZjjO1sXMY7m0xKjGdFMMZL7vIUerkC3G4l6rnrpOET2M6AOufM8ajmQoOB+6RfSn6I/dlikCUq/Y91Q1sQ==", - "dependencies": { - "debug": "^4.1.1", - "readable-stream": "^3.5.0", - "split-ca": "^1.0.1", - "ssh2": "^0.8.7" - }, - "engines": { - "node": ">= 8.0" - } - }, - "node_modules/docker-modem/node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/docker-modem/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/docker-modem/node_modules/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==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/dockerode": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/dockerode/-/dockerode-3.2.1.tgz", - "integrity": "sha512-XsSVB5Wu5HWMg1aelV5hFSqFJaKS5x1aiV/+sT7YOzOq1IRl49I/UwV8Pe4x6t0iF9kiGkWu5jwfvbkcFVupBw==", - "dependencies": { - "docker-modem": "^2.1.0", - "tar-fs": "~2.0.1" - }, - "engines": { - "node": ">= 8.0" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "dev": true, - "dependencies": { - "is-obj": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dotenv": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.2.0.tgz", - "integrity": "sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/dottie": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.2.tgz", - "integrity": "sha512-fmrwR04lsniq/uSr8yikThDTrM7epXHBAAjH9TbeH3rEA8tdCO7mRzB9hdmdGyJCxF8KERo9CITcm3kGuoyMhg==" - }, - "node_modules/doublearray": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/doublearray/-/doublearray-0.0.2.tgz", - "integrity": "sha1-Yxhv6NNEEydtNiH2qg7F954ifvk=" - }, - "node_modules/downsample": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/downsample/-/downsample-1.4.0.tgz", - "integrity": "sha512-teYPhUPxqwtyICt47t1mP/LjhbRV/ghuKb/LmFDbcZ0CjqFD31tn6rVLZoeCEa1xr8+f2skW8UjRiLiGIKQE4w==" - }, - "node_modules/duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", - "dev": true - }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "optional": true, - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/ecc-jsbn/node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "optional": true - }, - "node_modules/ecdsa-sig-formatter": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/editorconfig": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", - "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", - "dependencies": { - "commander": "^2.19.0", - "lru-cache": "^4.1.5", - "semver": "^5.6.0", - "sigmund": "^1.0.1" - }, - "bin": { - "editorconfig": "bin/editorconfig" - } - }, - "node_modules/editorconfig/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" - }, - "node_modules/electron-to-chromium": { - "version": "1.3.700", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.700.tgz", - "integrity": "sha512-wQtaxVZzpOeCjW1CGuC5W3bYjE2jglvk076LcTautBOB9UtHztty7wNzjVsndiMcSsdUsdMy5w76w5J1U7OPTQ==", - "dev": true - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/enabled": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/enabled/-/enabled-1.0.2.tgz", - "integrity": "sha1-ll9lE9LC0cX0ZStkouM5ZGf8L5M=", - "dev": true, - "dependencies": { - "env-variable": "0.0.x" - } - }, - "node_modules/encode-utf8": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz", - "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==" - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/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==", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/engine.io-client": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.5.2.tgz", - "integrity": "sha512-QEqIp+gJ/kMHeUun7f5Vv3bteRHppHH/FMBQX/esFj/fuYfjyUKWGMo3VCvIP/V8bE9KcjHmRZrhIz2Z9oNsDA==", - "dependencies": { - "component-emitter": "~1.3.0", - "component-inherit": "0.0.3", - "debug": "~3.1.0", - "engine.io-parser": "~2.2.0", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "parseqs": "0.0.6", - "parseuri": "0.0.6", - "ws": "~7.4.2", - "xmlhttprequest-ssl": "~1.6.2", - "yeast": "0.1.2" - } - }, - "node_modules/engine.io-client/node_modules/component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" - }, - "node_modules/engine.io-client/node_modules/ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/engine.io-parser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.1.tgz", - "integrity": "sha512-x+dN/fBH8Ro8TFwJ+rkB2AmuVw9Yu2mockR/p3W8f8YtExwFgDvBDi0GWyb4ZLkpahtDGZgtr3zLovanJghPqg==", - "dependencies": { - "after": "0.8.2", - "arraybuffer.slice": "~0.0.7", - "base64-arraybuffer": "0.1.4", - "blob": "0.0.5", - "has-binary2": "~1.0.2" - } - }, - "node_modules/enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", - "dev": true - }, - "node_modules/env-variable": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/env-variable/-/env-variable-0.0.5.tgz", - "integrity": "sha512-zoB603vQReOFvTg5xMl9I1P2PnHsHQQKTEowsKKD7nseUfJq6UWzK+4YtlWUO1nhiQUxe6XMkk+JleSZD1NZFA==", - "dev": true - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-abstract": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.16.0.tgz", - "integrity": "sha512-xdQnfykZ9JMEiasTAJZJdMWCQ1Vm00NBw79/AWi7ELfZuuPCSOMDZbT9mkOfSctVtfhb+sAAzrm+j//GjjLHLg==", - "dev": true, - "dependencies": { - "es-to-primitive": "^1.2.0", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.0", - "is-callable": "^1.1.4", - "is-regex": "^1.0.4", - "object-inspect": "^1.6.0", - "object-keys": "^1.1.1", - "string.prototype.trimleft": "^2.1.0", - "string.prototype.trimright": "^2.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", - "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es5-ext": { - "version": "0.10.53", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", - "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", - "dependencies": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.3", - "next-tick": "~1.0.0" - } - }, - "node_modules/es6-error": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", - "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", - "dev": true - }, - "node_modules/es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "dependencies": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/es6-object-assign": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz", - "integrity": "sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw=", - "dev": true - }, - "node_modules/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==", - "dependencies": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, - "node_modules/es6-weak-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", - "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", - "dependencies": { - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-goat": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", - "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/escodegen": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", - "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/escodegen/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/eslint": { - "version": "7.22.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.22.0.tgz", - "integrity": "sha512-3VawOtjSJUQiiqac8MQc+w457iGLfuNGLFn8JmF051tTKbh5/x/0vlcEj8OgDCaw7Ysa2Jn8paGshV7x2abKXg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.0", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^13.6.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.21", - "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" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-airbnb": { - "version": "17.1.1", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-17.1.1.tgz", - "integrity": "sha512-xCu//8a/aWqagKljt+1/qAM62BYZeNq04HmdevG5yUGWpja0I/xhqd6GdLRch5oetEGFiJAnvtGuTEAese53Qg==", - "dev": true, - "dependencies": { - "eslint-config-airbnb-base": "^13.2.0", - "object.assign": "^4.1.0", - "object.entries": "^1.1.0" - }, - "engines": { - "node": ">= 4" - }, - "peerDependencies": { - "eslint": "^4.19.1 || ^5.3.0", - "eslint-plugin-import": "^2.18.0", - "eslint-plugin-jsx-a11y": "^6.2.3", - "eslint-plugin-react": "^7.14.2" - } - }, - "node_modules/eslint-config-airbnb-base": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-13.2.0.tgz", - "integrity": "sha512-1mg/7eoB4AUeB0X1c/ho4vb2gYkNH8Trr/EgCT/aGmKhhG+F6vF5s8+iRBlWAzFIAphxIdp3YfEKgEl0f9Xg+w==", - "dev": true, - "dependencies": { - "confusing-browser-globals": "^1.0.5", - "object.assign": "^4.1.0", - "object.entries": "^1.1.0" - }, - "engines": { - "node": ">= 4" - }, - "peerDependencies": { - "eslint": "^4.19.1 || ^5.3.0", - "eslint-plugin-import": "^2.17.2" - } - }, - "node_modules/eslint-config-prettier": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-4.3.0.tgz", - "integrity": "sha512-sZwhSTHVVz78+kYD3t5pCWSYEdVSBR0PXnwjDRsUs8ytIrK8PLXw+6FKp8r3Z7rx4ZszdetWlXYKOHoUrrwPlA==", - "dev": true, - "dependencies": { - "get-stdin": "^6.0.0" - }, - "bin": { - "eslint-config-prettier-check": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=3.14.1" - } - }, - "node_modules/eslint-config-prettier/node_modules/get-stdin": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", - "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "debug": "^2.6.9", - "resolve": "^1.13.1" - } - }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/eslint-import-resolver-node/node_modules/resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, - "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "debug": "^2.6.9", - "pkg-dir": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/eslint-module-utils/node_modules/pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", - "dev": true, - "dependencies": { - "find-up": "^2.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "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" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0" - } - }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", - "dev": true, - "dependencies": { - "esutils": "^2.0.2", - "isarray": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-import/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "node_modules/eslint-plugin-import/node_modules/resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, - "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/eslint-plugin-jsdoc": { - "version": "4.8.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-4.8.4.tgz", - "integrity": "sha512-VDP+BI2hWpKNNdsJDSPofSQ9q7jGLgWbDMI0LzOeEcfsTjSS7jQtHDUuVLQ5E+OV2MPyQPk/3lnVcHfStXk5yA==", - "dev": true, - "dependencies": { - "comment-parser": "^0.5.4", - "jsdoctypeparser": "3.1.0", - "lodash": "^4.17.11" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": ">=4.14.0" - } - }, - "node_modules/eslint-plugin-no-call": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-no-call/-/eslint-plugin-no-call-1.2.5.tgz", - "integrity": "sha512-LU8PYvpCNQDZrb8sijEl3Ovrf6J472+uIAqw2Vprhu6zbzZF6d0s1Y1JlXQVX0K8rtJ73YR8kfBOydPAEvb1EA==", - "dev": true, - "dependencies": { - "requireindex": "1.2.0" - }, - "engines": { - "node": ">=6.12.2" - } - }, - "node_modules/eslint-plugin-require-jsdoc": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-require-jsdoc/-/eslint-plugin-require-jsdoc-1.0.4.tgz", - "integrity": "sha1-Ayq+m+HzatDmbNTxSbS/q2/NTp0=", - "dev": true, - "peerDependencies": { - "eslint": ">=0.8.0" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/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==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint/node_modules/@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==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.10.4" - } - }, - "node_modules/eslint/node_modules/@babel/highlight": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", - "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.12.11", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "node_modules/eslint/node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint/node_modules/ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/eslint/node_modules/chalk/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/eslint/node_modules/chalk/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/eslint/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/eslint/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/eslint/node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/eslint/node_modules/globals": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.7.0.tgz", - "integrity": "sha512-Aipsz6ZKRxa/xQkZhNg0qIWXT6x6rD46f6x/PCnBomlttdIyAPak4YD9jTmKpZ72uROSMU87qJtcgpgHaVchiA==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/eslint/node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/eslint/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/eslint/node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/eslint/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/eslint/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/eslint/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/eslint/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "dev": true, - "dependencies": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", - "dependencies": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, - "node_modules/exit-on-epipe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz", - "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/express": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", - "dependencies": { - "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" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/express-rate-limit": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-4.0.4.tgz", - "integrity": "sha512-DLRj2vMO7Xgai8qWKU9O6ZztF2bdDmfFNFi9k3G9BPzJ+7MG7eWaaBikbe0eBpNGSxU8JziwW0PQKG78aNWa6g==" - }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/express/node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" - }, - "node_modules/ext": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", - "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", - "dependencies": { - "type": "^2.0.0" - } - }, - "node_modules/ext/node_modules/type": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.5.0.tgz", - "integrity": "sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw==" - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "devOptional": true - }, - "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "engines": [ - "node >=0.6.0" - ], - "optional": true - }, - "node_modules/fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", - "devOptional": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" - }, - "node_modules/fast-safe-stringify": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz", - "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==", - "dev": true - }, - "node_modules/fecha": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fecha/-/fecha-2.3.3.tgz", - "integrity": "sha512-lUGBnIamTAwk4znq5BcqsDaxSmZ9nDVJaij6NvRt/Tg4R69gERA+otPKbS86ROw9nxVMw2/mp1fnaiWqbs6Sdg==", - "dev": true - }, - "node_modules/fflate": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.3.11.tgz", - "integrity": "sha512-Rr5QlUeGN1mbOHlaqcSYMKVpPbgLy0AWT/W0EHxA6NGI12yO1jpoui2zBBvU2G824ltM6Ut8BFgfHSBGfkmS0A==" - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/fill-keys": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/fill-keys/-/fill-keys-1.0.2.tgz", - "integrity": "sha1-mo+jb06K1jTjv2tPPIiCVRRS6yA=", - "dev": true, - "dependencies": { - "is-object": "~1.0.1", - "merge-descriptors": "~1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/filter-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", - "integrity": "sha1-mzERErxsYSehbgFsbF1/GeCAXFs=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "dependencies": { - "locate-path": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/find-up/node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/find-up/node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "dependencies": { - "p-try": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/find-up/node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "dependencies": { - "p-limit": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/find-up/node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true, - "bin": { - "flat": "cli.js" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flat-cache/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/flatted": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", - "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", - "dev": true - }, - "node_modules/follow-redirects": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.0.tgz", - "integrity": "sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - } - }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "optional": true, - "engines": { - "node": "*" - } - }, - "node_modules/form-data": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/formidable": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.1.tgz", - "integrity": "sha512-Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg==", - "deprecated": "Please upgrade to latest, formidable@v2 or formidable@v3! Check these notes: https://bit.ly/2ZEqIau", - "dev": true - }, - "node_modules/forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/frac": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/frac/-/frac-1.1.2.tgz", - "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fromentries": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", - "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" - }, - "node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/fs-minipass": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", - "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", - "dependencies": { - "minipass": "^2.6.0" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "optional": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - }, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/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=", - "dev": true - }, - "node_modules/gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "dependencies": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-intrinsic/node_modules/has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/get-value": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-3.0.1.tgz", - "integrity": "sha512-mKZj9JLQrwMBtj5wxi6MH8Z5eSKaERpAwjg43dPtlGI1ZVEgH/qC7T8/6R2OBSUA+zzHBZgICsVJaEIV2tKTDA==", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "optional": true, - "dependencies": { - "assert-plus": "^1.0.0" - } - }, - "node_modules/glob": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.5.tgz", - "integrity": "sha512-J9dlskqUXK1OeTOYBEn5s8aMukWMwWfs+rPTn/jn50Ux4MNXVhubL1wu/j2t+H4NVI+cXEcCaYellqaPVGXNqQ==", - "dependencies": { - "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" - }, - "engines": { - "node": "*" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/global-dirs": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.1.0.tgz", - "integrity": "sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==", - "dev": true, - "dependencies": { - "ini": "1.3.7" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/global-dirs/node_modules/ini": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", - "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==", - "dev": true - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "dev": true, - "dependencies": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==" - }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==" - }, - "node_modules/growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true, - "engines": { - "node": ">=4.x" - } - }, - "node_modules/handlebars": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", - "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" - }, - "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^3.1.4" - } - }, - "node_modules/handlebars/node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - }, - "node_modules/har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "optional": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "deprecated": "this library is no longer supported", - "optional": true, - "dependencies": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/har-validator/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "optional": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/har-validator/node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "optional": true - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-bigints": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-binary2": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", - "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", - "dependencies": { - "isarray": "2.0.1" - } - }, - "node_modules/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=" - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" - }, - "node_modules/has-yarn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", - "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "bin": { - "he": "bin/he" - } - }, - "node_modules/hex-to-array-buffer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/hex-to-array-buffer/-/hex-to-array-buffer-1.1.0.tgz", - "integrity": "sha512-vvl3IM8FfT1uOnHtEqyjkDK9Luqz6MQrH82qIvVnjyXxRhkeaEZyRRPiBgf2yym3nweRVEfayxt/1SoTXZYd4Q==" - }, - "node_modules/hoek": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-6.1.3.tgz", - "integrity": "sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ==", - "deprecated": "This module has moved and is now available at @hapi/hoek. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues." - }, - "node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "node_modules/http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", - "dev": true - }, - "node_modules/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==", - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/http-errors/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/http-proxy-agent/node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/http-proxy-agent/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "optional": true, - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/https-proxy-agent/node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/https-proxy-agent/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/ignore-by-default": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", - "dev": true - }, - "node_modules/ignore-walk": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", - "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", - "dependencies": { - "minimatch": "^3.0.4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-lazy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" - }, - "node_modules/inflection": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.12.0.tgz", - "integrity": "sha1-ogCTVlbW9fa8TcdQLhrstwMihBY=", - "engines": [ - "node >= 0.4.0" - ] - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, - "node_modules/interpret": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", - "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/ipaddr.js": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", - "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "node_modules/is-bigint": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.1.tgz", - "integrity": "sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.0.tgz", - "integrity": "sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", - "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dev": true, - "dependencies": { - "ci-info": "^2.0.0" - }, - "bin": { - "is-ci": "bin.js" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-installed-globally": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", - "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", - "dev": true, - "dependencies": { - "global-dirs": "^2.0.1", - "is-path-inside": "^3.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-nan": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.0.tgz", - "integrity": "sha512-z7bbREymOqt2CCaZVly8aC4ML3Xhfi0ekuOnjO2L8vKdl+CttdVoGZQhd4adMFAsxQ5VeRVwORs4tU8RH+HFtQ==", - "dependencies": { - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/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==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-npm": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz", - "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", - "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", - "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=", - "dev": true - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", - "dev": true, - "dependencies": { - "has": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", - "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "devOptional": true - }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-yarn-global": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", - "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", - "dev": true - }, - "node_modules/isarray": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" - }, - "node_modules/isemail": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/isemail/-/isemail-3.2.0.tgz", - "integrity": "sha512-zKqkK+O+dGqevc93KNsbZ/TqTUFd46MwWjYOoMrjIMZ51eU7DtQG3Wmd9SQQT7i7RVnuTPEiYEWHU3MSbxC1Tg==", - "dependencies": { - "punycode": "2.x.x" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "optional": true - }, - "node_modules/istanbul-lib-processinfo": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz", - "integrity": "sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw==", - "dev": true, - "dependencies": { - "archy": "^1.0.0", - "cross-spawn": "^7.0.0", - "istanbul-lib-coverage": "^3.0.0-alpha.1", - "make-dir": "^3.0.0", - "p-map": "^3.0.0", - "rimraf": "^3.0.0", - "uuid": "^3.3.3" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-processinfo/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/istanbul-lib-processinfo/node_modules/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==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-processinfo/node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/istanbul-lib-processinfo/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-processinfo/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/istanbul-lib-processinfo/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-processinfo/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-processinfo/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/joi": { - "version": "14.3.1", - "resolved": "https://registry.npmjs.org/joi/-/joi-14.3.1.tgz", - "integrity": "sha512-LQDdM+pkOrpAn4Lp+neNIFV3axv1Vna3j38bisbQhETPMANYRbFJFUyOZcOClYvM/hppMhGWuKSFEK9vjrB+bQ==", - "deprecated": "This module has moved and is now available at @hapi/joi. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues.", - "dependencies": { - "hoek": "6.x.x", - "isemail": "3.x.x", - "topo": "3.x.x" - } - }, - "node_modules/jose": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/jose/-/jose-4.3.7.tgz", - "integrity": "sha512-S7Xfsy8nN9Iw/AZxk+ZxEbd5ImIwJPM0TfAo8zI8FF+3lidQ2yiK4dqzsaPKSbZD0woNVSY0KCql6rlKc5V7ug==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/panva" - } - }, - "node_modules/js-beautify": { - "version": "1.13.5", - "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.13.5.tgz", - "integrity": "sha512-MsXlH6Z/BiRYSkSRW3clNDqDjSpiSNOiG8xYVUBXt4k0LnGvDhlTGOlHX1VFtAdoLmtwjxMG5qiWKy/g+Ipv5w==", - "dependencies": { - "config-chain": "^1.1.12", - "editorconfig": "^0.15.3", - "glob": "^7.1.3", - "mkdirp": "^1.0.4", - "nopt": "^5.0.0" - }, - "bin": { - "css-beautify": "js/bin/css-beautify.js", - "html-beautify": "js/bin/html-beautify.js", - "js-beautify": "js/bin/js-beautify.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/js-beautify/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/js-beautify/node_modules/nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/js2xmlparser": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.1.tgz", - "integrity": "sha512-KrPTolcw6RocpYjdC7pL7v62e55q7qOMHvLX1UCLc5AAS8qeJ6nukarEJAF2KL2PZxlbGueEbINqZR2bDe/gUw==", - "dev": true, - "dependencies": { - "xmlcreate": "^2.0.3" - } - }, - "node_modules/jsbn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", - "integrity": "sha1-sBMHyym2GKHtJux56RH4A8TaAEA=" - }, - "node_modules/jsdoc": { - "version": "3.6.7", - "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-3.6.7.tgz", - "integrity": "sha512-sxKt7h0vzCd+3Y81Ey2qinupL6DpRSZJclS04ugHDNmRUXGzqicMJ6iwayhSA0S0DwwX30c5ozyUthr1QKF6uw==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.9.4", - "bluebird": "^3.7.2", - "catharsis": "^0.9.0", - "escape-string-regexp": "^2.0.0", - "js2xmlparser": "^4.0.1", - "klaw": "^3.0.0", - "markdown-it": "^10.0.0", - "markdown-it-anchor": "^5.2.7", - "marked": "^2.0.3", - "mkdirp": "^1.0.4", - "requizzle": "^0.2.3", - "strip-json-comments": "^3.1.0", - "taffydb": "2.6.2", - "underscore": "~1.13.1" - }, - "bin": { - "jsdoc": "jsdoc.js" - }, - "engines": { - "node": ">=8.15.0" - } - }, - "node_modules/jsdoc/node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true - }, - "node_modules/jsdoc/node_modules/entities": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz", - "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==", - "dev": true - }, - "node_modules/jsdoc/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jsdoc/node_modules/markdown-it": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-10.0.0.tgz", - "integrity": "sha512-YWOP1j7UbDNz+TumYP1kpwnP0aEa711cJjrAQrzd0UXlbJfc5aAq0F/PZHjiioqDC1NKgvIMX+o+9Bk7yuM2dg==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "entities": "~2.0.0", - "linkify-it": "^2.0.0", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" - }, - "bin": { - "markdown-it": "bin/markdown-it.js" - } - }, - "node_modules/jsdoc/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jsdoc/node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jsdoctypeparser": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsdoctypeparser/-/jsdoctypeparser-3.1.0.tgz", - "integrity": "sha512-JNbkKpDFqbYjg+IU3FNo7qjX7Opy7CwjHywT32zgAcz/d4lX6Umn5jOHVETUdnNNgGrMk0nEx1gvP0F4M0hzlQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", - "dev": true - }, - "node_modules/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==", - "dev": true - }, - "node_modules/json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "optional": true - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "devOptional": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "node_modules/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=", - "devOptional": true - }, - "node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/json5/node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsonwebtoken": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", - "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", - "dependencies": { - "jws": "^3.2.2", - "lodash.includes": "^4.3.0", - "lodash.isboolean": "^3.0.3", - "lodash.isinteger": "^4.0.4", - "lodash.isnumber": "^3.0.3", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.once": "^4.0.0", - "ms": "^2.1.1", - "semver": "^5.6.0" - }, - "engines": { - "node": ">=4", - "npm": ">=1.4.28" - } - }, - "node_modules/jsonwebtoken/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/jsonwebtoken/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "engines": [ - "node >=0.6.0" - ], - "optional": true, - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "node_modules/just-extend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.0.2.tgz", - "integrity": "sha512-FrLwOgm+iXrPV+5zDU6Jqu4gCRXbWEQg2O3SKONsWE4w7AXFRkryS53bpWdaL9cNol+AmR3AEYz6kn+o0fCPnw==", - "dev": true - }, - "node_modules/jwa": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", - "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", - "dependencies": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/jws": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", - "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", - "dependencies": { - "jwa": "^1.4.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "dev": true, - "dependencies": { - "json-buffer": "3.0.0" - } - }, - "node_modules/klaw": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz", - "integrity": "sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.9" - } - }, - "node_modules/klaw-sync": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-2.1.0.tgz", - "integrity": "sha1-PTvNhgDnv971MjHHOf8FOu1WDkQ=", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.11" - } - }, - "node_modules/kuler": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/kuler/-/kuler-1.0.1.tgz", - "integrity": "sha512-J9nVUucG1p/skKul6DU3PUZrhs0LPulNaeUOox0IyXDi8S4CztTHs1gQphhuZmzXG7VOQSf6NJfKuzteQLv9gQ==", - "dev": true, - "dependencies": { - "colornames": "^1.1.1" - } - }, - "node_modules/kuromoji": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/kuromoji/-/kuromoji-0.1.2.tgz", - "integrity": "sha512-V0dUf+C2LpcPEXhoHLMAop/bOht16Dyr+mDiIE39yX3vqau7p80De/koFqpiTcL1zzdZlc3xuHZ8u5gjYRfFaQ==", - "dependencies": { - "async": "^2.0.1", - "doublearray": "0.0.2", - "zlibjs": "^0.3.1" - } - }, - "node_modules/latest-version": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", - "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", - "dev": true, - "dependencies": { - "package-json": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/linkify-it": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz", - "integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==", - "dev": true, - "dependencies": { - "uc.micro": "^1.0.1" - } - }, - "node_modules/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=", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/locate-path/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "engines": { - "node": ">=4" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=" - }, - "node_modules/lodash.escaperegexp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", - "integrity": "sha1-ZHYsSGGAglGKw99Mz11YhtriA0c=" - }, - "node_modules/lodash.flattendeep": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", - "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", - "dev": true - }, - "node_modules/lodash.includes": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", - "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=" - }, - "node_modules/lodash.isboolean": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=" - }, - "node_modules/lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" - }, - "node_modules/lodash.isinteger": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", - "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=" - }, - "node_modules/lodash.isnumber": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", - "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=" - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" - }, - "node_modules/lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" - }, - "node_modules/lodash.last": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash.last/-/lodash.last-3.0.0.tgz", - "integrity": "sha1-JC9mMRLdTG5jcoxgo8kJ0b2tvUw=" - }, - "node_modules/lodash.max": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.max/-/lodash.max-4.0.1.tgz", - "integrity": "sha1-hzVWbGGLNan3YFILSHrnllivE2o=" - }, - "node_modules/lodash.once": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" - }, - "node_modules/lodash.set": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", - "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=", - "dev": true - }, - "node_modules/lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" - }, - "node_modules/lodash.tonumber": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/lodash.tonumber/-/lodash.tonumber-4.0.3.tgz", - "integrity": "sha1-C5azGzVnJ5Prf1pj7nkfG56QJdk=" - }, - "node_modules/lodash.trimend": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/lodash.trimend/-/lodash.trimend-4.5.1.tgz", - "integrity": "sha1-EoBENyhrmMrYmWt5QU4RMAEUCC8=" - }, - "node_modules/log-symbols": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", - "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/log-symbols/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/log-symbols/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/log-symbols/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/log-symbols/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/log-symbols/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/log-symbols/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/logform": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/logform/-/logform-2.1.2.tgz", - "integrity": "sha512-+lZh4OpERDBLqjiwDLpAWNQu6KMjnlXH2ByZwCuSqVPJletw0kTWJf5CgSNAUKn1KUkv3m2cUz/LK8zyEy7wzQ==", - "dev": true, - "dependencies": { - "colors": "^1.2.1", - "fast-safe-stringify": "^2.0.4", - "fecha": "^2.3.3", - "ms": "^2.1.1", - "triple-beam": "^1.3.0" - } - }, - "node_modules/logform/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/lolex": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-4.2.0.tgz", - "integrity": "sha512-gKO5uExCXvSm6zbF562EvM+rd1kQDnB9AZBbiQVzf1ZmdDpxUSvpnAaVOP83N/31mRK8Ml8/VE8DMvsAZQ+7wg==", - "dev": true - }, - "node_modules/long-timeout": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/long-timeout/-/long-timeout-0.1.1.tgz", - "integrity": "sha1-lyHXiLR+C8taJMLivuGg2lXatRQ=" - }, - "node_modules/lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "node_modules/lru-cache/node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" - }, - "node_modules/lru-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", - "integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=", - "dependencies": { - "es5-ext": "~0.10.2" - } - }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/markdown-it": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-8.4.2.tgz", - "integrity": "sha512-GcRz3AWTqSUphY3vsUqQSFMbgR38a4Lh3GWlHRh/7MRwz8mcu9n2IO7HOh+bXHrR9kOPDl5RNCaEsrneb+xhHQ==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "entities": "~1.1.1", - "linkify-it": "^2.0.0", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" - }, - "bin": { - "markdown-it": "bin/markdown-it.js" - } - }, - "node_modules/markdown-it-anchor": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-5.3.0.tgz", - "integrity": "sha512-/V1MnLL/rgJ3jkMWo84UR+K+jF1cxNG1a+KwqeXqTIJ+jtA8aWSHuigx8lTzauiIjBDbwF3NcWQMotd0Dm39jA==", - "dev": true, - "peerDependencies": { - "markdown-it": "*" - } - }, - "node_modules/marked": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/marked/-/marked-2.0.3.tgz", - "integrity": "sha512-5otztIIcJfPc2qGTN8cVtOJEjNJZ0jwa46INMagrYfk0EvqtRuEHLsEe0LrFS0/q+ZRKT0+kXK7P2T1AN5lWRA==", - "dev": true, - "bin": { - "marked": "bin/marked" - }, - "engines": { - "node": ">= 8.16.2" - } - }, - "node_modules/mdurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=", - "dev": true - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/memoizee": { - "version": "0.4.15", - "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz", - "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==", - "dependencies": { - "d": "^1.0.1", - "es5-ext": "^0.10.53", - "es6-weak-map": "^2.0.3", - "event-emitter": "^0.3.5", - "is-promise": "^2.2.2", - "lru-queue": "^0.1.0", - "next-tick": "^1.1.0", - "timers-ext": "^0.1.7" - } - }, - "node_modules/memoizee/node_modules/is-promise": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", - "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" - }, - "node_modules/memoizee/node_modules/next-tick": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" - }, - "node_modules/memorystream": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", - "dev": true, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", - "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.24", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", - "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", - "dependencies": { - "mime-db": "1.40.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - }, - "node_modules/minipass": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", - "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", - "dependencies": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "node_modules/minizlib": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", - "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", - "dependencies": { - "minipass": "^2.9.0" - } - }, - "node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" - }, - "node_modules/mocha": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.3.2.tgz", - "integrity": "sha512-UdmISwr/5w+uXLPKspgoV7/RXZwKRTiTjJ2/AC5ZiEztIoOYdfKb19+9jNmEInzx5pBsCyJQzarAxqIGBNYJhg==", - "dev": true, - "dependencies": { - "@ungap/promise-all-settled": "1.1.2", - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.1", - "debug": "4.3.1", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.1.6", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "4.0.0", - "log-symbols": "4.0.0", - "minimatch": "3.0.4", - "ms": "2.1.3", - "nanoid": "3.1.20", - "serialize-javascript": "5.0.1", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "which": "2.0.2", - "wide-align": "1.1.3", - "workerpool": "6.1.0", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha" - }, - "engines": { - "node": ">= 10.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" - } - }, - "node_modules/mocha/node_modules/ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/mocha/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/mocha/node_modules/anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/mocha/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/mocha/node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/mocha/node_modules/chokidar": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", - "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", - "dev": true, - "dependencies": { - "anymatch": "~3.1.1", - "braces": "~3.0.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" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.1" - } - }, - "node_modules/mocha/node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/mocha/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/mocha/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/mocha/node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/mocha/node_modules/debug/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/mocha/node_modules/diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/mocha/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mocha/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mocha/node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/mocha/node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "dependencies": { - "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" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/mocha/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/mocha/node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/mocha/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/mocha/node_modules/js-yaml": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz", - "integrity": "sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/mocha/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mocha/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/mocha/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mocha/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mocha/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/mocha/node_modules/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==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/mocha/node_modules/string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/mocha/node_modules/strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/mocha/node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mocha/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/mocha/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/mocha/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/mocha/node_modules/y18n": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz", - "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/mocha/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mocha/node_modules/yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/mock-express-request": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/mock-express-request/-/mock-express-request-0.2.2.tgz", - "integrity": "sha512-EymHjY1k1jWIsaVaCsPdFterWO18gcNwQMb99OryhSBtIA33SZJujOLeOe03Rf2DTV997xLPyl2I098WCFm/mA==", - "dev": true, - "dependencies": { - "accepts": "^1.3.4", - "fresh": "^0.5.2", - "lodash": "^4.17.4", - "mock-req": "^0.2.0", - "parseurl": "^1.3.2", - "range-parser": "^1.2.0", - "type-is": "^1.6.15" - } - }, - "node_modules/mock-http-server": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/mock-http-server/-/mock-http-server-1.4.5.tgz", - "integrity": "sha512-7WZx7RJmMQEvTxJTOJt9U6+gLFl0JFaPHLSsAngfLaOgr3UH+ci7PW8049quyXwZGI4mh3W8oAch6w406ccyRQ==", - "dev": true, - "dependencies": { - "body-parser": "^1.18.1", - "connect": "^3.4.0", - "multiparty": "^4.1.2", - "underscore": "^1.8.3" - } - }, - "node_modules/mock-req": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/mock-req/-/mock-req-0.2.0.tgz", - "integrity": "sha1-dJRGgE0sAGFpNC7nvmu6HP/VNMI=", - "dev": true - }, - "node_modules/module-not-found-error": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/module-not-found-error/-/module-not-found-error-1.0.1.tgz", - "integrity": "sha1-z4tP9PKWQGdNbN0CsOO8UjwrvcA=", - "dev": true - }, - "node_modules/moment": { - "version": "2.24.0", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", - "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==", - "engines": { - "node": "*" - } - }, - "node_modules/moment-timezone": { - "version": "0.5.27", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.27.tgz", - "integrity": "sha512-EIKQs7h5sAsjhPCqN6ggx6cEbs94GK050254TIJySD1bzoM5JTYDwAU1IoVOeTOL6Gm27kYJ51/uuvq1kIlrbw==", - "dependencies": { - "moment": ">= 2.9.0" - }, - "engines": { - "node": "*" - } - }, - "node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "node_modules/multiparty": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/multiparty/-/multiparty-4.2.2.tgz", - "integrity": "sha512-NtZLjlvsjcoGrzojtwQwn/Tm90aWJ6XXtPppYF4WmOk/6ncdwMMKggFY2NlRRN9yiCEIVxpOfPWahVEG2HAG8Q==", - "dev": true, - "dependencies": { - "http-errors": "~1.8.0", - "safe-buffer": "5.2.1", - "uid-safe": "2.1.5" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/multiparty/node_modules/http-errors": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.0.tgz", - "integrity": "sha512-4I8r0C5JDhT5VkvI47QktDW75rNlGVsUf/8hzjCC/wkWI/jdTRmBb9aI7erSG82r1bjKY3F6k28WnsVxB1C73A==", - "dev": true, - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/multiparty/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/multiparty/node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - }, - "node_modules/nan": { - "version": "2.13.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.13.2.tgz", - "integrity": "sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw==" - }, - "node_modules/nanoid": { - "version": "3.1.20", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz", - "integrity": "sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==", - "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "node_modules/needle": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.4.0.tgz", - "integrity": "sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==", - "dependencies": { - "debug": "^3.2.6", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - }, - "bin": { - "needle": "bin/needle" - }, - "engines": { - "node": ">= 4.4.x" - } - }, - "node_modules/needle/node_modules/debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/needle/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" - }, - "node_modules/next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" - }, - "node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" - }, - "node_modules/nise": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/nise/-/nise-1.5.2.tgz", - "integrity": "sha512-/6RhOUlicRCbE9s+94qCUsyE+pKlVJ5AhIv+jEE7ESKwnbXqulKZ1FYU+XAtHHWE9TinYvAxDUJAb912PwPoWA==", - "dev": true, - "dependencies": { - "@sinonjs/formatio": "^3.2.1", - "@sinonjs/text-encoding": "^0.7.1", - "just-extend": "^4.0.2", - "lolex": "^4.1.0", - "path-to-regexp": "^1.7.0" - } - }, - "node_modules/nise/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "node_modules/nise/node_modules/path-to-regexp": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", - "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", - "dev": true, - "dependencies": { - "isarray": "0.0.1" - } - }, - "node_modules/nock": { - "version": "13.0.11", - "resolved": "https://registry.npmjs.org/nock/-/nock-13.0.11.tgz", - "integrity": "sha512-sKZltNkkWblkqqPAsjYW0bm3s9DcHRPiMOyKO/PkfJ+ANHZ2+LA2PLe22r4lLrKgXaiSaDQwW3qGsJFtIpQIeQ==", - "dev": true, - "dependencies": { - "debug": "^4.1.0", - "json-stringify-safe": "^5.0.1", - "lodash.set": "^4.3.2", - "propagate": "^2.0.0" - }, - "engines": { - "node": ">= 10.13" - } - }, - "node_modules/nock/node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/nock/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/node-addon-api": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.1.0.tgz", - "integrity": "sha512-flmrDNB06LIl5lywUz7YlNGZH/5p0M7W28k8hzd9Lshtdh1wshD2Y+U4h9LD6KObOy1f+fEVdgprPrEymjM5uw==" - }, - "node_modules/node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", - "engines": { - "node": "4.x || >=6.0.0" - } - }, - "node_modules/node-gyp": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", - "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", - "optional": true, - "dependencies": { - "fstream": "^1.0.0", - "glob": "^7.0.3", - "graceful-fs": "^4.1.2", - "mkdirp": "^0.5.0", - "nopt": "2 || 3", - "npmlog": "0 || 1 || 2 || 3 || 4", - "osenv": "0", - "request": "^2.87.0", - "rimraf": "2", - "semver": "~5.3.0", - "tar": "^2.0.0", - "which": "1" - }, - "bin": { - "node-gyp": "bin/node-gyp.js" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/node-gyp/node_modules/nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", - "optional": true, - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - } - }, - "node_modules/node-gyp/node_modules/semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", - "optional": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/node-gyp/node_modules/tar": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", - "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", - "deprecated": "This version of tar is no longer supported, and will not receive security updates. Please upgrade asap.", - "optional": true, - "dependencies": { - "block-stream": "*", - "fstream": "^1.0.12", - "inherits": "2" - } - }, - "node_modules/node-nlp": { - "version": "4.19.7", - "resolved": "https://registry.npmjs.org/node-nlp/-/node-nlp-4.19.7.tgz", - "integrity": "sha512-/UXLzJazHZj15hbtj2efP8kekA75pPX37MrQ7torRCNSqDmryAQc3pm8XPm+1GZFvBC3go903I6Oe8LenEmyXg==", - "dependencies": { - "@nlpjs/builtin-duckling": "^4.19.1", - "@nlpjs/builtin-microsoft": "^4.19.1", - "@nlpjs/core-loader": "^4.19.1", - "@nlpjs/emoji": "^4.19.1", - "@nlpjs/evaluator": "^4.17.1", - "@nlpjs/lang-all": "^4.19.1", - "@nlpjs/language": "^4.17.0", - "@nlpjs/neural": "^4.17.0", - "@nlpjs/nlg": "^4.19.1", - "@nlpjs/nlp": "^4.19.7", - "@nlpjs/nlu": "^4.19.1", - "@nlpjs/request": "^4.17.0", - "@nlpjs/sentiment": "^4.19.1", - "@nlpjs/similarity": "^4.17.0", - "@nlpjs/xtables": "^4.17.0" - } - }, - "node_modules/node-preload": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", - "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", - "dev": true, - "dependencies": { - "process-on-spawn": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/node-releases": { - "version": "1.1.71", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", - "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", - "dev": true - }, - "node_modules/node-schedule": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/node-schedule/-/node-schedule-1.3.2.tgz", - "integrity": "sha512-GIND2pHMHiReSZSvS6dpZcDH7pGPGFfWBIEud6S00Q8zEIzAs9ommdyRK1ZbQt8y1LyZsJYZgPnyi7gpU2lcdw==", - "dependencies": { - "cron-parser": "^2.7.3", - "long-timeout": "0.1.1", - "sorted-array-functions": "^1.0.0" - } - }, - "node_modules/node-webcrypto-ossl": { - "version": "1.0.48", - "resolved": "https://registry.npmjs.org/node-webcrypto-ossl/-/node-webcrypto-ossl-1.0.48.tgz", - "integrity": "sha512-MWUkQ/5wrs7lpAr+fhsLMfjdxKGd3dQFVqWbNMkyYyCMRW8E7ScailqtCZYDLTnJtU6B+91rXxCJNyZvbYaSOg==", - "deprecated": "node-webcrypto-ossl has been deprecated. This module was created in 2015 because at the time the Node team did not feel the need to have two crypto interfaces and they already had one before WebCrypto was defined", - "hasInstallScript": true, - "dependencies": { - "mkdirp": "^0.5.1", - "nan": "^2.13.2", - "tslib": "^1.9.3", - "webcrypto-core": "^0.1.26" - } - }, - "node_modules/nodemon": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.7.tgz", - "integrity": "sha512-XHzK69Awgnec9UzHr1kc8EomQh4sjTQ8oRf8TsGrSmHDx9/UmiGG9E/mM3BuTfNeFwdNBvrqQq/RHL0xIeyFOA==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "chokidar": "^3.2.2", - "debug": "^3.2.6", - "ignore-by-default": "^1.0.1", - "minimatch": "^3.0.4", - "pstree.remy": "^1.1.7", - "semver": "^5.7.1", - "supports-color": "^5.5.0", - "touch": "^3.1.0", - "undefsafe": "^2.0.3", - "update-notifier": "^4.1.0" - }, - "bin": { - "nodemon": "bin/nodemon.js" - }, - "engines": { - "node": ">=8.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nodemon" - } - }, - "node_modules/nodemon/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/nodemon/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/nodemon/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/nopt": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", - "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", - "dependencies": { - "abbrev": "1", - "osenv": "^0.1.4" - }, - "bin": { - "nopt": "bin/nopt.js" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/normalize-package-data/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-url": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", - "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm-bundled": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.6.tgz", - "integrity": "sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==" - }, - "node_modules/npm-packlist": { - "version": "1.4.6", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.6.tgz", - "integrity": "sha512-u65uQdb+qwtGvEJh/DgQgW1Xg7sqeNbmxYyrvlNznaVTjV3E5P6F/EFjM+BVHXl7JJlsdG8A64M0XI8FI/IOlg==", - "dependencies": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, - "node_modules/npm-run-all": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", - "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "chalk": "^2.4.1", - "cross-spawn": "^6.0.5", - "memorystream": "^0.3.1", - "minimatch": "^3.0.4", - "pidtree": "^0.3.0", - "read-pkg": "^3.0.0", - "shell-quote": "^1.6.1", - "string.prototype.padend": "^3.0.0" - }, - "bin": { - "npm-run-all": "bin/npm-run-all/index.js", - "run-p": "bin/run-p/index.js", - "run-s": "bin/run-s/index.js" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/npm-run-all/node_modules/load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/node_modules/path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "dependencies": { - "pify": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/node_modules/read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", - "dev": true, - "dependencies": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "dependencies": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "node_modules/number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nyc": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", - "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==", - "dev": true, - "dependencies": { - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "caching-transform": "^4.0.0", - "convert-source-map": "^1.7.0", - "decamelize": "^1.2.0", - "find-cache-dir": "^3.2.0", - "find-up": "^4.1.0", - "foreground-child": "^2.0.0", - "get-package-type": "^0.1.0", - "glob": "^7.1.6", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-hook": "^3.0.0", - "istanbul-lib-instrument": "^4.0.0", - "istanbul-lib-processinfo": "^2.0.2", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.2", - "make-dir": "^3.0.0", - "node-preload": "^0.2.1", - "p-map": "^3.0.0", - "process-on-spawn": "^1.0.0", - "resolve-from": "^5.0.0", - "rimraf": "^3.0.0", - "signal-exit": "^3.0.2", - "spawn-wrap": "^2.0.0", - "test-exclude": "^6.0.0", - "yargs": "^15.0.2" - }, - "bin": { - "nyc": "bin/nyc.js" - }, - "engines": { - "node": ">=8.9" - } - }, - "node_modules/nyc/node_modules/ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/nyc/node_modules/append-transform": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", - "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", - "dev": true, - "dependencies": { - "default-require-extensions": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/caching-transform": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", - "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", - "dev": true, - "dependencies": { - "hasha": "^5.0.0", - "make-dir": "^3.0.0", - "package-hash": "^4.0.0", - "write-file-atomic": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/nyc/node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "node_modules/nyc/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/nyc/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/nyc/node_modules/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==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.1" - } - }, - "node_modules/nyc/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/nyc/node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/nyc/node_modules/default-require-extensions": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz", - "integrity": "sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==", - "dev": true, - "dependencies": { - "strip-bom": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/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==", - "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, - "node_modules/nyc/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/foreground-child": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", - "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/nyc/node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "dependencies": { - "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" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/nyc/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/hasha": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", - "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", - "dev": true, - "dependencies": { - "is-stream": "^2.0.0", - "type-fest": "^0.8.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/nyc/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/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==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/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==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/istanbul-lib-hook": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", - "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", - "dev": true, - "dependencies": { - "append-transform": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/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==", - "dev": true, - "dependencies": { - "@babel/core": "^7.7.5", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "dev": true, - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/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==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/istanbul-reports": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", - "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", - "dev": true, - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/nyc/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/nyc/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/package-hash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", - "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.15", - "hasha": "^5.0.0", - "lodash.flattendeep": "^4.4.0", - "release-zalgo": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/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==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/nyc/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/spawn-wrap": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", - "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", - "dev": true, - "dependencies": { - "foreground-child": "^2.0.0", - "is-windows": "^1.0.2", - "make-dir": "^3.0.0", - "rimraf": "^3.0.0", - "signal-exit": "^3.0.2", - "which": "^2.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/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==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/nyc/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/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==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "node_modules/nyc/node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, - "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "optional": true, - "engines": { - "node": "*" - } - }, - "node_modules/oauth2-mock-server": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/oauth2-mock-server/-/oauth2-mock-server-4.1.1.tgz", - "integrity": "sha512-fvlQ9VkYVS8gddnxTEiZ4YBrSzuxHWbHdNI247+YAW3Au9IV2wbi1LIsh9LkV8GO5W9kDdYZqGQEF+AvLTXg9A==", - "dev": true, - "dependencies": { - "basic-auth": "^2.0.1", - "cors": "^2.8.5", - "express": "^4.17.1", - "jose": "^4.3.6", - "lodash.isplainobject": "^4.0.6", - "uuid": "^8.3.2" - }, - "bin": { - "oauth2-mock-server": "dist/oauth2-mock-server.js" - }, - "engines": { - "node": "^12.20 || ^14.15 || ^16", - "yarn": "^1.15.2" - } - }, - "node_modules/oauth2-mock-server/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz", - "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==", - "dev": true - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.entries": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.0.tgz", - "integrity": "sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.12.0", - "function-bind": "^1.1.1", - "has": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.values": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.3.tgz", - "integrity": "sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2", - "has": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.values/node_modules/es-abstract": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", - "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "is-callable": "^1.2.3", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.2", - "is-string": "^1.0.5", - "object-inspect": "^1.9.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.values/node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.values/node_modules/has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.values/node_modules/is-callable": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.values/node_modules/is-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", - "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-symbols": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.values/node_modules/object-inspect": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", - "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.values/node_modules/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==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/one-time": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/one-time/-/one-time-0.0.4.tgz", - "integrity": "sha1-+M33eISCb+Tf+T46nMN7HkSAdC4=", - "dev": true - }, - "node_modules/optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", - "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "wordwrap": "~1.0.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/optionator/node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" - }, - "node_modules/os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "dependencies": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "node_modules/p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/p-limit": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", - "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/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==", - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", - "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/package-json": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", - "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", - "dev": true, - "dependencies": { - "got": "^9.6.0", - "registry-auth-token": "^4.0.0", - "registry-url": "^5.0.0", - "semver": "^6.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pad-start": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pad-start/-/pad-start-1.0.2.tgz", - "integrity": "sha1-I+W6s+lkRrYoFs/28VCXXwQNGxQ=" - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "dependencies": { - "error-ex": "^1.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/parseqs": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz", - "integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==" - }, - "node_modules/parseuri": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz", - "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==" - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "engines": { - "node": ">=4" - } - }, - "node_modules/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==" - }, - "node_modules/path-to-regexp": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.1.0.tgz", - "integrity": "sha512-PtHLisEvUOepjc+sStXxJ/pDV/s5UBTOKWJY2SOz3e6E/iN/jLknY9WL72kTwRrwXDUbZTEAtSnJbz2fF127DA==" - }, - "node_modules/path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", - "dev": true, - "dependencies": { - "pify": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pathval": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", - "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "optional": true - }, - "node_modules/picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pidtree": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.0.tgz", - "integrity": "sha512-9CT4NFlDcosssyg8KVFltgokyKZIFjoBxw8CTGy+5F38Y1eQWrt8tRayiUOXE+zVKQnYu5BR8JjCtvK3BcnBhg==", - "dev": true, - "bin": { - "pidtree": "bin/pidtree.js" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/prettier": { - "version": "1.18.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.18.2.tgz", - "integrity": "sha512-OeHeMc0JhFE9idD4ZdtNibzY0+TPHSpSSb9h8FqtP+YnoZZ1sl8Vc9b1sasjfymH3SonAF4QcA2+mzHPhMvIiw==", - "dev": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/printj": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz", - "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==", - "bin": { - "printj": "bin/printj.njs" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "node_modules/process-on-spawn": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", - "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", - "dev": true, - "dependencies": { - "fromentries": "^1.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/propagate": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz", - "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/proto-list": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=" - }, - "node_modules/proxy-addr": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", - "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", - "dependencies": { - "forwarded": "~0.1.2", - "ipaddr.js": "1.9.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/proxyquire": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/proxyquire/-/proxyquire-2.1.3.tgz", - "integrity": "sha512-BQWfCqYM+QINd+yawJz23tbBM40VIGXOdDw3X344KcclI/gtBbdWF6SlQ4nK/bYhF9d27KYug9WzljHC6B9Ysg==", - "dev": true, - "dependencies": { - "fill-keys": "^1.0.2", - "module-not-found-error": "^1.0.1", - "resolve": "^1.11.1" - } - }, - "node_modules/pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" - }, - "node_modules/psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "optional": true - }, - "node_modules/pstree.remy": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", - "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", - "dev": true - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "engines": { - "node": ">=6" - } - }, - "node_modules/pupa": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", - "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", - "dev": true, - "dependencies": { - "escape-goat": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/query-string": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.0.1.tgz", - "integrity": "sha512-uIw3iRvHnk9to1blJCG3BTc+Ro56CBowJXKmNNAm3RulvPBzWLRqKSiiDk+IplJhsydwtuNMHi8UGQFcCLVfkA==", - "dependencies": { - "decode-uri-component": "^0.2.0", - "filter-obj": "^1.1.0", - "split-on-first": "^1.0.0", - "strict-uri-encode": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/queue": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.1.tgz", - "integrity": "sha512-AJBQabRCCNr9ANq8v77RJEv73DPbn55cdTb+Giq4X0AVnNVZvMHlYp7XlQiN+1npCZj1DuSmaA2hYVUUDgxFDg==", - "dependencies": { - "inherits": "~2.0.3" - } - }, - "node_modules/random-bytes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", - "integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs=", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/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==", - "dependencies": { - "bytes": "3.1.0", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/raw-body/node_modules/bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/rc/node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - }, - "node_modules/read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", - "dev": true, - "dependencies": { - "load-json-file": "^2.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/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=", - "dev": true, - "dependencies": { - "find-up": "^2.0.0", - "read-pkg": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readable-stream/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dev": true, - "dependencies": { - "resolve": "^1.1.6" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" - }, - "node_modules/regexpp": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", - "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/registry-auth-token": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", - "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", - "dev": true, - "dependencies": { - "rc": "^1.2.8" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/registry-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", - "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", - "dev": true, - "dependencies": { - "rc": "^1.2.8" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/release-zalgo": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", - "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", - "dev": true, - "dependencies": { - "es6-error": "^4.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", - "optional": true, - "dependencies": { - "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" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/request/node_modules/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==", - "optional": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/request/node_modules/qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "optional": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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==" - }, - "node_modules/requireindex": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", - "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==", - "dev": true, - "engines": { - "node": ">=0.10.5" - } - }, - "node_modules/requizzle": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.3.tgz", - "integrity": "sha512-YanoyJjykPxGHii0fZP0uUPEXpvqfBDxWV7s6GKAiiOsiqhX6vHNyW3Qzdmqp/iq/ExbhaGbVrjB4ruEVSM4GQ==", - "dev": true, - "dependencies": { - "lodash": "^4.17.14" - } - }, - "node_modules/resolve": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", - "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", - "dependencies": { - "path-parse": "^1.0.6" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", - "dev": true, - "dependencies": { - "lowercase-keys": "^1.0.0" - } - }, - "node_modules/retry-as-promised": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-3.2.0.tgz", - "integrity": "sha512-CybGs60B7oYU/qSQ6kuaFmRd9sTZ6oXSc0toqePvV74Ac6/IFZSI1ReFQmtCN+uvW1Mtqdwpvt/LGOiCBAY2Mg==", - "dependencies": { - "any-promise": "^1.3.0" - } - }, - "node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - }, - "node_modules/secure-remote-password": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/secure-remote-password/-/secure-remote-password-0.3.1.tgz", - "integrity": "sha512-iEp/qLRfb9XYhfKFrPFfdeD7KVreCjhDKSTRP1G1nRIO0Sw1hjnVHD58ymOhiy9Zf5quHbDIbG9cTupji7qwnA==", - "dependencies": { - "array-buffer-to-hex": "^1.0.0", - "crypto-digest-sync": "^1.0.0", - "crypto-random-hex": "^1.0.0", - "encode-utf8": "^1.0.1", - "hex-to-array-buffer": "^1.1.0", - "jsbn": "^1.1.0", - "pad-start": "^1.0.2" - } - }, - "node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/semver-diff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", - "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", - "dev": true, - "dependencies": { - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", - "dependencies": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.7.2", - "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "node_modules/send/node_modules/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==" - }, - "node_modules/sequelize": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-6.5.0.tgz", - "integrity": "sha512-owBt8fnzVy8E1OvyCyfCdVk7OOLyPVrBCMEf+CvRReC5oCyo+UqeXCtwaex9L6LM9ifZ1i3TG3sFeM5MgLK0CQ==", - "dependencies": { - "debug": "^4.1.1", - "dottie": "^2.0.0", - "inflection": "1.12.0", - "lodash": "^4.17.20", - "moment": "^2.26.0", - "moment-timezone": "^0.5.31", - "retry-as-promised": "^3.2.0", - "semver": "^7.3.2", - "sequelize-pool": "^6.0.0", - "toposort-class": "^1.0.1", - "uuid": "^8.1.0", - "validator": "^10.11.0", - "wkx": "^0.5.0" - }, - "engines": { - "node": ">=10.0.0" - }, - "peerDependenciesMeta": { - "mariadb": { - "optional": true - }, - "mysql2": { - "optional": true - }, - "pg": { - "optional": true - }, - "pg-hstore": { - "optional": true - }, - "sqlite3": { - "optional": true - }, - "tedious": { - "optional": true - } - } - }, - "node_modules/sequelize-cli": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/sequelize-cli/-/sequelize-cli-6.2.0.tgz", - "integrity": "sha512-6WQ2x91hg30dUn66mXHnzvHATZ4pyI1GHSNbS/TNN/vRR4BLRSLijadeMgC8zqmKDsL0VqzVVopJWfJakuP++Q==", - "dependencies": { - "cli-color": "^1.4.0", - "fs-extra": "^7.0.1", - "js-beautify": "^1.8.8", - "lodash": "^4.17.5", - "resolve": "^1.5.0", - "umzug": "^2.3.0", - "yargs": "^13.1.0" - }, - "bin": { - "sequelize": "lib/sequelize", - "sequelize-cli": "lib/sequelize" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/sequelize-cli/node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" - }, - "node_modules/sequelize-cli/node_modules/fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/sequelize-cli/node_modules/umzug": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/umzug/-/umzug-2.3.0.tgz", - "integrity": "sha512-Z274K+e8goZK8QJxmbRPhl89HPO1K+ORFtm6rySPhFKfKc5GHhqdzD0SGhSWHkzoXasqJuItdhorSvY7/Cgflw==", - "dependencies": { - "bluebird": "^3.7.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/sequelize-pool": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/sequelize-pool/-/sequelize-pool-6.1.0.tgz", - "integrity": "sha512-4YwEw3ZgK/tY/so+GfnSgXkdwIJJ1I32uZJztIEgZeAO6HMgj64OzySbWLgxj+tXhZCJnzRfkY9gINw8Ft8ZMg==", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/sequelize/node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/sequelize/node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/sequelize/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/sequelize/node_modules/moment": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", - "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==", - "engines": { - "node": "*" - } - }, - "node_modules/sequelize/node_modules/moment-timezone": { - "version": "0.5.33", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.33.tgz", - "integrity": "sha512-PTc2vcT8K9J5/9rDEPe5czSIKgLoGsH8UNpA4qZTVw0Vd/Uz19geE9abbIOQKaAQFcnQ3v5YEXrbSc5BpshH+w==", - "dependencies": { - "moment": ">= 2.9.0" - }, - "engines": { - "node": "*" - } - }, - "node_modules/sequelize/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/sequelize/node_modules/semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/sequelize/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/sequelize/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/serialize-javascript": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", - "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/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==", - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" - }, - "node_modules/set-value": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-3.0.2.tgz", - "integrity": "sha512-npjkVoz+ank0zjlV9F47Fdbjfj/PfXyVhZvGALWsyIYU/qrMzpi6avjKW3/7KeSU2Df3I46BrN1xOI1+6vW0hA==", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" - }, - "node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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==", - "dev": true - }, - "node_modules/shelljs": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.3.tgz", - "integrity": "sha512-fc0BKlAWiLpwZljmOvAOTE/gXawtCoNrP5oaY7KIaQbbyHeQVg01pSEuEGvGh3HEdBU4baCD7wQBwADmM/7f7A==", - "dev": true, - "dependencies": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - }, - "bin": { - "shjs": "bin/shjs" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/shx": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/shx/-/shx-0.3.2.tgz", - "integrity": "sha512-aS0mWtW3T2sHAenrSrip2XGv39O9dXIFUqxAEWHEOS1ePtGIBavdPJY1kE2IHl14V/4iCbUiNDPGdyYTtmhSoA==", - "dev": true, - "dependencies": { - "es6-object-assign": "^1.0.3", - "minimist": "^1.2.0", - "shelljs": "^0.8.1" - }, - "bin": { - "shx": "lib/cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/shx/node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "node_modules/sigmund": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=" - }, - "node_modules/signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" - }, - "node_modules/simple-oauth2": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/simple-oauth2/-/simple-oauth2-4.3.0.tgz", - "integrity": "sha512-gjLIfy7M7WZSf3k5IZCQfEozbQwmW80zR9YMH4ph/WWG6S4U6sGhPujz8X6Hj6sZ8l7acSAxiyM4tF0vIN+E+A==", - "dependencies": { - "@hapi/hoek": "^9.0.4", - "@hapi/wreck": "^17.0.0", - "debug": "^4.1.1", - "joi": "^17.3.0" - } - }, - "node_modules/simple-oauth2/node_modules/@hapi/hoek": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.1.tgz", - "integrity": "sha512-gfta+H8aziZsm8pZa0vj04KO6biEiisppNgA1kbJvFrrWu9Vm7eaUEy76DIxsuTaWvti5fkJVhllWc6ZTE+Mdw==" - }, - "node_modules/simple-oauth2/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/simple-oauth2/node_modules/joi": { - "version": "17.4.2", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.4.2.tgz", - "integrity": "sha512-Lm56PP+n0+Z2A2rfRvsfWVDXGEWjXxatPopkQ8qQ5mxCEhwHG+Ettgg5o98FFaxilOxozoa14cFhrE/hOzh/Nw==", - "dependencies": { - "@hapi/hoek": "^9.0.0", - "@hapi/topo": "^5.0.0", - "@sideway/address": "^4.1.0", - "@sideway/formula": "^3.0.0", - "@sideway/pinpoint": "^2.0.0" - } - }, - "node_modules/simple-oauth2/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", - "dev": true, - "dependencies": { - "is-arrayish": "^0.3.1" - } - }, - "node_modules/simple-swizzle/node_modules/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==", - "dev": true - }, - "node_modules/sinon": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.5.0.tgz", - "integrity": "sha512-AoD0oJWerp0/rY9czP/D6hDTTUYGpObhZjMpd7Cl/A6+j0xBE+ayL/ldfggkBXUs0IkvIiM1ljM8+WkOc5k78Q==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^1.4.0", - "@sinonjs/formatio": "^3.2.1", - "@sinonjs/samsam": "^3.3.3", - "diff": "^3.5.0", - "lolex": "^4.2.0", - "nise": "^1.5.2", - "supports-color": "^5.5.0" - } - }, - "node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/slice-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/slice-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/socket.io-client": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.4.0.tgz", - "integrity": "sha512-M6xhnKQHuuZd4Ba9vltCLT9oa+YvTsP8j9NcEiLElfIg8KeYPyhWOes6x4t+LTAC8enQbE/995AdTem2uNyKKQ==", - "dependencies": { - "backo2": "1.0.2", - "component-bind": "1.0.0", - "component-emitter": "~1.3.0", - "debug": "~3.1.0", - "engine.io-client": "~3.5.0", - "has-binary2": "~1.0.2", - "indexof": "0.0.1", - "parseqs": "0.0.6", - "parseuri": "0.0.6", - "socket.io-parser": "~3.3.0", - "to-array": "0.1.4" - } - }, - "node_modules/socket.io-client/node_modules/component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" - }, - "node_modules/socket.io-parser": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.2.tgz", - "integrity": "sha512-FJvDBuOALxdCI9qwRrO/Rfp9yfndRtc1jSgVgV8FDraihmSP/MLGD5PEuJrNfjALvcQ+vMDM/33AWOYP/JSjDg==", - "dependencies": { - "component-emitter": "~1.3.0", - "debug": "~3.1.0", - "isarray": "2.0.1" - } - }, - "node_modules/socket.io-parser/node_modules/component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" - }, - "node_modules/sorted-array-functions": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/sorted-array-functions/-/sorted-array-functions-1.2.0.tgz", - "integrity": "sha512-sWpjPhIZJtqO77GN+LD8dDsDKcWZ9GCOJNqKzi1tvtjGIzwfoyuRH8S0psunmc6Z5P+qfDqztSbwYR5X/e1UTg==" - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/spdx-correct": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", - "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", - "dev": true, - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", - "dev": true - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", - "dev": true, - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", - "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", - "dev": true - }, - "node_modules/split-ca": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/split-ca/-/split-ca-1.0.1.tgz", - "integrity": "sha1-bIOv82kvphJW4M0ZfgXp3hV2kaY=" - }, - "node_modules/split-on-first": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", - "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", - "engines": { - "node": ">=6" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "node_modules/sqlite3": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.0.2.tgz", - "integrity": "sha512-1SdTNo+BVU211Xj1csWa8lV6KM0CtucDwRyA0VHl91wEH1Mgh7RxUpI4rVvG7OhHrzCSGaVyW5g8vKvlrk9DJA==", - "hasInstallScript": true, - "dependencies": { - "node-addon-api": "^3.0.0", - "node-pre-gyp": "^0.11.0" - }, - "optionalDependencies": { - "node-gyp": "3.x" - }, - "peerDependencies": { - "node-gyp": "3.x" - }, - "peerDependenciesMeta": { - "node-gyp": { - "optional": true - } - } - }, - "node_modules/sqlite3/node_modules/node-pre-gyp": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz", - "integrity": "sha512-TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q==", - "deprecated": "Please upgrade to @mapbox/node-pre-gyp: the non-scoped node-pre-gyp package is deprecated and only the @mapbox scoped package will recieve updates in the future", - "dependencies": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - }, - "bin": { - "node-pre-gyp": "bin/node-pre-gyp" - } - }, - "node_modules/sqlite3/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/ssf": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/ssf/-/ssf-0.11.2.tgz", - "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==", - "dependencies": { - "frac": "~1.1.2" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/ssh2": { - "version": "0.8.9", - "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-0.8.9.tgz", - "integrity": "sha512-GmoNPxWDMkVpMFa9LVVzQZHF6EW3WKmBwL+4/GeILf2hFmix5Isxm7Amamo8o7bHiU0tC+wXsGcUXOxp8ChPaw==", - "dependencies": { - "ssh2-streams": "~0.4.10" - }, - "engines": { - "node": ">=5.2.0" - } - }, - "node_modules/ssh2-streams": { - "version": "0.4.10", - "resolved": "https://registry.npmjs.org/ssh2-streams/-/ssh2-streams-0.4.10.tgz", - "integrity": "sha512-8pnlMjvnIZJvmTzUIIA5nT4jr2ZWNNVHwyXfMGdRJbug9TpI3kd99ffglgfSWqujVv/0gxwMsDn9j9RVst8yhQ==", - "dependencies": { - "asn1": "~0.2.0", - "bcrypt-pbkdf": "^1.0.2", - "streamsearch": "~0.1.2" - }, - "engines": { - "node": ">=5.2.0" - } - }, - "node_modules/sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "optional": true, - "dependencies": { - "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" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sshpk/node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "optional": true - }, - "node_modules/stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/streamsearch": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", - "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/strict-uri-encode": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", - "integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY=", - "engines": { - "node": ">=4" - } - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/string.prototype.padend": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.0.0.tgz", - "integrity": "sha1-86rvfBcZ8XDF6rHDK/eA2W4h8vA=", - "dev": true, - "dependencies": { - "define-properties": "^1.1.2", - "es-abstract": "^1.4.3", - "function-bind": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimleft": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz", - "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/string.prototype.trimright": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz", - "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/suncalc": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/suncalc/-/suncalc-1.8.0.tgz", - "integrity": "sha1-HZiYEJVjB4dQ9JlKlZ5lTYdqy/U=" - }, - "node_modules/superagent": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz", - "integrity": "sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==", - "dev": true, - "dependencies": { - "component-emitter": "^1.2.0", - "cookiejar": "^2.1.0", - "debug": "^3.1.0", - "extend": "^3.0.0", - "form-data": "^2.3.1", - "formidable": "^1.2.0", - "methods": "^1.1.1", - "mime": "^1.4.1", - "qs": "^6.5.1", - "readable-stream": "^2.3.5" - }, - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/supertest": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/supertest/-/supertest-3.4.2.tgz", - "integrity": "sha512-WZWbwceHUo2P36RoEIdXvmqfs47idNNZjCuJOqDz6rvtkk8ym56aU5oglORCpPeXGxT7l9rkJ41+O1lffQXYSA==", - "dev": true, - "dependencies": { - "methods": "^1.1.2", - "superagent": "^3.8.3" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/table": { - "version": "6.0.7", - "resolved": "https://registry.npmjs.org/table/-/table-6.0.7.tgz", - "integrity": "sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==", - "dev": true, - "dependencies": { - "ajv": "^7.0.2", - "lodash": "^4.17.20", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/table/node_modules/ajv": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.2.3.tgz", - "integrity": "sha512-idv5WZvKVXDqKralOImQgPM9v6WOdLNa0IY3B3doOjw/YxRGT8I+allIJ6kd7Uaj+SF1xZUSU+nPM5aDNBVtnw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/table/node_modules/ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/table/node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/table/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/table/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/table/node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/table/node_modules/string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/table/node_modules/strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/taffydb": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz", - "integrity": "sha1-fLy2S1oUG2ou/CxdLGe04VCyomg=", - "dev": true - }, - "node_modules/tar": { - "version": "4.4.13", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", - "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", - "dependencies": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.8.6", - "minizlib": "^1.2.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.3" - }, - "engines": { - "node": ">=4.5" - } - }, - "node_modules/tar-fs": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.0.1.tgz", - "integrity": "sha512-6tzWDMeroL87uF/+lin46k+Q+46rAJ0SyPGz7OW7wTgblI273hsBqk2C1j0/xNadNLKDTUL9BukSjB7cwgmlPA==", - "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.0.0" - } - }, - "node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tar-stream/node_modules/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==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/term-size": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", - "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/text-hex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", - "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==", - "dev": true - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "node_modules/timers-ext": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", - "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==", - "dependencies": { - "es5-ext": "~0.10.46", - "next-tick": "1" - } - }, - "node_modules/tinytim": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/tinytim/-/tinytim-0.1.1.tgz", - "integrity": "sha1-yWih5VWa2VUyJO92J7qzTjyu+Kg=", - "engines": { - "node": ">= 0.2.0" - } - }, - "node_modules/to-array": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", - "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=" - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/topo": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/topo/-/topo-3.0.3.tgz", - "integrity": "sha512-IgpPtvD4kjrJ7CRA3ov2FhWQADwv+Tdqbsf1ZnPUSAtCJ9e1Z44MmoSGDXGk4IppoZA7jd/QRkNddlLJWlUZsQ==", - "deprecated": "This module has moved and is now available at @hapi/topo. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues.", - "dependencies": { - "hoek": "6.x.x" - } - }, - "node_modules/toposort-class": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz", - "integrity": "sha1-f/0feMi+KMO6Rc1OGj9e4ZO9mYg=" - }, - "node_modules/touch": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", - "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", - "dev": true, - "dependencies": { - "nopt": "~1.0.10" - }, - "bin": { - "nodetouch": "bin/nodetouch.js" - } - }, - "node_modules/touch/node_modules/nopt": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", - "dev": true, - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": "*" - } - }, - "node_modules/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==", - "optional": true, - "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/tracer": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/tracer/-/tracer-1.1.4.tgz", - "integrity": "sha512-43Ws4c/V6VK9i2MLjmeYVtXZ+YUHU/qFXznJqYgI8F5nNrIQ4v9ImBAk+JjfPHS4StlpmaHzgR5qpBydbD9TkA==", - "dependencies": { - "colors": "1.4.0", - "dateformat": "3.0.3", - "mkdirp": "^1.0.4", - "tinytim": "0.1.1" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/tracer/node_modules/colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/tracer/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/triple-beam": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", - "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==", - "dev": true - }, - "node_modules/tsconfig-paths": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", - "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", - "dev": true, - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.1", - "minimist": "^1.2.0", - "strip-bom": "^3.0.0" - } - }, - "node_modules/tsconfig-paths/node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "node_modules/tslib": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", - "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "optional": true, - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" - }, - "node_modules/type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" - }, - "node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/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==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, - "node_modules/uc.micro": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", - "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", - "dev": true - }, - "node_modules/uglify-js": { - "version": "3.13.2", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.13.2.tgz", - "integrity": "sha512-SbMu4D2Vo95LMC/MetNaso1194M1htEA+JrqE9Hk+G2DhI+itfS9TRu9ZKeCahLDNa/J3n4MqUJ/fOHMzQpRWw==", - "optional": true, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/uid-safe": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", - "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==", - "dev": true, - "dependencies": { - "random-bytes": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/umzug": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/umzug/-/umzug-2.2.0.tgz", - "integrity": "sha512-xZLW76ax70pND9bx3wqwb8zqkFGzZIK8dIHD9WdNy/CrNfjWcwQgQkGCuUqcuwEBvUm+g07z+qWvY+pxDmMEEw==", - "dependencies": { - "babel-runtime": "^6.23.0", - "bluebird": "^3.5.3" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/unbox-primitive/node_modules/has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/undefsafe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.3.tgz", - "integrity": "sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A==", - "dev": true, - "dependencies": { - "debug": "^2.2.0" - } - }, - "node_modules/undefsafe/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/underscore": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz", - "integrity": "sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g==", - "dev": true - }, - "node_modules/unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "dev": true, - "dependencies": { - "crypto-random-string": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/update-notifier": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.3.tgz", - "integrity": "sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A==", - "dev": true, - "dependencies": { - "boxen": "^4.2.0", - "chalk": "^3.0.0", - "configstore": "^5.0.1", - "has-yarn": "^2.1.0", - "import-lazy": "^2.1.0", - "is-ci": "^2.0.0", - "is-installed-globally": "^0.3.1", - "is-npm": "^4.0.0", - "is-yarn-global": "^0.3.0", - "latest-version": "^5.0.0", - "pupa": "^2.0.1", - "semver-diff": "^3.1.1", - "xdg-basedir": "^4.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/yeoman/update-notifier?sponsor=1" - } - }, - "node_modules/update-notifier/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/update-notifier/node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/update-notifier/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/update-notifier/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/update-notifier/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/update-notifier/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "devOptional": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "dev": true, - "dependencies": { - "prepend-http": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/uuid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", - "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/validator": { - "version": "10.11.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-10.11.0.tgz", - "integrity": "sha512-X/p3UZerAIsbBfN/IwahhYaBbY68EN/UQBWHtsbXGT5bfrH/p4NQzUCG1kF/rtKaNpnJ7jAu6NGTdSNtyNIXMw==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "engines": [ - "node >=0.6.0" - ], - "optional": true, - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "node_modules/webcrypto-core": { - "version": "0.1.26", - "resolved": "https://registry.npmjs.org/webcrypto-core/-/webcrypto-core-0.1.26.tgz", - "integrity": "sha512-BZVgJZkkHyuz8loKvsaOKiBDXDpmMZf5xG4QAOlSeYdXlFUl9c1FRrVnAXcOdb4fTHMG+TRu81odJwwSfKnWTA==", - "dependencies": { - "tslib": "^1.7.1" - } - }, - "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-boxed-primitive/node_modules/has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-boxed-primitive/node_modules/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==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" - }, - "node_modules/wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "dependencies": { - "string-width": "^1.0.2 || 2" - } - }, - "node_modules/widest-line": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", - "dev": true, - "dependencies": { - "string-width": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/widest-line/node_modules/ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/widest-line/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/widest-line/node_modules/string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/widest-line/node_modules/strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/winston": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/winston/-/winston-3.2.1.tgz", - "integrity": "sha512-zU6vgnS9dAWCEKg/QYigd6cgMVVNwyTzKs81XZtTFuRwJOcDdBg7AU0mXVyNbs7O5RH2zdv+BdNZUlx7mXPuOw==", - "dev": true, - "dependencies": { - "async": "^2.6.1", - "diagnostics": "^1.1.1", - "is-stream": "^1.1.0", - "logform": "^2.1.1", - "one-time": "0.0.4", - "readable-stream": "^3.1.1", - "stack-trace": "0.0.x", - "triple-beam": "^1.3.0", - "winston-transport": "^4.3.0" - }, - "engines": { - "node": ">= 6.4.0" - } - }, - "node_modules/winston-transport": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.3.0.tgz", - "integrity": "sha512-B2wPuwUi3vhzn/51Uukcao4dIduEiPOcOt9HJ3QeaXgkJ5Z7UwpBzxS4ZGNHtrxrUvTwemsQiSys0ihOf8Mp1A==", - "dev": true, - "dependencies": { - "readable-stream": "^2.3.6", - "triple-beam": "^1.2.0" - }, - "engines": { - "node": ">= 6.4.0" - } - }, - "node_modules/winston/node_modules/readable-stream": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", - "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/wkx": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/wkx/-/wkx-0.5.0.tgz", - "integrity": "sha512-Xng/d4Ichh8uN4l0FToV/258EjMGU9MGcA0HV2d9B/ZpZB3lqQm7nkOdZdm5GhKtLLhAE7PiVQwN4eN+2YJJUg==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/wmf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wmf/-/wmf-1.0.2.tgz", - "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/word": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/word/-/word-0.3.0.tgz", - "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" - }, - "node_modules/workerpool": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.0.tgz", - "integrity": "sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg==", - "dev": true - }, - "node_modules/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==", - "dependencies": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/wrap-ansi/node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" - }, - "node_modules/wrap-ansi/node_modules/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=", - "engines": { - "node": ">=4" - } - }, - "node_modules/wrap-ansi/node_modules/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==", - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "node_modules/ws": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", - "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", - "dependencies": { - "async-limiter": "~1.0.0" - } - }, - "node_modules/xdg-basedir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", - "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/xlsx": { - "version": "0.16.9", - "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.16.9.tgz", - "integrity": "sha512-gxi1I3EasYvgCX1vN9pGyq920Ron4NO8PNfhuoA3Hpq6Y8f0ECXiy4OLrK4QZBnj1jx3QD+8Fq5YZ/3mPZ5iXw==", - "dependencies": { - "adler-32": "~1.2.0", - "cfb": "^1.1.4", - "codepage": "~1.14.0", - "commander": "~2.17.1", - "crc-32": "~1.2.0", - "exit-on-epipe": "~1.0.1", - "fflate": "^0.3.8", - "ssf": "~0.11.2", - "wmf": "~1.0.1", - "word": "~0.3.0" - }, - "bin": { - "xlsx": "bin/xlsx.njs" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/xlsx/node_modules/commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==" - }, - "node_modules/xmlcreate": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.3.tgz", - "integrity": "sha512-HgS+X6zAztGa9zIK3Y3LXuJes33Lz9x+YyTxgrkIdabu2vqcGOWwdfCpf1hWLRrd553wd4QCDf6BBO6FfdsRiQ==", - "dev": true - }, - "node_modules/xmlhttprequest-ssl": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.3.tgz", - "integrity": "sha512-3XfeQE/wNkvrIktn2Kf0869fC0BN6UpydVasGIeSm2B1Llihf7/0UfZM+eCkOw3P7bP4+qPgqhm7ZoxuJtFU0Q==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/y18n": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", - "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==" - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - }, - "node_modules/yargs": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", - "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", - "dependencies": { - "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.1" - } - }, - "node_modules/yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - }, - "node_modules/yargs-parser/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs-unparser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", - "dev": true, - "dependencies": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-unparser/node_modules/decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/yargs/node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" - }, - "node_modules/yargs/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/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=", - "engines": { - "node": ">=4" - } - }, - "node_modules/yargs/node_modules/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==", - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yeast": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", - "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=" - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/zlibjs": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/zlibjs/-/zlibjs-0.3.1.tgz", - "integrity": "sha1-UBl+2yihxCymWcyLTmqd3W1ERVQ=", - "engines": { - "node": "*" - } - } - }, + "lockfileVersion": 1, "dependencies": { "@babel/compat-data": { "version": "7.13.12", @@ -14522,8 +1839,7 @@ "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==", - "dev": true, - "requires": {} + "dev": true }, "adler-32": { "version": "1.2.0", @@ -16244,8 +3560,7 @@ "ws": { "version": "7.4.6", "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", - "requires": {} + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==" } } }, @@ -16888,8 +4203,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/eslint-plugin-require-jsdoc/-/eslint-plugin-require-jsdoc-1.0.4.tgz", "integrity": "sha1-Ayq+m+HzatDmbNTxSbS/q2/NTp0=", - "dev": true, - "requires": {} + "dev": true }, "eslint-scope": { "version": "5.1.1", @@ -17087,8 +4401,7 @@ "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "devOptional": true + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, "extsprintf": { "version": "1.3.0", @@ -17105,8 +4418,7 @@ "fast-json-stable-stringify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", - "devOptional": true + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" }, "fast-levenshtein": { "version": "2.0.6", @@ -18045,8 +5357,7 @@ "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "devOptional": true + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, "is-windows": { "version": "1.0.2", @@ -18344,8 +5655,7 @@ "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==", - "devOptional": true + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", @@ -18356,8 +5666,7 @@ "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=", - "devOptional": true + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, "json5": { "version": "1.0.1", @@ -18790,8 +6099,7 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-5.3.0.tgz", "integrity": "sha512-/V1MnLL/rgJ3jkMWo84UR+K+jF1cxNG1a+KwqeXqTIJ+jtA8aWSHuigx8lTzauiIjBDbwF3NcWQMotd0Dm39jA==", - "dev": true, - "requires": {} + "dev": true }, "marked": { "version": "2.0.3", @@ -21674,14 +8982,6 @@ "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", "integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY=" }, - "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" - } - }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", @@ -21743,6 +9043,14 @@ "define-properties": "^1.1.3" } }, + "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", @@ -22323,7 +9631,6 @@ "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "devOptional": true, "requires": { "punycode": "^2.1.0" } diff --git a/server/services/withings/package-lock.json b/server/services/withings/package-lock.json index 1ec060bc7b..d5c1c17310 100644 --- a/server/services/withings/package-lock.json +++ b/server/services/withings/package-lock.json @@ -1,5 +1,5 @@ { - "name": "gladys-usb", + "name": "gladys-withings", "requires": true, "lockfileVersion": 1, "dependencies": { From 6ef367437764dd1267fd990bdb94e1d2ab6ec143 Mon Sep 17 00:00:00 2001 From: Euguuu Date: Tue, 22 Mar 2022 19:49:51 +0100 Subject: [PATCH 034/164] revert front package.json --- front/package-lock.json | 11109 ++++++++++++++++++++------------------ front/package.json | 1 - 2 files changed, 5828 insertions(+), 5282 deletions(-) mode change 100644 => 100755 front/package-lock.json mode change 100644 => 100755 front/package.json diff --git a/front/package-lock.json b/front/package-lock.json old mode 100644 new mode 100755 index 3ec7731abe..8dddf23f54 --- a/front/package-lock.json +++ b/front/package-lock.json @@ -3,164 +3,164 @@ "requires": true, "lockfileVersion": 1, "dependencies": { - "@ampproject/remapping": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz", - "integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.0" - } - }, - "@apideck/better-ajv-errors": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.3.tgz", - "integrity": "sha512-9o+HO2MbJhJHjDYZaDxJmSDckvDpiuItEsrIShV0DXeCshXWRHhqYyU/PKHMkuClOmFnZhRd6wzv4vpDu/dRKg==", - "dev": true, - "requires": { - "json-schema": "^0.4.0", - "jsonpointer": "^5.0.0", - "leven": "^3.1.0" - }, - "dependencies": { - "leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true - } - } - }, "@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.44.tgz", + "integrity": "sha512-cuAuTTIQ9RqcFRJ/Y8PvTh+paepNcaGxwQwjIDRWPXmzzyAeCO4KqS9ikMvq0MCbRk6GlYKwfzStrcP3/jSL8g==", "dev": true, "requires": { - "@babel/highlight": "^7.16.7" + "@babel/highlight": "7.0.0-beta.44" } }, "@babel/compat-data": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz", - "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==", + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.7.tgz", + "integrity": "sha512-nS6dZaISCXJ3+518CWiBfEr//gHyMO02uDxBkXTKZDN5POruCnOZ1N4YBRZDCabwF8nZMWBpRxIicmXtBs+fvw==", "dev": true }, "@babel/core": { - "version": "7.17.8", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.8.tgz", - "integrity": "sha512-OdQDV/7cRBtJHLSOBqqbYNkOcydOgnX59TZx4puf41fzcVtN3e/4yqY8lMQsK+5X2lJtAdmA+6OHqsj1hBJ4IQ==", - "dev": true, - "requires": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.7", - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helpers": "^7.17.8", - "@babel/parser": "^7.17.8", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", - "@babel/types": "^7.17.0", + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.6.tgz", + "integrity": "sha512-gJnOEWSqTk96qG5BoIrl5bVtc23DCycmIePPYnamY9RboYdI4nFy5vAQMSl81O5K/W0sLDWfGysnOECC+KUUCA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.14.5", + "@babel/helper-compilation-targets": "^7.14.5", + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helpers": "^7.14.6", + "@babel/parser": "^7.14.6", + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.1.2", - "semver": "^6.3.0" + "semver": "^6.3.0", + "source-map": "^0.5.0" }, "dependencies": { + "@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.14.5" + } + }, "@babel/generator": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz", - "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz", + "integrity": "sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==", "dev": true, "requires": { - "@babel/types": "^7.17.0", + "@babel/types": "^7.14.5", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, "@babel/helper-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", - "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", + "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/helper-get-function-arity": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/types": "^7.14.5" } }, "@babel/helper-get-function-arity": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", - "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", + "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.14.5" } }, "@babel/helper-split-export-declaration": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", + "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", + "dev": true, + "requires": { + "@babel/types": "^7.14.5" + } + }, + "@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" } }, "@babel/template": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", + "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", "dev": true, "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.14.5", + "@babel/types": "^7.14.5" } }, "@babel/traverse": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz", - "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.3", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.3", - "@babel/types": "^7.17.0", + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.7.tgz", + "integrity": "sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.14.5", + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-hoist-variables": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/parser": "^7.14.7", + "@babel/types": "^7.14.5", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-validator-identifier": "^7.14.5", "to-fast-properties": "^2.0.0" } }, "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "dev": true, "requires": { "ms": "2.1.2" } }, "json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true }, "ms": { @@ -191,60 +191,91 @@ } }, "@babel/helper-annotate-as-pure": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", - "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.14.5.tgz", + "integrity": "sha512-EivH9EgBIb+G8ij1B2jAwSH36WnGvkQSEC6CkX/6v6ZFlw5fVOHvsgGF4uiEHO2GzMvunZb6tDLQEQSdrdocrA==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.14.5" }, "dependencies": { "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-validator-identifier": "^7.14.5", "to-fast-properties": "^2.0.0" } } } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", - "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.14.5.tgz", + "integrity": "sha512-YTA/Twn0vBXDVGJuAX6PwW7x5zQei1luDDo2Pl6q1qZ7hVNl0RZrhHCQG/ArGpR29Vl7ETiB8eJyrvpuRp300w==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/helper-explode-assignable-expression": "^7.14.5", + "@babel/types": "^7.14.5" }, "dependencies": { "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-validator-identifier": "^7.14.5", "to-fast-properties": "^2.0.0" } } } }, "@babel/helper-compilation-targets": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz", - "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.14.5.tgz", + "integrity": "sha512-v+QtZqXEiOnpO6EYvlImB6zCD2Lel06RzOPzmkz/D/XgQiUu3C/Jb1LOqSt/AIA34TYi/Q+KlT8vTQrgdxkbLw==", "dev": true, "requires": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-validator-option": "^7.16.7", - "browserslist": "^4.17.5", + "@babel/compat-data": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.16.6", "semver": "^6.3.0" }, "dependencies": { + "browserslist": { + "version": "4.16.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", + "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001219", + "colorette": "^1.2.2", + "electron-to-chromium": "^1.3.723", + "escalade": "^3.1.1", + "node-releases": "^1.1.71" + } + }, + "caniuse-lite": { + "version": "1.0.30001245", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001245.tgz", + "integrity": "sha512-768fM9j1PKXpOCKws6eTo3RHmvTUsG9UrpT4WoREFeZgJBTi4/X9g565azS/rVUGtqb8nt7FjLeF5u4kukERnA==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.776", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.776.tgz", + "integrity": "sha512-V0w7eFSBoFPpdw4xexjVPZ770UDZIevSwkkj4W97XbE3IsCsTRFpa7/yXGZ88EOQAUEA09JMMsWK0xsw0kRAYw==", + "dev": true + }, + "node-releases": { + "version": "1.1.73", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz", + "integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==", + "dev": true + }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -254,86 +285,105 @@ } }, "@babel/helper-create-class-features-plugin": { - "version": "7.17.6", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.6.tgz", - "integrity": "sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg==", + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.6.tgz", + "integrity": "sha512-Z6gsfGofTxH/+LQXqYEK45kxmcensbzmk/oi8DmaQytlQCgqNZt9XQF8iqlI/SeXWVjaMNxvYvzaYw+kh42mDg==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-member-expression-to-functions": "^7.16.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7" + "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-member-expression-to-functions": "^7.14.5", + "@babel/helper-optimise-call-expression": "^7.14.5", + "@babel/helper-replace-supers": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5" }, "dependencies": { + "@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.14.5" + } + }, "@babel/helper-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", - "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", + "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/helper-get-function-arity": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/types": "^7.14.5" } }, "@babel/helper-get-function-arity": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", - "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", + "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.14.5" } }, "@babel/helper-split-export-declaration": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", + "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", + "dev": true, + "requires": { + "@babel/types": "^7.14.5" + } + }, + "@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" } }, "@babel/template": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", + "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", "dev": true, "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.14.5", + "@babel/types": "^7.14.5" } }, "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-validator-identifier": "^7.14.5", "to-fast-properties": "^2.0.0" } } } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz", - "integrity": "sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.5.tgz", + "integrity": "sha512-TLawwqpOErY2HhWbGJ2nZT5wSkR192QpN+nBg1THfBfftrlvOh+WbhrxXCH4q4xJ9Gl16BGPR/48JA+Ryiho/A==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "regexpu-core": "^5.0.1" + "@babel/helper-annotate-as-pure": "^7.14.5", + "regexpu-core": "^4.7.1" } }, "@babel/helper-define-polyfill-provider": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", - "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz", + "integrity": "sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew==", "dev": true, "requires": { "@babel/helper-compilation-targets": "^7.13.0", @@ -346,89 +396,117 @@ "semver": "^6.1.2" }, "dependencies": { + "@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.14.5" + } + }, "@babel/generator": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz", - "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz", + "integrity": "sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==", "dev": true, "requires": { - "@babel/types": "^7.17.0", + "@babel/types": "^7.14.5", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, "@babel/helper-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", - "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", + "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/helper-get-function-arity": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/types": "^7.14.5" } }, "@babel/helper-get-function-arity": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", - "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", + "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-module-imports": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", + "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", + "dev": true, + "requires": { + "@babel/types": "^7.14.5" } }, "@babel/helper-split-export-declaration": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", + "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", + "dev": true, + "requires": { + "@babel/types": "^7.14.5" + } + }, + "@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" } }, "@babel/template": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", + "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", "dev": true, "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.14.5", + "@babel/types": "^7.14.5" } }, "@babel/traverse": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz", - "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.3", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.3", - "@babel/types": "^7.17.0", + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.7.tgz", + "integrity": "sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.14.5", + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-hoist-variables": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/parser": "^7.14.7", + "@babel/types": "^7.14.5", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-validator-identifier": "^7.14.5", "to-fast-properties": "^2.0.0" } }, "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "dev": true, "requires": { "ms": "2.1.2" @@ -440,21 +518,14 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, "resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, "requires": { - "is-core-module": "^2.8.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" } }, "semver": { @@ -465,43 +536,22 @@ } } }, - "@babel/helper-environment-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", - "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - }, - "dependencies": { - "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - } - } - }, "@babel/helper-explode-assignable-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", - "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.14.5.tgz", + "integrity": "sha512-Htb24gnGJdIGT4vnRKMdoXiOIlqOLmdiUYpAQ0mYfgVT/GDm8GOYhgi4GL+hMKrkiPRohO4ts34ELFsGAPQLDQ==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.14.5" }, "dependencies": { "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-validator-identifier": "^7.14.5", "to-fast-properties": "^2.0.0" } } @@ -528,170 +578,174 @@ } }, "@babel/helper-hoist-variables": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", - "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz", + "integrity": "sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.14.5" }, "dependencies": { "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-validator-identifier": "^7.14.5", "to-fast-properties": "^2.0.0" } } } }, "@babel/helper-member-expression-to-functions": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", - "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.14.7.tgz", + "integrity": "sha512-TMUt4xKxJn6ccjcOW7c4hlwyJArizskAhoSTOCkA0uZ+KghIaci0Qg9R043kUMWI9mtQfgny+NQ5QATnZ+paaA==", "dev": true, "requires": { - "@babel/types": "^7.17.0" + "@babel/types": "^7.14.5" }, "dependencies": { "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "@babel/helper-module-imports": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", - "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", - "requires": { - "@babel/types": "^7.16.7" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==" - }, - "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-validator-identifier": "^7.14.5", "to-fast-properties": "^2.0.0" } } } }, "@babel/helper-module-transforms": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", - "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.5.tgz", + "integrity": "sha512-iXpX4KW8LVODuAieD7MzhNjmM6dzYY5tfRqT+R9HDXWl0jPn/djKmA+G9s/2C2T9zggw5tK1QNqZ70USfedOwA==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.17.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", - "@babel/types": "^7.17.0" + "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-replace-supers": "^7.14.5", + "@babel/helper-simple-access": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/helper-validator-identifier": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5" }, "dependencies": { + "@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.14.5" + } + }, "@babel/generator": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz", - "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz", + "integrity": "sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==", "dev": true, "requires": { - "@babel/types": "^7.17.0", + "@babel/types": "^7.14.5", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, "@babel/helper-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", - "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", + "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/helper-get-function-arity": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/types": "^7.14.5" } }, "@babel/helper-get-function-arity": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", - "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", + "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", + "dev": true, + "requires": { + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-module-imports": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", + "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.14.5" } }, "@babel/helper-split-export-declaration": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", + "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", + "dev": true, + "requires": { + "@babel/types": "^7.14.5" + } + }, + "@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" } }, "@babel/template": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", + "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", "dev": true, "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.14.5", + "@babel/types": "^7.14.5" } }, "@babel/traverse": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz", - "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.3", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.3", - "@babel/types": "^7.17.0", + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.7.tgz", + "integrity": "sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.14.5", + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-hoist-variables": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/parser": "^7.14.7", + "@babel/types": "^7.14.5", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-validator-identifier": "^7.14.5", "to-fast-properties": "^2.0.0" } }, "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "dev": true, "requires": { "ms": "2.1.2" @@ -706,21 +760,21 @@ } }, "@babel/helper-optimise-call-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", - "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz", + "integrity": "sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.14.5" }, "dependencies": { "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-validator-identifier": "^7.14.5", "to-fast-properties": "^2.0.0" } } @@ -729,127 +783,146 @@ "@babel/helper-plugin-utils": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", - "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==" + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", + "dev": true }, "@babel/helper-remap-async-to-generator": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", - "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.14.5.tgz", + "integrity": "sha512-rLQKdQU+HYlxBwQIj8dk4/0ENOUEhA/Z0l4hN8BexpvmSMN9oA9EagjnhnDpNsRdWCfjwa4mn/HyBXO9yhQP6A==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-wrap-function": "^7.16.8", - "@babel/types": "^7.16.8" + "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-wrap-function": "^7.14.5", + "@babel/types": "^7.14.5" }, "dependencies": { "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-validator-identifier": "^7.14.5", "to-fast-properties": "^2.0.0" } } } }, "@babel/helper-replace-supers": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", - "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.14.5.tgz", + "integrity": "sha512-3i1Qe9/8x/hCHINujn+iuHy+mMRLoc77b2nI9TB0zjH1hvn9qGlXjWlggdwUcju36PkPCy/lpM7LLUdcTyH4Ow==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-member-expression-to-functions": "^7.16.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/helper-member-expression-to-functions": "^7.14.5", + "@babel/helper-optimise-call-expression": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5" }, "dependencies": { + "@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.14.5" + } + }, "@babel/generator": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz", - "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz", + "integrity": "sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==", "dev": true, "requires": { - "@babel/types": "^7.17.0", + "@babel/types": "^7.14.5", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, "@babel/helper-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", - "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", + "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/helper-get-function-arity": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/types": "^7.14.5" } }, "@babel/helper-get-function-arity": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", - "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", + "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.14.5" } }, "@babel/helper-split-export-declaration": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", + "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", + "dev": true, + "requires": { + "@babel/types": "^7.14.5" + } + }, + "@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" } }, "@babel/template": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", + "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", "dev": true, "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.14.5", + "@babel/types": "^7.14.5" } }, "@babel/traverse": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz", - "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.3", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.3", - "@babel/types": "^7.17.0", + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.7.tgz", + "integrity": "sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.14.5", + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-hoist-variables": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/parser": "^7.14.7", + "@babel/types": "^7.14.5", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-validator-identifier": "^7.14.5", "to-fast-properties": "^2.0.0" } }, "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "dev": true, "requires": { "ms": "2.1.2" @@ -864,42 +937,42 @@ } }, "@babel/helper-simple-access": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", - "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.14.5.tgz", + "integrity": "sha512-nfBN9xvmCt6nrMZjfhkl7i0oTV3yxR4/FztsbOASyTvVcoYd0TRHh7eMLdlEcCqobydC0LAF3LtC92Iwxo0wyw==", "dev": true, "requires": { - "@babel/types": "^7.17.0" + "@babel/types": "^7.14.5" }, "dependencies": { "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-validator-identifier": "^7.14.5", "to-fast-properties": "^2.0.0" } } } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", - "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.14.5.tgz", + "integrity": "sha512-dmqZB7mrb94PZSAOYtr+ZN5qt5owZIAgqtoTuqiFbHFtxgEcmQlRJVI+bO++fciBunXtB6MK7HrzrfcAzIz2NQ==", "dev": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.14.5" }, "dependencies": { "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-validator-identifier": "^7.14.5", "to-fast-properties": "^2.0.0" } } @@ -915,112 +988,131 @@ } }, "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz", + "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==", "dev": true }, "@babel/helper-validator-option": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", - "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", "dev": true }, "@babel/helper-wrap-function": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", - "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.14.5.tgz", + "integrity": "sha512-YEdjTCq+LNuNS1WfxsDCNpgXkJaIyqco6DAelTUjT4f2KIWC1nBcaCaSdHTBqQVLnTBexBcVcFhLSU1KnYuePQ==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.8", - "@babel/types": "^7.16.8" + "@babel/helper-function-name": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5" }, "dependencies": { + "@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.14.5" + } + }, "@babel/generator": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz", - "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz", + "integrity": "sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==", "dev": true, "requires": { - "@babel/types": "^7.17.0", + "@babel/types": "^7.14.5", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, "@babel/helper-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", - "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", + "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/helper-get-function-arity": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/types": "^7.14.5" } }, "@babel/helper-get-function-arity": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", - "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", + "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.14.5" } }, "@babel/helper-split-export-declaration": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", + "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.14.5" + } + }, + "@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" } }, "@babel/template": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", + "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", "dev": true, "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.14.5", + "@babel/types": "^7.14.5" } }, "@babel/traverse": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz", - "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.3", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.3", - "@babel/types": "^7.17.0", + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.7.tgz", + "integrity": "sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.14.5", + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-hoist-variables": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/parser": "^7.14.7", + "@babel/types": "^7.14.5", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-validator-identifier": "^7.14.5", "to-fast-properties": "^2.0.0" } }, "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "dev": true, "requires": { "ms": "2.1.2" @@ -1035,99 +1127,118 @@ } }, "@babel/helpers": { - "version": "7.17.8", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.8.tgz", - "integrity": "sha512-QcL86FGxpfSJwGtAvv4iG93UL6bmqBdmoVY0CMCU2g+oD2ezQse3PT5Pa+jiD6LJndBQi0EDlpzOWNlLuhz5gw==", + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.6.tgz", + "integrity": "sha512-yesp1ENQBiLI+iYHSJdoZKUtRpfTlL1grDIX9NRlAVppljLw/4tTyYupIB7uIYmC3stW/imAv8EqaKaS/ibmeA==", "dev": true, "requires": { - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", - "@babel/types": "^7.17.0" + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5" }, "dependencies": { + "@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.14.5" + } + }, "@babel/generator": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz", - "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz", + "integrity": "sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==", "dev": true, "requires": { - "@babel/types": "^7.17.0", + "@babel/types": "^7.14.5", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, "@babel/helper-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", - "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", + "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/helper-get-function-arity": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/types": "^7.14.5" } }, "@babel/helper-get-function-arity": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", - "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", + "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.14.5" } }, "@babel/helper-split-export-declaration": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", + "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.14.5" + } + }, + "@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" } }, "@babel/template": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", + "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", "dev": true, "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.14.5", + "@babel/types": "^7.14.5" } }, "@babel/traverse": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz", - "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.3", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.3", - "@babel/types": "^7.17.0", + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.7.tgz", + "integrity": "sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.14.5", + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-hoist-variables": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/parser": "^7.14.7", + "@babel/types": "^7.14.5", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-validator-identifier": "^7.14.5", "to-fast-properties": "^2.0.0" } }, "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "dev": true, "requires": { "ms": "2.1.2" @@ -1142,355 +1253,208 @@ } }, "@babel/highlight": { - "version": "7.16.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", - "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.44.tgz", + "integrity": "sha512-Il19yJvy7vMFm8AVAh6OZzaFoAd0hbkeMZiX3P5HGD+z7dyI7RzndHB0dg6Urh/VAFfHtpOIzDUSxmY6coyZWQ==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.16.7", "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.17.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.8.tgz", - "integrity": "sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ==", - "dev": true - }, - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz", - "integrity": "sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "esutils": "^2.0.2", + "js-tokens": "^3.0.0" }, "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", "dev": true } } }, + "@babel/parser": { + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.7.tgz", + "integrity": "sha512-X67Z5y+VBJuHB/RjwECp8kSl5uYi0BvRbNeWqkaJCVh+LiTPl19WBUfG627psSgp9rSf6ojuXghQM3ha6qHHdA==", + "dev": true + }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz", - "integrity": "sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.14.5.tgz", + "integrity": "sha512-ZoJS2XCKPBfTmL122iP6NM9dOg+d4lc9fFk3zxc8iDjvt8Pk4+TlsHSKhIPf6X+L5ORCdBzqMZDjL/WHj7WknQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-proposal-optional-chaining": "^7.16.7" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - } + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5", + "@babel/plugin-proposal-optional-chaining": "^7.14.5" } }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz", - "integrity": "sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==", + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.14.7.tgz", + "integrity": "sha512-RK8Wj7lXLY3bqei69/cc25gwS5puEc3dknoFPFbqfy3XxYQBQFvu4ioWpafMBAB+L9NyptQK4nMOa5Xz16og8Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-remap-async-to-generator": "^7.16.8", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.14.5", "@babel/plugin-syntax-async-generators": "^7.8.4" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - } } }, "@babel/plugin-proposal-class-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz", - "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz", + "integrity": "sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - } + "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-proposal-class-static-block": { - "version": "7.17.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz", - "integrity": "sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.14.5.tgz", + "integrity": "sha512-KBAH5ksEnYHCegqseI5N9skTdxgJdmDoAOc0uXa+4QMYKeZD0w5IARh4FMlTNtaHhbB8v+KzMdTgxMMzsIy6Yg==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.17.6", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-class-static-block": "^7.14.5" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - } } }, "@babel/plugin-proposal-decorators": { - "version": "7.17.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.17.8.tgz", - "integrity": "sha512-U69odN4Umyyx1xO1rTII0IDkAEC+RNlcKXtqOblfpzqy1C+aOplb76BQNq0+XdpVkOaPlpEDwd++joY8FNFJKA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.14.5.tgz", + "integrity": "sha512-LYz5nvQcvYeRVjui1Ykn28i+3aUiXwQ/3MGoEy0InTaz1pJo/lAzmIDXX+BQny/oufgHzJ6vnEEiXQ8KZjEVFg==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.17.6", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7", - "@babel/plugin-syntax-decorators": "^7.17.0", - "charcodes": "^0.2.0" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - } + "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-decorators": "^7.14.5" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", - "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.5.tgz", + "integrity": "sha512-ExjiNYc3HDN5PXJx+bwC50GIx/KKanX2HiggnIUAYedbARdImiCU4RhhHfdf0Kd7JNXGpsBBBCOm+bBVy3Gb0g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - } } }, "@babel/plugin-proposal-export-namespace-from": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz", - "integrity": "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.5.tgz", + "integrity": "sha512-g5POA32bXPMmSBu5Dx/iZGLGnKmKPc5AiY7qfZgurzrCYgIztDlHFbznSNCoQuv57YQLnQfaDi7dxCtLDIdXdA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - } } }, "@babel/plugin-proposal-json-strings": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz", - "integrity": "sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.5.tgz", + "integrity": "sha512-NSq2fczJYKVRIsUJyNxrVUMhB27zb7N7pOFGQOhBKJrChbGcgEAqyZrmZswkPk18VMurEeJAaICbfm57vUeTbQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-json-strings": "^7.8.3" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - } } }, "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz", - "integrity": "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.5.tgz", + "integrity": "sha512-YGn2AvZAo9TwyhlLvCCWxD90Xq8xJ4aSgaX3G5D/8DW94L8aaT+dS5cSP+Z06+rCJERGSr9GxMBZ601xoc2taw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - } } }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz", - "integrity": "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.5.tgz", + "integrity": "sha512-gun/SOnMqjSb98Nkaq2rTKMwervfdAoz6NphdY0vTfuzMfryj+tDGb2n6UkDKwez+Y8PZDhE3D143v6Gepp4Hg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - } } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", - "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.5.tgz", + "integrity": "sha512-yiclALKe0vyZRZE0pS6RXgjUOt87GWv6FYa5zqj15PvhOGFO69R5DusPlgK/1K5dVnCtegTiWu9UaBSrLLJJBg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-numeric-separator": "^7.10.4" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - } } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz", - "integrity": "sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw==", + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.14.7.tgz", + "integrity": "sha512-082hsZz+sVabfmDWo1Oct1u1AgbKbUAyVgmX4otIc7bdsRgHBXwTwb3DpDmD4Eyyx6DNiuz5UAATT655k+kL5g==", "dev": true, "requires": { - "@babel/compat-data": "^7.17.0", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/compat-data": "^7.14.7", + "@babel/helper-compilation-targets": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.16.7" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - } + "@babel/plugin-transform-parameters": "^7.14.5" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", - "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.5.tgz", + "integrity": "sha512-3Oyiixm0ur7bzO5ybNcZFlmVsygSIQgdOa7cTfOYCMY+wEPAYhZAJxi3mixKFCTCKUhQXuCTtQ1MzrpL3WT8ZQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - } } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz", - "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.5.tgz", + "integrity": "sha512-ycz+VOzo2UbWNI1rQXxIuMOzrDdHGrI23fRiz/Si2R4kv2XZQ1BK8ccdHwehMKBlcH/joGW/tzrUmo67gbJHlQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5", "@babel/plugin-syntax-optional-chaining": "^7.8.3" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - } } }, "@babel/plugin-proposal-private-methods": { - "version": "7.16.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz", - "integrity": "sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.14.5.tgz", + "integrity": "sha512-838DkdUA1u+QTCplatfq4B7+1lnDa/+QMI89x5WZHBcnNv+47N8QEj2k9I2MUU9xIv8XJ4XvPCviM/Dj7Uwt9g==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.10", - "@babel/helper-plugin-utils": "^7.16.7" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - } + "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-proposal-private-property-in-object": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz", - "integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-62EyfyA3WA0mZiF2e2IV9mc9Ghwxcg8YTu8BS4Wss4Y3PY725OmS9M0qLORbJwLqFtGh+jiE4wAmocK2CTUK2Q==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - } } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz", - "integrity": "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.14.5.tgz", + "integrity": "sha512-6axIeOU5LnY471KenAB9vI8I5j7NQ2d652hIYwVyRfgaZT5UpiqFKCuVXCDMSrU+3VFafnu2c5m3lrWIlr6A5Q==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - } + "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-syntax-async-generators": { @@ -1521,20 +1485,12 @@ } }, "@babel/plugin-syntax-decorators": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.17.0.tgz", - "integrity": "sha512-qWe85yCXsvDEluNP0OyeQjH63DlhAR3W7K9BxxU1MvbDb48tgBG+Ao6IJJ6smPDrrVzSQZrbF6donpkFBMcs3A==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.14.5.tgz", + "integrity": "sha512-c4sZMRWL4GSvP1EXy0woIP7m4jkVcEuG8R1TOZxPBPtp4FSM/kiPZub9UIs/Jrb5ZAOzvTUSGYrWsrSu1JvoPw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - } + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-syntax-dynamic-import": { @@ -1568,6 +1524,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz", "integrity": "sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } @@ -1645,770 +1602,562 @@ } }, "@babel/plugin-syntax-typescript": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz", - "integrity": "sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz", + "integrity": "sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - } + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz", - "integrity": "sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.14.5.tgz", + "integrity": "sha512-KOnO0l4+tD5IfOdi4x8C1XmEIRWUjNRV8wc6K2vz/3e8yAOoZZvsRXRRIF/yo/MAOFb4QjtAw9xSxMXbSMRy8A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - } + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz", - "integrity": "sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.14.5.tgz", + "integrity": "sha512-szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-remap-async-to-generator": "^7.16.8" + "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.14.5" }, "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true + "@babel/helper-module-imports": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", + "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", + "dev": true, + "requires": { + "@babel/types": "^7.14.5" + } + }, + "@babel/types": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.5", + "to-fast-properties": "^2.0.0" + } } } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", - "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.14.5.tgz", + "integrity": "sha512-dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - } + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz", - "integrity": "sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.5.tgz", + "integrity": "sha512-LBYm4ZocNgoCqyxMLoOnwpsmQ18HWTQvql64t3GvMUzLQrNoV1BDG0lNftC8QKYERkZgCCT/7J5xWGObGAyHDw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - } + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-classes": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz", - "integrity": "sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.14.5.tgz", + "integrity": "sha512-J4VxKAMykM06K/64z9rwiL6xnBHgB1+FVspqvlgCdwD1KUbQNfszeKVVOMh59w3sztHYIZDgnhOC4WbdEfHFDA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-optimise-call-expression": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", "globals": "^11.1.0" }, "dependencies": { + "@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.14.5" + } + }, "@babel/helper-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", - "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", + "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/helper-get-function-arity": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/types": "^7.14.5" } }, "@babel/helper-get-function-arity": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", - "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", + "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.14.5" } }, - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - }, "@babel/helper-split-export-declaration": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", + "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", + "dev": true, + "requires": { + "@babel/types": "^7.14.5" + } + }, + "@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" } }, "@babel/template": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", + "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", "dev": true, "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.14.5", + "@babel/types": "^7.14.5" } }, "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-validator-identifier": "^7.14.5", "to-fast-properties": "^2.0.0" } } } }, "@babel/plugin-transform-computed-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz", - "integrity": "sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.14.5.tgz", + "integrity": "sha512-pWM+E4283UxaVzLb8UBXv4EIxMovU4zxT1OPnpHJcmnvyY9QbPPTKZfEj31EUvG3/EQRbYAGaYEUZ4yWOBC2xg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - } + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-destructuring": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz", - "integrity": "sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ==", + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.7.tgz", + "integrity": "sha512-0mDE99nK+kVh3xlc5vKwB6wnP9ecuSj+zQCa/n0voENtP/zymdT4HH6QEb65wjjcbqr1Jb/7z9Qp7TF5FtwYGw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - } + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", - "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.14.5.tgz", + "integrity": "sha512-loGlnBdj02MDsFaHhAIJzh7euK89lBrGIdM9EAtHFo6xKygCUGuuWe07o1oZVk287amtW1n0808sQM99aZt3gw==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - } + "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz", - "integrity": "sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.14.5.tgz", + "integrity": "sha512-iJjbI53huKbPDAsJ8EmVmvCKeeq21bAze4fu9GBQtSLqfvzj2oRuHVx4ZkDwEhg1htQ+5OBZh/Ab0XDf5iBZ7A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - } + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", - "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.14.5.tgz", + "integrity": "sha512-jFazJhMBc9D27o9jDnIE5ZErI0R0m7PbKXVq77FFvqFbzvTMuv8jaAwLZ5PviOLSFttqKIW0/wxNSDbjLk0tYA==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - } + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-for-of": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz", - "integrity": "sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.14.5.tgz", + "integrity": "sha512-CfmqxSUZzBl0rSjpoQSFoR9UEj3HzbGuGNL21/iFTmjb5gFggJp3ph0xR1YBhexmLoKRHzgxuFvty2xdSt6gTA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - } + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", - "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.14.5.tgz", + "integrity": "sha512-vbO6kv0fIzZ1GpmGQuvbwwm+O4Cbm2NrPzwlup9+/3fdkuzo1YqOZcXw26+YUJB84Ja7j9yURWposEHLYwxUfQ==", "dev": true, "requires": { - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" }, "dependencies": { + "@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.14.5" + } + }, "@babel/helper-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", - "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", + "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/helper-get-function-arity": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/types": "^7.14.5" } }, "@babel/helper-get-function-arity": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", - "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", + "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.14.5" } }, - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true + "@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } }, "@babel/template": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", + "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", "dev": true, "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.14.5", + "@babel/types": "^7.14.5" } }, "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-validator-identifier": "^7.14.5", "to-fast-properties": "^2.0.0" } } } }, "@babel/plugin-transform-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz", - "integrity": "sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.14.5.tgz", + "integrity": "sha512-ql33+epql2F49bi8aHXxvLURHkxJbSmMKl9J5yHqg4PLtdE6Uc48CH1GS6TQvZ86eoB/ApZXwm7jlA+B3kra7A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - } + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", - "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.14.5.tgz", + "integrity": "sha512-WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - } + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz", - "integrity": "sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.5.tgz", + "integrity": "sha512-3lpOU8Vxmp3roC4vzFpSdEpGUWSMsHFreTWOMMLzel2gNGfHE5UWIh/LN6ghHs2xurUp4jRFYMUIZhuFbody1g==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - } } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.7.tgz", - "integrity": "sha512-ITPmR2V7MqioMJyrxUo2onHNC3e+MvfFiFIR0RP21d3PtlVb6sfzoxNKiphSZUOM9hEIdzCcZe83ieX3yoqjUA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.5.tgz", + "integrity": "sha512-en8GfBtgnydoao2PS+87mKyw62k02k7kJ9ltbKe0fXTHrQmG6QZZflYuGI1VVG7sVpx4E1n7KBpNlPb8m78J+A==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-simple-access": "^7.17.7", + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-simple-access": "^7.14.5", "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - } } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.17.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz", - "integrity": "sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.14.5.tgz", + "integrity": "sha512-mNMQdvBEE5DcMQaL5LbzXFMANrQjd2W7FPzg34Y4yEz7dBgdaC+9B84dSO+/1Wba98zoDbInctCDo4JGxz1VYA==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-hoist-variables": "^7.14.5", + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-identifier": "^7.14.5", "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - } } }, "@babel/plugin-transform-modules-umd": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz", - "integrity": "sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.5.tgz", + "integrity": "sha512-RfPGoagSngC06LsGUYyM9QWSXZ8MysEjDJTAea1lqRjNECE3y0qIJF/qbvJxc4oA4s99HumIMdXOrd+TdKaAAA==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - } + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz", - "integrity": "sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==", + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.14.7.tgz", + "integrity": "sha512-DTNOTaS7TkW97xsDMrp7nycUVh6sn/eq22VaxWfEdzuEbRsiaOU0pqU7DlyUGHVsbQbSghvjKRpEl+nUCKGQSg==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7" + "@babel/helper-create-regexp-features-plugin": "^7.14.5" } }, "@babel/plugin-transform-new-target": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz", - "integrity": "sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.14.5.tgz", + "integrity": "sha512-Nx054zovz6IIRWEB49RDRuXGI4Gy0GMgqG0cII9L3MxqgXz/+rgII+RU58qpo4g7tNEx1jG7rRVH4ihZoP4esQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - } + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-object-assign": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.16.7.tgz", - "integrity": "sha512-R8mawvm3x0COTJtveuoqZIjNypn2FjfvXZr4pSQ8VhEFBuQGBz4XhHasZtHXjgXU4XptZ4HtGof3NoYc93ZH9Q==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.14.5.tgz", + "integrity": "sha512-lvhjk4UN9xJJYB1mI5KC0/o1D5EcJXdbhVe+4fSk08D6ZN+iuAIs7LJC+71h8av9Ew4+uRq9452v9R93SFmQlQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - } + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-object-super": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", - "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.14.5.tgz", + "integrity": "sha512-MKfOBWzK0pZIrav9z/hkRqIk/2bTv9qvxHzPQc12RcVkMOzpIKnFCNYJip00ssKWYkd8Sf5g0Wr7pqJ+cmtuFg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - } + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.14.5" } }, "@babel/plugin-transform-parameters": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz", - "integrity": "sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.14.5.tgz", + "integrity": "sha512-Tl7LWdr6HUxTmzQtzuU14SqbgrSKmaR77M0OKyq4njZLQTPfOvzblNKyNkGwOfEFCEx7KeYHQHDI0P3F02IVkA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - } + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-property-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", - "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.14.5.tgz", + "integrity": "sha512-r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - } + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-react-jsx": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.3.tgz", - "integrity": "sha512-9tjBm4O07f7mzKSIlEmPdiE6ub7kfIe6Cd+w+oQebpATfTQMAgW+YOuWxogbKVTulA+MEO7byMeIUtQ1z+z+ZQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.14.5.tgz", + "integrity": "sha512-7RylxNeDnxc1OleDm0F5Q/BSL+whYRbOAR+bwgCxIr0L32v7UFh/pz1DLMZideAUxKT6eMoS2zQH6fyODLEi8Q==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-jsx": "^7.16.7", - "@babel/types": "^7.17.0" + "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-jsx": "^7.14.5", + "@babel/types": "^7.14.5" }, "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - }, - "@babel/plugin-syntax-jsx": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz", - "integrity": "sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==", + "@babel/helper-module-imports": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", + "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/types": "^7.14.5" } }, "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-validator-identifier": "^7.14.5", "to-fast-properties": "^2.0.0" } } } }, "@babel/plugin-transform-regenerator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz", - "integrity": "sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.14.5.tgz", + "integrity": "sha512-NVIY1W3ITDP5xQl50NgTKlZ0GrotKtLna08/uGY6ErQt6VEQZXla86x/CTddm5gZdcr+5GSsvMeTmWA5Ii6pkg==", "dev": true, "requires": { "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz", - "integrity": "sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.14.5.tgz", + "integrity": "sha512-cv4F2rv1nD4qdexOGsRQXJrOcyb5CrgjUH9PKrrtyhSDBNWGxd0UIitjyJiWagS+EbUGjG++22mGH1Pub8D6Vg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - } + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", - "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.14.5.tgz", + "integrity": "sha512-xLucks6T1VmGsTB+GWK5Pl9Jl5+nRXD1uoFdA5TSO6xtiNjtXTjKkmPdFXVLGlK5A2/or/wQMKfmQ2Y0XJfn5g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - } + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-spread": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz", - "integrity": "sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==", + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.14.6.tgz", + "integrity": "sha512-Zr0x0YroFJku7n7+/HH3A2eIrGMjbmAIbJSVv0IZ+t3U2WUQUA64S/oeied2e+MaGSjmt4alzBCsK9E8gh+fag==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - } + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", - "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.14.5.tgz", + "integrity": "sha512-Z7F7GyvEMzIIbwnziAZmnSNpdijdr4dWt+FJNBnBLz5mwDFkqIXU9wmBcWWad3QeJF5hMTkRe4dAq2sUZiG+8A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - } + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-template-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz", - "integrity": "sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.14.5.tgz", + "integrity": "sha512-22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - } + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz", - "integrity": "sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.14.5.tgz", + "integrity": "sha512-lXzLD30ffCWseTbMQzrvDWqljvZlHkXU+CnseMhkMNqU1sASnCsz3tSzAaH3vCUXb9PHeUb90ZT1BdFTm1xxJw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - } + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-typescript": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.8.tgz", - "integrity": "sha512-bHdQ9k7YpBDO2d0NVfkj51DpQcvwIzIusJ7mEUaMlbZq3Kt/U47j24inXZHQ5MDiYpCs+oZiwnXyKedE8+q7AQ==", + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.14.6.tgz", + "integrity": "sha512-XlTdBq7Awr4FYIzqhmYY80WN0V0azF74DMPyFqVHBvf81ZUgc4X7ZOpx6O8eLDK6iM5cCQzeyJw0ynTaefixRA==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-typescript": "^7.16.7" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - } + "@babel/helper-create-class-features-plugin": "^7.14.6", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-typescript": "^7.14.5" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", - "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.14.5.tgz", + "integrity": "sha512-crTo4jATEOjxj7bt9lbYXcBAM3LZaUrbP2uUdxb6WIorLmjNKSpHfIybgY4B8SRpbf8tEVIWH3Vtm7ayCrKocA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - } + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", - "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.14.5.tgz", + "integrity": "sha512-UygduJpC5kHeCiRw/xDVzC+wj8VaYSoKl5JNVmbP7MadpNinAm3SvZCxZ42H37KZBKztz46YC73i9yV34d0Tzw==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - } + "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/preset-env": { - "version": "7.16.11", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.11.tgz", - "integrity": "sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.16.8", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-validator-option": "^7.16.7", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.7", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.7", - "@babel/plugin-proposal-async-generator-functions": "^7.16.8", - "@babel/plugin-proposal-class-properties": "^7.16.7", - "@babel/plugin-proposal-class-static-block": "^7.16.7", - "@babel/plugin-proposal-dynamic-import": "^7.16.7", - "@babel/plugin-proposal-export-namespace-from": "^7.16.7", - "@babel/plugin-proposal-json-strings": "^7.16.7", - "@babel/plugin-proposal-logical-assignment-operators": "^7.16.7", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7", - "@babel/plugin-proposal-numeric-separator": "^7.16.7", - "@babel/plugin-proposal-object-rest-spread": "^7.16.7", - "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", - "@babel/plugin-proposal-optional-chaining": "^7.16.7", - "@babel/plugin-proposal-private-methods": "^7.16.11", - "@babel/plugin-proposal-private-property-in-object": "^7.16.7", - "@babel/plugin-proposal-unicode-property-regex": "^7.16.7", + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.14.7.tgz", + "integrity": "sha512-itOGqCKLsSUl0Y+1nSfhbuuOlTs0MJk2Iv7iSH+XT/mR8U1zRLO7NjWlYXB47yhK4J/7j+HYty/EhFZDYKa/VA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.14.7", + "@babel/helper-compilation-targets": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.14.5", + "@babel/plugin-proposal-async-generator-functions": "^7.14.7", + "@babel/plugin-proposal-class-properties": "^7.14.5", + "@babel/plugin-proposal-class-static-block": "^7.14.5", + "@babel/plugin-proposal-dynamic-import": "^7.14.5", + "@babel/plugin-proposal-export-namespace-from": "^7.14.5", + "@babel/plugin-proposal-json-strings": "^7.14.5", + "@babel/plugin-proposal-logical-assignment-operators": "^7.14.5", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5", + "@babel/plugin-proposal-numeric-separator": "^7.14.5", + "@babel/plugin-proposal-object-rest-spread": "^7.14.7", + "@babel/plugin-proposal-optional-catch-binding": "^7.14.5", + "@babel/plugin-proposal-optional-chaining": "^7.14.5", + "@babel/plugin-proposal-private-methods": "^7.14.5", + "@babel/plugin-proposal-private-property-in-object": "^7.14.5", + "@babel/plugin-proposal-unicode-property-regex": "^7.14.5", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", @@ -2423,60 +2172,54 @@ "@babel/plugin-syntax-optional-chaining": "^7.8.3", "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.16.7", - "@babel/plugin-transform-async-to-generator": "^7.16.8", - "@babel/plugin-transform-block-scoped-functions": "^7.16.7", - "@babel/plugin-transform-block-scoping": "^7.16.7", - "@babel/plugin-transform-classes": "^7.16.7", - "@babel/plugin-transform-computed-properties": "^7.16.7", - "@babel/plugin-transform-destructuring": "^7.16.7", - "@babel/plugin-transform-dotall-regex": "^7.16.7", - "@babel/plugin-transform-duplicate-keys": "^7.16.7", - "@babel/plugin-transform-exponentiation-operator": "^7.16.7", - "@babel/plugin-transform-for-of": "^7.16.7", - "@babel/plugin-transform-function-name": "^7.16.7", - "@babel/plugin-transform-literals": "^7.16.7", - "@babel/plugin-transform-member-expression-literals": "^7.16.7", - "@babel/plugin-transform-modules-amd": "^7.16.7", - "@babel/plugin-transform-modules-commonjs": "^7.16.8", - "@babel/plugin-transform-modules-systemjs": "^7.16.7", - "@babel/plugin-transform-modules-umd": "^7.16.7", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.8", - "@babel/plugin-transform-new-target": "^7.16.7", - "@babel/plugin-transform-object-super": "^7.16.7", - "@babel/plugin-transform-parameters": "^7.16.7", - "@babel/plugin-transform-property-literals": "^7.16.7", - "@babel/plugin-transform-regenerator": "^7.16.7", - "@babel/plugin-transform-reserved-words": "^7.16.7", - "@babel/plugin-transform-shorthand-properties": "^7.16.7", - "@babel/plugin-transform-spread": "^7.16.7", - "@babel/plugin-transform-sticky-regex": "^7.16.7", - "@babel/plugin-transform-template-literals": "^7.16.7", - "@babel/plugin-transform-typeof-symbol": "^7.16.7", - "@babel/plugin-transform-unicode-escapes": "^7.16.7", - "@babel/plugin-transform-unicode-regex": "^7.16.7", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.16.8", - "babel-plugin-polyfill-corejs2": "^0.3.0", - "babel-plugin-polyfill-corejs3": "^0.5.0", - "babel-plugin-polyfill-regenerator": "^0.3.0", - "core-js-compat": "^3.20.2", + "@babel/plugin-transform-arrow-functions": "^7.14.5", + "@babel/plugin-transform-async-to-generator": "^7.14.5", + "@babel/plugin-transform-block-scoped-functions": "^7.14.5", + "@babel/plugin-transform-block-scoping": "^7.14.5", + "@babel/plugin-transform-classes": "^7.14.5", + "@babel/plugin-transform-computed-properties": "^7.14.5", + "@babel/plugin-transform-destructuring": "^7.14.7", + "@babel/plugin-transform-dotall-regex": "^7.14.5", + "@babel/plugin-transform-duplicate-keys": "^7.14.5", + "@babel/plugin-transform-exponentiation-operator": "^7.14.5", + "@babel/plugin-transform-for-of": "^7.14.5", + "@babel/plugin-transform-function-name": "^7.14.5", + "@babel/plugin-transform-literals": "^7.14.5", + "@babel/plugin-transform-member-expression-literals": "^7.14.5", + "@babel/plugin-transform-modules-amd": "^7.14.5", + "@babel/plugin-transform-modules-commonjs": "^7.14.5", + "@babel/plugin-transform-modules-systemjs": "^7.14.5", + "@babel/plugin-transform-modules-umd": "^7.14.5", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.14.7", + "@babel/plugin-transform-new-target": "^7.14.5", + "@babel/plugin-transform-object-super": "^7.14.5", + "@babel/plugin-transform-parameters": "^7.14.5", + "@babel/plugin-transform-property-literals": "^7.14.5", + "@babel/plugin-transform-regenerator": "^7.14.5", + "@babel/plugin-transform-reserved-words": "^7.14.5", + "@babel/plugin-transform-shorthand-properties": "^7.14.5", + "@babel/plugin-transform-spread": "^7.14.6", + "@babel/plugin-transform-sticky-regex": "^7.14.5", + "@babel/plugin-transform-template-literals": "^7.14.5", + "@babel/plugin-transform-typeof-symbol": "^7.14.5", + "@babel/plugin-transform-unicode-escapes": "^7.14.5", + "@babel/plugin-transform-unicode-regex": "^7.14.5", + "@babel/preset-modules": "^0.1.4", + "@babel/types": "^7.14.5", + "babel-plugin-polyfill-corejs2": "^0.2.2", + "babel-plugin-polyfill-corejs3": "^0.2.2", + "babel-plugin-polyfill-regenerator": "^0.2.2", + "core-js-compat": "^3.15.0", "semver": "^6.3.0" }, "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - }, "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-validator-identifier": "^7.14.5", "to-fast-properties": "^2.0.0" } }, @@ -2489,9 +2232,9 @@ } }, "@babel/preset-modules": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", + "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -2502,34 +2245,26 @@ }, "dependencies": { "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-validator-identifier": "^7.14.5", "to-fast-properties": "^2.0.0" } } } }, "@babel/preset-typescript": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.16.7.tgz", - "integrity": "sha512-WbVEmgXdIyvzB77AQjGBEyYPZx+8tTsO50XtfozQrkW8QB2rLJpH2lgx0TRw5EJrBxOZQ+wCcyPVQvS8tjEHpQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.14.5.tgz", + "integrity": "sha512-u4zO6CdbRKbS9TypMqrlGH7sd2TAJppZwn3c/ZRLeO/wGsbddxgbPDUZVNrie3JWYLQ9vpineKlsrWFvO6Pwkw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-validator-option": "^7.16.7", - "@babel/plugin-transform-typescript": "^7.16.7" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - } + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-transform-typescript": "^7.14.5" } }, "@babel/runtime": { @@ -2550,34 +2285,6 @@ "@babel/types": "7.0.0-beta.44", "babylon": "7.0.0-beta.44", "lodash": "^4.2.0" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.44.tgz", - "integrity": "sha512-cuAuTTIQ9RqcFRJ/Y8PvTh+paepNcaGxwQwjIDRWPXmzzyAeCO4KqS9ikMvq0MCbRk6GlYKwfzStrcP3/jSL8g==", - "dev": true, - "requires": { - "@babel/highlight": "7.0.0-beta.44" - } - }, - "@babel/highlight": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.44.tgz", - "integrity": "sha512-Il19yJvy7vMFm8AVAh6OZzaFoAd0hbkeMZiX3P5HGD+z7dyI7RzndHB0dg6Urh/VAFfHtpOIzDUSxmY6coyZWQ==", - "dev": true, - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^3.0.0" - } - }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true - } } }, "@babel/traverse": { @@ -2596,34 +2303,6 @@ "globals": "^11.1.0", "invariant": "^2.2.0", "lodash": "^4.2.0" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.44.tgz", - "integrity": "sha512-cuAuTTIQ9RqcFRJ/Y8PvTh+paepNcaGxwQwjIDRWPXmzzyAeCO4KqS9ikMvq0MCbRk6GlYKwfzStrcP3/jSL8g==", - "dev": true, - "requires": { - "@babel/highlight": "7.0.0-beta.44" - } - }, - "@babel/highlight": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.44.tgz", - "integrity": "sha512-Il19yJvy7vMFm8AVAh6OZzaFoAd0hbkeMZiX3P5HGD+z7dyI7RzndHB0dg6Urh/VAFfHtpOIzDUSxmY6coyZWQ==", - "dev": true, - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^3.0.0" - } - }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true - } } }, "@babel/types": { @@ -2637,38 +2316,22 @@ "to-fast-properties": "^2.0.0" } }, - "@bundle-stats/plugin-webpack-filter": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/@bundle-stats/plugin-webpack-filter/-/plugin-webpack-filter-3.3.2.tgz", - "integrity": "sha512-eb6fAhV62Gta4PjTvx/cSLxbybDvLlYw4Lsjpj1fqre6U62XZz6FdfAwZ4Kt9fP3Qag2kWHYwiTaHuM7dfcZSQ==", - "dev": true - }, - "@bundle-stats/plugin-webpack-validate": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/@bundle-stats/plugin-webpack-validate/-/plugin-webpack-validate-3.3.2.tgz", - "integrity": "sha512-97WurPu6wZnmLTvt0vTH0PwJOaP2+rXLTeT4NUyfhZFnZ7FL6A32cQzXVBgQmBNV+wfTCJxMI1vad/ffV04zow==", - "dev": true, - "requires": { - "superstruct": "0.8.3" - } - }, "@bundle-stats/utils": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/@bundle-stats/utils/-/utils-3.3.2.tgz", - "integrity": "sha512-HYbFwGPN2dbGKlA/L/cNnTlY47M+WZR4/oEL+4f//52IuEUts8ABeEKVutqe+OeZYXPo00oIQIpcYenlpi5w0Q==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@bundle-stats/utils/-/utils-3.0.1.tgz", + "integrity": "sha512-FWGtsbEUyEpKpAN2hA7cZQIUqbH2I9WHClOcKmv7kdsNRhvNn2YPAho0eGz0ZMxjH2Goz3a17Y5BjIxDHJMDQA==", "dev": true, "requires": { - "@bundle-stats/plugin-webpack-filter": "^3.3.2", - "@bundle-stats/plugin-webpack-validate": "^3.3.2", - "convert-units": "3.0.0-beta.2", - "query-string": "7.1.1", - "serialize-query-params": "1.3.6" + "convert-units": "^2.3.4", + "query-string": "^7.0.0", + "serialize-query-params": "^1.3.3", + "superstruct": "^0.8.3" }, "dependencies": { "query-string": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.1.tgz", - "integrity": "sha512-MplouLRDHBZSG9z7fpuAAcI7aAYjDLhtsiVZsevsfaHWDS2IDdORKbSd1kWUA+V4zyva/HZoSfpwnYMMQDhb0w==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.0.1.tgz", + "integrity": "sha512-uIw3iRvHnk9to1blJCG3BTc+Ro56CBowJXKmNNAm3RulvPBzWLRqKSiiDk+IplJhsydwtuNMHi8UGQFcCLVfkA==", "dev": true, "requires": { "decode-uri-component": "^0.2.0", @@ -2676,6 +2339,12 @@ "split-on-first": "^1.0.0", "strict-uri-encode": "^2.0.0" } + }, + "strict-uri-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", + "integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY=", + "dev": true } } }, @@ -2721,12 +2390,47 @@ "supports-color": "^2.0.0" } }, + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "dev": true, + "requires": { + "restore-cursor": "^1.0.1" + } + }, "date-fns": { "version": "1.30.1", "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==", "dev": true }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "onetime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "dev": true + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "dev": true, + "requires": { + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" + } + }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", @@ -2735,19 +2439,13 @@ "requires": { "ansi-regex": "^2.0.0" } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true } } }, "@cypress/request": { - "version": "2.88.10", - "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.10.tgz", - "integrity": "sha512-Zp7F+R93N0yZyG34GutyTNr+okam7s/Fzc1+i3kcqOP8vk6OuajuE9qZJ6Rs+10/1JFtXFYMdyarnU1rZuJesg==", + "version": "2.88.5", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.5.tgz", + "integrity": "sha512-TzEC1XMi1hJkywWpRfD2clreTa/Z+lOrXDCxxBTBPEcY5azdPi56A6Xw+O4tWJnaJH3iIE7G5aDXZC6JgRZLcA==", "dev": true, "requires": { "aws-sign2": "~0.7.0", @@ -2757,25 +2455,19 @@ "extend": "~3.0.2", "forever-agent": "~0.6.1", "form-data": "~2.3.2", - "http-signature": "~1.3.6", + "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": "^8.3.2" - }, - "dependencies": { - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true - } + "uuid": "^3.3.2" } }, "@cypress/xvfb": { @@ -2788,50 +2480,16 @@ "lodash.once": "^4.1.1" } }, - "@emotion/babel-plugin": { - "version": "11.7.2", - "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.7.2.tgz", - "integrity": "sha512-6mGSCWi9UzXut/ZAN6lGFu33wGR3SJisNl3c0tvlmb8XChH1b2SUvxvnOh7hvLpqyRdHHU9AiazV3Cwbk5SXKQ==", - "requires": { - "@babel/helper-module-imports": "^7.12.13", - "@babel/plugin-syntax-jsx": "^7.12.13", - "@babel/runtime": "^7.13.10", - "@emotion/hash": "^0.8.0", - "@emotion/memoize": "^0.7.5", - "@emotion/serialize": "^1.0.2", - "babel-plugin-macros": "^2.6.1", - "convert-source-map": "^1.5.0", - "escape-string-regexp": "^4.0.0", - "find-root": "^1.1.0", - "source-map": "^0.5.7", - "stylis": "4.0.13" - }, - "dependencies": { - "@babel/runtime": { - "version": "7.17.8", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.8.tgz", - "integrity": "sha512-dQpEpK0O9o6lj6oPu0gRDbbnk+4LeHlNcBpspf6Olzt3GIX4P1lWF1gS+pHLDFlaJvbR6q7jCfQ08zA4QJBnmA==", - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" - } - } - }, "@emotion/cache": { - "version": "11.7.1", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.7.1.tgz", - "integrity": "sha512-r65Zy4Iljb8oyjtLeCuBH8Qjiy107dOYC6SJq7g7GV5UCQWMObY4SJDPGFjiiVpPrOJ2hmJOoBiYTC7hwx9E2A==", + "version": "11.4.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.4.0.tgz", + "integrity": "sha512-Zx70bjE7LErRO9OaZrhf22Qye1y4F7iDl+ITjet0J+i+B88PrAOBkKvaAWhxsZf72tDLajwCgfCjJ2dvH77C3g==", "requires": { "@emotion/memoize": "^0.7.4", - "@emotion/sheet": "^1.1.0", + "@emotion/sheet": "^1.0.0", "@emotion/utils": "^1.0.0", "@emotion/weak-memoize": "^0.2.5", - "stylis": "4.0.13" + "stylis": "^4.0.3" } }, "@emotion/hash": { @@ -2845,26 +2503,31 @@ "integrity": "sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ==" }, "@emotion/react": { - "version": "11.8.2", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.8.2.tgz", - "integrity": "sha512-+1bcHBaNJv5nkIIgnGKVsie3otS0wF9f1T1hteF3WeVvMNQEtfZ4YyFpnphGoot3ilU/wWMgP2SgIDuHLE/wAA==", + "version": "11.4.0", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.4.0.tgz", + "integrity": "sha512-4XklWsl9BdtatLoJpSjusXhpKv9YVteYKh9hPKP1Sxl+mswEFoUe0WtmtWjxEjkA51DQ2QRMCNOvKcSlCQ7ivg==", "requires": { "@babel/runtime": "^7.13.10", - "@emotion/babel-plugin": "^11.7.1", - "@emotion/cache": "^11.7.1", + "@emotion/cache": "^11.4.0", "@emotion/serialize": "^1.0.2", - "@emotion/utils": "^1.1.0", + "@emotion/sheet": "^1.0.1", + "@emotion/utils": "^1.0.0", "@emotion/weak-memoize": "^0.2.5", "hoist-non-react-statics": "^3.3.1" }, "dependencies": { "@babel/runtime": { - "version": "7.17.8", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.8.tgz", - "integrity": "sha512-dQpEpK0O9o6lj6oPu0gRDbbnk+4LeHlNcBpspf6Olzt3GIX4P1lWF1gS+pHLDFlaJvbR6q7jCfQ08zA4QJBnmA==", + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.6.tgz", + "integrity": "sha512-/PCB2uJ7oM44tz8YhC4Z/6PeOKXp4K588f+5M3clr1M4zbqztlo0XEfJ2LEzj/FgwfgGcIdl8n7YYjTCI0BYwg==", "requires": { "regenerator-runtime": "^0.13.4" } + }, + "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==" } } }, @@ -2878,12 +2541,19 @@ "@emotion/unitless": "^0.7.5", "@emotion/utils": "^1.0.0", "csstype": "^3.0.2" + }, + "dependencies": { + "csstype": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.8.tgz", + "integrity": "sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw==" + } } }, "@emotion/sheet": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.1.0.tgz", - "integrity": "sha512-u0AX4aSo25sMAygCuQTzS+HsImZFuS8llY8O7b9MDRzbJM0kVJlAz6KNDqcG7pOuQZJmj/8X/rAW+66kMnMW+g==" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.0.1.tgz", + "integrity": "sha512-GbIvVMe4U+Zc+929N1V7nW6YYJtidj31lidSmdYcWozwoBIObXBnaJkKNDjZrLm9Nc0BR+ZyHNaRZxqNZbof5g==" }, "@emotion/unitless": { "version": "0.7.5", @@ -2891,21 +2561,15 @@ "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" }, "@emotion/utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.1.0.tgz", - "integrity": "sha512-iRLa/Y4Rs5H/f2nimczYmS5kFJEbpiVvgN3XVfZ022IYhuNA1IRSHEizcof88LtCTXtl9S2Cxt32KgaXEu72JQ==" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.0.0.tgz", + "integrity": "sha512-mQC2b3XLDs6QCW+pDQDiyO/EdGZYOygE8s5N5rrzjSI4M3IejPE/JPndCBwRT9z982aqQNi6beWs1UeayrQxxA==" }, "@emotion/weak-memoize": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz", "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==" }, - "@gar/promisify": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", - "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", - "dev": true - }, "@gladysassistant/gladys-gateway-js": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/@gladysassistant/gladys-gateway-js/-/gladys-gateway-js-3.5.0.tgz", @@ -2926,6 +2590,52 @@ "resolved": "https://registry.npmjs.org/@gladysassistant/theme-optimized/-/theme-optimized-1.0.3.tgz", "integrity": "sha512-FhcHgDFXPb3BCw31wK9p2Cr/4L+oApzmPnIyk7GaybIYyznLWOuhYf0TXzaA9uMlARbpK5HgMmzJUaloXgiykA==" }, + "@hapi/address": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", + "integrity": "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==", + "dev": true + }, + "@hapi/formula": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@hapi/formula/-/formula-1.2.0.tgz", + "integrity": "sha512-UFbtbGPjstz0eWHb+ga/GM3Z9EzqKXFWIbSOFURU0A/Gku0Bky4bCk9/h//K2Xr3IrCfjFNhMm4jyZ5dbCewGA==", + "dev": true + }, + "@hapi/hoek": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz", + "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==", + "dev": true + }, + "@hapi/joi": { + "version": "16.1.8", + "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-16.1.8.tgz", + "integrity": "sha512-wAsVvTPe+FwSrsAurNt5vkg3zo+TblvC5Bb1zMVK6SJzZqw9UrJnexxR+76cpePmtUZKHAPxcQ2Bf7oVHyahhg==", + "dev": true, + "requires": { + "@hapi/address": "^2.1.2", + "@hapi/formula": "^1.2.0", + "@hapi/hoek": "^8.2.4", + "@hapi/pinpoint": "^1.0.2", + "@hapi/topo": "^3.1.3" + } + }, + "@hapi/pinpoint": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@hapi/pinpoint/-/pinpoint-1.0.2.tgz", + "integrity": "sha512-dtXC/WkZBfC5vxscazuiJ6iq4j9oNx1SHknmIr8hofarpKUZKmlUVYVIhNVzIEgK5Wrc4GMHL5lZtt1uS2flmQ==", + "dev": true + }, + "@hapi/topo": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz", + "integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==", + "dev": true, + "requires": { + "@hapi/hoek": "^8.3.0" + } + }, "@hypnosphi/create-react-context": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/@hypnosphi/create-react-context/-/create-react-context-0.3.1.tgz", @@ -2949,28 +2659,6 @@ "preact": "^10.0.0" } }, - "@jridgewell/resolve-uri": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", - "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==", - "dev": true - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.11", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", - "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz", - "integrity": "sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, "@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -2997,42 +2685,6 @@ "fastq": "^1.6.0" } }, - "@npmcli/fs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", - "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", - "dev": true, - "requires": { - "@gar/promisify": "^1.0.1", - "semver": "^7.3.5" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, "@npmcli/move-file": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", @@ -3048,13 +2700,22 @@ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } } } }, "@polka/url": { - "version": "1.0.0-next.21", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", - "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==", + "version": "1.0.0-next.15", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.15.tgz", + "integrity": "sha512-15spi3V28QdevleWBNXE4pIls3nFZmBbUGrW9IVPwiQczuSb9n76TCB4bsk8TSel+I1OkHEdPhu5QKMfY6rQHA==", "dev": true }, "@preact/async-loader": { @@ -3068,31 +2729,31 @@ } }, "@prefresh/babel-plugin": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@prefresh/babel-plugin/-/babel-plugin-0.4.3.tgz", - "integrity": "sha512-fYAWbU1WDSLn108kKY4eDaaeUcnszFqXjgaGKYXNZ5NLulpRTpsrY+Sbfo9q8LDpWrBpqIgzjrwNnvglWI1xNQ==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@prefresh/babel-plugin/-/babel-plugin-0.4.1.tgz", + "integrity": "sha512-gj3ekiYtHlZNz0zFI1z6a9mcYX80Qacw84+2++7V1skvO7kQoV2ux56r8bJkTBbKMVxwAgaYrxxIdUCYlclE7Q==", "dev": true }, "@prefresh/core": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/@prefresh/core/-/core-1.3.4.tgz", - "integrity": "sha512-s7iNsnyJ3lZEUrYIgmVIB/hKtp4U6mdD91a31Zg7Q8M49O0x2KThrbrMQYraoDDrs4STdFB8Zv6bceUguOoX1A==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@prefresh/core/-/core-1.3.2.tgz", + "integrity": "sha512-Iv+uI698KDgWsrKpLvOgN3hmAMyvhVgn09mcnhZ98BUNdg/qrxE7tcUf5yFCImkgqED5/Dcn8G5hFy4IikEDvg==", "dev": true }, "@prefresh/utils": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@prefresh/utils/-/utils-1.1.3.tgz", - "integrity": "sha512-Mb9abhJTOV4yCfkXrMrcgFiFT7MfNOw8sDa+XyZBdq/Ai2p4Zyxqsb3EgHLOEdHpMj6J9aiZ54W8H6FTam1u+A==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@prefresh/utils/-/utils-1.1.1.tgz", + "integrity": "sha512-MUhT5m2XNN5NsZl4GnpuvlzLo6VSTa/+wBfBd3fiWUvHGhv0GF9hnA1pd//v0uJaKwUnVRQ1hYElxCV7DtYsCQ==", "dev": true }, "@prefresh/webpack": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/@prefresh/webpack/-/webpack-3.3.3.tgz", - "integrity": "sha512-uT+A7ZuA7fuuUPNEde6Gmzr4oFnzreW9xw6iqw01nPpDiv46o6YWq1j0oGCbdffzHl3fBpcgkPuY07vIfmZ9Lg==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/@prefresh/webpack/-/webpack-3.3.2.tgz", + "integrity": "sha512-1cX0t5G7IXWO2164sl2O32G02BzDl6C4UUZWfDb0x1CQM1g3It9PSLWd+rIlHfSg4MEU9YHM8e6/OK8uavRJhA==", "dev": true, "requires": { - "@prefresh/core": "^1.3.3", - "@prefresh/utils": "^1.1.2" + "@prefresh/core": "^1.3.1", + "@prefresh/utils": "^1.1.0" } }, "@relative-ci/agent": { @@ -3112,10 +2773,49 @@ "lodash": "^4.17.15" }, "dependencies": { + "@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.14.5" + } + }, + "@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "core-js": { + "version": "3.15.2", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.15.2.tgz", + "integrity": "sha512-tKs41J7NJVuaya8DxIOCnl8QuPHx5/ZVbFo1oKgVl1qHFBBrDctzQGtuLjPpRdNTWmKPH6oEvgN/MUID+l485Q==", + "dev": true + }, + "cosmiconfig": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", + "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", + "dev": true, + "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" + } + }, "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "dev": true, "requires": { "ms": "2.1.2" @@ -3127,40 +2827,207 @@ "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", "dev": true }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true - } - } - }, - "@relative-ci/env-ci": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/@relative-ci/env-ci/-/env-ci-5.3.1.tgz", - "integrity": "sha512-FychihgwUb2n28hACPROIb7LDrIQPGrIPXOZ7OsIFZw8o2rJzI1Xz0l6EJd79ePB+30rgmMJBFCnTmsH+t5ZvQ==", - "dev": true, - "requires": { + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true + } + } + }, + "@relative-ci/env-ci": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@relative-ci/env-ci/-/env-ci-5.3.1.tgz", + "integrity": "sha512-FychihgwUb2n28hACPROIb7LDrIQPGrIPXOZ7OsIFZw8o2rJzI1Xz0l6EJd79ePB+30rgmMJBFCnTmsH+t5ZvQ==", + "dev": true, + "requires": { "execa": "^4.0.0", "java-properties": "^1.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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } } }, "@restart/hooks": { - "version": "0.3.27", - "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.3.27.tgz", - "integrity": "sha512-s984xV/EapUIfkjlf8wz9weP2O9TNKR96C68FfMEy2bE69+H4cNv3RD4Mf97lW7Htt7PjZrYTjSC8f3SB9VCXw==", - "requires": { - "dequal": "^2.0.2" - } + "version": "0.3.15", + "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.3.15.tgz", + "integrity": "sha512-rVNba1A2oMzKBg16fCrrHmCf4JjOzFhT9TWR8J+Y8iOcY4zffxtP3ke7mEsakvghHZT+9//uDOPSSeuBDW41GQ==" }, "@rollup/plugin-babel": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", - "integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz", + "integrity": "sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.10.4", "@rollup/pluginutils": "^3.1.0" + }, + "dependencies": { + "@babel/helper-module-imports": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", + "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", + "dev": true, + "requires": { + "@babel/types": "^7.14.5" + } + }, + "@babel/types": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.5", + "to-fast-properties": "^2.0.0" + } + } } }, "@rollup/plugin-node-resolve": { @@ -3183,21 +3050,14 @@ "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", "dev": true }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, "resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, "requires": { - "is-core-module": "^2.8.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" } } } @@ -3239,23 +3099,13 @@ "dev": true }, "@surma/rollup-plugin-off-main-thread": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz", - "integrity": "sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==", + "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==", "dev": true, "requires": { - "ejs": "^3.1.6", - "json5": "^2.2.0", - "magic-string": "^0.25.0", - "string.prototype.matchall": "^4.0.6" - }, - "dependencies": { - "json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", - "dev": true - } + "ejs": "^2.6.1", + "magic-string": "^0.25.0" } }, "@szmarczak/http-timer": { @@ -3268,9 +3118,9 @@ } }, "@trysound/sax": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", - "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.1.1.tgz", + "integrity": "sha512-Z6DoceYb/1xSg5+e+ZlPZ9v0N16ZvZ+wYMraFue4HYrE4ttONKtsvruIRf6t9TBR0YvSOfi1hUU0fJfBLCDYow==", "dev": true }, "@types/estree": { @@ -3280,9 +3130,9 @@ "dev": true }, "@types/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA==", "dev": true, "requires": { "@types/minimatch": "*", @@ -3290,9 +3140,9 @@ } }, "@types/json-schema": { - "version": "7.0.10", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.10.tgz", - "integrity": "sha512-BLO9bBq59vW3fxCpD4o0N4U+DXsvwvIcl+jofw0frQo/GrBFC+/jRZj1E7kgp6dvTyNmA4y6JCV5Id/r3mNP5A==", + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.8.tgz", + "integrity": "sha512-YSBPTLTVm2e2OoQIDYx8HaeWJ5tTToLH67kXR7zYNGupXMEHa2++G8k+DczX2cFVgalypqtyZIcU19AFcmOpmg==", "dev": true }, "@types/minimatch": { @@ -3302,20 +3152,21 @@ "dev": true }, "@types/node": { - "version": "12.12.50", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.50.tgz", - "integrity": "sha512-5ImO01Fb8YsEOYpV+aeyGYztcYcjGsBvN4D7G5r1ef2cuQOpymjWNQi5V0rKHE6PC2ru3HkoUr/Br2/8GUA84w==", + "version": "16.3.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.3.2.tgz", + "integrity": "sha512-jJs9ErFLP403I+hMLGnqDRWT0RYKSvArxuBVh2veudHV7ifEC1WAmjJADacZ7mRbA2nWgHtn8xyECMAot0SkAw==", "dev": true }, "@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==" + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true }, "@types/prop-types": { - "version": "15.7.4", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz", - "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==" + "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.5", @@ -3324,13 +3175,12 @@ "dev": true }, "@types/react": { - "version": "16.14.24", - "resolved": "https://registry.npmjs.org/@types/react/-/react-16.14.24.tgz", - "integrity": "sha512-e7U2WC8XQP/xfR7bwhOhNFZKPTfW1ph+MiqtudKb8tSV8RyCsovQx2sNVtKoOryjxFKpHPPC/yNiGfdeVM5Gyw==", + "version": "16.9.11", + "resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.11.tgz", + "integrity": "sha512-UBT4GZ3PokTXSWmdgC/GeCGEJXE5ofWyibCcecRLUVN2ZBpXQGVgQGtG2foS7CrTKFKlQVVswLvf7Js6XA/CVQ==", "requires": { "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" + "csstype": "^2.2.0" } }, "@types/resolve": { @@ -3342,15 +3192,10 @@ "@types/node": "*" } }, - "@types/scheduler": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", - "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" - }, "@types/sinonjs__fake-timers": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.4.tgz", - "integrity": "sha512-IFQTJARgMUBF+xVd2b+hIgXWrZEjND3vJtRCvIelcFB5SIXfjV4bOHbHJ0eXKh+0COrBRc8MqteKAz/j88rE0A==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.3.tgz", + "integrity": "sha512-E1dU4fzC9wN2QK2Cr1MLCfyHM8BoNnRFvuf45LYMPNDA+WqbNzC45S4UzPxvp1fFJ1rvSGU0bPvdd35VLmXG8g==", "dev": true }, "@types/sizzle": { @@ -3359,12 +3204,6 @@ "integrity": "sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==", "dev": true }, - "@types/trusted-types": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.2.tgz", - "integrity": "sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg==", - "dev": true - }, "@webassemblyjs/ast": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", @@ -3564,13 +3403,13 @@ "dev": true }, "accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", "dev": true, "requires": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" + "mime-types": "~2.1.24", + "negotiator": "0.6.2" } }, "acorn": { @@ -3636,14 +3475,6 @@ "requires": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" - }, - "dependencies": { - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true - } } }, "ajv": { @@ -3677,52 +3508,12 @@ "dev": true }, "ansi-align": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", - "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", + "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==", "dev": true, "requires": { - "string-width": "^4.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } + "string-width": "^3.0.0" } }, "ansi-colors": { @@ -3737,16 +3528,16 @@ "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", "dev": true }, - "ansi-html-community": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", - "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", "dev": true }, "ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==" + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" }, "ansi-styles": { "version": "3.2.1", @@ -3982,6 +3773,12 @@ "kind-of": "^6.0.0" } }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, "is-data-descriptor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", @@ -4022,6 +3819,12 @@ } } }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, "micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -4127,16 +3930,13 @@ "dev": true }, "array-includes": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", - "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", + "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", "dev": true, "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", - "is-string": "^1.0.7" + "define-properties": "^1.1.2", + "es-abstract": "^1.7.0" } }, "array-union": { @@ -4157,17 +3957,6 @@ "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", "dev": true }, - "array.prototype.flatmap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz", - "integrity": "sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0" - } - }, "arraybuffer.slice": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", @@ -4180,9 +3969,9 @@ "dev": true }, "asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", "dev": true, "requires": { "safer-buffer": "~2.1.0" @@ -4254,10 +4043,13 @@ "dev": true }, "async": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", - "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==", - "dev": true + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } }, "async-each": { "version": "1.0.3", @@ -4298,17 +4090,50 @@ } }, "autoprefixer": { - "version": "10.4.4", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.4.tgz", - "integrity": "sha512-Tm8JxsB286VweiZ5F0anmbyGiNI3v3wGv3mz9W+cxEDYB/6jbnj6GM9H9mK3wIL8ftgl+C07Lcwb8PG5PCCPzA==", + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.3.1.tgz", + "integrity": "sha512-L8AmtKzdiRyYg7BUXJTzigmhbQRCXFKz6SA1Lqo0+AR2FBbQ4aTAPFSDlOutnFkjhiz8my4agGXog1xlMjPJ6A==", "dev": true, "requires": { - "browserslist": "^4.20.2", - "caniuse-lite": "^1.0.30001317", - "fraction.js": "^4.2.0", + "browserslist": "^4.16.6", + "caniuse-lite": "^1.0.30001243", + "colorette": "^1.2.2", + "fraction.js": "^4.1.1", "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" + "postcss-value-parser": "^4.1.0" + }, + "dependencies": { + "browserslist": { + "version": "4.16.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", + "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001219", + "colorette": "^1.2.2", + "electron-to-chromium": "^1.3.723", + "escalade": "^3.1.1", + "node-releases": "^1.1.71" + } + }, + "caniuse-lite": { + "version": "1.0.30001245", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001245.tgz", + "integrity": "sha512-768fM9j1PKXpOCKws6eTo3RHmvTUsG9UrpT4WoREFeZgJBTi4/X9g565azS/rVUGtqb8nt7FjLeF5u4kukERnA==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.776", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.776.tgz", + "integrity": "sha512-V0w7eFSBoFPpdw4xexjVPZ770UDZIevSwkkj4W97XbE3IsCsTRFpa7/yXGZ88EOQAUEA09JMMsWK0xsw0kRAYw==", + "dev": true + }, + "node-releases": { + "version": "1.1.73", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz", + "integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==", + "dev": true + } } }, "aws-sign2": { @@ -4318,9 +4143,9 @@ "dev": true }, "aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", "dev": true }, "axios": { @@ -4329,6 +4154,13 @@ "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", "requires": { "follow-redirects": "^1.10.0" + }, + "dependencies": { + "follow-redirects": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.3.tgz", + "integrity": "sha512-DUgl6+HDzB0iEptNQEXLx/KhTmDb8tZUHSeLqpnjpknR70H0nC2t9N73BK6fN4hOvJ84pKlIQVQ4k5FFlBedKA==" + } } }, "babel-code-frame": { @@ -4381,12 +4213,6 @@ "requires": { "ansi-regex": "^2.0.0" } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true } } }, @@ -4448,26 +4274,6 @@ "eslint-visitor-keys": "^1.0.0" }, "dependencies": { - "@babel/code-frame": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.44.tgz", - "integrity": "sha512-cuAuTTIQ9RqcFRJ/Y8PvTh+paepNcaGxwQwjIDRWPXmzzyAeCO4KqS9ikMvq0MCbRk6GlYKwfzStrcP3/jSL8g==", - "dev": true, - "requires": { - "@babel/highlight": "7.0.0-beta.44" - } - }, - "@babel/highlight": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.44.tgz", - "integrity": "sha512-Il19yJvy7vMFm8AVAh6OZzaFoAd0hbkeMZiX3P5HGD+z7dyI7RzndHB0dg6Urh/VAFfHtpOIzDUSxmY6coyZWQ==", - "dev": true, - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^3.0.0" - } - }, "eslint-scope": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", @@ -4477,12 +4283,6 @@ "esrecurse": "^4.1.0", "estraverse": "^4.1.1" } - }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true } } }, @@ -4563,9 +4363,9 @@ } }, "babel-loader": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.3.tgz", - "integrity": "sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw==", + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.2.tgz", + "integrity": "sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g==", "dev": true, "requires": { "find-cache-dir": "^3.3.1", @@ -4593,6 +4393,12 @@ "emojis-list": "^3.0.0", "json5": "^1.0.1" } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true } } }, @@ -4677,78 +4483,15 @@ "integrity": "sha512-yi5QuiVyyvhBUDLP4ButAnhYzkdrUwWDtvUJv71hjH3fclhnZg4HkDeqaitcR2dZZx/E67kGkRcPVjtVu+SJfQ==", "dev": true }, - "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==", + "babel-plugin-polyfill-corejs2": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz", + "integrity": "sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ==", + "dev": true, "requires": { - "@babel/runtime": "^7.7.2", - "cosmiconfig": "^6.0.0", - "resolve": "^1.12.0" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", - "requires": { - "@babel/highlight": "^7.16.7" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==" - }, - "@babel/highlight": { - "version": "7.16.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", - "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "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" - } - }, - "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" - } - } - }, - "babel-plugin-polyfill-corejs2": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", - "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.3.1", - "semver": "^6.1.1" + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.2.2", + "semver": "^6.1.1" }, "dependencies": { "semver": { @@ -4760,22 +4503,22 @@ } }, "babel-plugin-polyfill-corejs3": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz", - "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==", + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.3.tgz", + "integrity": "sha512-rCOFzEIJpJEAU14XCcV/erIf/wZQMmMT5l5vXOpL5uoznyOGfDIjPj6FVytMvtzaKSTSVKouOCTPJ5OMUZH30g==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.1", - "core-js-compat": "^3.21.0" + "@babel/helper-define-polyfill-provider": "^0.2.2", + "core-js-compat": "^3.14.0" } }, "babel-plugin-polyfill-regenerator": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", - "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz", + "integrity": "sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.1" + "@babel/helper-define-polyfill-provider": "^0.2.2" } }, "babel-plugin-syntax-object-rest-spread": { @@ -4813,14 +4556,6 @@ "lodash": "^4.17.4", "mkdirp": "^0.5.1", "source-map-support": "^0.4.15" - }, - "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==", - "dev": true - } } }, "babel-runtime": { @@ -4833,12 +4568,6 @@ "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==", - "dev": true - }, "regenerator-runtime": { "version": "0.11.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", @@ -4940,9 +4669,9 @@ "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" }, "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, "base": { @@ -4997,6 +4726,12 @@ "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true } } }, @@ -5038,16 +4773,6 @@ "dev": true, "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==", - "dev": true, - "optional": true, - "requires": { - "file-uri-to-path": "1.0.0" - } - }, "bl": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", @@ -5059,6 +4784,16 @@ "readable-stream": "^3.4.0" }, "dependencies": { + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, "readable-stream": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", @@ -5096,27 +4831,27 @@ "dev": true }, "body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==", + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", "dev": true, "requires": { - "bytes": "3.1.2", + "bytes": "3.1.0", "content-type": "~1.0.4", "debug": "2.6.9", "depd": "~1.1.2", - "http-errors": "1.8.1", + "http-errors": "1.7.2", "iconv-lite": "0.4.24", "on-finished": "~2.3.0", - "qs": "6.9.7", - "raw-body": "2.4.3", - "type-is": "~1.6.18" + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" }, "dependencies": { "bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", "dev": true }, "debug": { @@ -5129,9 +4864,9 @@ } }, "qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==", + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", "dev": true } } @@ -5157,25 +4892,25 @@ "dev": true }, "boxen": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", - "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.0.1.tgz", + "integrity": "sha512-49VBlw+PrWEF51aCmy7QIteYPIFZxSpvqBdP/2itCPPlJ49kj9zg/XPRFrdkne2W+CfwXUls8exMvu1RysZpKA==", "dev": true, "requires": { "ansi-align": "^3.0.0", "camelcase": "^6.2.0", "chalk": "^4.1.0", "cli-boxes": "^2.2.1", - "string-width": "^4.2.2", + "string-width": "^4.2.0", "type-fest": "^0.20.2", "widest-line": "^3.1.0", "wrap-ansi": "^7.0.0" }, "dependencies": { "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true }, "ansi-styles": { @@ -5188,15 +4923,15 @@ } }, "camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", "dev": true }, "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -5224,6 +4959,12 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "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", @@ -5231,23 +4972,32 @@ "dev": true }, "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "strip-ansi": "^6.0.0" } }, "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "ansi-regex": "^5.0.1" + "ansi-regex": "^5.0.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==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" } }, "wrap-ansi": { @@ -5415,16 +5165,14 @@ } }, "browserslist": { - "version": "4.20.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.2.tgz", - "integrity": "sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==", + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.7.2.tgz", + "integrity": "sha512-uZavT/gZXJd2UTi9Ov7/Z340WOSQ3+m1iBVRUknf+okKxonL9P83S3ctiBDtuRmRu8PiCHjqyueqQ9HYlJhxiw==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001317", - "electron-to-chromium": "^1.4.84", - "escalade": "^3.1.1", - "node-releases": "^2.0.2", - "picocolors": "^1.0.0" + "caniuse-lite": "^1.0.30001004", + "electron-to-chromium": "^1.3.295", + "node-releases": "^1.1.38" } }, "bser": { @@ -5437,12 +5185,12 @@ } }, "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.4.3.tgz", + "integrity": "sha512-zvj65TkFeIt3i6aj5bIvJDzjjQQGs4o/sNoezg1F1kYap9Nu2jcUdpwzRSJTHMMzG0H7bZkn4rNQpImhuxWX2A==", "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" } }, "buffer-alloc": { @@ -5512,12 +5260,11 @@ "dev": true }, "cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "version": "15.2.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.2.0.tgz", + "integrity": "sha512-uKoJSHmnrqXgthDFx/IU6ED/5xd+NNGe+Bb+kLZy7Ku4P+BaiWEUflAKPZ7eAzsYGcsAGASJZsybXp+quEcHTw==", "dev": true, "requires": { - "@npmcli/fs": "^1.0.0", "@npmcli/move-file": "^1.0.1", "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -5552,13 +5299,13 @@ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true }, - "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==", + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "requires": { - "aggregate-error": "^3.0.0" + "glob": "^7.1.3" } }, "yallist": { @@ -5630,6 +5377,15 @@ "responselike": "^1.0.2" }, "dependencies": { + "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==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, "lowercase-keys": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", @@ -5654,6 +5410,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, "requires": { "function-bind": "^1.1.1", "get-intrinsic": "^1.0.2" @@ -5719,15 +5476,15 @@ } }, "caniuse-db": { - "version": "1.0.30001319", - "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30001319.tgz", - "integrity": "sha512-fSBlalNv/ON++nNaSnXGocVeDwVcyTx2lwkwVxQ6YEt814v1DhC/Kt0lj4MJJ3phAa/Z6zP37C2G726nHopLOg==", + "version": "1.0.30001009", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30001009.tgz", + "integrity": "sha512-klfjT6Tmyg/1GINznqr1oE89cw08gKHkA8yU801fxZGE4lao1EL7+W1fAXLniGUOS3kSuHT9dE7ZSTgSAs27iQ==", "dev": true }, "caniuse-lite": { - "version": "1.0.30001319", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001319.tgz", - "integrity": "sha512-xjlIAFHucBRSMUo1kb5D4LYgcN1M45qdKP++lhqowDpwJwGkpIRTt5qQqnhxjj1vHcI7nrJxWhCC1ATrCEBTcw==", + "version": "1.0.30001009", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001009.tgz", + "integrity": "sha512-M3rEqHN6SaVjgo4bIik7HsGcWXsi+lI9WA0p51RPMFx5gXfduyOXWJrc0R4xBkSK1pgNf4CNgy5M+6H+WiEP8g==", "dev": true }, "capture-exit": { @@ -5749,6 +5506,7 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -5759,18 +5517,13 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "requires": { "has-flag": "^3.0.0" } } } }, - "charcodes": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/charcodes/-/charcodes-0.2.0.tgz", - "integrity": "sha512-Y4kiDb+AM4Ecy58YkuZrrSRJBDQdQ2L+NyS1vHHFtNtUjgutcZfx3yp1dAONI/oPaPmyGfCLx5CxL+zauIMyKQ==", - "dev": true - }, "chardet": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", @@ -5784,9 +5537,9 @@ "dev": true }, "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", + "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", "dev": true, "optional": true, "requires": { @@ -5856,9 +5609,9 @@ "optional": true }, "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", "dev": true, "optional": true, "requires": { @@ -5904,15 +5657,15 @@ "dev": true }, "ci-env": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/ci-env/-/ci-env-1.17.0.tgz", - "integrity": "sha512-NtTjhgSEqv4Aj90TUYHQLxHdnCPXnjdtuGG1X8lTfp/JqeXTdw0FTWl/vUAPuvbWZTF8QVpv6ASe/XacE+7R2A==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/ci-env/-/ci-env-1.16.0.tgz", + "integrity": "sha512-ucF9caQEX5wQlY449KZBIJPx91+kRg9tJ3tWSc4+KzrvC5KNiPm/3g1noP8VhdI3046+Vw3jLmKAD0fjCRJTmw==", "dev": true }, "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", + "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==", "dev": true }, "cipher-base": { @@ -5960,9 +5713,9 @@ "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==" }, "clean-css": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz", - "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==", + "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==", "dev": true, "requires": { "source-map": "~0.6.0" @@ -5989,34 +5742,35 @@ "dev": true }, "cli-cursor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", - "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", "dev": true, "requires": { - "restore-cursor": "^1.0.1" + "restore-cursor": "^2.0.0" } }, "cli-spinners": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", - "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.0.tgz", + "integrity": "sha512-t+4/y50K/+4xcCRosKkA7W4gTr1MySvLV0q+PxmG7FJ5g+66ChKurYjxBCjHggHH3HA5Hh9cy+lcUGWDqVH+4Q==", "dev": true }, "cli-table3": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.1.tgz", - "integrity": "sha512-w0q/enDHhPLq44ovMGdQeeDLvwxwavsJX7oQGYt/LrBlYsyaxyDnp6z3QzFut/6kLLKnlcUVJLrpB7KBfgG/RA==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.0.tgz", + "integrity": "sha512-gnB85c3MGC7Nm9I/FkiasNBOKjOiO1RNuXXarQms37q4QMpWdlbBgD/VnOStA2faG1dpXMv31RFApjX1/QdgWQ==", "dev": true, "requires": { - "colors": "1.4.0", + "colors": "^1.1.2", + "object-assign": "^4.1.0", "string-width": "^4.2.0" }, "dependencies": { "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true }, "emoji-regex": { @@ -6032,23 +5786,23 @@ "dev": true }, "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "strip-ansi": "^6.0.0" } }, "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "ansi-regex": "^5.0.1" + "ansi-regex": "^5.0.0" } } } @@ -6078,6 +5832,12 @@ "number-is-nan": "^1.0.0" } }, + "slice-ansi": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", + "dev": true + }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", @@ -6101,9 +5861,9 @@ } }, "cli-width": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", - "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", "dev": true }, "cliui": { @@ -6131,6 +5891,14 @@ "is-plain-object": "^2.0.4", "kind-of": "^6.0.2", "shallow-clone": "^3.0.0" + }, + "dependencies": { + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + } } }, "clone-response": { @@ -6143,9 +5911,9 @@ } }, "clsx": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz", - "integrity": "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==" + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.0.4.tgz", + "integrity": "sha512-1mQ557MIZTrL/140j+JVdRM6e31/OA4vTYxXgqIIZlndyfjHpyawKZia1Im05Vp9BWmImkcNrNtFYQMyFcgJDg==" }, "co": { "version": "4.6.0", @@ -6181,13 +5949,13 @@ } }, "color": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", - "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/color/-/color-3.1.3.tgz", + "integrity": "sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ==", "dev": true, "requires": { - "color-convert": "^1.9.3", - "color-string": "^1.6.0" + "color-convert": "^1.9.1", + "color-string": "^1.5.4" } }, "color-convert": { @@ -6204,9 +5972,9 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, "color-string": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.0.tgz", - "integrity": "sha512-9Mrz2AQLefkH1UvASKj6v6hj/7eWgjnT/cVsR8CumieLoT+g900exWeNogqtweI8dxloXN9BDQTYro1oWu/5CQ==", + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.5.tgz", + "integrity": "sha512-jgIoum0OfQfq9Whcfc2z/VhCNcmQjWbey6qBX0vqt7YICflUmBCh9E9CiQD5GSJ+Uehixm3NUwHVhqUAWRivZg==", "dev": true, "requires": { "color-name": "^1.0.0", @@ -6214,15 +5982,21 @@ } }, "colord": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.2.tgz", - "integrity": "sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.1.0.tgz", + "integrity": "sha512-H5sDP9XDk2uP+x/xSGkgB9SEFc1bojdI5DMKU0jmSXQtml2GIe48dj1DcSS0e53QQAHn+JKqUXbGeGX24xWD7w==", + "dev": true + }, + "colorette": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", + "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", "dev": true }, "colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", "dev": true }, "combined-stream": { @@ -6235,15 +6009,15 @@ } }, "commander": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, "common-tags": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", - "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", + "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==", "dev": true }, "commondir": { @@ -6281,12 +6055,95 @@ "wrap-ansi": "^2.0.0" } }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "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" + } + }, "get-caller-file": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", "dev": true }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, + "requires": { + "invert-kv": "^2.0.0" + } + }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "dev": true + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "require-main-filename": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", @@ -6397,9 +6254,9 @@ "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=" }, "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==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", "dev": true }, "component-inherit": { @@ -6414,6 +6271,14 @@ "dev": true, "requires": { "mime-db": ">= 1.43.0 < 2" + }, + "dependencies": { + "mime-db": { + "version": "1.48.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.48.0.tgz", + "integrity": "sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==", + "dev": true + } } }, "compression": { @@ -6486,12 +6351,12 @@ "dev": true }, "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", + "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", "dev": true, "requires": { - "@types/json-schema": "^7.0.8", + "@types/json-schema": "^7.0.7", "ajv": "^6.12.5", "ajv-keywords": "^3.5.2" } @@ -6569,20 +6434,12 @@ "dev": true }, "content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", "dev": true, "requires": { - "safe-buffer": "5.2.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } + "safe-buffer": "5.1.2" } }, "content-type": { @@ -6601,20 +6458,25 @@ "version": "1.7.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, "requires": { "safe-buffer": "~5.1.1" } }, "convert-units": { - "version": "3.0.0-beta.2", - "resolved": "https://registry.npmjs.org/convert-units/-/convert-units-3.0.0-beta.2.tgz", - "integrity": "sha512-ib0pIcx+gMP/gpvMpZkol0MZr3mXTSLvt+BtspAB7Ff0QPo5VIJCcxmYd0GBnvV5i5B0lyySBZzkv/l3gWhx1A==", - "dev": true + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/convert-units/-/convert-units-2.3.4.tgz", + "integrity": "sha512-ERHfdA0UhHJp1IpwE6PnFJx8LqG7B1ZjJ20UvVCmopEnVCfER68Tbe3kvN63dLbYXDA2xFWRE6zd4Wsf0w7POg==", + "dev": true, + "requires": { + "lodash.foreach": "2.3.x", + "lodash.keys": "2.3.x" + } }, "cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", "dev": true }, "cookie-signature": { @@ -6635,17 +6497,6 @@ "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==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } } }, "copy-descriptor": { @@ -6713,9 +6564,9 @@ "dev": true }, "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", "dev": true, "requires": { "is-extglob": "^2.1.1" @@ -6743,12 +6594,12 @@ } }, "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", + "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", "dev": true, "requires": { - "@types/json-schema": "^7.0.8", + "@types/json-schema": "^7.0.7", "ajv": "^6.12.5", "ajv-keywords": "^3.5.2" } @@ -6756,21 +6607,52 @@ } }, "core-js": { - "version": "3.21.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.21.1.tgz", - "integrity": "sha512-FRq5b/VMrWlrmCzwRrpDYNxyHP9BcAZC+xHJaqTgIE5091ZV1NTmyh0sGOg5XqpnHvR0svdy0sv1gWA1zmhxig==", + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==", "dev": true }, "core-js-compat": { - "version": "3.21.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.21.1.tgz", - "integrity": "sha512-gbgX5AUvMb8gwxC7FLVWYT7Kkgu/y7+h/h1X43yJkNqhlK2fuYyQimqvKGNZFAY6CKii/GFKJ2cp/1/42TN36g==", + "version": "3.15.2", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.15.2.tgz", + "integrity": "sha512-Wp+BJVvwopjI+A1EFqm2dwUmWYXrvucmtIB2LgXn/Rb+gWPKYxtmb4GKHGKG/KGF1eK9jfjzT38DITbTOCX/SQ==", "dev": true, "requires": { - "browserslist": "^4.19.1", + "browserslist": "^4.16.6", "semver": "7.0.0" }, "dependencies": { + "browserslist": { + "version": "4.16.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", + "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001219", + "colorette": "^1.2.2", + "electron-to-chromium": "^1.3.723", + "escalade": "^3.1.1", + "node-releases": "^1.1.71" + } + }, + "caniuse-lite": { + "version": "1.0.30001245", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001245.tgz", + "integrity": "sha512-768fM9j1PKXpOCKws6eTo3RHmvTUsG9UrpT4WoREFeZgJBTi4/X9g565azS/rVUGtqb8nt7FjLeF5u4kukERnA==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.776", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.776.tgz", + "integrity": "sha512-V0w7eFSBoFPpdw4xexjVPZ770UDZIevSwkkj4W97XbE3IsCsTRFpa7/yXGZ88EOQAUEA09JMMsWK0xsw0kRAYw==", + "dev": true + }, + "node-releases": { + "version": "1.1.73", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz", + "integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==", + "dev": true + }, "semver": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", @@ -6786,9 +6668,9 @@ "dev": true }, "cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", + "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", "dev": true, "requires": { "@types/parse-json": "^4.0.0", @@ -6796,7 +6678,53 @@ "parse-json": "^5.0.0", "path-type": "^4.0.0", "yaml": "^1.10.0" - } + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.14.5" + } + }, + "@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true + } + } }, "create-ecdh": { "version": "4.0.4", @@ -6938,34 +6866,32 @@ "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", "dev": true }, - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" } }, - "pretty-bytes": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-4.0.2.tgz", - "integrity": "sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=", - "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==", "dev": true }, + "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==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, "tr46": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", @@ -6975,12 +6901,6 @@ "punycode": "^2.1.0" } }, - "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true - }, "whatwg-url": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", @@ -7021,62 +6941,19 @@ "dev": true, "requires": { "cross-spawn": "^6.0.5" - }, - "dependencies": { - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "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=", - "dev": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } } }, "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "dev": true, "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } }, "cross-spawn-promise": { @@ -7098,30 +6975,6 @@ "shebang-command": "^1.2.0", "which": "^1.2.9" } - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "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=", - "dev": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } } } }, @@ -7199,20 +7052,15 @@ "timsort": "^0.3.0" }, "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" } }, "source-map": { @@ -7220,6 +7068,15 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -7281,12 +7138,12 @@ } }, "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", + "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", "dev": true, "requires": { - "@types/json-schema": "^7.0.8", + "@types/json-schema": "^7.0.7", "ajv": "^6.12.5", "ajv-keywords": "^3.5.2" } @@ -7409,20 +7266,15 @@ "json-parse-better-errors": "^1.0.1" } }, - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" } }, "resolve-from": { @@ -7436,6 +7288,15 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -7477,20 +7338,15 @@ "postcss-unique-selectors": "^4.0.1" }, "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" } }, "source-map": { @@ -7498,6 +7354,15 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -7522,20 +7387,15 @@ "postcss": "^7.0.0" }, "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" } }, "source-map": { @@ -7543,6 +7403,15 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -7553,9 +7422,9 @@ "dev": true }, "cssnano-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", - "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-2.0.1.tgz", + "integrity": "sha512-i8vLRZTnEH9ubIyfdZCAdIdgnHAUeQeByEeQ2I7oTilvP9oHO6RScpeq3GsFUVqeB8uZgOQ9pw8utofNn32hhQ==", "dev": true }, "csso": { @@ -7607,9 +7476,9 @@ } }, "csstype": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.11.tgz", - "integrity": "sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==" + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.7.tgz", + "integrity": "sha512-9Mcn9sFbGBAdmimWb2gLVDtFJzeKtDGIr76TUqmjZrw9LFXBMSU70lcs+C0/7fyCd6iBDqmksUcCOUIkisPHsQ==" }, "cyclist": { "version": "1.0.1", @@ -7665,6 +7534,12 @@ "yauzl": "^2.10.0" }, "dependencies": { + "@types/node": { + "version": "12.12.50", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.50.tgz", + "integrity": "sha512-5ImO01Fb8YsEOYpV+aeyGYztcYcjGsBvN4D7G5r1ef2cuQOpymjWNQi5V0rKHE6PC2ru3HkoUr/Br2/8GUA84w==", + "dev": true + }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -7675,15 +7550,21 @@ } }, "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.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==", + "dev": true + }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -7699,6 +7580,23 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, "debug": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", @@ -7708,78 +7606,243 @@ "ms": "2.1.2" } }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, + "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" + } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "data-urls": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", - "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", - "dev": true, - "requires": { - "abab": "^2.0.0", - "whatwg-mimetype": "^2.2.0", - "whatwg-url": "^7.0.0" - }, - "dependencies": { - "abab": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", - "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", - "dev": true + "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==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } }, - "tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "global-dirs": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.1.0.tgz", + "integrity": "sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==", "dev": true, "requires": { - "punycode": "^2.1.0" + "ini": "1.3.7" } }, - "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "ini": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", + "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==", + "dev": true + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", "dev": true, "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" + "ci-info": "^2.0.0" } - } - } - }, + }, + "is-installed-globally": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", + "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", + "dev": true, + "requires": { + "global-dirs": "^2.0.1", + "is-path-inside": "^3.0.1" + } + }, + "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==", + "dev": true + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "dev": true + }, + "ramda": { + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.1.tgz", + "integrity": "sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "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" + } + }, + "tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "requires": { + "rimraf": "^3.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + }, + "dependencies": { + "abab": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", + "dev": true + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + } + } + }, "date-arithmetic": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/date-arithmetic/-/date-arithmetic-4.1.0.tgz", - "integrity": "sha512-QWxYLR5P/6GStZcdem+V1xoto6DMadYWpMXU82ES3/RfR3Wdwr3D0+be7mgOJ+Ov0G9D5Dmb9T17sNLQYj9XOg==" + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/date-arithmetic/-/date-arithmetic-4.0.1.tgz", + "integrity": "sha512-fawhJU3ajJud093das8L3PSXqDb+LjclKhRTIbVX1xC+QeHtL/30kNTkS8s/lOiKMGMngxKvwEzQhBEmK/KQnQ==" }, "date-fns": { "version": "2.22.1", @@ -7812,7 +7875,8 @@ "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=" + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true }, "decompress-response": { "version": "3.3.0", @@ -7843,9 +7907,9 @@ "dev": true }, "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", "dev": true }, "deepcopy": { @@ -7873,19 +7937,6 @@ "ip-regex": "^2.1.0" }, "dependencies": { - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, "execa": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", @@ -7909,51 +7960,6 @@ "requires": { "pump": "^3.0.0" } - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, - "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=", - "dev": true, - "requires": { - "path-key": "^2.0.0" - } - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "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=", - "dev": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } } } }, @@ -8027,6 +8033,12 @@ "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true } } }, @@ -8075,20 +8087,17 @@ } } }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true + }, "pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } } } }, @@ -8104,11 +8113,6 @@ "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", "dev": true }, - "dequal": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.2.tgz", - "integrity": "sha512-q9K8BlJVxK7hQYqa6XISGmBZbtQQWVXSrRrWreHC94rMt1QL/Impruc+7p2CYSYuVIUr+YCt6hjrs1kkdJRTug==" - }, "des.js": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", @@ -8166,9 +8170,9 @@ } }, "dijkstrajs": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.2.tgz", - "integrity": "sha512-QV6PMaHTCNmKSeP6QoXhVTw9snc9VD8MulTT0Bd99Pacp4SS1cjcrYPgBPmibqKVtMJJfqC6XvOXgPMEEPH/fg==" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.1.tgz", + "integrity": "sha1-082BIh4+pAdCz83lVtTpnpjdxxs=" }, "dir-glob": { "version": "3.0.1", @@ -8177,6 +8181,14 @@ "dev": true, "requires": { "path-type": "^4.0.0" + }, + "dependencies": { + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + } } }, "dlv": { @@ -8228,22 +8240,12 @@ } }, "dom-helpers": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", - "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.1.3.tgz", + "integrity": "sha512-nZD1OtwfWGRBWlpANxacBEZrEuLa16o1nh7YopFWeoF68Zt8GGEmzHu6Xv4F3XaFIC+YXtTLrzgqKxFgLEe4jw==", "requires": { - "@babel/runtime": "^7.8.7", - "csstype": "^3.0.2" - }, - "dependencies": { - "@babel/runtime": { - "version": "7.17.8", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.8.tgz", - "integrity": "sha512-dQpEpK0O9o6lj6oPu0gRDbbnk+4LeHlNcBpspf6Olzt3GIX4P1lWF1gS+pHLDFlaJvbR6q7jCfQ08zA4QJBnmA==", - "requires": { - "regenerator-runtime": "^0.13.4" - } - } + "@babel/runtime": "^7.6.3", + "csstype": "^2.6.7" } }, "dom-serializer": { @@ -8283,20 +8285,12 @@ "dev": true, "requires": { "webidl-conversions": "^4.0.2" - }, - "dependencies": { - "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true - } } }, "domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.0.tgz", + "integrity": "sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA==", "dev": true, "requires": { "domelementtype": "^2.2.0" @@ -8383,13 +8377,10 @@ "dev": true }, "ejs": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.6.tgz", - "integrity": "sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw==", - "dev": true, - "requires": { - "jake": "^10.6.1" - } + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", + "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==", + "dev": true }, "ejs-loader": { "version": "0.5.0", @@ -8402,9 +8393,9 @@ } }, "electron-to-chromium": { - "version": "1.4.89", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.89.tgz", - "integrity": "sha512-z1Axg0Fu54fse8wN4fd+GAINdU5mJmLtcl6bqIcYyzNVGONcfHAeeJi88KYMQVKalhXlYuVPzKkFIU5VD0raUw==", + "version": "1.3.306", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.306.tgz", + "integrity": "sha512-frDqXvrIROoYvikSKTIKbHbzO6M3/qC6kCIt/1FOa9kALe++c4VAJnwjSFvf1tYLEUsP2n9XZ4XSCyqc3l7A/A==", "dev": true }, "elegant-spinner": { @@ -8540,9 +8531,9 @@ "dev": true }, "errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", "dev": true, "requires": { "prr": "~1.0.1" @@ -8552,48 +8543,27 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, "requires": { "is-arrayish": "^0.2.1" } }, "es-abstract": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", - "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.16.0.tgz", + "integrity": "sha512-xdQnfykZ9JMEiasTAJZJdMWCQ1Vm00NBw79/AWi7ELfZuuPCSOMDZbT9mkOfSctVtfhb+sAAzrm+j//GjjLHLg==", "dev": true, "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", + "es-to-primitive": "^1.2.0", "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", "has": "^1.0.3", - "has-symbols": "^1.0.2", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.1", - "is-string": "^1.0.7", - "is-weakref": "^1.0.1", - "object-inspect": "^1.11.0", + "has-symbols": "^1.0.0", + "is-callable": "^1.1.4", + "is-regex": "^1.0.4", + "object-inspect": "^1.6.0", "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" - }, - "dependencies": { - "is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - } + "string.prototype.trimleft": "^2.1.0", + "string.prototype.trimright": "^2.1.0" } }, "es-to-primitive": { @@ -8628,21 +8598,28 @@ "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=" + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true }, "escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.12.0.tgz", + "integrity": "sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg==", "dev": true, "requires": { - "esprima": "^4.0.1", + "esprima": "^3.1.3", "estraverse": "^4.2.0", "esutils": "^2.0.2", "optionator": "^0.8.1", "source-map": "~0.6.1" }, "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -8715,37 +8692,13 @@ "which": "^1.2.9" } }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "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=", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" + "ansi-regex": "^3.0.0" } } } @@ -8808,14 +8761,6 @@ "dev": true, "requires": { "ramda": "^0.25.0" - }, - "dependencies": { - "ramda": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.25.0.tgz", - "integrity": "sha512-GXpfrYVPwx3K7RQ6aYT8KPS8XViSXUVJT1ONhoKPE9VAleW42YE+U+8VEyGWt41EnEQW7gwecYJriTI0pKoecQ==", - "dev": true - } } }, "eslint-plugin-preact-i18n": { @@ -8825,74 +8770,23 @@ "dev": true, "requires": { "minimatch": "3.0.4" - }, - "dependencies": { - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - } } }, "eslint-plugin-react": { - "version": "7.29.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.29.4.tgz", - "integrity": "sha512-CVCXajliVh509PcZYRFyu/BoUEz452+jtQJq2b3Bae4v3xBUWPLCmtmBM+ZinG4MzwmxJgJ2M5rMqhqLVn7MtQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.16.0.tgz", + "integrity": "sha512-GacBAATewhhptbK3/vTP09CbFrgUJmBSaaRcWdbQLFvUZy9yVcQxigBNHGPU/KE2AyHpzj3AWXpxoMTsIDiHug==", "dev": true, "requires": { - "array-includes": "^3.1.4", - "array.prototype.flatmap": "^1.2.5", + "array-includes": "^3.0.3", "doctrine": "^2.1.0", - "estraverse": "^5.3.0", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.5", - "object.fromentries": "^2.0.5", - "object.hasown": "^1.1.0", - "object.values": "^1.1.5", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.3", - "semver": "^6.3.0", - "string.prototype.matchall": "^4.0.6" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - }, - "prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dev": true, - "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "resolve": { - "version": "2.0.0-next.3", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", - "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", - "dev": true, - "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } + "has": "^1.0.3", + "jsx-ast-utils": "^2.2.1", + "object.entries": "^1.1.0", + "object.fromentries": "^2.0.0", + "object.values": "^1.1.0", + "prop-types": "^15.7.2", + "resolve": "^1.12.0" } }, "eslint-scope": { @@ -8906,9 +8800,9 @@ } }, "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==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", + "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", "dev": true }, "esm": { @@ -8934,37 +8828,21 @@ "dev": true }, "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", + "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", "dev": true, "requires": { - "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } + "estraverse": "^4.0.0" } }, "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", "dev": true, "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } + "estraverse": "^4.1.0" } }, "estraverse": { @@ -8992,9 +8870,9 @@ "dev": true }, "eventemitter2": { - "version": "6.4.5", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.5.tgz", - "integrity": "sha512-bXE7Dyc1i6oQElDG0jMRZJrRAn9QR2xyyFGmBdZleNmyQX0FqGYmhZIrIrpPfm/w//LTo4tVQGOGQcGCb5q9uw==", + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.4.tgz", + "integrity": "sha512-HLU3NDY6wARrLCEwyGKRBvuWYyvW6mHYv72SJJAH3iJN3a6eVUvkjFkcxah1bcTgGVBBrFdIopBJPhCQFMLyXw==", "dev": true }, "eventemitter3": { @@ -9038,20 +8916,31 @@ } }, "execa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", - "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", "dev": true, "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" + "cross-spawn": "^5.0.1", + "get-stream": "^3.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" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + } } }, "executable": { @@ -9061,6 +8950,14 @@ "dev": true, "requires": { "pify": "^2.2.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } } }, "exit-hook": { @@ -9102,17 +8999,17 @@ } }, "express": { - "version": "4.17.3", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz", - "integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==", + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", "dev": true, "requires": { - "accepts": "~1.3.8", + "accepts": "~1.3.7", "array-flatten": "1.1.1", - "body-parser": "1.19.2", - "content-disposition": "0.5.4", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", "content-type": "~1.0.4", - "cookie": "0.4.2", + "cookie": "0.4.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "~1.1.2", @@ -9126,13 +9023,13 @@ "on-finished": "~2.3.0", "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.9.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.17.2", - "serve-static": "1.14.2", - "setprototypeof": "1.2.0", + "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", @@ -9155,15 +9052,9 @@ } }, "qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==", - "dev": true - }, - "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==", + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", "dev": true } } @@ -9204,17 +9095,6 @@ "chardet": "^0.4.0", "iconv-lite": "^0.4.17", "tmp": "^0.0.33" - }, - "dependencies": { - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "requires": { - "os-tmpdir": "~1.0.2" - } - } } }, "extglob": { @@ -9246,6 +9126,21 @@ "requires": { "ms": "2.0.0" } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } } } }, @@ -9271,9 +9166,9 @@ "dev": true }, "fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", @@ -9317,9 +9212,9 @@ "dev": true }, "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", "dev": true, "requires": { "is-extglob": "^2.1.1" @@ -9353,9 +9248,9 @@ } }, "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==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", "dev": true }, "fast-levenshtein": { @@ -9365,9 +9260,9 @@ "dev": true }, "fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.1.tgz", + "integrity": "sha512-HOnr8Mc60eNYl1gzwp6r5RoUyAn5/glBolUzP/Ez6IFVPMPirxn/9phgL6zhOtaTy7ISwPvQ+wT+hfcRZh/bzw==", "dev": true, "requires": { "reusify": "^1.0.4" @@ -9383,12 +9278,12 @@ } }, "fb-watchman": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", - "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz", + "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=", "dev": true, "requires": { - "bser": "2.1.1" + "bser": "^2.0.0" } }, "fd-slicer": { @@ -9407,13 +9302,12 @@ "dev": true }, "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", "dev": true, "requires": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" + "escape-string-regexp": "^1.0.5" } }, "file-entry-cache": { @@ -9467,34 +9361,18 @@ "dev": true }, "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", + "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", "dev": true, "requires": { - "@types/json-schema": "^7.0.8", + "@types/json-schema": "^7.0.7", "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==", - "dev": true, - "optional": true - }, - "filelist": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.2.tgz", - "integrity": "sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ==", - "dev": true, - "requires": { - "minimatch": "^3.0.4" - } - }, "filename-regex": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", @@ -9544,7 +9422,8 @@ "filter-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", - "integrity": "sha1-mzERErxsYSehbgFsbF1/GeCAXFs=" + "integrity": "sha1-mzERErxsYSehbgFsbF1/GeCAXFs=", + "dev": true }, "finalhandler": { "version": "1.1.2", @@ -9573,9 +9452,9 @@ } }, "find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "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==", "dev": true, "requires": { "commondir": "^1.0.1", @@ -9583,11 +9462,6 @@ "pkg-dir": "^4.1.0" } }, - "find-root": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", - "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" - }, "find-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", @@ -9606,17 +9480,6 @@ "graceful-fs": "^4.1.2", "rimraf": "~2.6.2", "write": "^0.2.1" - }, - "dependencies": { - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } } }, "flush-write-stream": { @@ -9632,7 +9495,8 @@ "follow-redirects": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.1.tgz", - "integrity": "sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg==" + "integrity": "sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg==", + "dev": true }, "for-in": { "version": "1.0.2", @@ -9670,6 +9534,26 @@ "worker-rpc": "^0.1.0" }, "dependencies": { + "@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.14.5" + } + }, + "@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, "arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", @@ -9920,6 +9804,12 @@ } } }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, "micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -9943,104 +9833,641 @@ } } }, - "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==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "dev": true - }, - "fraction.js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", - "dev": true - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "requires": { - "map-cache": "^0.2.2" - } - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "dev": true - }, - "from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, - "fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, - "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=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "dev": true, - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.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==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true + }, + "fraction.js": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.1.tgz", + "integrity": "sha512-MHOhvvxHTfRFpF1geTK9czMIZ6xclsEor2wkIGYYq+PxcQqT7vStJqjhe6S1TenZrMZzo+wlqOufBDVepUEgPg==", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "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=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", + "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.12.1", + "node-pre-gyp": "^0.12.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.3", + "bundled": true, + "dev": true, + "optional": true, + "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" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true, + "optional": true + }, + "minipass": { + "version": "2.3.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.3.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^4.1.0", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "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" + } + }, + "rimraf": { + "version": "2.6.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "yallist": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "optional": true + } + } + }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -10067,6 +10494,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -10074,9 +10502,10 @@ }, "dependencies": { "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true } } }, @@ -10099,23 +10528,10 @@ "dev": true }, "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==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - } + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true }, "get-value": { "version": "3.0.1", @@ -10132,6 +10548,14 @@ "dev": true, "requires": { "async": "^3.2.0" + }, + "dependencies": { + "async": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", + "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==", + "dev": true + } } }, "getpass": { @@ -10187,25 +10611,19 @@ "minipass": "^2.9.0" } }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, "tar": { - "version": "4.4.19", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz", - "integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==", + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", + "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", "dev": true, "requires": { - "chownr": "^1.1.4", - "fs-minipass": "^1.2.7", - "minipass": "^2.9.0", - "minizlib": "^1.3.3", - "mkdirp": "^0.5.5", - "safe-buffer": "^5.2.1", - "yallist": "^3.1.1" + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" } }, "yallist": { @@ -10217,9 +10635,9 @@ } }, "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -10250,12 +10668,12 @@ } }, "global-dirs": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.1.0.tgz", - "integrity": "sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", + "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", "dev": true, "requires": { - "ini": "1.3.7" + "ini": "2.0.0" } }, "globals": { @@ -10265,23 +10683,23 @@ "dev": true }, "globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", + "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", "dev": true, "requires": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", "slash": "^3.0.0" }, "dependencies": { "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", "dev": true }, "slash": { @@ -10329,9 +10747,9 @@ } }, "graceful-fs": { - "version": "4.2.9", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", - "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", "dev": true }, "growly": { @@ -10361,16 +10779,15 @@ "dev": true }, "handlebars": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.1.tgz", + "integrity": "sha512-C29UoFzHe9yM61lOsIlCE5/mQVGrnIOrOq7maQl76L7tYPCgC1og0Ajt6uWnX4ZTxBPnjw+CUvawphwCfJgUnA==", "dev": true, "requires": { - "minimist": "^1.2.5", "neo-async": "^2.6.0", + "optimist": "^0.6.1", "source-map": "^0.6.1", - "uglify-js": "^3.1.4", - "wordwrap": "^1.0.0" + "uglify-js": "^3.1.4" }, "dependencies": { "source-map": { @@ -10388,31 +10805,31 @@ "dev": true }, "har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", "dev": true, "requires": { - "ajv": "^6.12.3", + "ajv": "^6.5.5", "har-schema": "^2.0.0" }, "dependencies": { "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", "dev": true, "requires": { - "fast-deep-equal": "^3.1.1", + "fast-deep-equal": "^2.0.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, "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==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", "dev": true }, "json-schema-traverse": { @@ -10424,9 +10841,9 @@ } }, "harmony-reflect": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz", - "integrity": "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.1.tgz", + "integrity": "sha512-WJTeyp0JzGtHcuMsi7rw2VwtkvLa+JyfEKJCFyfcS0+CDkjQ5lHPu7zEhFZP+PDSRrEgXa5Ah0l1MbgbE41XjA==", "dev": true }, "has": { @@ -10476,28 +10893,14 @@ "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.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, - "has-tostringtag": { + "has-symbols": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "requires": { - "has-symbols": "^1.0.2" - }, - "dependencies": { - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" - } - } + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "dev": true }, "has-value": { "version": "1.0.0", @@ -10528,6 +10931,12 @@ "kind-of": "^4.0.0" }, "dependencies": { + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", @@ -10652,9 +11061,9 @@ } }, "hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", + "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==", "dev": true }, "hpack.js": { @@ -10830,9 +11239,9 @@ "dev": true }, "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.7.0.tgz", + "integrity": "sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg==", "dev": true, "requires": { "dom-serializer": "^1.0.1", @@ -10855,22 +11264,30 @@ "dev": true }, "http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", "dev": true, "requires": { "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.1" + "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=", + "dev": true + } } }, "http-parser-js": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz", - "integrity": "sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==", + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz", + "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==", "dev": true }, "http-proxy": { @@ -11133,9 +11550,9 @@ "dev": true }, "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", "dev": true, "requires": { "is-extglob": "^2.1.1" @@ -11161,6 +11578,12 @@ } } }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, "micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -11185,14 +11608,14 @@ } }, "http-signature": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz", - "integrity": "sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", "dev": true, "requires": { "assert-plus": "^1.0.0", - "jsprim": "^2.0.2", - "sshpk": "^1.14.1" + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, "https-browserify": { @@ -11222,12 +11645,6 @@ "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", "dev": true }, - "idb": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/idb/-/idb-6.1.5.tgz", - "integrity": "sha512-IJtugpKkiVXQn5Y+LteyBCNk1N8xpGV3wWZk9EVtZWH8DYkjBn0bX1XnGP9RkyZF0sAcywa6unHqSWKe7q4LGw==", - "dev": true - }, "identity-obj-proxy": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", @@ -11259,10 +11676,20 @@ "resolved": "https://registry.npmjs.org/immutability-helper/-/immutability-helper-3.1.1.tgz", "integrity": "sha512-Q0QaXjPjwIju/28TsugCHNEASwoCcJSyJV3uO1sOIQGI0jKgm9f41Lvz0DZj3n46cNCyAZTsEYoY4C2bVRUzyQ==" }, + "import-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-3.0.0.tgz", + "integrity": "sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg==", + "dev": true, + "requires": { + "import-from": "^3.0.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==", + "dev": true, "requires": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -11271,7 +11698,25 @@ "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==" + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + } + } + }, + "import-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-3.0.0.tgz", + "integrity": "sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==", + "dev": true, + "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==", + "dev": true } } }, @@ -11309,9 +11754,9 @@ "dev": true }, "indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true }, "indexes-of": { @@ -11348,9 +11793,9 @@ "dev": true }, "ini": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", - "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", "dev": true }, "inquirer": { @@ -11381,49 +11826,6 @@ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true, - "requires": { - "restore-cursor": "^2.0.0" - } - }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true - }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "dev": true, - "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - } - }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -11455,17 +11857,6 @@ "ipaddr.js": "^1.9.0" } }, - "internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - } - }, "invariant": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", @@ -11475,9 +11866,9 @@ } }, "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", "dev": true }, "ip": { @@ -11511,41 +11902,24 @@ "dev": true, "requires": { "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } } }, "is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==" }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true }, "is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "requires": { - "has-bigints": "^1.0.1" - } + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.2.tgz", + "integrity": "sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA==", + "dev": true }, "is-binary-path": { "version": "2.1.0", @@ -11558,13 +11932,12 @@ } }, "is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.1.tgz", + "integrity": "sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng==", "dev": true, "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "call-bind": "^1.0.2" } }, "is-buffer": { @@ -11583,18 +11956,18 @@ } }, "is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", "dev": true }, "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", + "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", "dev": true, "requires": { - "ci-info": "^2.0.0" + "ci-info": "^1.5.0" } }, "is-color-stop": { @@ -11612,9 +11985,9 @@ } }, "is-core-module": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", - "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.5.0.tgz", + "integrity": "sha512-TXCMSDsEHMEEZ6eCA8rwRDbLu55MRGmrctljsBX/2v1d9/GzqHOxW5c5oPSgrUt2vBFXebu9rGqckXGPWOlYpg==", "dev": true, "requires": { "has": "^1.0.3" @@ -11627,17 +12000,6 @@ "dev": true, "requires": { "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } } }, "is-date-object": { @@ -11698,10 +12060,13 @@ "dev": true }, "is-finite": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", - "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", - "dev": true + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } }, "is-fullwidth-code-point": { "version": "2.0.0", @@ -11718,13 +12083,13 @@ } }, "is-installed-globally": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", - "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", "dev": true, "requires": { - "global-dirs": "^2.0.1", - "is-path-inside": "^3.0.1" + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" } }, "is-interactive": { @@ -11740,9 +12105,9 @@ "dev": true }, "is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", "dev": true }, "is-npm": { @@ -11758,27 +12123,13 @@ "dev": true, "requires": { "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } } }, "is-number-object": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", - "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz", + "integrity": "sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw==", + "dev": true }, "is-obj": { "version": "2.0.0", @@ -11848,9 +12199,9 @@ "dev": true }, "is-promise": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", - "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", "dev": true }, "is-regex": { @@ -11873,34 +12224,25 @@ "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", "dev": true }, - "is-shared-array-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", - "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", - "dev": true - }, "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "dev": true }, "is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.6.tgz", + "integrity": "sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w==", + "dev": true }, "is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", + "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", "dev": true, "requires": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.0" } }, "is-typedarray": { @@ -11921,15 +12263,6 @@ "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", "dev": true }, - "is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2" - } - }, "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -11972,6 +12305,14 @@ "requires": { "node-fetch": "^2.6.1", "whatwg-fetch": "^3.4.1" + }, + "dependencies": { + "node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", + "dev": true + } } }, "isomorphic-unfetch": { @@ -12007,17 +12348,6 @@ "js-yaml": "^3.7.0", "mkdirp": "^0.5.1", "once": "^1.4.0" - }, - "dependencies": { - "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", - "dev": true, - "requires": { - "lodash": "^4.17.14" - } - } } }, "istanbul-lib-coverage": { @@ -12098,17 +12428,6 @@ "mkdirp": "^0.5.1", "rimraf": "^2.6.1", "source-map": "^0.5.3" - }, - "dependencies": { - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } } }, "istanbul-reports": { @@ -12120,60 +12439,6 @@ "handlebars": "^4.0.3" } }, - "jake": { - "version": "10.8.4", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.4.tgz", - "integrity": "sha512-MtWeTkl1qGsWUtbl/Jsca/8xSoK3x0UmS82sNbjqxxG/de/M/3b1DntdjHgPMC50enlTNwXOCRqPXLLt5cCfZA==", - "dev": true, - "requires": { - "async": "0.9.x", - "chalk": "^4.0.2", - "filelist": "^1.0.1", - "minimatch": "^3.0.4" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "async": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", - "dev": true - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } - } - }, "java-properties": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/java-properties/-/java-properties-1.0.2.tgz", @@ -12201,12 +12466,6 @@ "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", "dev": true }, - "ci-info": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", - "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==", - "dev": true - }, "cliui": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", @@ -12246,32 +12505,6 @@ } } }, - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "dev": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.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" - } - }, "find-up": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", @@ -12287,27 +12520,6 @@ "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", "dev": true }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true - }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "dev": true - }, - "is-ci": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", - "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", - "dev": true, - "requires": { - "ci-info": "^1.5.0" - } - }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", @@ -12317,12 +12529,6 @@ "number-is-nan": "^1.0.0" } }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, "jest-cli": { "version": "21.2.1", "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-21.2.1.tgz", @@ -12360,15 +12566,6 @@ "yargs": "^9.0.0" } }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dev": true, - "requires": { - "invert-kv": "^1.0.0" - } - }, "load-json-file": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", @@ -12399,41 +12596,6 @@ "path-exists": "^3.0.0" } }, - "mem": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true - }, - "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=", - "dev": true, - "requires": { - "path-key": "^2.0.0" - } - }, - "os-locale": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", - "dev": true, - "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" - } - }, "p-limit": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", @@ -12458,21 +12620,6 @@ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, "path-type": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", @@ -12490,12 +12637,6 @@ } } }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, "read-pkg": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", @@ -12523,21 +12664,6 @@ "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", "dev": true }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "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=", - "dev": true - }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -12571,15 +12697,6 @@ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", "dev": true }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", @@ -12619,9 +12736,9 @@ } }, "y18n": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", - "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", "dev": true }, "yargs": { @@ -12829,14 +12946,6 @@ "pify": "^3.0.0", "throat": "^4.0.0", "worker-farm": "^1.3.1" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } } }, "jest-runtime": { @@ -12900,32 +13009,6 @@ } } }, - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "dev": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.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" - } - }, "find-up": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", @@ -12933,24 +13016,12 @@ "dev": true, "requires": { "locate-path": "^2.0.0" - } - }, - "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", - "dev": true - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true + } }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", "dev": true }, "is-fullwidth-code-point": { @@ -12962,21 +13033,6 @@ "number-is-nan": "^1.0.0" } }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dev": true, - "requires": { - "invert-kv": "^1.0.0" - } - }, "load-json-file": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", @@ -12999,41 +13055,6 @@ "path-exists": "^3.0.0" } }, - "mem": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true - }, - "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=", - "dev": true, - "requires": { - "path-key": "^2.0.0" - } - }, - "os-locale": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", - "dev": true, - "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" - } - }, "p-limit": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", @@ -13058,21 +13079,6 @@ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, "path-type": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", @@ -13082,6 +13088,12 @@ "pify": "^2.0.0" } }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, "read-pkg": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", @@ -13109,21 +13121,6 @@ "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", "dev": true }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "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=", - "dev": true - }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -13172,15 +13169,6 @@ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", "dev": true }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", @@ -13205,9 +13193,9 @@ } }, "y18n": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", - "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", "dev": true }, "yargs": { @@ -13300,6 +13288,23 @@ "@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==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "js-tokens": { @@ -13308,9 +13313,9 @@ "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==", + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", "dev": true, "requires": { "argparse": "^1.0.7", @@ -13354,30 +13359,6 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", "dev": true - }, - "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true - }, - "whatwg-url": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-4.8.0.tgz", - "integrity": "sha1-0pgaqRSMHgCkHFphMRZqtGg7vMA=", - "dev": true, - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - }, - "dependencies": { - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", - "dev": true - } - } } } }, @@ -13402,12 +13383,13 @@ "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==" + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true }, "json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", "dev": true }, "json-schema-traverse": { @@ -13437,6 +13419,12 @@ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", "dev": true }, + "json3": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", + "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==", + "dev": true + }, "json5": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", @@ -13444,9 +13432,9 @@ "dev": true }, "jsonc-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", - "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.2.0.tgz", + "integrity": "sha512-4fLQxW1j/5fWj6p78vAlAafoCKtuBm6ghv+Ij5W2DrDx0qE+ZdEl2c6Ko1mgJNF5ftX1iEWQQ4Ap7+3GlhjkOA==", "dev": true }, "jsonfile": { @@ -13465,32 +13453,26 @@ "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", "dev": true }, - "jsonpointer": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.0.tgz", - "integrity": "sha512-PNYZIdMjVIvVgDSYKTT63Y+KZ6IZvGRNNWcxwD+GNnUz1MKPfv30J8ueCjdwcN0nDx2SlshgyB7Oy0epAzVRRg==", - "dev": true - }, "jsprim": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz", - "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", "dev": true, "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", - "json-schema": "0.4.0", + "json-schema": "0.2.3", "verror": "1.10.0" } }, "jsx-ast-utils": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz", - "integrity": "sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.2.3.tgz", + "integrity": "sha512-EdIHFMm+1BPynpKOpdPqiOsvnIrInRGJD7bzPZdPkjitQEqpdpUuFpq4T0npZFKTiB3RhWFdGN+oqOJIdhDhQA==", "dev": true, "requires": { - "array-includes": "^3.1.3", - "object.assign": "^4.1.2" + "array-includes": "^3.0.3", + "object.assign": "^4.1.0" } }, "keyv": { @@ -13509,10 +13491,21 @@ "dev": true }, "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + }, + "dependencies": { + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + } + } }, "kleur": { "version": "4.1.4", @@ -13521,9 +13514,9 @@ "dev": true }, "klona": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", - "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.4.tgz", + "integrity": "sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==", "dev": true }, "last-call-webpack-plugin": { @@ -13552,12 +13545,12 @@ "dev": true }, "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", "dev": true, "requires": { - "invert-kv": "^2.0.0" + "invert-kv": "^1.0.0" } }, "leaflet": { @@ -13582,15 +13575,16 @@ } }, "lilconfig": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.4.tgz", - "integrity": "sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.3.tgz", + "integrity": "sha512-EHKqr/+ZvdKCifpNrJCKxBTgk5XupZA3y/aCPY9mxfgBzmgh93Mt/WqjjQ38oMxXuvDokaKiM3lAgvSH2sjtHg==", "dev": true }, "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=" + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "dev": true }, "linkstate": { "version": "1.1.1", @@ -13614,10 +13608,10 @@ "rxjs": "^6.3.3" }, "dependencies": { - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", "dev": true } } @@ -13669,6 +13663,22 @@ "supports-color": "^2.0.0" } }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true + }, "log-symbols": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", @@ -13686,12 +13696,6 @@ "requires": { "ansi-regex": "^2.0.0" } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true } } }, @@ -13707,54 +13711,11 @@ "figures": "^2.0.0" }, "dependencies": { - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true, - "requires": { - "restore-cursor": "^2.0.0" - } - }, "date-fns": { "version": "1.30.1", "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==", "dev": true - }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true - }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "dev": true, - "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - } } } }, @@ -13771,14 +13732,11 @@ "strip-bom": "^2.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=", - "dev": true, - "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=", + "dev": true } } }, @@ -13788,49 +13746,163 @@ "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", "dev": true }, - "loader-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", - "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "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==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "dependencies": { + "json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + } + } + }, + "local-access": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/local-access/-/local-access-1.1.0.tgz", + "integrity": "sha512-XfegD5pyTAfb+GY6chk283Ox5z8WexG56OvM06RWLpAc/UHozO8X6xAxEkIitZOtsSMM1Yr3DkHgW5W+onLhCw==", + "dev": true + }, + "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" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + }, + "lodash-es": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.15.tgz", + "integrity": "sha512-rlrc3yU3+JNOpZ9zj5pQtxnx2THmvRykwL4Xlxoa8I9lHBlVbbyPhgyPMioxVZ4NqyxaVVtaJnzsyOidQIhyyQ==" + }, + "lodash._basebind": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/lodash._basebind/-/lodash._basebind-2.3.0.tgz", + "integrity": "sha1-K1vEUqDhBhQ7IYafIzvbWHQX0kg=", + "dev": true, + "requires": { + "lodash._basecreate": "~2.3.0", + "lodash._setbinddata": "~2.3.0", + "lodash.isobject": "~2.3.0" + } + }, + "lodash._basecreate": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-2.3.0.tgz", + "integrity": "sha1-m4ioak3P97fzxh2Dovz8BnHsneA=", + "dev": true, + "requires": { + "lodash._renative": "~2.3.0", + "lodash.isobject": "~2.3.0", + "lodash.noop": "~2.3.0" + } + }, + "lodash._basecreatecallback": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/lodash._basecreatecallback/-/lodash._basecreatecallback-2.3.0.tgz", + "integrity": "sha1-N7KrF1kaM56YjbMln81GAZ16w2I=", + "dev": true, + "requires": { + "lodash._setbinddata": "~2.3.0", + "lodash.bind": "~2.3.0", + "lodash.identity": "~2.3.0", + "lodash.support": "~2.3.0" + } + }, + "lodash._basecreatewrapper": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/lodash._basecreatewrapper/-/lodash._basecreatewrapper-2.3.0.tgz", + "integrity": "sha1-qgxhrZYETDkzN2ExSDqXWcNlEkc=", + "dev": true, + "requires": { + "lodash._basecreate": "~2.3.0", + "lodash._setbinddata": "~2.3.0", + "lodash._slice": "~2.3.0", + "lodash.isobject": "~2.3.0" + } + }, + "lodash._createwrapper": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/lodash._createwrapper/-/lodash._createwrapper-2.3.0.tgz", + "integrity": "sha1-0arhEC2t9EDo4G/BM6bt1/4UYHU=", + "dev": true, + "requires": { + "lodash._basebind": "~2.3.0", + "lodash._basecreatewrapper": "~2.3.0", + "lodash.isfunction": "~2.3.0" + } + }, + "lodash._objecttypes": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/lodash._objecttypes/-/lodash._objecttypes-2.3.0.tgz", + "integrity": "sha1-aj6jmH3W7rgCGy1cnDA1Scwrrh4=", + "dev": true + }, + "lodash._renative": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/lodash._renative/-/lodash._renative-2.3.0.tgz", + "integrity": "sha1-d9jt1M7SbdWXH54Vpfdy5OMX+9M=", + "dev": true + }, + "lodash._setbinddata": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/lodash._setbinddata/-/lodash._setbinddata-2.3.0.tgz", + "integrity": "sha1-5WEEkKzRMnfVmFjZW18nJ/FQjwQ=", "dev": true, "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "dependencies": { - "json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", - "dev": true - } + "lodash._renative": "~2.3.0", + "lodash.noop": "~2.3.0" } }, - "local-access": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/local-access/-/local-access-1.1.0.tgz", - "integrity": "sha512-XfegD5pyTAfb+GY6chk283Ox5z8WexG56OvM06RWLpAc/UHozO8X6xAxEkIitZOtsSMM1Yr3DkHgW5W+onLhCw==", - "dev": true - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "lodash._shimkeys": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/lodash._shimkeys/-/lodash._shimkeys-2.3.0.tgz", + "integrity": "sha1-YR+TFJ4+bHIQlrSHae8pU3rai6k=", + "dev": true, "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "lodash._objecttypes": "~2.3.0" } }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + "lodash._slice": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/lodash._slice/-/lodash._slice-2.3.0.tgz", + "integrity": "sha1-FHGYEyhZly5GgMoppZkshVZpqlw=", + "dev": true }, - "lodash-es": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + "lodash.bind": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-2.3.0.tgz", + "integrity": "sha1-wqjhi2jl7MFS4rFoJmEW/qWwFsw=", + "dev": true, + "requires": { + "lodash._createwrapper": "~2.3.0", + "lodash._renative": "~2.3.0", + "lodash._slice": "~2.3.0" + } }, "lodash.debounce": { "version": "4.0.8", @@ -13838,18 +13910,77 @@ "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", "dev": true }, + "lodash.foreach": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-2.3.0.tgz", + "integrity": "sha1-CDQEyR6EbudyRf3512UZxosq8Wg=", + "dev": true, + "requires": { + "lodash._basecreatecallback": "~2.3.0", + "lodash.forown": "~2.3.0" + } + }, + "lodash.forown": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/lodash.forown/-/lodash.forown-2.3.0.tgz", + "integrity": "sha1-JPtKr4ANRfwtxgv+w84EyDajrX8=", + "dev": true, + "requires": { + "lodash._basecreatecallback": "~2.3.0", + "lodash._objecttypes": "~2.3.0", + "lodash.keys": "~2.3.0" + } + }, + "lodash.identity": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/lodash.identity/-/lodash.identity-2.3.0.tgz", + "integrity": "sha1-awGiEMlIU1XCqRO0i2cRIZoXPe0=", + "dev": true + }, "lodash.isequal": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", "dev": true }, + "lodash.isfunction": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-2.3.0.tgz", + "integrity": "sha1-aylz5HpkfPEucNZ2rqE2Q3BuUmc=", + "dev": true + }, + "lodash.isobject": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-2.3.0.tgz", + "integrity": "sha1-LhbT/Fg9qYMZaJU/LY5tc0NPZ5k=", + "dev": true, + "requires": { + "lodash._objecttypes": "~2.3.0" + } + }, + "lodash.keys": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.3.0.tgz", + "integrity": "sha1-s1D0+Syqn0WkouzwGEVM8vKK4lM=", + "dev": true, + "requires": { + "lodash._renative": "~2.3.0", + "lodash._shimkeys": "~2.3.0", + "lodash.isobject": "~2.3.0" + } + }, "lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", "dev": true }, + "lodash.noop": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/lodash.noop/-/lodash.noop-2.3.0.tgz", + "integrity": "sha1-MFnWKNUbv5N80qC2/Dp/ISpmnCw=", + "dev": true + }, "lodash.once": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", @@ -13862,6 +13993,15 @@ "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", "dev": true }, + "lodash.support": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/lodash.support/-/lodash.support-2.3.0.tgz", + "integrity": "sha1-fq8DivTw1qq3drRKptz8gDNMm/0=", + "dev": true, + "requires": { + "lodash._renative": "~2.3.0" + } + }, "lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", @@ -13888,9 +14028,9 @@ } }, "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -13911,6 +14051,21 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } } } }, @@ -13931,40 +14086,6 @@ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true, - "requires": { - "restore-cursor": "^2.0.0" - } - }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true - }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "dev": true, - "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - } - }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -13997,9 +14118,9 @@ } }, "loglevel": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.0.tgz", - "integrity": "sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz", + "integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==", "dev": true }, "loose-envify": { @@ -14033,12 +14154,12 @@ } }, "magic-string": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", "dev": true, "requires": { - "sourcemap-codec": "^1.4.8" + "sourcemap-codec": "^1.4.4" } }, "make-dir": { @@ -14059,12 +14180,12 @@ } }, "makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", "dev": true, "requires": { - "tmpl": "1.0.5" + "tmpl": "1.0.x" } }, "map-age-cleaner": { @@ -14130,14 +14251,12 @@ "dev": true }, "mem": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", - "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", "dev": true, "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" + "mimic-fn": "^1.0.0" } }, "memoize-one": { @@ -14210,17 +14329,6 @@ "object.omit": "^2.0.0", "parse-glob": "^3.0.4", "regex-cache": "^0.4.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } } }, "miller-rabin": { @@ -14242,30 +14350,30 @@ } }, "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", + "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", "dev": true }, "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "version": "1.42.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.42.0.tgz", + "integrity": "sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ==", "dev": true }, "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "version": "2.1.25", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.25.tgz", + "integrity": "sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg==", "dev": true, "requires": { - "mime-db": "1.52.0" + "mime-db": "1.42.0" } }, "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", "dev": true }, "mimic-response": { @@ -14316,12 +14424,12 @@ "dev": true }, "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", + "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", "dev": true, "requires": { - "@types/json-schema": "^7.0.8", + "@types/json-schema": "^7.0.7", "ajv": "^6.12.5", "ajv-keywords": "^3.5.2" } @@ -14341,24 +14449,24 @@ "dev": true }, "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "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==", + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true }, "minipass": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", - "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", + "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", "dev": true, "requires": { "yallist": "^4.0.0" @@ -14457,12 +14565,12 @@ } }, "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, "requires": { - "minimist": "^1.2.5" + "minimist": "0.0.8" } }, "moment": { @@ -14483,29 +14591,12 @@ "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==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } } }, "mri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", - "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", - "dev": true - }, - "mrmime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.0.tgz", - "integrity": "sha512-a70zx7zFfVO7XpnQ2IX1Myh9yY4UYvfld/dikWRnsXxbyvMcfz+u6UfgNAtH+k2QqtJuzVpv6eLTx1G2+WKZbQ==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.1.6.tgz", + "integrity": "sha512-oi1b3MfbyGa7FJMP9GmLTttni5JoICpYBRlq+x5V16fZbLsnL9N3wFqqIm/nIG43FjUFkFh9Epzp/kzUGUnJxQ==", "dev": true }, "ms": { @@ -14536,16 +14627,16 @@ "dev": true }, "nan": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", - "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", "dev": true, "optional": true }, "nanoid": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", - "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", + "version": "3.1.23", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.23.tgz", + "integrity": "sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw==", "dev": true }, "nanomatch": { @@ -14578,6 +14669,12 @@ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true } } }, @@ -14597,15 +14694,15 @@ "dev": true }, "negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", "dev": true }, "neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", "dev": true }, "nice-try": { @@ -14624,13 +14721,10 @@ } }, "node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dev": true, - "requires": { - "whatwg-url": "^5.0.0" - } + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", + "dev": true }, "node-forge": { "version": "0.10.0", @@ -14701,9 +14795,9 @@ } }, "node-notifier": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.5.tgz", - "integrity": "sha512-tVbHs7DyTLtzOiN78izLA85zRqB9NvEXkAf014Vx3jtSvn/xBl6bR8ZYifj+dFcFrKI21huSQgJZ6ZtL3B4HfQ==", + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.3.tgz", + "integrity": "sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q==", "dev": true, "requires": { "growly": "^1.3.0", @@ -14711,31 +14805,31 @@ "semver": "^5.5.0", "shellwords": "^0.1.1", "which": "^1.3.0" + } + }, + "node-releases": { + "version": "1.1.40", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.40.tgz", + "integrity": "sha512-r4LPcC5b/bS8BdtWH1fbeK88ib/wg9aqmg6/s3ngNLn2Ewkn/8J6Iw3P9RTlfIAdSdvYvQl2thCY5Y+qTAQ2iQ==", + "dev": true, + "requires": { + "semver": "^6.3.0" }, "dependencies": { - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true } } }, - "node-releases": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", - "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==", - "dev": true - }, "nodent-compiler": { - "version": "3.2.13", - "resolved": "https://registry.npmjs.org/nodent-compiler/-/nodent-compiler-3.2.13.tgz", - "integrity": "sha512-nzzWPXZwSdsWie34om+4dLrT/5l1nT/+ig1v06xuSgMtieJVAnMQFuZihUwREM+M7dFso9YoHfDmweexEXXrrw==", + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/nodent-compiler/-/nodent-compiler-3.2.11.tgz", + "integrity": "sha512-rfDrGWdgIJYomPUzR8nXiWNuIhJ7cVodPeZP3Ho65LEycuaX2uVNZ0ytpcfrmUKzdFeLRtye9+pHe8OynPZuPQ==", "requires": { - "acorn": ">= 2.5.2 <= 5.7.5", + "acorn": ">= 2.5.2 <= 5.7.3", "acorn-es7-plugin": "^1.1.7", "nodent-transform": "^3.2.9", "source-map": "^0.5.7" @@ -14785,12 +14879,12 @@ "dev": true }, "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", "dev": true, "requires": { - "path-key": "^3.0.0" + "path-key": "^2.0.0" } }, "nth-check": { @@ -14850,32 +14944,19 @@ "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=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } } } }, "object-inspect": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", - "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", "dev": true }, "object-is": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", - "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.1.tgz", + "integrity": "sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY=" }, "object-keys": { "version": "1.1.1", @@ -14892,58 +14973,116 @@ } }, "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==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", "dev": true, "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" } }, "object.entries": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", - "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.0.tgz", + "integrity": "sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA==", "dev": true, "requires": { - "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "es-abstract": "^1.12.0", + "function-bind": "^1.1.1", + "has": "^1.0.3" } }, "object.fromentries": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", - "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.1.tgz", + "integrity": "sha512-PUQv8Hbg3j2QX0IQYv3iAGCbGcu4yY4KQ92/dhA4sFSixBmSmp13UpDLs6jGK8rBtbmhNNIK99LD2k293jpiGA==", "dev": true, "requires": { - "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "es-abstract": "^1.15.0", + "function-bind": "^1.1.1", + "has": "^1.0.3" } }, "object.getownpropertydescriptors": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz", - "integrity": "sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz", + "integrity": "sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ==", "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - } - }, - "object.hasown": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.0.tgz", - "integrity": "sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "es-abstract": "^1.18.0-next.2" + }, + "dependencies": { + "es-abstract": { + "version": "1.18.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.3.tgz", + "integrity": "sha512-nQIr12dxV7SSxE6r6f1l3DtAeEYdsGpps13dR0TwJg1S8gyp4ZPgy3FZcHBgbiQqnoqSTb+oC+kO4UQ0C/J8vw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "is-callable": "^1.2.3", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.3", + "is-string": "^1.0.6", + "object-inspect": "^1.10.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.1" + } + }, + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true + }, + "is-callable": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "dev": true + }, + "is-regex": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz", + "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-symbols": "^1.0.2" + } + }, + "object-inspect": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + } } }, "object.omit": { @@ -14966,14 +15105,15 @@ } }, "object.values": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", - "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.0.tgz", + "integrity": "sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==", "dev": true, "requires": { - "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "es-abstract": "^1.12.0", + "function-bind": "^1.1.1", + "has": "^1.0.3" } }, "obuf": { @@ -15007,12 +15147,12 @@ } }, "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", "dev": true, "requires": { - "mimic-fn": "^2.1.0" + "mimic-fn": "^1.0.0" } }, "opener": { @@ -15027,7 +15167,17 @@ "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", "dev": true, "requires": { - "is-wsl": "^1.1.0" + "is-wsl": "^1.1.0" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" } }, "optimize-css-assets-webpack-plugin": { @@ -15041,32 +15191,91 @@ "postcss": "^8.2.1" }, "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "browserslist": { + "version": "4.16.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", + "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001219", + "colorette": "^1.2.2", + "electron-to-chromium": "^1.3.723", + "escalade": "^3.1.1", + "node-releases": "^1.1.71" + } + }, + "caniuse-lite": { + "version": "1.0.30001245", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001245.tgz", + "integrity": "sha512-768fM9j1PKXpOCKws6eTo3RHmvTUsG9UrpT4WoREFeZgJBTi4/X9g565azS/rVUGtqb8nt7FjLeF5u4kukERnA==", + "dev": true + }, + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "commander": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "dev": true }, + "css-color-names": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-1.0.1.tgz", + "integrity": "sha512-/loXYOch1qU1biStIFsHH8SxTmOseh1IJqFvy8IujXOm1h+QjUdDhkzOrR5HG8K8mlxREj0yfi8ewCHx0eMxzA==", + "dev": true + }, "css-declaration-sorter": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.1.4.tgz", - "integrity": "sha512-lpfkqS0fctcmZotJGhnxkIyJWvBXgpyi2wsFd4J8VB7wzyrT6Ch/3Q+FMNJpjK4gu1+GN5khOnpU2ZVKrLbhCw==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.0.3.tgz", + "integrity": "sha512-52P95mvW1SMzuRZegvpluT6yEv0FqQusydKQPZsNN5Q7hh8EwQvN8E2nwuJ16BBvNN6LcoIZXu/Bk58DAhrrxw==", "dev": true, "requires": { "timsort": "^0.3.0" } }, "css-select": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.2.1.tgz", - "integrity": "sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", + "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==", "dev": true, "requires": { "boolbase": "^1.0.0", - "css-what": "^5.1.0", - "domhandler": "^4.3.0", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" + "css-what": "^5.0.0", + "domhandler": "^4.2.0", + "domutils": "^2.6.0", + "nth-check": "^2.0.0" } }, "css-tree": { @@ -15080,57 +15289,57 @@ } }, "css-what": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", - "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.0.1.tgz", + "integrity": "sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg==", "dev": true }, "cssnano": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.5.tgz", - "integrity": "sha512-VZO1e+bRRVixMeia1zKagrv0lLN1B/r/u12STGNNUFxnp97LIFgZHQa0JxqlwEkvzUyA9Oz/WnCTAFkdEbONmg==", + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.0.6.tgz", + "integrity": "sha512-NiaLH/7yqGksFGsFNvSRe2IV/qmEBAeDE64dYeD8OBrgp6lE8YoMeQJMtsv5ijo6MPyhuoOvFhI94reahBRDkw==", "dev": true, "requires": { - "cssnano-preset-default": "^5.2.5", - "lilconfig": "^2.0.3", - "yaml": "^1.10.2" + "cosmiconfig": "^7.0.0", + "cssnano-preset-default": "^5.1.3", + "is-resolvable": "^1.1.0" } }, "cssnano-preset-default": { - "version": "5.2.5", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.5.tgz", - "integrity": "sha512-WopL7PzN7sos3X8B54/QGl+CZUh1f0qN4ds+y2d5EPwRSSc3jsitVw81O+Uyop0pXyOfPfZxnc+LmA8w/Ki/WQ==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.1.3.tgz", + "integrity": "sha512-qo9tX+t4yAAZ/yagVV3b+QBKeLklQbmgR3wI7mccrDcR+bEk9iHgZN1E7doX68y9ThznLya3RDmR+nc7l6/2WQ==", "dev": true, "requires": { "css-declaration-sorter": "^6.0.3", - "cssnano-utils": "^3.1.0", - "postcss-calc": "^8.2.3", - "postcss-colormin": "^5.3.0", - "postcss-convert-values": "^5.1.0", - "postcss-discard-comments": "^5.1.1", - "postcss-discard-duplicates": "^5.1.0", - "postcss-discard-empty": "^5.1.1", - "postcss-discard-overridden": "^5.1.0", - "postcss-merge-longhand": "^5.1.3", - "postcss-merge-rules": "^5.1.1", - "postcss-minify-font-values": "^5.1.0", - "postcss-minify-gradients": "^5.1.1", - "postcss-minify-params": "^5.1.2", - "postcss-minify-selectors": "^5.2.0", - "postcss-normalize-charset": "^5.1.0", - "postcss-normalize-display-values": "^5.1.0", - "postcss-normalize-positions": "^5.1.0", - "postcss-normalize-repeat-style": "^5.1.0", - "postcss-normalize-string": "^5.1.0", - "postcss-normalize-timing-functions": "^5.1.0", - "postcss-normalize-unicode": "^5.1.0", - "postcss-normalize-url": "^5.1.0", - "postcss-normalize-whitespace": "^5.1.1", - "postcss-ordered-values": "^5.1.1", - "postcss-reduce-initial": "^5.1.0", - "postcss-reduce-transforms": "^5.1.0", - "postcss-svgo": "^5.1.0", - "postcss-unique-selectors": "^5.1.1" + "cssnano-utils": "^2.0.1", + "postcss-calc": "^8.0.0", + "postcss-colormin": "^5.2.0", + "postcss-convert-values": "^5.0.1", + "postcss-discard-comments": "^5.0.1", + "postcss-discard-duplicates": "^5.0.1", + "postcss-discard-empty": "^5.0.1", + "postcss-discard-overridden": "^5.0.1", + "postcss-merge-longhand": "^5.0.2", + "postcss-merge-rules": "^5.0.2", + "postcss-minify-font-values": "^5.0.1", + "postcss-minify-gradients": "^5.0.1", + "postcss-minify-params": "^5.0.1", + "postcss-minify-selectors": "^5.1.0", + "postcss-normalize-charset": "^5.0.1", + "postcss-normalize-display-values": "^5.0.1", + "postcss-normalize-positions": "^5.0.1", + "postcss-normalize-repeat-style": "^5.0.1", + "postcss-normalize-string": "^5.0.1", + "postcss-normalize-timing-functions": "^5.0.1", + "postcss-normalize-unicode": "^5.0.1", + "postcss-normalize-url": "^5.0.2", + "postcss-normalize-whitespace": "^5.0.1", + "postcss-ordered-values": "^5.0.2", + "postcss-reduce-initial": "^5.0.1", + "postcss-reduce-transforms": "^5.0.1", + "postcss-svgo": "^5.0.2", + "postcss-unique-selectors": "^5.0.1" } }, "dom-serializer": { @@ -15151,9 +15360,9 @@ "dev": true }, "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.7.0.tgz", + "integrity": "sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg==", "dev": true, "requires": { "dom-serializer": "^1.0.1", @@ -15161,12 +15370,36 @@ "domhandler": "^4.2.0" } }, + "electron-to-chromium": { + "version": "1.3.776", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.776.tgz", + "integrity": "sha512-V0w7eFSBoFPpdw4xexjVPZ770UDZIevSwkkj4W97XbE3IsCsTRFpa7/yXGZ88EOQAUEA09JMMsWK0xsw0kRAYw==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "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==", + "dev": true + }, "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==", "dev": true }, + "node-releases": { + "version": "1.1.73", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz", + "integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==", + "dev": true + }, "normalize-url": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", @@ -15174,257 +15407,269 @@ "dev": true }, "nth-check": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", - "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz", + "integrity": "sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==", "dev": true, "requires": { "boolbase": "^1.0.0" } }, "postcss-calc": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", - "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.0.0.tgz", + "integrity": "sha512-5NglwDrcbiy8XXfPM11F3HeC6hoT9W7GUH/Zi5U/p7u3Irv4rHhdDcIZwG0llHXV4ftsBjpfWMXAnXNl4lnt8g==", "dev": true, "requires": { - "postcss-selector-parser": "^6.0.9", - "postcss-value-parser": "^4.2.0" + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" } }, "postcss-colormin": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz", - "integrity": "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.2.0.tgz", + "integrity": "sha512-+HC6GfWU3upe5/mqmxuqYZ9B2Wl4lcoUUNkoaX59nEWV4EtADCMiBqui111Bu8R8IvaZTmqmxrqOAqjbHIwXPw==", "dev": true, "requires": { "browserslist": "^4.16.6", "caniuse-api": "^3.0.0", - "colord": "^2.9.1", - "postcss-value-parser": "^4.2.0" + "colord": "^2.0.1", + "postcss-value-parser": "^4.1.0" } }, "postcss-convert-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.0.tgz", - "integrity": "sha512-GkyPbZEYJiWtQB0KZ0X6qusqFHUepguBCNFi9t5JJc7I2OTXG7C0twbTLvCfaKOLl3rSXmpAwV7W5txd91V84g==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.0.1.tgz", + "integrity": "sha512-C3zR1Do2BkKkCgC0g3sF8TS0koF2G+mN8xxayZx3f10cIRmTaAnpgpRQZjNekTZxM2ciSPoh2IWJm0VZx8NoQg==", "dev": true, "requires": { - "postcss-value-parser": "^4.2.0" + "postcss-value-parser": "^4.1.0" } }, "postcss-discard-comments": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.1.tgz", - "integrity": "sha512-5JscyFmvkUxz/5/+TB3QTTT9Gi9jHkcn8dcmmuN68JQcv3aQg4y88yEHHhwFB52l/NkaJ43O0dbksGMAo49nfQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.0.1.tgz", + "integrity": "sha512-lgZBPTDvWrbAYY1v5GYEv8fEO/WhKOu/hmZqmCYfrpD6eyDWWzAOsl2rF29lpvziKO02Gc5GJQtlpkTmakwOWg==", "dev": true }, "postcss-discard-duplicates": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", - "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.1.tgz", + "integrity": "sha512-svx747PWHKOGpAXXQkCc4k/DsWo+6bc5LsVrAsw+OU+Ibi7klFZCyX54gjYzX4TH+f2uzXjRviLARxkMurA2bA==", "dev": true }, "postcss-discard-empty": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", - "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.0.1.tgz", + "integrity": "sha512-vfU8CxAQ6YpMxV2SvMcMIyF2LX1ZzWpy0lqHDsOdaKKLQVQGVP1pzhrI9JlsO65s66uQTfkQBKBD/A5gp9STFw==", "dev": true }, "postcss-discard-overridden": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", - "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.0.1.tgz", + "integrity": "sha512-Y28H7y93L2BpJhrdUR2SR2fnSsT+3TVx1NmVQLbcnZWwIUpJ7mfcTC6Za9M2PG6w8j7UQRfzxqn8jU2VwFxo3Q==", "dev": true }, "postcss-merge-longhand": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.3.tgz", - "integrity": "sha512-lX8GPGvZ0iGP/IboM7HXH5JwkXvXod1Rr8H8ixwiA372hArk0zP4ZcCy4z4Prg/bfNlbbTf0KCOjCF9kKnpP/w==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.0.2.tgz", + "integrity": "sha512-BMlg9AXSI5G9TBT0Lo/H3PfUy63P84rVz3BjCFE9e9Y9RXQZD3+h3YO1kgTNsNJy7bBc1YQp8DmSnwLIW5VPcw==", "dev": true, "requires": { - "postcss-value-parser": "^4.2.0", - "stylehacks": "^5.1.0" + "css-color-names": "^1.0.1", + "postcss-value-parser": "^4.1.0", + "stylehacks": "^5.0.1" } }, "postcss-merge-rules": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.1.tgz", - "integrity": "sha512-8wv8q2cXjEuCcgpIB1Xx1pIy8/rhMPIQqYKNzEdyx37m6gpq83mQQdCxgIkFgliyEnKvdwJf/C61vN4tQDq4Ww==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.0.2.tgz", + "integrity": "sha512-5K+Md7S3GwBewfB4rjDeol6V/RZ8S+v4B66Zk2gChRqLTCC8yjnHQ601omj9TKftS19OPGqZ/XzoqpzNQQLwbg==", "dev": true, "requires": { "browserslist": "^4.16.6", "caniuse-api": "^3.0.0", - "cssnano-utils": "^3.1.0", - "postcss-selector-parser": "^6.0.5" + "cssnano-utils": "^2.0.1", + "postcss-selector-parser": "^6.0.5", + "vendors": "^1.0.3" } }, "postcss-minify-font-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", - "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.0.1.tgz", + "integrity": "sha512-7JS4qIsnqaxk+FXY1E8dHBDmraYFWmuL6cgt0T1SWGRO5bzJf8sUoelwa4P88LEWJZweHevAiDKxHlofuvtIoA==", "dev": true, "requires": { - "postcss-value-parser": "^4.2.0" + "postcss-value-parser": "^4.1.0" } }, "postcss-minify-gradients": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", - "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.0.1.tgz", + "integrity": "sha512-odOwBFAIn2wIv+XYRpoN2hUV3pPQlgbJ10XeXPq8UY2N+9ZG42xu45lTn/g9zZ+d70NKSQD6EOi6UiCMu3FN7g==", "dev": true, "requires": { - "colord": "^2.9.1", - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" + "cssnano-utils": "^2.0.1", + "is-color-stop": "^1.1.0", + "postcss-value-parser": "^4.1.0" } }, "postcss-minify-params": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.2.tgz", - "integrity": "sha512-aEP+p71S/urY48HWaRHasyx4WHQJyOYaKpQ6eXl8k0kxg66Wt/30VR6/woh8THgcpRbonJD5IeD+CzNhPi1L8g==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.0.1.tgz", + "integrity": "sha512-4RUC4k2A/Q9mGco1Z8ODc7h+A0z7L7X2ypO1B6V8057eVK6mZ6xwz6QN64nHuHLbqbclkX1wyzRnIrdZehTEHw==", "dev": true, "requires": { - "browserslist": "^4.16.6", - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" + "alphanum-sort": "^1.0.2", + "browserslist": "^4.16.0", + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0", + "uniqs": "^2.0.0" } }, "postcss-minify-selectors": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.0.tgz", - "integrity": "sha512-vYxvHkW+iULstA+ctVNx0VoRAR4THQQRkG77o0oa4/mBS0OzGvvzLIvHDv/nNEM0crzN2WIyFU5X7wZhaUK3RA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.1.0.tgz", + "integrity": "sha512-NzGBXDa7aPsAcijXZeagnJBKBPMYLaJJzB8CQh6ncvyl2sIndLVWfbcDi0SBjRWk5VqEjXvf8tYwzoKf4Z07og==", "dev": true, "requires": { + "alphanum-sort": "^1.0.2", "postcss-selector-parser": "^6.0.5" } }, "postcss-normalize-charset": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", - "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.0.1.tgz", + "integrity": "sha512-6J40l6LNYnBdPSk+BHZ8SF+HAkS4q2twe5jnocgd+xWpz/mx/5Sa32m3W1AA8uE8XaXN+eg8trIlfu8V9x61eg==", "dev": true }, "postcss-normalize-display-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", - "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.0.1.tgz", + "integrity": "sha512-uupdvWk88kLDXi5HEyI9IaAJTE3/Djbcrqq8YgjvAVuzgVuqIk3SuJWUisT2gaJbZm1H9g5k2w1xXilM3x8DjQ==", "dev": true, "requires": { - "postcss-value-parser": "^4.2.0" + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" } }, "postcss-normalize-positions": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.0.tgz", - "integrity": "sha512-8gmItgA4H5xiUxgN/3TVvXRoJxkAWLW6f/KKhdsH03atg0cB8ilXnrB5PpSshwVu/dD2ZsRFQcR1OEmSBDAgcQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.0.1.tgz", + "integrity": "sha512-rvzWAJai5xej9yWqlCb1OWLd9JjW2Ex2BCPzUJrbaXmtKtgfL8dBMOOMTX6TnvQMtjk3ei1Lswcs78qKO1Skrg==", "dev": true, "requires": { - "postcss-value-parser": "^4.2.0" + "postcss-value-parser": "^4.1.0" } }, "postcss-normalize-repeat-style": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.0.tgz", - "integrity": "sha512-IR3uBjc+7mcWGL6CtniKNQ4Rr5fTxwkaDHwMBDGGs1x9IVRkYIT/M4NelZWkAOBdV6v3Z9S46zqaKGlyzHSchw==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.0.1.tgz", + "integrity": "sha512-syZ2itq0HTQjj4QtXZOeefomckiV5TaUO6ReIEabCh3wgDs4Mr01pkif0MeVwKyU/LHEkPJnpwFKRxqWA/7O3w==", "dev": true, "requires": { - "postcss-value-parser": "^4.2.0" + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" } }, "postcss-normalize-string": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", - "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.0.1.tgz", + "integrity": "sha512-Ic8GaQ3jPMVl1OEn2U//2pm93AXUcF3wz+OriskdZ1AOuYV25OdgS7w9Xu2LO5cGyhHCgn8dMXh9bO7vi3i9pA==", "dev": true, "requires": { - "postcss-value-parser": "^4.2.0" + "postcss-value-parser": "^4.1.0" } }, "postcss-normalize-timing-functions": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", - "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.0.1.tgz", + "integrity": "sha512-cPcBdVN5OsWCNEo5hiXfLUnXfTGtSFiBU9SK8k7ii8UD7OLuznzgNRYkLZow11BkQiiqMcgPyh4ZqXEEUrtQ1Q==", "dev": true, "requires": { - "postcss-value-parser": "^4.2.0" + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" } }, "postcss-normalize-unicode": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz", - "integrity": "sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.0.1.tgz", + "integrity": "sha512-kAtYD6V3pK0beqrU90gpCQB7g6AOfP/2KIPCVBKJM2EheVsBQmx/Iof+9zR9NFKLAx4Pr9mDhogB27pmn354nA==", "dev": true, "requires": { - "browserslist": "^4.16.6", - "postcss-value-parser": "^4.2.0" + "browserslist": "^4.16.0", + "postcss-value-parser": "^4.1.0" } }, "postcss-normalize-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", - "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.0.2.tgz", + "integrity": "sha512-k4jLTPUxREQ5bpajFQZpx8bCF2UrlqOTzP9kEqcEnOfwsRshWs2+oAFIHfDQB8GO2PaUaSE0NlTAYtbluZTlHQ==", "dev": true, "requires": { + "is-absolute-url": "^3.0.3", "normalize-url": "^6.0.1", - "postcss-value-parser": "^4.2.0" + "postcss-value-parser": "^4.1.0" } }, "postcss-normalize-whitespace": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", - "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.0.1.tgz", + "integrity": "sha512-iPklmI5SBnRvwceb/XH568yyzK0qRVuAG+a1HFUsFRf11lEJTiQQa03a4RSCQvLKdcpX7XsI1Gen9LuLoqwiqA==", "dev": true, "requires": { - "postcss-value-parser": "^4.2.0" + "postcss-value-parser": "^4.1.0" } }, "postcss-ordered-values": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.1.tgz", - "integrity": "sha512-7lxgXF0NaoMIgyihL/2boNAEZKiW0+HkMhdKMTD93CjW8TdCy2hSdj8lsAo+uwm7EDG16Da2Jdmtqpedl0cMfw==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.0.2.tgz", + "integrity": "sha512-8AFYDSOYWebJYLyJi3fyjl6CqMEG/UVworjiyK1r573I56kb3e879sCJLGvR3merj+fAdPpVplXKQZv+ey6CgQ==", "dev": true, "requires": { - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" } }, "postcss-reduce-initial": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz", - "integrity": "sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.0.1.tgz", + "integrity": "sha512-zlCZPKLLTMAqA3ZWH57HlbCjkD55LX9dsRyxlls+wfuRfqCi5mSlZVan0heX5cHr154Dq9AfbH70LyhrSAezJw==", "dev": true, "requires": { - "browserslist": "^4.16.6", + "browserslist": "^4.16.0", "caniuse-api": "^3.0.0" } }, "postcss-reduce-transforms": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", - "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.0.1.tgz", + "integrity": "sha512-a//FjoPeFkRuAguPscTVmRQUODP+f3ke2HqFNgGPwdYnpeC29RZdCBvGRGTsKpMURb/I3p6jdKoBQ2zI+9Q7kA==", "dev": true, "requires": { - "postcss-value-parser": "^4.2.0" + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" } }, "postcss-svgo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", - "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.0.2.tgz", + "integrity": "sha512-YzQuFLZu3U3aheizD+B1joQ94vzPfE6BNUcSYuceNxlVnKKsOtdo6hL9/zyC168Q8EwfLSgaDSalsUGa9f2C0A==", "dev": true, "requires": { - "postcss-value-parser": "^4.2.0", - "svgo": "^2.7.0" + "postcss-value-parser": "^4.1.0", + "svgo": "^2.3.0" } }, "postcss-unique-selectors": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", - "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.0.1.tgz", + "integrity": "sha512-gwi1NhHV4FMmPn+qwBNuot1sG1t2OmacLQ/AX29lzyggnjd+MnVD5uqQmpXO3J17KGL2WAxQruj1qTd3H0gG/w==", "dev": true, "requires": { - "postcss-selector-parser": "^6.0.5" + "alphanum-sort": "^1.0.2", + "postcss-selector-parser": "^6.0.5", + "uniqs": "^2.0.0" } }, "source-map": { @@ -15434,27 +15679,36 @@ "dev": true }, "stylehacks": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz", - "integrity": "sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.0.1.tgz", + "integrity": "sha512-Es0rVnHIqbWzveU1b24kbw92HsebBepxfcqe5iix7t9j0PQqhs0IxXVXv0pY2Bxa08CgMkzD6OWql7kbGOuEdA==", "dev": true, "requires": { - "browserslist": "^4.16.6", + "browserslist": "^4.16.0", "postcss-selector-parser": "^6.0.4" } }, + "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" + } + }, "svgo": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", - "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.3.1.tgz", + "integrity": "sha512-riDDIQgXpEnn0BEl9Gvhh1LNLIyiusSpt64IR8upJu7MwxnzetmF/Y57pXQD2NMX2lVyMRzXt5f2M5rO4wG7Dw==", "dev": true, "requires": { - "@trysound/sax": "0.2.0", - "commander": "^7.2.0", + "@trysound/sax": "0.1.1", + "chalk": "^4.1.0", + "commander": "^7.1.0", "css-select": "^4.1.3", - "css-tree": "^1.1.3", + "css-tree": "^1.1.2", "csso": "^4.2.0", - "picocolors": "^1.0.0", "stable": "^0.1.8" } } @@ -15492,9 +15746,9 @@ }, "dependencies": { "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true }, "ansi-styles": { @@ -15507,9 +15761,9 @@ } }, "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -15540,6 +15794,27 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, "restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", @@ -15551,12 +15826,21 @@ } }, "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.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==", "dev": true, "requires": { - "ansi-regex": "^5.0.1" + "has-flag": "^4.0.0" } } } @@ -15583,98 +15867,14 @@ "dev": true }, "os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", "dev": true, "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "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" - } - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, - "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=", - "dev": true, - "requires": { - "path-key": "^2.0.0" - } - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "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=", - "dev": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" } }, "os-tmpdir": { @@ -15707,12 +15907,6 @@ "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", "dev": true }, - "p-is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", - "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", - "dev": true - }, "p-limit": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", @@ -15747,10 +15941,13 @@ } }, "p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "dev": true + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } }, "p-retry": { "version": "3.0.1", @@ -15821,6 +16018,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, "requires": { "callsites": "^3.0.0" }, @@ -15828,7 +16026,8 @@ "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true } } }, @@ -15858,15 +16057,12 @@ } }, "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" + "error-ex": "^1.2.0" } }, "parse5": { @@ -15927,15 +16123,16 @@ "dev": true }, "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", "dev": true }, "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==" + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true }, "path-to-regexp": { "version": "0.1.7", @@ -15944,10 +16141,23 @@ "dev": true }, "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "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=", + "dev": true + } + } }, "pbkdf2": { "version": "3.1.2", @@ -15980,22 +16190,16 @@ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", "dev": true }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", "dev": true }, "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "dev": true }, "pinkie": { @@ -16041,15 +16245,6 @@ "p-locate": "^4.1.0" } }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, "p-locate": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", @@ -16057,6 +16252,17 @@ "dev": true, "requires": { "p-limit": "^2.2.0" + }, + "dependencies": { + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + } } }, "path-exists": { @@ -16085,18 +16291,18 @@ "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==" }, "pnp-webpack-plugin": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.7.0.tgz", - "integrity": "sha512-2Rb3vm+EXble/sMXNSu6eoBx8e79gKqhNq9F5ZWW6ERNCTE/Q0wQNne5541tE5vKjfM8hpNCYL+LGc1YTfI0dg==", + "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==", "dev": true, "requires": { "ts-pnp": "^1.1.6" } }, "popper.js": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", - "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==" + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.0.tgz", + "integrity": "sha512-+G+EkOPoE5S/zChTpmBSSDYmhXJ5PsW8eMhH8cP/CQHMFPBG/kC9Y5IIw6qNYgdJ+/COf0ddY2li28iHaZRSjw==" }, "portfinder": { "version": "1.0.28", @@ -16109,15 +16315,6 @@ "mkdirp": "^0.5.5" }, "dependencies": { - "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", - "dev": true, - "requires": { - "lodash": "^4.17.14" - } - }, "debug": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", @@ -16127,6 +16324,21 @@ "ms": "^2.1.1" } }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, "ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -16142,14 +16354,14 @@ "dev": true }, "postcss": { - "version": "8.4.12", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.12.tgz", - "integrity": "sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==", + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.5.tgz", + "integrity": "sha512-NxTuJocUhYGsMiMFHDUkmjSKT3EdH4/WbGF6GCi1NDGk+vbcUTun4fpbOqaPtD8IIsztA2ilZm2DhYCuyN58gA==", "dev": true, "requires": { - "nanoid": "^3.3.1", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "colorette": "^1.2.2", + "nanoid": "^3.1.23", + "source-map-js": "^0.6.2" } }, "postcss-calc": { @@ -16163,20 +16375,15 @@ "postcss-value-parser": "^4.0.2" }, "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" } }, "source-map": { @@ -16184,6 +16391,15 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -16200,20 +16416,15 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" } }, "postcss-value-parser": { @@ -16227,6 +16438,15 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -16240,20 +16460,15 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" } }, "postcss-value-parser": { @@ -16267,6 +16482,15 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -16279,20 +16503,15 @@ "postcss": "^7.0.0" }, "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" } }, "source-map": { @@ -16300,6 +16519,15 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -16312,20 +16540,15 @@ "postcss": "^7.0.0" }, "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" } }, "source-map": { @@ -16333,6 +16556,15 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -16345,20 +16577,15 @@ "postcss": "^7.0.0" }, "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" } }, "source-map": { @@ -16366,6 +16593,15 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -16378,20 +16614,15 @@ "postcss": "^7.0.0" }, "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" } }, "source-map": { @@ -16399,17 +16630,35 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, "postcss-load-config": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.3.tgz", - "integrity": "sha512-5EYgaM9auHGtO//ljHH+v/aC/TQ5LHXtL7bQajNAUBKUVKiYE8rYpFms7+V26D9FncaGe2zwCoPQsFKb5zF/Hw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.0.tgz", + "integrity": "sha512-ipM8Ds01ZUophjDTQYSVP70slFSYg3T0/zyfII5vzhN6V57YSxMgG5syXuwi5VtS8wSf3iL30v0uBdoIVx4Q0g==", "dev": true, "requires": { - "lilconfig": "^2.0.4", + "import-cwd": "^3.0.0", + "lilconfig": "^2.0.3", "yaml": "^1.10.2" + }, + "dependencies": { + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true + } } }, "postcss-loader": { @@ -16465,12 +16714,12 @@ } }, "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", + "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", "dev": true, "requires": { - "@types/json-schema": "^7.0.8", + "@types/json-schema": "^7.0.7", "ajv": "^6.12.5", "ajv-keywords": "^3.5.2" } @@ -16504,20 +16753,15 @@ "stylehacks": "^4.0.0" }, "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" } }, "postcss-value-parser": { @@ -16531,6 +16775,15 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -16548,20 +16801,15 @@ "vendors": "^1.0.0" }, "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" } }, "postcss-selector-parser": { @@ -16580,6 +16828,15 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -16593,20 +16850,15 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" } }, "postcss-value-parser": { @@ -16620,6 +16872,15 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -16635,20 +16896,15 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" } }, "postcss-value-parser": { @@ -16662,6 +16918,15 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -16679,20 +16944,15 @@ "uniqs": "^2.0.0" }, "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" } }, "postcss-value-parser": { @@ -16706,6 +16966,15 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -16721,20 +16990,15 @@ "postcss-selector-parser": "^3.0.0" }, "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" } }, "postcss-selector-parser": { @@ -16753,6 +17017,15 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -16800,20 +17073,15 @@ "postcss": "^7.0.0" }, "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" } }, "source-map": { @@ -16821,6 +17089,15 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -16835,20 +17112,15 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" } }, "postcss-value-parser": { @@ -16862,6 +17134,15 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -16877,20 +17158,15 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" } }, "postcss-value-parser": { @@ -16904,6 +17180,15 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -16919,20 +17204,15 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" } }, "postcss-value-parser": { @@ -16946,6 +17226,15 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -16960,20 +17249,15 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" } }, "postcss-value-parser": { @@ -16987,6 +17271,15 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -17001,20 +17294,15 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" } }, "postcss-value-parser": { @@ -17028,6 +17316,15 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -17042,20 +17339,15 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" } }, "postcss-value-parser": { @@ -17069,6 +17361,15 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -17084,20 +17385,15 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" } }, "postcss-value-parser": { @@ -17111,6 +17407,15 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -17124,20 +17429,15 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" } }, "postcss-value-parser": { @@ -17151,6 +17451,15 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -17165,20 +17474,15 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" } }, "postcss-value-parser": { @@ -17192,6 +17496,15 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -17207,20 +17520,15 @@ "postcss": "^7.0.0" }, "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" } }, "source-map": { @@ -17228,6 +17536,15 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -17243,20 +17560,15 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" } }, "postcss-value-parser": { @@ -17270,13 +17582,22 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, "postcss-selector-parser": { - "version": "6.0.9", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz", - "integrity": "sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ==", + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz", + "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==", "dev": true, "requires": { "cssesc": "^3.0.0", @@ -17294,20 +17615,15 @@ "svgo": "^1.0.0" }, "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" } }, "postcss-value-parser": { @@ -17321,6 +17637,15 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -17335,20 +17660,15 @@ "uniqs": "^2.0.0" }, "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" } }, "source-map": { @@ -17356,13 +17676,22 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, "postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", "dev": true }, "preact": { @@ -17457,9 +17786,9 @@ }, "dependencies": { "@babel/runtime": { - "version": "7.17.8", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.8.tgz", - "integrity": "sha512-dQpEpK0O9o6lj6oPu0gRDbbnk+4LeHlNcBpspf6Olzt3GIX4P1lWF1gS+pHLDFlaJvbR6q7jCfQ08zA4QJBnmA==", + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.6.tgz", + "integrity": "sha512-/PCB2uJ7oM44tz8YhC4Z/6PeOKXp4K588f+5M3clr1M4zbqztlo0XEfJ2LEzj/FgwfgGcIdl8n7YYjTCI0BYwg==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" @@ -17476,21 +17805,60 @@ "resolve": "^1.19.0" } }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "browserslist": { + "version": "4.16.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", + "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001219", + "colorette": "^1.2.2", + "electron-to-chromium": "^1.3.723", + "escalade": "^3.1.1", + "node-releases": "^1.1.71" + } + }, + "caniuse-lite": { + "version": "1.0.30001245", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001245.tgz", + "integrity": "sha512-768fM9j1PKXpOCKws6eTo3RHmvTUsG9UrpT4WoREFeZgJBTi4/X9g565azS/rVUGtqb8nt7FjLeF5u4kukERnA==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.776", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.776.tgz", + "integrity": "sha512-V0w7eFSBoFPpdw4xexjVPZ770UDZIevSwkkj4W97XbE3IsCsTRFpa7/yXGZ88EOQAUEA09JMMsWK0xsw0kRAYw==", + "dev": true + }, + "node-releases": { + "version": "1.1.73", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz", + "integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==", + "dev": true + }, + "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==", "dev": true }, "resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "requires": { - "is-core-module": "^2.8.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" + "glob": "^7.1.3" } }, "source-map": { @@ -17498,6 +17866,15 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } } } }, @@ -17581,9 +17958,9 @@ "dev": true }, "pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-4.0.2.tgz", + "integrity": "sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=", "dev": true }, "pretty-error": { @@ -17689,6 +18066,21 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } } } }, @@ -17699,15 +18091,15 @@ "dev": true }, "promise-polyfill": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.2.3.tgz", - "integrity": "sha512-Og0+jCRQetV84U8wVjMNccfGCnMQ9mGs9Hv78QFe+pSDD3gWTpz0y+1QCuxy5d/vBFuZ3iwP2eycAkvqIMPmWg==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.2.0.tgz", + "integrity": "sha512-k/TC0mIcPVF6yHhUvwAp7cvL6I2fFV7TzF1DuGPI8mBh4QQazf36xCKEHKTZKRysEoTQoQdKyP25J8MPJp7j5g==", "dev": true }, "prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.1.tgz", + "integrity": "sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ==", "dev": true, "requires": { "kleur": "^3.0.3", @@ -17755,9 +18147,9 @@ "dev": true }, "psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.4.0.tgz", + "integrity": "sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw==", "dev": true }, "public-encrypt": { @@ -17851,22 +18243,11 @@ } }, "qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", "dev": true }, - "query-string": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.0.1.tgz", - "integrity": "sha512-uIw3iRvHnk9to1blJCG3BTc+Ro56CBowJXKmNNAm3RulvPBzWLRqKSiiDk+IplJhsydwtuNMHi8UGQFcCLVfkA==", - "requires": { - "decode-uri-component": "^0.2.0", - "filter-obj": "^1.1.0", - "split-on-first": "^1.0.0", - "strict-uri-encode": "^2.0.0" - } - }, "querystring": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", @@ -17892,9 +18273,9 @@ "dev": true }, "ramda": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.2.tgz", - "integrity": "sha512-SbiLPU40JuJniHexQSAgad32hfwd+DRUdwF2PlVuI5RZD0/vahUco7R8vD86J/tcEKKF9vZrUVwgtmGCqlCKyA==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.25.0.tgz", + "integrity": "sha512-GXpfrYVPwx3K7RQ6aYT8KPS8XViSXUVJT1ONhoKPE9VAleW42YE+U+8VEyGWt41EnEQW7gwecYJriTI0pKoecQ==", "dev": true }, "randomatic": { @@ -17913,6 +18294,12 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true } } }, @@ -17942,21 +18329,21 @@ "dev": true }, "raw-body": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz", - "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", "dev": true, "requires": { - "bytes": "3.1.2", - "http-errors": "1.8.1", + "bytes": "3.1.0", + "http-errors": "1.7.2", "iconv-lite": "0.4.24", "unpipe": "1.0.0" }, "dependencies": { "bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", "dev": true } } @@ -18002,12 +18389,12 @@ "dev": true }, "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", + "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", "dev": true, "requires": { - "@types/json-schema": "^7.0.8", + "@types/json-schema": "^7.0.7", "ajv": "^6.12.5", "ajv-keywords": "^3.5.2" } @@ -18024,6 +18411,20 @@ "ini": "~1.3.0", "minimist": "^1.2.0", "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + } } }, "react-big-calendar": { @@ -18066,9 +18467,9 @@ } }, "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==" + "version": "16.11.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.11.0.tgz", + "integrity": "sha512-gbBVYR2p8mnriqAwWx9LbuUrShnAuSCNnuPGyc7GJrMVQtPDAh8iLpv7FRuMPFb56KkaVZIYSz1PrjI9q0QPCw==" }, "react-lifecycles-compat": { "version": "3.0.4", @@ -18076,14 +18477,14 @@ "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" }, "react-onclickoutside": { - "version": "6.12.1", - "resolved": "https://registry.npmjs.org/react-onclickoutside/-/react-onclickoutside-6.12.1.tgz", - "integrity": "sha512-a5Q7CkWznBRUWPmocCvE8b6lEYw1s6+opp/60dCunhO+G6E4tDTO2Sd2jKE+leEnnrLAE2Wj5DlDHNqj5wPv1Q==" + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/react-onclickoutside/-/react-onclickoutside-6.10.0.tgz", + "integrity": "sha512-7i2L3ef+0ILXpL6P+Hg304eCQswh4jl3ynwR71BSlMU49PE2uk31k8B2GkP6yE9s2D4jTGKnzuSpzWxu4YxfQQ==" }, "react-overlays": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/react-overlays/-/react-overlays-2.1.1.tgz", - "integrity": "sha512-gaQJwmb8Ij2IGVt4D1HmLtl4A0mDVYxlsv/8i0dHWK7Mw0kNat6ORelbbEWzaXTK1TqMeQtJw/jraL3WOADz3w==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/react-overlays/-/react-overlays-2.1.0.tgz", + "integrity": "sha512-tHPGTZosbQSo82yb9x4YCsmJJtspKvAPL5kXVnyoB2Z5UoAU3VetIuh2VblfVT408us5nLJd9uDtwI3xWDHS6w==", "requires": { "@babel/runtime": "^7.4.5", "@restart/hooks": "^0.3.12", @@ -18129,9 +18530,9 @@ }, "dependencies": { "@babel/runtime": { - "version": "7.17.8", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.8.tgz", - "integrity": "sha512-dQpEpK0O9o6lj6oPu0gRDbbnk+4LeHlNcBpspf6Olzt3GIX4P1lWF1gS+pHLDFlaJvbR6q7jCfQ08zA4QJBnmA==", + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.6.tgz", + "integrity": "sha512-/PCB2uJ7oM44tz8YhC4Z/6PeOKXp4K588f+5M3clr1M4zbqztlo0XEfJ2LEzj/FgwfgGcIdl8n7YYjTCI0BYwg==", "requires": { "regenerator-runtime": "^0.13.4" } @@ -18140,6 +18541,11 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==" + }, + "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==" } } }, @@ -18163,19 +18569,6 @@ "load-json-file": "^1.0.0", "normalize-package-data": "^2.3.2", "path-type": "^1.0.0" - }, - "dependencies": { - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - } } }, "read-pkg-up": { @@ -18210,9 +18603,9 @@ } }, "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==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { "core-util-is": "~1.0.0", @@ -18249,18 +18642,18 @@ "dev": true }, "regenerate-unicode-properties": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", - "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", + "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==", "dev": true, "requires": { - "regenerate": "^1.4.2" + "regenerate": "^1.4.0" } }, "regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", + "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==" }, "regenerator-transform": { "version": "0.14.5", @@ -18272,13 +18665,19 @@ }, "dependencies": { "@babel/runtime": { - "version": "7.17.8", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.8.tgz", - "integrity": "sha512-dQpEpK0O9o6lj6oPu0gRDbbnk+4LeHlNcBpspf6Olzt3GIX4P1lWF1gS+pHLDFlaJvbR6q7jCfQ08zA4QJBnmA==", + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.6.tgz", + "integrity": "sha512-/PCB2uJ7oM44tz8YhC4Z/6PeOKXp4K588f+5M3clr1M4zbqztlo0XEfJ2LEzj/FgwfgGcIdl8n7YYjTCI0BYwg==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" } + }, + "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==", + "dev": true } } }, @@ -18302,12 +18701,11 @@ } }, "regexp.prototype.flags": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz", - "integrity": "sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.2.0.tgz", + "integrity": "sha512-ztaw4M1VqgMwl9HlPpOuiYgItcHlunW0He2fE6eNfT6E/CF2FtYi9ofOYe4mKntstYk0Fyh/rDRBdS3AnxjlrA==", "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.1.2" } }, "regexpp": { @@ -18317,17 +18715,17 @@ "dev": true }, "regexpu-core": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz", - "integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==", + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", "dev": true, "requires": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.0.1", - "regjsgen": "^0.6.0", - "regjsparser": "^0.8.2", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.0.0" + "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" } }, "registry-auth-token": { @@ -18349,15 +18747,15 @@ } }, "regjsgen": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", - "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", "dev": true }, "regjsparser": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", - "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz", + "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", "dev": true, "requires": { "jsesc": "~0.5.0" @@ -18403,22 +18801,22 @@ "dev": true }, "css-select": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.2.1.tgz", - "integrity": "sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", + "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==", "dev": true, "requires": { "boolbase": "^1.0.0", - "css-what": "^5.1.0", - "domhandler": "^4.3.0", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" + "css-what": "^5.0.0", + "domhandler": "^4.2.0", + "domutils": "^2.6.0", + "nth-check": "^2.0.0" } }, "css-what": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", - "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.0.1.tgz", + "integrity": "sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg==", "dev": true }, "dom-serializer": { @@ -18439,9 +18837,9 @@ "dev": true }, "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.7.0.tgz", + "integrity": "sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg==", "dev": true, "requires": { "dom-serializer": "^1.0.1", @@ -18456,9 +18854,9 @@ "dev": true }, "nth-check": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", - "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz", + "integrity": "sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==", "dev": true, "requires": { "boolbase": "^1.0.0" @@ -18476,9 +18874,9 @@ } }, "repeat-element": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", - "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", "dev": true }, "repeat-string": { @@ -18497,9 +18895,9 @@ } }, "request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", "dev": true, "requires": { "aws-sign2": "~0.7.0", @@ -18509,7 +18907,7 @@ "extend": "~3.0.2", "forever-agent": "~0.6.1", "form-data": "~2.3.2", - "har-validator": "~5.1.3", + "har-validator": "~5.1.0", "http-signature": "~1.2.0", "is-typedarray": "~1.0.0", "isstream": "~0.1.2", @@ -18519,32 +18917,25 @@ "performance-now": "^2.1.0", "qs": "~6.5.2", "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", + "tough-cookie": "~2.4.3", "tunnel-agent": "^0.6.0", "uuid": "^3.3.2" }, "dependencies": { - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true }, - "jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", "dev": true, "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" + "psl": "^1.1.24", + "punycode": "^1.4.1" } } } @@ -18591,12 +18982,6 @@ "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==", - "dev": true - }, "require-main-filename": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", @@ -18622,6 +19007,7 @@ "version": "1.12.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", + "dev": true, "requires": { "path-parse": "^1.0.6" } @@ -18665,21 +19051,13 @@ } }, "restore-cursor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", - "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", "dev": true, "requires": { - "exit-hook": "^1.0.0", - "onetime": "^1.0.0" - }, - "dependencies": { - "onetime": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", - "dev": true - } + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" } }, "ret": { @@ -18713,9 +19091,9 @@ "dev": true }, "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", "dev": true, "requires": { "glob": "^7.1.3" @@ -18732,9 +19110,9 @@ } }, "rollup": { - "version": "2.70.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.70.1.tgz", - "integrity": "sha512-CRYsI5EuzLbXdxC6RnYhOuRdtz4bhejPMSWjsFLfVM/7w/85n2szZv6yExqUXsBdz5KT8eoubeyDUDjhLHEslA==", + "version": "2.53.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.53.2.tgz", + "integrity": "sha512-1CtEYuS5CRCzFZ7SNW5528SlDlk4VDXIRGwbm/2POQxA/G4+7/crIqJwkmnj8Q/74hGx4oVlNvh4E1CJQ5hZ6w==", "dev": true, "requires": { "fsevents": "~2.3.2" @@ -18761,6 +19139,26 @@ "terser": "^5.0.0" }, "dependencies": { + "@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.14.5" + } + }, + "@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, "serialize-javascript": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", @@ -18779,10 +19177,13 @@ "dev": true }, "run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "dev": true, + "requires": { + "is-promise": "^2.1.0" + } }, "run-parallel": { "version": "1.2.0", @@ -18827,9 +19228,9 @@ } }, "sade": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", - "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.7.4.tgz", + "integrity": "sha512-y5yauMD93rX840MwUJr7C1ysLFBgMspsdTo4UVrDg3fXDvtwOyIqykhVAAm6fk/3au77773itJStObgK+LKaiA==", "dev": true, "requires": { "mri": "^1.1.0" @@ -18838,7 +19239,8 @@ "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==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "safe-regex": { "version": "1.1.0", @@ -19082,6 +19484,12 @@ "kind-of": "^6.0.0" } }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, "is-data-descriptor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", @@ -19122,6 +19530,12 @@ } } }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, "micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -19142,6 +19556,12 @@ "snapdragon": "^0.8.1", "to-regex": "^3.0.2" } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true } } }, @@ -19224,9 +19644,9 @@ "dev": true }, "selfsigned": { - "version": "1.10.14", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.14.tgz", - "integrity": "sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA==", + "version": "1.10.11", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.11.tgz", + "integrity": "sha512-aVmbPOfViZqOZPgRBT0+3u4yZFHpmnIghLMlAcb5/xhp5ZtB/RVnKhz5vl2M32CLXAqR4kha9zfhNg0Lf/sxKA==", "dev": true, "requires": { "node-forge": "^0.10.0" @@ -19262,9 +19682,9 @@ } }, "send": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", - "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", "dev": true, "requires": { "debug": "2.6.9", @@ -19274,9 +19694,9 @@ "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", - "http-errors": "1.8.1", + "http-errors": "~1.7.2", "mime": "1.6.0", - "ms": "2.1.3", + "ms": "2.1.1", "on-finished": "~2.3.0", "range-parser": "~1.2.1", "statuses": "~1.5.0" @@ -19299,10 +19719,16 @@ } } }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", "dev": true } } @@ -19317,9 +19743,9 @@ } }, "serialize-query-params": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/serialize-query-params/-/serialize-query-params-1.3.6.tgz", - "integrity": "sha512-VlH7sfWNyPVZClPkRacopn6sn5uQMXBsjPVz1+pBHX895VpcYVznfJtZ49e6jymcrz+l/vowkepCZn/7xEAEdw==", + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/serialize-query-params/-/serialize-query-params-1.3.5.tgz", + "integrity": "sha512-BrLH1RqgzVxm6dco+KP9S6BodeFiUVvKwtY3GSWQlupIdblT19KCGTRkHZ2yIU6Bjy0Prjts0tYe11VpTMbAeQ==", "dev": true }, "serve-index": { @@ -19373,15 +19799,15 @@ } }, "serve-static": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", - "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", "dev": true, "requires": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.17.2" + "send": "0.17.1" } }, "set-blocking": { @@ -19404,9 +19830,9 @@ "dev": true }, "setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", "dev": true }, "sha.js": { @@ -19426,21 +19852,29 @@ "dev": true, "requires": { "kind-of": "^6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + } } }, "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==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "dev": true, "requires": { - "shebang-regex": "^3.0.0" + "shebang-regex": "^1.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==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, "shellwords": { @@ -19449,21 +19883,10 @@ "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", "dev": true }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, "signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true }, "simple-swizzle": { @@ -19484,13 +19907,13 @@ } }, "sirv": { - "version": "1.0.19", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.19.tgz", - "integrity": "sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==", + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.12.tgz", + "integrity": "sha512-+jQoCxndz7L2tqQL4ZyzfDhky0W/4ZJip3XoOuxyQWnAwMxindLl3Xv1qT4x1YX/re0leShvTm8Uk0kQspGhBg==", "dev": true, "requires": { - "@polka/url": "^1.0.0-next.20", - "mrmime": "^1.0.0", + "@polka/url": "^1.0.0-next.15", + "mime": "^2.3.1", "totalist": "^1.0.0" } }, @@ -19544,6 +19967,14 @@ "minimatch": "^3.0.4", "pretty-bytes": "^5.3.0", "util.promisify": "^1.0.0" + }, + "dependencies": { + "pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "dev": true + } } }, "slash": { @@ -19553,10 +19984,13 @@ "dev": true }, "slice-ansi": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", - "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", - "dev": true + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", + "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0" + } }, "snapdragon": { "version": "0.8.2", @@ -19651,6 +20085,12 @@ "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true } } }, @@ -19661,17 +20101,6 @@ "dev": true, "requires": { "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } } }, "socket.io-client": { @@ -19717,35 +20146,36 @@ } }, "sockjs": { - "version": "0.3.24", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", - "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "version": "0.3.21", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz", + "integrity": "sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw==", "dev": true, "requires": { "faye-websocket": "^0.11.3", - "uuid": "^8.3.2", + "uuid": "^3.4.0", "websocket-driver": "^0.7.4" }, "dependencies": { "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", "dev": true } } }, "sockjs-client": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.6.0.tgz", - "integrity": "sha512-qVHJlyfdHFht3eBFZdKEXKTlb7I4IV41xnVNo8yUKA1UHcPJwgW2SvTq9LhnjjCywSkSK7c/e4nghU0GOoMCRQ==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.5.1.tgz", + "integrity": "sha512-VnVAb663fosipI/m6pqRXakEOw7nvd7TUgdr3PlR/8V2I95QIdwT8L4nMxhyU8SmDBHYXU1TOElaKOmKLfYzeQ==", "dev": true, "requires": { - "debug": "^3.2.7", - "eventsource": "^1.1.0", - "faye-websocket": "^0.11.4", + "debug": "^3.2.6", + "eventsource": "^1.0.7", + "faye-websocket": "^0.11.3", "inherits": "^2.0.4", - "url-parse": "^1.5.10" + "json3": "^3.3.3", + "url-parse": "^1.5.1" }, "dependencies": { "debug": { @@ -19777,18 +20207,18 @@ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" }, "source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", + "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==", "dev": true }, "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==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", "dev": true, "requires": { - "atob": "^2.1.2", + "atob": "^2.1.1", "decode-uri-component": "^0.2.0", "resolve-url": "^0.2.1", "source-map-url": "^0.4.0", @@ -19805,9 +20235,9 @@ } }, "source-map-url": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", - "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", "dev": true }, "sourcemap-codec": { @@ -19817,9 +20247,9 @@ "dev": true }, "spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", "dev": true, "requires": { "spdx-expression-parse": "^3.0.0", @@ -19827,15 +20257,15 @@ } }, "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==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", "dev": true }, "spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", "dev": true, "requires": { "spdx-exceptions": "^2.1.0", @@ -19843,9 +20273,9 @@ } }, "spdx-license-ids": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", - "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", "dev": true }, "spdy": { @@ -19862,9 +20292,9 @@ }, "dependencies": { "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "dev": true, "requires": { "ms": "2.1.2" @@ -19893,9 +20323,9 @@ }, "dependencies": { "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "dev": true, "requires": { "ms": "2.1.2" @@ -19923,7 +20353,8 @@ "split-on-first": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", - "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==" + "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", + "dev": true }, "split-string": { "version": "3.1.0", @@ -19941,9 +20372,9 @@ "dev": true }, "sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", "dev": true, "requires": { "asn1": "~0.2.3", @@ -20058,11 +20489,6 @@ "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", "dev": true }, - "strict-uri-encode": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", - "integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY=" - }, "string-length": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", @@ -20100,22 +20526,6 @@ "strip-ansi": "^5.1.0" } }, - "string.prototype.matchall": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz", - "integrity": "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "regexp.prototype.flags": "^1.4.1", - "side-channel": "^1.0.4" - } - }, "string.prototype.trimend": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", @@ -20126,6 +20536,26 @@ "define-properties": "^1.1.3" } }, + "string.prototype.trimleft": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz", + "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz", + "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, "string.prototype.trimstart": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", @@ -20246,12 +20676,12 @@ "dev": true }, "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", + "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", "dev": true, "requires": { - "@types/json-schema": "^7.0.8", + "@types/json-schema": "^7.0.7", "ajv": "^6.12.5", "ajv-keywords": "^3.5.2" } @@ -20269,20 +20699,15 @@ "postcss-selector-parser": "^3.0.0" }, "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" } }, "postcss-selector-parser": { @@ -20301,45 +20726,45 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, "stylis": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.0.13.tgz", - "integrity": "sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag==" + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.0.10.tgz", + "integrity": "sha512-m3k+dk7QeJw660eIKRRn3xPF6uuvHs/FFzjX3HQ5ove0qYsiygoAhwn5a3IYKaZPo5LrYD0rfVmtv1gNY1uYwg==" }, "superstruct": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-0.8.3.tgz", - "integrity": "sha512-LbtbFpktW1FcwxVIJlxdk7bCyBq/GzOx2FSFLRLTUhWIA1gHkYPIl3aXRG5mBdGZtnPNT6t+4eEcLDCMOuBHww==", + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-0.8.4.tgz", + "integrity": "sha512-48Ors8IVWZm/tMr8r0Si6+mJiB7mkD7jqvIzktjJ4+EnP5tBp0qOpiM1J8sCUorKx+TXWrfb3i1UcjdD1YK/wA==", "dev": true, "requires": { "kind-of": "^6.0.2", "tiny-invariant": "^1.0.6" - } - }, - "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" }, "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==", + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true } } }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", "dev": true }, "svg.draggable.js": { @@ -20459,15 +20884,6 @@ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, - "slice-ansi": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", - "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0" - } - }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -20496,9 +20912,9 @@ "dev": true }, "tar": { - "version": "6.1.11", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", - "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz", + "integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==", "dev": true, "requires": { "chownr": "^2.0.0", @@ -20541,6 +20957,12 @@ "unique-string": "^2.0.0" }, "dependencies": { + "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==", + "dev": true + }, "type-fest": { "version": "0.16.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", @@ -20550,29 +20972,16 @@ } }, "terser": { - "version": "5.12.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.12.1.tgz", - "integrity": "sha512-NXbs+7nisos5E+yXwAD+y7zrcTkMqb0dEJxIGtSKPdCBzopf7ni4odPul2aechpV7EXNvOudYOX2bb5tln1jbQ==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.7.1.tgz", + "integrity": "sha512-b3e+d5JbHAe/JSjwsC3Zn55wsBIM7AsHLjKxT31kGCldgbpFePaFo+PiddtO6uwRZWRw7sPXmAN8dTW61xmnSg==", "dev": true, "requires": { - "acorn": "^8.5.0", "commander": "^2.20.0", "source-map": "~0.7.2", - "source-map-support": "~0.5.20" + "source-map-support": "~0.5.19" }, "dependencies": { - "acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", - "dev": true - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, "source-map": { "version": "0.7.3", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", @@ -20580,9 +20989,9 @@ "dev": true }, "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -20656,12 +21065,12 @@ } }, "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", + "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", "dev": true, "requires": { - "@types/json-schema": "^7.0.8", + "@types/json-schema": "^7.0.7", "ajv": "^6.12.5", "ajv-keywords": "^3.5.2" } @@ -20751,9 +21160,9 @@ "dev": true }, "tiny-invariant": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.2.0.tgz", - "integrity": "sha512-1Uhn/aqw5C6RI4KejVeTg6mIS7IqxnLJ8Mv2tV5rTc0qWobay7pDUz6Wi392Cnc8ak1H0F2cjoRzb2/AW4+Fvg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.1.0.tgz", + "integrity": "sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw==", "dev": true }, "tinydate": { @@ -20763,18 +21172,18 @@ "dev": true }, "tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "dev": true, "requires": { - "rimraf": "^3.0.0" + "os-tmpdir": "~1.0.2" } }, "tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", "dev": true }, "to-array": { @@ -20791,7 +21200,8 @@ "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=" + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true }, "to-object-path": { "version": "0.3.0", @@ -20800,17 +21210,6 @@ "dev": true, "requires": { "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } } }, "to-readable-stream": { @@ -20849,22 +21248,13 @@ "requires": { "kind-of": "^3.0.2" } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } } } }, "toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", "dev": true }, "toposort": { @@ -20986,17 +21376,30 @@ } }, "typescript": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.2.tgz", - "integrity": "sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", + "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==", "dev": true }, "uglify-js": { - "version": "3.15.3", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.3.tgz", - "integrity": "sha512-6iCVm2omGJbsu3JWac+p6kUiOpg3wFO2f8lIXjfEb8RrmLjzog1wTPMmwKB7swfzzqxj9YM+sGUM++u1qN4qJg==", + "version": "3.6.9", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.9.tgz", + "integrity": "sha512-pcnnhaoG6RtrvHJ1dFncAe8Od6Nuy30oaJ82ts6//sGSXOP5UjBMEthiProjXmMNHOfd93sqlkztifFMcb+4yw==", "dev": true, - "optional": true + "optional": true, + "requires": { + "commander": "~2.20.3", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } }, "unbox-primitive": { "version": "1.0.1", @@ -21008,15 +21411,23 @@ "has-bigints": "^1.0.1", "has-symbols": "^1.0.2", "which-boxed-primitive": "^1.0.2" + }, + "dependencies": { + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true + } } }, "uncontrollable": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.2.1.tgz", - "integrity": "sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.1.1.tgz", + "integrity": "sha512-EcPYhot3uWTS3w00R32R2+vS8Vr53tttrvMj/yA1uYRhf8hbTG2GyugGqWDY0qIskxn0uTTojVd6wPYW9ZEf8Q==", "requires": { "@babel/runtime": "^7.6.3", - "@types/react": ">=16.9.11", + "@types/react": "^16.9.11", "invariant": "^2.2.4", "react-lifecycles-compat": "^3.0.4" } @@ -21028,31 +21439,31 @@ "dev": true }, "unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "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==", "dev": true }, "unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "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==", "dev": true, "requires": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" } }, "unicode-match-property-value-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", - "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", + "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==", "dev": true }, "unicode-property-aliases-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", - "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", + "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==", "dev": true }, "union-value": { @@ -21254,15 +21665,21 @@ } }, "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.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==", + "dev": true + }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -21278,29 +21695,19 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "global-dirs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", - "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", - "dev": true, - "requires": { - "ini": "2.0.0" - } - }, - "ini": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "is-installed-globally": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", - "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", "dev": true, "requires": { - "global-dirs": "^3.0.0", - "is-path-inside": "^3.0.2" + "ci-info": "^2.0.0" } }, "lru-cache": { @@ -21321,6 +21728,15 @@ "lru-cache": "^6.0.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==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -21336,9 +21752,9 @@ "dev": true }, "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", "dev": true, "requires": { "punycode": "^2.1.0" @@ -21409,13 +21825,28 @@ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, + "mime-db": { + "version": "1.48.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.48.0.tgz", + "integrity": "sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==", + "dev": true + }, + "mime-types": { + "version": "2.1.31", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.31.tgz", + "integrity": "sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==", + "dev": true, + "requires": { + "mime-db": "1.48.0" + } + }, "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", + "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", "dev": true, "requires": { - "@types/json-schema": "^7.0.8", + "@types/json-schema": "^7.0.7", "ajv": "^6.12.5", "ajv-keywords": "^3.5.2" } @@ -21423,9 +21854,9 @@ } }, "url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.1.tgz", + "integrity": "sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q==", "dev": true, "requires": { "querystringify": "^2.1.1", @@ -21485,6 +21916,72 @@ "es-abstract": "^1.17.2", "has-symbols": "^1.0.1", "object.getownpropertydescriptors": "^2.1.0" + }, + "dependencies": { + "es-abstract": { + "version": "1.18.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.3.tgz", + "integrity": "sha512-nQIr12dxV7SSxE6r6f1l3DtAeEYdsGpps13dR0TwJg1S8gyp4ZPgy3FZcHBgbiQqnoqSTb+oC+kO4UQ0C/J8vw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "is-callable": "^1.2.3", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.3", + "is-string": "^1.0.6", + "object-inspect": "^1.10.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.1" + } + }, + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true + }, + "is-callable": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "dev": true + }, + "is-regex": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz", + "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-symbols": "^1.0.2" + } + }, + "object-inspect": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + } } }, "utila": { @@ -21553,40 +22050,40 @@ "dev": true }, "vscode-json-languageservice": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/vscode-json-languageservice/-/vscode-json-languageservice-3.11.0.tgz", - "integrity": "sha512-QxI+qV97uD7HHOCjh3MrM1TfbdwmTXrMckri5Tus1/FQiG3baDZb2C9Y0y8QThs7PwHYBIQXcAc59ZveCRZKPA==", + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/vscode-json-languageservice/-/vscode-json-languageservice-3.4.7.tgz", + "integrity": "sha512-y3MN2+/yph3yoIHGmHu4ScYpm285L58XVvfGkd49xTQzLja4apxSbwzsYcP9QsqS0W7KuvoyiPhqksiudoMwjg==", "dev": true, "requires": { - "jsonc-parser": "^3.0.0", - "vscode-languageserver-textdocument": "^1.0.1", - "vscode-languageserver-types": "3.16.0-next.2", - "vscode-nls": "^5.0.0", - "vscode-uri": "^2.1.2" + "jsonc-parser": "^2.2.0", + "vscode-languageserver-textdocument": "^1.0.0-next.4", + "vscode-languageserver-types": "^3.15.0-next.6", + "vscode-nls": "^4.1.1", + "vscode-uri": "^2.1.0" } }, "vscode-languageserver-textdocument": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.4.tgz", - "integrity": "sha512-/xhqXP/2A2RSs+J8JNXpiiNVvvNM0oTosNVmQnunlKvq9o4mupHOBAnnzH0lwIPKazXKvAKsVp1kr+H/K4lgoQ==", + "version": "1.0.0-next.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.0-next.5.tgz", + "integrity": "sha512-1jp/zAidN/bF/sqPimhBX1orH5G4rzRw63k75TesukJDuxm8yW79ECStWbDSy41BHGOwSGN4M69QFvhancSr5A==", "dev": true }, "vscode-languageserver-types": { - "version": "3.16.0-next.2", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0-next.2.tgz", - "integrity": "sha512-QjXB7CKIfFzKbiCJC4OWC8xUncLsxo19FzGVp/ADFvvi87PlmBSCAtZI5xwGjF5qE0xkLf0jjKUn3DzmpDP52Q==", + "version": "3.15.0-next.8", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.15.0-next.8.tgz", + "integrity": "sha512-AEfWrSNyeamWMKPehh/kd3nBnKD9ZGCPhzfxMnW9YNqElSh28G2+Puk3knIQWyaWyV6Bzh28ok9BRJsPzXFCkQ==", "dev": true }, "vscode-nls": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/vscode-nls/-/vscode-nls-5.0.0.tgz", - "integrity": "sha512-u0Lw+IYlgbEJFF6/qAqG2d1jQmJl0eyAGJHoAJqr2HT4M2BNuQYSEiSE75f52pXHSJm8AlTjnLLbBFPrdz2hpA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/vscode-nls/-/vscode-nls-4.1.1.tgz", + "integrity": "sha512-4R+2UoUUU/LdnMnFjePxfLqNhBS8lrAFyX7pjb2ud/lqDkrUavFUTcG7wR0HBZFakae0Q6KLBFjMS6W93F403A==", "dev": true }, "vscode-uri": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-2.1.2.tgz", - "integrity": "sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-2.1.1.tgz", + "integrity": "sha512-eY9jmGoEnVf8VE8xr5znSah7Qt1P/xsCdErz+g8HYZtJ7bZqKH5E3d+6oVNm1AC/c6IHUDokbmVXKOi4qPAC9A==", "dev": true }, "w3c-hr-time": { @@ -21599,12 +22096,12 @@ } }, "walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", "dev": true, "requires": { - "makeerror": "1.0.12" + "makeerror": "1.0.x" } }, "warning": { @@ -21623,6 +22120,14 @@ "requires": { "exec-sh": "^0.2.0", "minimist": "^1.2.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } } }, "watchpack": { @@ -21961,9 +22466,9 @@ "optional": true }, "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", "dev": true, "optional": true, "requires": { @@ -21980,16 +22485,6 @@ "kind-of": "^3.0.2" } }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "optional": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, "micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -22082,9 +22577,9 @@ } }, "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", "dev": true }, "webpack": { @@ -22212,12 +22707,6 @@ "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", "dev": true }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -22469,6 +22958,12 @@ "minimist": "^1.2.0" } }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, "loader-utils": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", @@ -22520,6 +23015,21 @@ "to-regex": "^3.0.2" } }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, "pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", @@ -22535,15 +23045,6 @@ "find-up": "^3.0.0" } }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, "schema-utils": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", @@ -22571,9 +23072,9 @@ "dev": true }, "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -22626,15 +23127,15 @@ } }, "webpack-bundle-analyzer": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.5.0.tgz", - "integrity": "sha512-GUMZlM3SKwS8Z+CKeIFx7CVoHn3dXFcUAjT/dcZQQmfSZGvitPfMob2ipjai7ovFFqPvTqkEZ/leL4O0YOdAYQ==", + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.4.2.tgz", + "integrity": "sha512-PIagMYhlEzFfhMYOzs5gFT55DkUdkyrJi/SxJp8EF3YMWhS+T9vvs2EoTetpk5qb6VsCq02eXTlRDOydRhDFAQ==", "dev": true, "requires": { "acorn": "^8.0.4", "acorn-walk": "^8.0.0", "chalk": "^4.1.0", - "commander": "^7.2.0", + "commander": "^6.2.0", "gzip-size": "^6.0.0", "lodash": "^4.17.20", "opener": "^1.5.2", @@ -22643,15 +23144,15 @@ }, "dependencies": { "acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.4.1.tgz", + "integrity": "sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA==", "dev": true }, "acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.1.1.tgz", + "integrity": "sha512-FbJdceMlPHEAWJOILDk1fXD8lnTlEIWFkqtfk+MvmL5q/qlHfN7GEHcsFZWt/Tea9jRNPWUZG4G976nqAAmU9w==", "dev": true }, "ansi-styles": { @@ -22664,9 +23165,9 @@ } }, "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -22689,9 +23190,15 @@ "dev": true }, "commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, "lodash": { @@ -22699,6 +23206,15 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "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" + } } } }, @@ -22713,23 +23229,15 @@ "mkdirp": "^0.5.1", "range-parser": "^1.2.1", "webpack-log": "^2.0.0" - }, - "dependencies": { - "mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "dev": true - } } }, "webpack-dev-server": { - "version": "3.11.3", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.3.tgz", - "integrity": "sha512-3x31rjbEQWKMNzacUZRE6wXvUFuGpH7vr0lIEbYpMAG9BOxi0928QU1BBswOAP3kg3H1O4hiS+sq4YyAn6ANnA==", + "version": "3.11.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.2.tgz", + "integrity": "sha512-A80BkuHRQfCiNtGBS1EMf2ChTUs0x+B3wGDFmOeT4rmJOHhHTCH2naNxIHhmkr0/UillP4U3yeIyv1pNp+QDLQ==", "dev": true, "requires": { - "ansi-html-community": "0.0.8", + "ansi-html": "0.0.7", "bonjour": "^3.5.0", "chokidar": "^2.1.8", "compression": "^1.7.4", @@ -22845,9 +23353,9 @@ } }, "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "dev": true, "requires": { "ms": "2.1.2" @@ -23103,9 +23611,9 @@ "dev": true }, "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", "dev": true, "requires": { "is-extglob": "^2.1.1" @@ -23126,15 +23634,6 @@ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, "micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -23243,6 +23742,34 @@ "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==", + "dev": true, + "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==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } } } }, @@ -23335,19 +23862,27 @@ "dev": true }, "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-4.8.0.tgz", + "integrity": "sha1-0pgaqRSMHgCkHFphMRZqtGg7vMA=", "dev": true, "requires": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" + }, + "dependencies": { + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "dev": true + } } }, "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, "requires": { "isexe": "^2.0.0" @@ -23364,6 +23899,23 @@ "is-number-object": "^1.0.4", "is-string": "^1.0.5", "is-symbol": "^1.0.3" + }, + "dependencies": { + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + } } }, "which-module": { @@ -23381,9 +23933,9 @@ }, "dependencies": { "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true }, "emoji-regex": { @@ -23399,23 +23951,23 @@ "dev": true }, "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "strip-ansi": "^6.0.0" } }, "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "ansi-regex": "^5.0.1" + "ansi-regex": "^5.0.0" } } } @@ -23433,45 +23985,43 @@ "dev": true }, "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", "dev": true }, "workbox-background-sync": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.5.1.tgz", - "integrity": "sha512-T5a35fagLXQvV8Dr4+bDU+XYsP90jJ3eBLjZMKuCNELMQZNj+VekCODz1QK44jgoBeQk+vp94pkZV6G+e41pgg==", + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.1.5.tgz", + "integrity": "sha512-VbUmPLsdz+sLzuNxHvMylzyRTiM4q+q7rwLBk3p2mtRL5NZozI8j/KgoGbno96vs84jx4b9zCZMEOIKEUTPf6w==", "dev": true, "requires": { - "idb": "^6.1.4", - "workbox-core": "6.5.1" + "workbox-core": "^6.1.5" } }, "workbox-broadcast-update": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.5.1.tgz", - "integrity": "sha512-mb/oyblyEpDbw167cCTyHnC3RqCnCQHtFYuYZd+QTpuExxM60qZuBH1AuQCgvLtDcztBKdEYK2VFD9SZYgRbaQ==", + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.1.5.tgz", + "integrity": "sha512-zGrTTs+n4wHpYtqYMqBg6kl/x5j1UrczGCQnODSHTxIDV8GXLb/GtA1BCZdysNxpMmdVSeLmTcgIYAAqWFamrA==", "dev": true, "requires": { - "workbox-core": "6.5.1" + "workbox-core": "^6.1.5" } }, "workbox-build": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-6.5.1.tgz", - "integrity": "sha512-coDUDzHvFZ1ADOl3wKCsCSyOBvkPKlPgcQDb6LMMShN1zgF31Mev/1HzN3+9T2cjjWAgFwZKkuRyExqc1v21Zw==", + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-6.1.5.tgz", + "integrity": "sha512-P+fakR5QFVqJN9l9xHVXtmafga72gh9I+jM3A9HiB/6UNRmOAejXnDgD+RMegOHgQHPwnB44TalMToFaXKWIyA==", "dev": true, "requires": { - "@apideck/better-ajv-errors": "^0.3.1", "@babel/core": "^7.11.1", "@babel/preset-env": "^7.11.0", "@babel/runtime": "^7.11.2", + "@hapi/joi": "^16.1.8", "@rollup/plugin-babel": "^5.2.0", "@rollup/plugin-node-resolve": "^11.2.1", "@rollup/plugin-replace": "^2.4.1", - "@surma/rollup-plugin-off-main-thread": "^2.2.3", - "ajv": "^8.6.0", + "@surma/rollup-plugin-off-main-thread": "^1.4.1", "common-tags": "^1.8.0", "fast-json-stable-stringify": "^2.1.0", "fs-extra": "^9.0.1", @@ -23481,58 +24031,41 @@ "rollup": "^2.43.1", "rollup-plugin-terser": "^7.0.0", "source-map": "^0.8.0-beta.0", + "source-map-url": "^0.4.0", "stringify-object": "^3.3.0", "strip-comments": "^2.0.1", "tempy": "^0.6.0", "upath": "^1.2.0", - "workbox-background-sync": "6.5.1", - "workbox-broadcast-update": "6.5.1", - "workbox-cacheable-response": "6.5.1", - "workbox-core": "6.5.1", - "workbox-expiration": "6.5.1", - "workbox-google-analytics": "6.5.1", - "workbox-navigation-preload": "6.5.1", - "workbox-precaching": "6.5.1", - "workbox-range-requests": "6.5.1", - "workbox-recipes": "6.5.1", - "workbox-routing": "6.5.1", - "workbox-strategies": "6.5.1", - "workbox-streams": "6.5.1", - "workbox-sw": "6.5.1", - "workbox-window": "6.5.1" + "workbox-background-sync": "^6.1.5", + "workbox-broadcast-update": "^6.1.5", + "workbox-cacheable-response": "^6.1.5", + "workbox-core": "^6.1.5", + "workbox-expiration": "^6.1.5", + "workbox-google-analytics": "^6.1.5", + "workbox-navigation-preload": "^6.1.5", + "workbox-precaching": "^6.1.5", + "workbox-range-requests": "^6.1.5", + "workbox-recipes": "^6.1.5", + "workbox-routing": "^6.1.5", + "workbox-strategies": "^6.1.5", + "workbox-streams": "^6.1.5", + "workbox-sw": "^6.1.5", + "workbox-window": "^6.1.5" }, "dependencies": { "@babel/runtime": { - "version": "7.17.8", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.8.tgz", - "integrity": "sha512-dQpEpK0O9o6lj6oPu0gRDbbnk+4LeHlNcBpspf6Olzt3GIX4P1lWF1gS+pHLDFlaJvbR6q7jCfQ08zA4QJBnmA==", + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.6.tgz", + "integrity": "sha512-/PCB2uJ7oM44tz8YhC4Z/6PeOKXp4K588f+5M3clr1M4zbqztlo0XEfJ2LEzj/FgwfgGcIdl8n7YYjTCI0BYwg==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" } }, - "ajv": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz", - "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "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==", + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, "lodash": { @@ -23541,6 +24074,18 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, + "pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "dev": true + }, + "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==", + "dev": true + }, "source-map": { "version": "0.8.0-beta.0", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", @@ -23559,12 +24104,6 @@ "punycode": "^2.1.0" } }, - "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true - }, "whatwg-url": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", @@ -23579,140 +24118,153 @@ } }, "workbox-cacheable-response": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.5.1.tgz", - "integrity": "sha512-3TdtH/luDiytmM+Cn72HCBLZXmbeRNJqZx2yaVOfUZhj0IVwZqQXhNarlGE9/k6U5Jelb+TtpH2mLVhnzfiSMg==", + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.1.5.tgz", + "integrity": "sha512-x8DC71lO/JCgiaJ194l9le8wc8lFPLgUpDkLhp2si7mXV6S/wZO+8Osvw1LLgYa8YYTWGbhbFhFTXIkEMknIIA==", "dev": true, "requires": { - "workbox-core": "6.5.1" + "workbox-core": "^6.1.5" } }, "workbox-core": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-6.5.1.tgz", - "integrity": "sha512-qObXZ39aFJ2N8X7IUbGrJHKWguliCuU1jOXM/I4MTT84u9BiKD2rHMkIzgeRP1Ixu9+cXU4/XHJq3Cy0Qqc5hw==", + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-6.1.5.tgz", + "integrity": "sha512-9SOEle7YcJzg3njC0xMSmrPIiFjfsFm9WjwGd5enXmI8Lwk8wLdy63B0nzu5LXoibEmS9k+aWF8EzaKtOWjNSA==", "dev": true }, "workbox-expiration": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.5.1.tgz", - "integrity": "sha512-iY/cTADAQATMmPkUBRmQdacqq0TJd2wMHimBQz+tRnPGHSMH+/BoLPABPnu7O7rT/g/s59CUYYRGxe3mEgoJCA==", + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.1.5.tgz", + "integrity": "sha512-6cN+FVbh8fNq56LFKPMchGNKCJeyboHsDuGBqmhDUPvD4uDjsegQpDQzn52VaE0cpywbSIsDF/BSq9E9Yjh5oQ==", "dev": true, "requires": { - "idb": "^6.1.4", - "workbox-core": "6.5.1" + "workbox-core": "^6.1.5" } }, "workbox-google-analytics": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.5.1.tgz", - "integrity": "sha512-qZU46/h4dbionYT6Yk6iBkUwpiEzAfnO1W7KkI+AMmY7G9/gA03dQQ7rpTw8F4vWrG7ahTUGWDFv6fERtaw1BQ==", + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.1.5.tgz", + "integrity": "sha512-LYsJ/VxTkYVLxM1uJKXZLz4cJdemidY7kPyAYtKVZ6EiDG89noASqis75/5lhqM1m3HwQfp2DtoPrelKSpSDBA==", "dev": true, "requires": { - "workbox-background-sync": "6.5.1", - "workbox-core": "6.5.1", - "workbox-routing": "6.5.1", - "workbox-strategies": "6.5.1" + "workbox-background-sync": "^6.1.5", + "workbox-core": "^6.1.5", + "workbox-routing": "^6.1.5", + "workbox-strategies": "^6.1.5" } }, "workbox-navigation-preload": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.5.1.tgz", - "integrity": "sha512-aKrgAbn2IMgzTowTi/ZyKdQUcES2m++9aGtpxqsX7Gn9ovCY8zcssaMEAMMwrIeveij5HiWNBrmj6MWDHi+0rg==", + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.1.5.tgz", + "integrity": "sha512-hDbNcWlffv0uvS21jCAC/mYk7NzaGRSWOQXv1p7bj2aONAX5l699D2ZK4D27G8TO0BaLHUmW/1A5CZcsvweQdg==", "dev": true, "requires": { - "workbox-core": "6.5.1" + "workbox-core": "^6.1.5" } }, "workbox-precaching": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.5.1.tgz", - "integrity": "sha512-EzlPBxvmjGfE56YZzsT/vpVkpLG1XJhoplgXa5RPyVWLUL1LbwEAxhkrENElSS/R9tgiTw80IFwysidfUqLihg==", + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.1.5.tgz", + "integrity": "sha512-yhm1kb6wgi141JeM5X7z42XJxCry53tbMLB3NgrxktrZbwbrJF8JILzYy+RFKC9tHC6u2bPmL789GPLT2NCDzw==", "dev": true, "requires": { - "workbox-core": "6.5.1", - "workbox-routing": "6.5.1", - "workbox-strategies": "6.5.1" + "workbox-core": "^6.1.5", + "workbox-routing": "^6.1.5", + "workbox-strategies": "^6.1.5" } }, "workbox-range-requests": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.5.1.tgz", - "integrity": "sha512-57Da/qRbd9v33YlHX0rlSUVFmE4THCjKqwkmfhY3tNLnSKN2L5YBS3qhWeDO0IrMNgUj+rGve2moKYXeUqQt4A==", + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.1.5.tgz", + "integrity": "sha512-iACChSapzB0yuIum3ascP/+cfBNuZi5DRrE+u4u5mCHigPlwfSWtlaY+y8p+a8EwcDTVTZVtnrGrRnF31SiLqQ==", "dev": true, "requires": { - "workbox-core": "6.5.1" + "workbox-core": "^6.1.5" } }, "workbox-recipes": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.5.1.tgz", - "integrity": "sha512-DGsyKygHggcGPQpWafC/Nmbm1Ny3sB2vE9r//3UbeidXiQ+pLF14KEG1/0NNGRaY+lfOXOagq6d1H7SC8KA+rA==", + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.1.5.tgz", + "integrity": "sha512-MD1yabHca6O/oj1hrRdfj9cRwhKA5zqIE53rWOAg/dKMMzWQsf9nyRbXRgzK3a13iQvYKuQzURU4Cx58tdnR+Q==", "dev": true, "requires": { - "workbox-cacheable-response": "6.5.1", - "workbox-core": "6.5.1", - "workbox-expiration": "6.5.1", - "workbox-precaching": "6.5.1", - "workbox-routing": "6.5.1", - "workbox-strategies": "6.5.1" + "workbox-cacheable-response": "^6.1.5", + "workbox-core": "^6.1.5", + "workbox-expiration": "^6.1.5", + "workbox-precaching": "^6.1.5", + "workbox-routing": "^6.1.5", + "workbox-strategies": "^6.1.5" } }, "workbox-routing": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.5.1.tgz", - "integrity": "sha512-yAAncdTwanvlR8KPjubyvFKeAok8ZcIws6UKxvIAg0I+wsf7UYi93DXNuZr6RBSQrByrN6HkCyjuhmk8P63+PA==", + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.1.5.tgz", + "integrity": "sha512-uC/Ctz+4GXGL42h1WxUNKxqKRik/38uS0NZ6VY/EHqL2F1ObLFqMHUZ4ZYvyQsKdyI82cxusvhJZHOrY0a2fIQ==", "dev": true, "requires": { - "workbox-core": "6.5.1" + "workbox-core": "^6.1.5" } }, "workbox-strategies": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.5.1.tgz", - "integrity": "sha512-JNaTXPy8wXzKkr+6za7/eJX9opoZk7UgY261I2kPxl80XQD8lMjz0vo9EOcBwvD72v3ZhGJbW84ZaDwFEhFvWA==", + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.1.5.tgz", + "integrity": "sha512-QhiOn9KT9YGBdbfWOmJT6pXZOIAxaVrs6J6AMYzRpkUegBTEcv36+ZhE/cfHoT0u2fxVtthHnskOQ/snEzaXQw==", "dev": true, "requires": { - "workbox-core": "6.5.1" + "workbox-core": "^6.1.5" } }, "workbox-streams": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.5.1.tgz", - "integrity": "sha512-7jaTWm6HRGJ/ewECnhb+UgjTT50R42E0/uNCC4eTKQwnLO/NzNGjoXTdQgFjo4zteR+L/K6AtFAiYKH3ZJbAYw==", + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.1.5.tgz", + "integrity": "sha512-OI1kLvRHGFXV+soDvs6aEwfBwdAkvPB0mRryqdh3/K17qUj/1gRXc8QtpgU+83xqx/I/ar2bTCIj0KPzI/ChCQ==", "dev": true, "requires": { - "workbox-core": "6.5.1", - "workbox-routing": "6.5.1" + "workbox-core": "^6.1.5", + "workbox-routing": "^6.1.5" } }, "workbox-sw": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.5.1.tgz", - "integrity": "sha512-hVrQa19yo9wzN1fQQ/h2JlkzFpkuH2qzYT2/rk7CLaWt6tLnTJVFCNHlGRRPhytZSf++LoIy7zThT714sowT/Q==", + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.1.5.tgz", + "integrity": "sha512-IMDiqxYbKzPorZLGMUMacLB6r76iVQbdTzYthIZoPfy+uFURJFUtqiWQJKg1L+RMyuYXwKXTahCIGkgFs4jBeg==", "dev": true }, "workbox-webpack-plugin": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-6.5.1.tgz", - "integrity": "sha512-SHtlQBpKruI16CAYhICDMkgjXE2fH5Yp+D+1UmBfRVhByZYzusVOykvnPm8ObJb9d/tXgn9yoppoxafFS7D4vQ==", + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-6.1.5.tgz", + "integrity": "sha512-tsgeNAYiFP4STNPDxBVT58eiU8nGUmcv7Lq9FFJkQf5MMu6tPw1OLp+KpszhbCWP+R/nEdu85Gjexs6fY647Kg==", "dev": true, "requires": { "fast-json-stable-stringify": "^2.1.0", "pretty-bytes": "^5.4.1", + "source-map-url": "^0.4.0", "upath": "^1.2.0", "webpack-sources": "^1.4.3", - "workbox-build": "6.5.1" + "workbox-build": "^6.1.5" + }, + "dependencies": { + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "dev": true + } } }, "workbox-window": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-6.5.1.tgz", - "integrity": "sha512-oRlun9u7b7YEjo2fIDBqJkU2hXtrEljXcOytRhfeQRbqXxjUOpFgXSGRSAkmDx1MlKUNOSbr+zfi8h5n7In3yA==", + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-6.1.5.tgz", + "integrity": "sha512-akL0X6mAegai2yypnq78RgfazeqvKbsllRtEI4dnbhPcRINEY1NmecFmsQk8SD+zWLK1gw5OdwAOX+zHSRVmeA==", "dev": true, "requires": { - "@types/trusted-types": "^2.0.2", - "workbox-core": "6.5.1" + "workbox-core": "^6.1.5" } }, "worker-farm": { @@ -23814,15 +24366,10 @@ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", "dev": true }, - "yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" - }, "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", + "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", "requires": { "cliui": "^5.0.0", "find-up": "^3.0.0", @@ -23833,13 +24380,13 @@ "string-width": "^3.0.0", "which-module": "^2.0.0", "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" + "yargs-parser": "^13.1.1" } }, "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", + "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" diff --git a/front/package.json b/front/package.json old mode 100644 new mode 100755 index 934e064ee4..70a4c71ca9 --- a/front/package.json +++ b/front/package.json @@ -65,7 +65,6 @@ "preact-i18n": "^2.4.0-preactx", "preact-router": "^3.2.1", "qrcode": "^1.4.2", - "query-string": "^7.0.1", "react-big-calendar": "^0.22.1", "react-datepicker": "^3.8.0", "react-select": "^4.3.1", From cd692054c2fb9d0023e60be5a9b1c8aaaa946792 Mon Sep 17 00:00:00 2001 From: Euguuu Date: Sat, 26 Mar 2022 22:56:30 +0100 Subject: [PATCH 035/164] fix for review --- .../device-features/SensorDeviceFeature.jsx | 69 ---------------- front/src/components/oauth2/OAuth2Config.jsx | 10 +-- front/src/components/oauth2/actions.js | 80 ++++++++++--------- front/src/config/i18n/en.json | 25 +++--- front/src/config/i18n/fr.json | 25 +++--- server/lib/device/device.create.js | 1 - .../lib/device/device.saveHistoricalState.js | 2 +- .../withings/api/withings.controller.js | 25 +++--- .../withings/lib/withings.deleteVar.js | 3 +- server/services/withings/lib/withings.init.js | 1 - .../withings/api/withings.controller.test.js | 4 +- server/utils/constants.js | 2 +- 12 files changed, 90 insertions(+), 157 deletions(-) delete mode 100644 front/src/components/boxs/device-in-room/device-features/SensorDeviceFeature.jsx diff --git a/front/src/components/boxs/device-in-room/device-features/SensorDeviceFeature.jsx b/front/src/components/boxs/device-in-room/device-features/SensorDeviceFeature.jsx deleted file mode 100644 index 37aba5c0dc..0000000000 --- a/front/src/components/boxs/device-in-room/device-features/SensorDeviceFeature.jsx +++ /dev/null @@ -1,69 +0,0 @@ -import { Text } from 'preact-i18n'; -import get from 'get-value'; - -import RelativeTime from '../../../device/RelativeTime'; - -import { DEVICE_FEATURE_CATEGORIES, DEVICE_FEATURE_TYPES } from '../../../../../../server/utils/constants'; - -const SPECIAL_SENSORS = [ - DEVICE_FEATURE_CATEGORIES.OPENING_SENSOR, - DEVICE_FEATURE_CATEGORIES.MOTION_SENSOR, - DEVICE_FEATURE_CATEGORIES.PRESENCE_SENSOR -]; -const LAST_SEEN_SENSORS = [DEVICE_FEATURE_CATEGORIES.MOTION_SENSOR, DEVICE_FEATURE_CATEGORIES.PRESENCE_SENSOR]; - -import { DeviceFeatureCategoriesIcon } from '../../../../utils/consts'; -import BinaryDeviceValue from './sensor-value/BinaryDeviceValue'; - -const SensorDeviceType = ({ children, ...props }) => ( - - - - - - {props.deviceFeature.name} - - {SPECIAL_SENSORS.indexOf(props.deviceFeature.category) === -1 && ( - - {DEVICE_FEATURE_TYPES.SENSOR.BINARY === props.deviceFeature.type && ( - - )} - {DEVICE_FEATURE_TYPES.SENSOR.BINARY !== props.deviceFeature.type && ( -
- {props.deviceFeature.last_value !== null && props.deviceFeature.last_value} - {props.deviceFeature.last_value === null && } - {props.deviceFeature.last_value !== null && ( - - {' '} - - - )} -
- )} - - )} - {props.deviceFeature.category === DEVICE_FEATURE_CATEGORIES.OPENING_SENSOR && ( - - {props.deviceFeature.last_value === 1 && } - {props.deviceFeature.last_value === 0 && } - - )} - {LAST_SEEN_SENSORS.includes(props.deviceFeature.category) && ( - -
- {!props.deviceFeature.last_value_changed && } - {props.deviceFeature.last_value_changed && ( - - )} -
- - )} - -); - -export default SensorDeviceType; diff --git a/front/src/components/oauth2/OAuth2Config.jsx b/front/src/components/oauth2/OAuth2Config.jsx index 43127f7047..dd9d9da074 100755 --- a/front/src/components/oauth2/OAuth2Config.jsx +++ b/front/src/components/oauth2/OAuth2Config.jsx @@ -12,7 +12,7 @@ const OAuth2Config = ({ integrationImg, integrationName, children, ...props }) =

- +

@@ -30,7 +30,7 @@ const OAuth2Config = ({ integrationImg, integrationName, children, ...props }) =
)}

- +

@@ -77,16 +77,16 @@ const OAuth2Config = ({ integrationImg, integrationName, children, ...props }) =

- +

- + {props.clientIdInDb}

- +

diff --git a/front/src/components/oauth2/actions.js b/front/src/components/oauth2/actions.js index 87515eb386..7a9096a6f5 100755 --- a/front/src/components/oauth2/actions.js +++ b/front/src/components/oauth2/actions.js @@ -21,53 +21,46 @@ const actions = store => ({ store.setState({ oauth2GetStatus: RequestStatus.Getting }); + try{ + const returnServiceId = (await state.httpClient.get(`/api/v1/service/${state.integrationName}`)).id; - const returnServiceId = (await state.httpClient.get(`/api/v1/service/${state.integrationName}`)).id; - - const returnGetConfig = await state.httpClient.get('/api/v1/service/oauth2/client', { - service_id: returnServiceId - }); - if (returnGetConfig) { - store.setState({ - clientIdInDb: returnGetConfig.client_id, - oauth2ErrorMsg: null, - oauth2GetStatus: RequestStatus.Success + const returnGetConfig = await state.httpClient.get('/api/v1/service/oauth2/client', { + service_id: returnServiceId }); - } else { + + if (returnGetConfig) { + store.setState({ + clientIdInDb: returnGetConfig.client_id, + oauth2ErrorMsg: null, + oauth2GetStatus: RequestStatus.Success + }); + } else { + store.setState({ + oauth2ErrorMsg: null, + oauth2GetStatus: RequestStatus.Success + }); + } + } catch (e) { store.setState({ - oauth2ErrorMsg: null, - oauth2GetStatus: RequestStatus.Success + oauth2GetStatus: RequestStatus.Error }); } }, async startConnect(state) { - store.setState({ - oauth2GetStatus: RequestStatus.Getting - }); + if (!state.secret || !state.clientId) { + store.setState({ + oauth2GetStatus: RequestStatus.Error, + oauth2ErrorMsg: 'errorEmptyConfig' + }); + return; + } try { - if (!state.secret || !state.clientId) { - store.setState({ - oauth2GetStatus: RequestStatus.Error, - oauth2ErrorMsg: 'errorEmptyConfig' - }); - return; - } + store.setState({ + oauth2GetStatus: RequestStatus.Getting + }); const serviceId = (await state.httpClient.get(`/api/v1/service/${state.integrationName}`)).id; - // Save Oauth2 variables - await state.httpClient.post(`/api/v1/service/${state.integrationName}/variable/${OAUTH2.VARIABLE.CLIENT_ID}`, { - value: state.clientId, - userRelated: true - }); - - await state.httpClient.post( - `/api/v1/service/${state.integrationName}/variable/${OAUTH2.VARIABLE.CLIENT_SECRET}`, - { - value: state.secret, - userRelated: true - } - ); const returnValue = await state.httpClient.post('/api/v1/service/oauth2/client/authorization-uri', { integration_name: state.integrationName, @@ -75,6 +68,19 @@ const actions = store => ({ }); if (returnValue.authorizationUri) { + // Save Oauth2 variables + await state.httpClient.post(`/api/v1/service/${state.integrationName}/variable/${OAUTH2.VARIABLE.CLIENT_ID}`, { + value: state.clientId, + userRelated: true + }); + + await state.httpClient.post( + `/api/v1/service/${state.integrationName}/variable/${OAUTH2.VARIABLE.CLIENT_SECRET}`, + { + value: state.secret, + userRelated: true + } + ); window.location = returnValue.authorizationUri; } else { store.setState({ @@ -96,7 +102,7 @@ const actions = store => ({ oauth2GetStatus: RequestStatus.Getting }); - await state.httpClient.get(`/api/v1/service/${state.integrationName}/deleteConfig`); + await state.httpClient.get(`/api/v1/service/${state.integrationName}/reset`); store.setState({ clientIdInDb: null, diff --git a/front/src/config/i18n/en.json b/front/src/config/i18n/en.json index 563fc067f3..c59c951e48 100644 --- a/front/src/config/i18n/en.json +++ b/front/src/config/i18n/en.json @@ -865,30 +865,29 @@ }, "oauth2": { "buttonConnect": "Connect now", - "apiKeyLabel": "Then, enter your client id and client secret key here:", + "apiKeyLabel": "Then, enter your client id and client secret keys here:", "errorEmptyConfig": "Client id and client secret must not be empty!", - "errorServiceId": "Service Id of current integration must not be found!", "errorAuthorizationUri": "Error in authorization provider connection configuration!", "clientId": "Account client id", "secret": "Account client secret", "instructions": "In this stage please fill in the given client id and client secret key below and click on connect button.", - "delete": "To delete your account configuration clic on 'Unconnect' button (all data will be deleted).", - "unconnectButton": "Unconnect" + "delete": "To delete your account configuration clic on 'unlink' button (all data will be deleted).", + "unconnectButton": "Unlink" }, "withings": { "settings": { - "title": "Withings Settings", + "outh2": { + "title": "Withings Settings", + "introduction": "To connect Withings account to Gladys, you first need to create a Withings user account in this link.

To connect Withings measures to Gladys, you need to create a Withings partner account in this link
(in callback url field put http://gladys.local/dashboard/integration/health/withings/settings, in environmnet field choose Dev, you can use Prod with gladys plus url and https protocol, refer to Documentation link for more details).
", + "instructionsToUse": "To use this integration, go to the dashboard and create a device box or chart.", + "clientId": "Client Id:", + "complete": "Your account is now linked to Gladys with those parameters:" + }, "menu": "Discover", - "introduction": "To connect Withings account to Gladys, you first need to create a Withings user account in this link.

To connect Withings measures to Gladys, you need to create a Withings partner account in this link
(in callback url field put http://gladys.local/dashboard/integration/health/withings/settings, in environmnet field choose Dev, you can use Prod with gladys plus url and https protocol, reefer to Documentation link for more details).
", - "instructionsToUse": "To use this integration, go to the dashboard and create a device box or chart.", - "configurationError": "We were not able to configure your account. Are you sure your client_id and secret_id are valid?", - "complete": "Your account is now linked to Gladys with those parameters:", - "clientId": "Client Id:", "chooseDevice": "Choose withings devices to connect in the list below:" }, "device": { "title": "Withings Devices", - "empty": "No Withings devices available, go to the 'Settings' page to connect your account and create the devices.", "menu": "Devices", "noDevices": "No Withings devices available, go to the 'Settings' page to connect your account and create the devices.", "nameLabel": "Name", @@ -1618,7 +1617,7 @@ "mm": "Millimeter (mm)", "mmHg": "Millimeters of mercury (mmHg)", "bpm": "Beats per minute (bpm)", - "m/s": "Meters per second (m/s)" + "meter-per-second": "Meters per second (m/s)" }, "deviceFeatureUnitShort": { "celsius": "°C", @@ -1639,7 +1638,7 @@ "kg": "kg", "mmHg": "mmHg", "bpm": "bpm", - "m/s": "m/s" + "meter-per-second": "m/s" }, "deviceFeatureValue": { "type": { diff --git a/front/src/config/i18n/fr.json b/front/src/config/i18n/fr.json index f7c8480f1b..b8b4061470 100644 --- a/front/src/config/i18n/fr.json +++ b/front/src/config/i18n/fr.json @@ -865,9 +865,8 @@ }, "oauth2": { "buttonConnect": "Connecter maintenant", - "apiKeyLabel": "Saisissez ensuite votre clé client id et client secret ici :", + "apiKeyLabel": "Saisissez ensuite vos clés client id et client secret ici :", "errorEmptyConfig": "Client id et client secret ne doivent pas être vide !", - "errorServiceId": "Service Id de l'intégration courante n'a pas été trouvé !", "errorAuthorizationUri": "Erreur dans la configuration du provider pour l'autorisation de connexion !", "clientId": "Client id du compte", "secret": "Client secret du compte", @@ -877,18 +876,18 @@ }, "withings": { "settings": { - "title": "Withings Configuration", + "oauth2": { + "title": "Withings Configuration", + "introduction": "Pour connecter le compte Withings à Gladys, vous devez d'abord créer un compte d'utilisateur Withings à ce lien.

Pour relier les mesures Withings à Gladys, vous devez créer un compte partenaire Withings à ce lien
(dans le champ url de callback mettre http://gladys.local/dashboard/integration/health/withings/settings, dans le champs environnement choisir Dev, vous pouvez utiliser Prod avec gladys plus url et le protocole https, voir le lien Documentation pour plus de détails).
", + "instructionsToUse": "Pour utiliser cette intégration, rendez-vous sur le tableau de bord et créez une box d'appareil ou de graphique.", + "complete": "Votre compte est maintenant lié à Gladys avec ces paramètres :", + "clientId": "Client Id :" + }, "menu": "Découverte", - "introduction": "Pour connecter le compte Withings à Gladys, vous devez d'abord créer un compte d'utilisateur Withings à ce lien.

Pour relier les mesures Withings à Gladys, vous devez créer un compte partenaire Withings à ce lien
(dans le champ url de callback mettre http://gladys.local/dashboard/integration/health/withings/settings, dans le champs environnement choisir Dev, vous pouvez utiliser Prod avec gladys plus url et le protocole https, voir le lien Documentation pour plus de détails).
", - "instructionsToUse": "Pour utiliser cette intégration, rendez-vous sur le tableau de bord et créez une box d'appareil ou de graphique.", - "configurationError": "Nous n'avons pas pu configurer votre compte. Êtes-vous sûr que votre client_id et votre secret_id sont corrects ?", - "complete": "Votre compte est maintenant lié à Gladys avec ces paramètres:", - "clientId": "Client Id:", - "chooseDevice": "Choisissez les appareils withings à connecter dans la liste plus bas:" + "chooseDevice": "Choisissez les appareils withings à connecter dans la liste plus bas :" }, "device": { - "title": "Appareils Withings", - "empty": "Aucun appareils Withings disponibles, allez sur la page 'Configuration' pour connecter votre compte et créer les appareils.", + "title": "Appareils Withings", "menu": "Appareils", "noDevices": "Aucun appareils Withings disponibles, allez sur la page 'Configuration' pour connecter votre compte et créer les appareils.", "nameLabel": "Nom", @@ -1618,7 +1617,7 @@ "mm": "Millimètre (mm)", "mmHg": "Millimètres de mercure (mmHg)", "bpm": "Battements par minute (bpm)", - "m/s": "Mètres par seconde (m/s)" + "meter-per-second": "Mètres par seconde (m/s)" }, "deviceFeatureUnitShort": { "celsius": "°C", @@ -1639,7 +1638,7 @@ "kg": "kg", "mmHg": "mmHg", "bpm": "bpm", - "m/s": "m/s" + "meter-per-second": "m/s" }, "deviceFeatureValue": { "type": { diff --git a/server/lib/device/device.create.js b/server/lib/device/device.create.js index f32572a899..19f1c839be 100644 --- a/server/lib/device/device.create.js +++ b/server/lib/device/device.create.js @@ -121,7 +121,6 @@ async function create(device) { // if not, we create it feature.device_id = deviceToReturn.id; const featureCreated = await db.DeviceFeature.create(feature, { transaction }); - return featureCreated.get({ plain: true }); }); deviceToReturn.features = newFeatures; diff --git a/server/lib/device/device.saveHistoricalState.js b/server/lib/device/device.saveHistoricalState.js index 647a5d3adf..66c4f9f0e1 100644 --- a/server/lib/device/device.saveHistoricalState.js +++ b/server/lib/device/device.saveHistoricalState.js @@ -3,7 +3,7 @@ const logger = require('../../utils/logger'); const { BadParameters } = require('../../utils/coreErrors'); /** - * @description Save hstorical device feature state in DB. + * @description Save historical device feature state in DB. * @param {Object} deviceFeature - A DeviceFeature object. * @param {Object} historicalState - The historical feature state value (numeric) of the deviceFeature to save. * @param {Object} createdAt - Date of state. diff --git a/server/services/withings/api/withings.controller.js b/server/services/withings/api/withings.controller.js index 1920a2c578..83e2e78759 100755 --- a/server/services/withings/api/withings.controller.js +++ b/server/services/withings/api/withings.controller.js @@ -15,12 +15,13 @@ module.exports = function WithingsController(gladys, withingsHandler) { } /** - * @description Poll withings devices (used to initialize feature state on gladys device creation). - * @api {get} /api/v1/service/withings/poll/:device_selector Poll withings devices. - * @apiName poll + * @description Post create action to poll withings devices + * (used to initialize feature state on gladys device creation). + * @api {get} /api/v1/service/withings/post_create/:device_selector Poll withings devices. + * @apiName post_create * @apiGroup Withings */ - async function poll(req, res) { + async function postCreate(req, res) { if (req.params.device_selector) { const deviceToPoll = await gladys.device.getBySelector(req.params.device_selector); await withingsHandler.poll(deviceToPoll); @@ -28,12 +29,12 @@ module.exports = function WithingsController(gladys, withingsHandler) { } /** - * @description Delete clientId and secret of withings oauth2 api. - * @api {get} /api/v1/service/withings/deleteConfig Delete clientId and secret of withings oauth2 api. - * @apiName deleteConfig + * @description Delete client id, secret client of withings oauth2 api and al withings devices. + * @api {get} /api/v1/service/withings/reset Delete clientId and secret of withings oauth2 api. + * @apiName reset * @apiGroup Withings */ - async function deleteConfig(req, res) { + async function reset(req, res) { await withingsHandler.deleteVar(req.user.id); await withingsHandler.deleteDevices(); res.json({ @@ -46,13 +47,13 @@ module.exports = function WithingsController(gladys, withingsHandler) { authenticated: true, controller: asyncMiddleware(init), }, - 'get /api/v1/service/withings/deleteConfig': { + 'get /api/v1/service/withings/reset': { authenticated: true, - controller: asyncMiddleware(deleteConfig), + controller: asyncMiddleware(reset), }, - 'get /api/v1/service/withings/poll/:device_selector': { + 'get /api/v1/service/withings/post_create/:device_selector': { authenticated: true, - controller: asyncMiddleware(poll), + controller: asyncMiddleware(postCreate), }, }; }; diff --git a/server/services/withings/lib/withings.deleteVar.js b/server/services/withings/lib/withings.deleteVar.js index 04436d25eb..7aa32abdab 100755 --- a/server/services/withings/lib/withings.deleteVar.js +++ b/server/services/withings/lib/withings.deleteVar.js @@ -10,8 +10,7 @@ * ); */ async function deleteVar(userId) { - const oauth2Result = await this.gladys.oauth2Client.deleteClient(this.serviceId, userId); - return oauth2Result; + return this.gladys.oauth2Client.deleteClient(this.serviceId, userId); } module.exports = { diff --git a/server/services/withings/lib/withings.init.js b/server/services/withings/lib/withings.init.js index ae50e9e87d..1a8ed74a83 100755 --- a/server/services/withings/lib/withings.init.js +++ b/server/services/withings/lib/withings.init.js @@ -287,7 +287,6 @@ async function init(userId) { const currentFeatures = mapOfFeatureByWithingsDeviceId.get(key); const features = buildFeature(currentGroup, mapOfDeviceByWithingsDeviceId.get(key), currentFeatures); if (features) { - mapOfFeatureByWithingsDeviceId.delete(key); mapOfFeatureByWithingsDeviceId.set(key, features); } } diff --git a/server/test/services/withings/api/withings.controller.test.js b/server/test/services/withings/api/withings.controller.test.js index 999083bff6..7c8f3070a6 100644 --- a/server/test/services/withings/api/withings.controller.test.js +++ b/server/test/services/withings/api/withings.controller.test.js @@ -39,14 +39,14 @@ describe('WithingsController GET /api/v1/service/withings/poll', () => { }); }); -describe('WithingsController GET /api/v1/service/withings/deleteConfig', () => { +describe('WithingsController GET /api/v1/service/withings/reset', () => { const controller = WithingsController(gladys, withingsHandler); it('should delete config', async () => { const req = { user: { id: 'fsdfdd452f4181fsdf2sdfhgyrjfdsfsd' } }; const res = { json: fake.returns(null) }; - await controller['get /api/v1/service/withings/deleteConfig'].controller(req, res); + await controller['get /api/v1/service/withings/reset'].controller(req, res); assert.calledOnce(withingsHandler.deleteVar); assert.calledOnce(withingsHandler.deleteDevices); }); diff --git a/server/utils/constants.js b/server/utils/constants.js index c3e8891661..c768f62ec3 100644 --- a/server/utils/constants.js +++ b/server/utils/constants.js @@ -457,7 +457,7 @@ const DEVICE_FEATURE_UNITS = { CENTIMETER: 'cm', MERCURE_MILIMETER: 'mmHg', BEATS_PER_MINUTE: 'bpm', - METER_PER_SECOND: 'm/s', + METER_PER_SECOND: 'meter-per-second', MM: 'mm', CM: 'cm', }; From f9e5343ab94a69bbf761d0e836a734508df60416 Mon Sep 17 00:00:00 2001 From: Euguuu Date: Sun, 27 Mar 2022 21:04:18 +0200 Subject: [PATCH 036/164] fix for review --- front/src/components/oauth2/actions.js | 31 ++++++++++--------- front/src/config/i18n/en.json | 1 - front/src/config/i18n/fr.json | 3 +- .../all/withings/device-page/Device.jsx | 20 +++++------- .../all/withings/device-page/actions.js | 2 +- .../all/withings/settings-page/index.js | 2 +- .../lib/device/device.destroyByServiceId.js | 10 ------ server/lib/index.js | 4 +-- server/lib/{oauth2 => oauth2-client}/index.js | 0 .../oauth2.buildAuthorizationUri.js | 0 .../oauth2.deleteClient.js | 0 .../oauth2.executeOauth2HTTPQuery.js | 0 .../oauth2.getAccessToken.js | 0 .../withings/api/withings.controller.js | 2 +- .../withings/lib/withings.deleteVar.js | 2 +- .../device/device.destroyByServiceId.test.js | 6 ++++ .../test/lib/device/device.setParam.test.js | 14 ++++----- .../oauth2manager.test.js | 2 +- .../withings/api/withings.controller.test.js | 4 +-- server/test/services/withings/index.test.js | 21 ++++++++----- .../withings/lib/withings.init.test.js | 2 +- .../withings/lib/withings.poll.test.js | 2 +- 22 files changed, 62 insertions(+), 66 deletions(-) rename server/lib/{oauth2 => oauth2-client}/index.js (100%) rename server/lib/{oauth2 => oauth2-client}/oauth2.buildAuthorizationUri.js (100%) rename server/lib/{oauth2 => oauth2-client}/oauth2.deleteClient.js (100%) rename server/lib/{oauth2 => oauth2-client}/oauth2.executeOauth2HTTPQuery.js (100%) rename server/lib/{oauth2 => oauth2-client}/oauth2.getAccessToken.js (100%) rename server/test/lib/{oauth2 => oauth2-client}/oauth2manager.test.js (98%) diff --git a/front/src/components/oauth2/actions.js b/front/src/components/oauth2/actions.js index 7a9096a6f5..a2de7755c0 100755 --- a/front/src/components/oauth2/actions.js +++ b/front/src/components/oauth2/actions.js @@ -21,13 +21,13 @@ const actions = store => ({ store.setState({ oauth2GetStatus: RequestStatus.Getting }); - try{ + try { const returnServiceId = (await state.httpClient.get(`/api/v1/service/${state.integrationName}`)).id; const returnGetConfig = await state.httpClient.get('/api/v1/service/oauth2/client', { service_id: returnServiceId }); - + if (returnGetConfig) { store.setState({ clientIdInDb: returnGetConfig.client_id, @@ -61,26 +61,27 @@ const actions = store => ({ const serviceId = (await state.httpClient.get(`/api/v1/service/${state.integrationName}`)).id; + // Save Oauth2 variables + await state.httpClient.post(`/api/v1/service/${state.integrationName}/variable/${OAUTH2.VARIABLE.CLIENT_ID}`, { + value: state.clientId, + userRelated: true + }); + + await state.httpClient.post( + `/api/v1/service/${state.integrationName}/variable/${OAUTH2.VARIABLE.CLIENT_SECRET}`, + { + value: state.secret, + userRelated: true + } + ); + // TODO : passer le client / secret en param et auver les param que apres ou dans ? const returnValue = await state.httpClient.post('/api/v1/service/oauth2/client/authorization-uri', { integration_name: state.integrationName, service_id: serviceId }); if (returnValue.authorizationUri) { - // Save Oauth2 variables - await state.httpClient.post(`/api/v1/service/${state.integrationName}/variable/${OAUTH2.VARIABLE.CLIENT_ID}`, { - value: state.clientId, - userRelated: true - }); - - await state.httpClient.post( - `/api/v1/service/${state.integrationName}/variable/${OAUTH2.VARIABLE.CLIENT_SECRET}`, - { - value: state.secret, - userRelated: true - } - ); window.location = returnValue.authorizationUri; } else { store.setState({ diff --git a/front/src/config/i18n/en.json b/front/src/config/i18n/en.json index c59c951e48..b40d0218ef 100644 --- a/front/src/config/i18n/en.json +++ b/front/src/config/i18n/en.json @@ -895,7 +895,6 @@ "noValueReceived": "No value received.", "roomLabel": "Room", "featuresLabel": "Features", - "noFeatures": "No features", "saveButton": "Save", "deleteButton": "Delete", "createDeviceInGladys": "Connect in Gladys", diff --git a/front/src/config/i18n/fr.json b/front/src/config/i18n/fr.json index b8b4061470..1bcbf8f404 100644 --- a/front/src/config/i18n/fr.json +++ b/front/src/config/i18n/fr.json @@ -887,7 +887,7 @@ "chooseDevice": "Choisissez les appareils withings à connecter dans la liste plus bas :" }, "device": { - "title": "Appareils Withings", + "title": "Appareils Withings", "menu": "Appareils", "noDevices": "Aucun appareils Withings disponibles, allez sur la page 'Configuration' pour connecter votre compte et créer les appareils.", "nameLabel": "Nom", @@ -895,7 +895,6 @@ "noValueReceived": "Aucune valeur reçue.", "roomLabel": "Pièce", "featuresLabel": "Fonctionnalités", - "noFeatures": "Aucune fonctionnalité", "saveButton": "Sauvegarder", "deleteButton": "Supprimer", "createDeviceInGladys": "Connecter dans Gladys", diff --git a/front/src/routes/integration/all/withings/device-page/Device.jsx b/front/src/routes/integration/all/withings/device-page/Device.jsx index 010552c717..9823a4cdfd 100644 --- a/front/src/routes/integration/all/withings/device-page/Device.jsx +++ b/front/src/routes/integration/all/withings/device-page/Device.jsx @@ -6,6 +6,7 @@ import dayjs from 'dayjs'; import { Link } from 'preact-router'; import relativeTime from 'dayjs/plugin/relativeTime'; import { WithingsDeviceImgByModel } from './withingsConsts'; +import BatteryLevelFeature from '../../../../../components/device/view/BatteryLevelFeature'; dayjs.extend(relativeTime); @@ -45,7 +46,7 @@ class WithingsDeviceBox extends Component { deleteDevice = async () => { this.setState({ loading: true }); try { - if (this.props.forConnect) { + if (this.props.settingsPage) { await this.props.deleteDevice(this.props.device, null); } else { await this.props.deleteDevice(this.props.device, this.props.deviceIndex); @@ -75,12 +76,7 @@ class WithingsDeviceBox extends Component { {props.device.name} {batteryLevel && (

-
- - - - -
+
)}
@@ -104,7 +100,7 @@ class WithingsDeviceBox extends Component { )}
- {!props.forConnect && ( + {!props.settingsPage && (
- {!props.forConnect && ( + {!props.settingsPage && (

{mostRecentValueAt ? (

- {props.forConnect && props.device.inDB && ( + {props.settingsPage && props.device.inDB && ( )} - {props.forConnect && !props.device.inDB && ( + {props.settingsPage && !props.device.inDB && ( )} - {!props.forConnect && ( + {!props.settingsPage && ( <>
diff --git a/server/lib/device/device.destroyByServiceId.js b/server/lib/device/device.destroyByServiceId.js index 79603c5927..84e844db64 100755 --- a/server/lib/device/device.destroyByServiceId.js +++ b/server/lib/device/device.destroyByServiceId.js @@ -9,16 +9,6 @@ const db = require('../../models'); */ async function destroyByServiceId(serviceId) { const devices = await db.Device.findAll({ - include: [ - { - model: db.DeviceParam, - as: 'params', - }, - { - model: db.DeviceFeature, - as: 'features', - }, - ], where: { service_id: serviceId, }, diff --git a/server/lib/index.js b/server/lib/index.js index 4cea2d2a34..35ec0012bc 100644 --- a/server/lib/index.js +++ b/server/lib/index.js @@ -25,7 +25,7 @@ const System = require('./system'); const Variable = require('./variable'); const services = require('../services'); const Weather = require('./weather'); -const Oauth2 = require('./oauth2'); +const Oauth2Client = require('./oauth2-client'); /** * @description Start a new Gladys instance @@ -71,7 +71,7 @@ function Gladys(params = {}) { const scheduler = new Scheduler(event); const weather = new Weather(service, event, message, house); const gateway = new Gateway(variable, event, system, db.sequelize, config, user, stateManager, service); - const oauth2Client = new Oauth2(variable); + const oauth2Client = new Oauth2Client(variable); const gladys = { version: '0.1.0', // todo, read package.json diff --git a/server/lib/oauth2/index.js b/server/lib/oauth2-client/index.js similarity index 100% rename from server/lib/oauth2/index.js rename to server/lib/oauth2-client/index.js diff --git a/server/lib/oauth2/oauth2.buildAuthorizationUri.js b/server/lib/oauth2-client/oauth2.buildAuthorizationUri.js similarity index 100% rename from server/lib/oauth2/oauth2.buildAuthorizationUri.js rename to server/lib/oauth2-client/oauth2.buildAuthorizationUri.js diff --git a/server/lib/oauth2/oauth2.deleteClient.js b/server/lib/oauth2-client/oauth2.deleteClient.js similarity index 100% rename from server/lib/oauth2/oauth2.deleteClient.js rename to server/lib/oauth2-client/oauth2.deleteClient.js diff --git a/server/lib/oauth2/oauth2.executeOauth2HTTPQuery.js b/server/lib/oauth2-client/oauth2.executeOauth2HTTPQuery.js similarity index 100% rename from server/lib/oauth2/oauth2.executeOauth2HTTPQuery.js rename to server/lib/oauth2-client/oauth2.executeOauth2HTTPQuery.js diff --git a/server/lib/oauth2/oauth2.getAccessToken.js b/server/lib/oauth2-client/oauth2.getAccessToken.js similarity index 100% rename from server/lib/oauth2/oauth2.getAccessToken.js rename to server/lib/oauth2-client/oauth2.getAccessToken.js diff --git a/server/services/withings/api/withings.controller.js b/server/services/withings/api/withings.controller.js index 83e2e78759..ff1e102d9f 100755 --- a/server/services/withings/api/withings.controller.js +++ b/server/services/withings/api/withings.controller.js @@ -15,7 +15,7 @@ module.exports = function WithingsController(gladys, withingsHandler) { } /** - * @description Post create action to poll withings devices + * @description Post create action to poll withings devices * (used to initialize feature state on gladys device creation). * @api {get} /api/v1/service/withings/post_create/:device_selector Poll withings devices. * @apiName post_create diff --git a/server/services/withings/lib/withings.deleteVar.js b/server/services/withings/lib/withings.deleteVar.js index 7aa32abdab..a8c8483314 100755 --- a/server/services/withings/lib/withings.deleteVar.js +++ b/server/services/withings/lib/withings.deleteVar.js @@ -10,7 +10,7 @@ * ); */ async function deleteVar(userId) { - return this.gladys.oauth2Client.deleteClient(this.serviceId, userId); + return this.gladys.oauth2Client.deleteClient(this.serviceId, userId); } module.exports = { diff --git a/server/test/lib/device/device.destroyByServiceId.test.js b/server/test/lib/device/device.destroyByServiceId.test.js index 0c92b38737..7b3c432289 100644 --- a/server/test/lib/device/device.destroyByServiceId.test.js +++ b/server/test/lib/device/device.destroyByServiceId.test.js @@ -1,5 +1,6 @@ const EventEmitter = require('events'); const sinon = require('sinon'); +const { assert } = require('chai'); const Device = require('../../../lib/device'); const StateManager = require('../../../lib/state'); @@ -49,6 +50,11 @@ describe('Device', () => { selector: 'test-device-destroyByServiceId', }); + let testDevice = await device.get({ search: 'test-device-destroyByServiceId' }); + assert.equal(testDevice[0].name, 'test-device-destroyByServiceId'); + await device.destroyByServiceId(serviceImpl.id); + testDevice = await device.get({ search: 'test-device-destroyByServiceId' }); + assert.equal(testDevice.length, 0); }); }); diff --git a/server/test/lib/device/device.setParam.test.js b/server/test/lib/device/device.setParam.test.js index cf53cdff25..ab007a2389 100644 --- a/server/test/lib/device/device.setParam.test.js +++ b/server/test/lib/device/device.setParam.test.js @@ -1,4 +1,5 @@ const EventEmitter = require('events'); +const { assert } = require('chai'); const Device = require('../../../lib/device'); const StateManager = require('../../../lib/state'); @@ -7,14 +8,13 @@ const event = new EventEmitter(); describe('Device', () => { it('save test param', async () => { const stateManager = new StateManager(event); - stateManager.setState('device', 'test-device', { - id: 'cfsmb47f-4d25-4381-8923-2633b23192sm', - name: 'test', - }); const device = new Device(event, {}, stateManager); - const testDevice = await device.getBySelector('test-device'); - await device.setParam(testDevice, 'testParamName', 'testParamValue'); - await device.setParam(testDevice, 'testParamName', 'testParamValue2'); + let testDevice = await device.get({ search: 'test' }); + await device.setParam(testDevice[0], 'testParamName', 'testParamValue'); + await device.setParam(testDevice[0], 'testParamName2', 'testParamValue2'); + await device.setParam(testDevice[0], 'testParamName', 'testParamValue'); + testDevice = await device.get({ search: testDevice[0].name }); + assert.equal(testDevice[0].params.length, 2); }); }); diff --git a/server/test/lib/oauth2/oauth2manager.test.js b/server/test/lib/oauth2-client/oauth2manager.test.js similarity index 98% rename from server/test/lib/oauth2/oauth2manager.test.js rename to server/test/lib/oauth2-client/oauth2manager.test.js index a2dbcb7ef9..8b52962404 100755 --- a/server/test/lib/oauth2/oauth2manager.test.js +++ b/server/test/lib/oauth2-client/oauth2manager.test.js @@ -2,7 +2,7 @@ const { OAuth2Server } = require('oauth2-mock-server'); const { assert } = require('chai'); const { fake } = require('sinon'); -const OAuth2Manager = require('../../../lib/oauth2'); +const OAuth2Manager = require('../../../lib/oauth2-client'); const logger = require('../../../utils/logger'); const { OAUTH2 } = require('../../../utils/constants'); diff --git a/server/test/services/withings/api/withings.controller.test.js b/server/test/services/withings/api/withings.controller.test.js index 7c8f3070a6..47115c5d2d 100644 --- a/server/test/services/withings/api/withings.controller.test.js +++ b/server/test/services/withings/api/withings.controller.test.js @@ -27,14 +27,14 @@ describe('WithingsController POST /api/v1/service/withings/init', () => { }); }); -describe('WithingsController GET /api/v1/service/withings/poll', () => { +describe('WithingsController GET /api/v1/service/withings/post_create', () => { const controller = WithingsController(gladys, withingsHandler); it('should poll', async () => { const req = { params: { device_selector: 'fsdfdd452f4181fsdf2sdfhgyrjfdsfsd' } }; const res = { json: fake.returns(null) }; - await controller['get /api/v1/service/withings/poll/:device_selector'].controller(req, res); + await controller['get /api/v1/service/withings/post_create/:device_selector'].controller(req, res); assert.calledOnce(withingsHandler.poll); }); }); diff --git a/server/test/services/withings/index.test.js b/server/test/services/withings/index.test.js index 631a3aa831..0f8f1041b3 100755 --- a/server/test/services/withings/index.test.js +++ b/server/test/services/withings/index.test.js @@ -11,11 +11,15 @@ const WithingsService = proxyquire('../../../services/withings', { }); describe('withingsService', () => { + let countSetValueCount = 0; + let countGetValueCount = 0; const withingsService = WithingsService( { variable: { - getValue: fake.returns( - '{' + + getValue: function returnValue(key, serviceId, userId) { + countGetValueCount += 1; + return ( + '{' + '"access_token":"b96a86b654acb01c2aeb4d5a39f10ff9c964f8e4",' + '"expires_in":10800,' + '"token_type":"Bearer",' + @@ -23,20 +27,24 @@ describe('withingsService', () => { '"refresh_token":"11757dc7fd8d25889f5edfd373d1f525f53d4942",' + '"userid":"33669966",' + '"expires_at":"2020-11-13T20:46:50.042Z"' + - '}', - ), + '}' + ); + }, }, }, '3ac129d9-a610-42f8-924f-3fe708001b3d', ); it('should start service', async () => { await withingsService.start(); + assert.equal(countSetValueCount, 0); + assert.equal(countGetValueCount, 1); }); + it('should stop service', async () => { await withingsService.stop(); }); - let countSetValueCount = 0; + countSetValueCount = 0; const withingsServiceWithoutDBVar = WithingsService( { variable: { @@ -52,7 +60,4 @@ describe('withingsService', () => { await withingsServiceWithoutDBVar.start(); assert.equal(countSetValueCount, 8); }); - it('should stop service (without db var)', async () => { - await withingsServiceWithoutDBVar.stop(); - }); }); diff --git a/server/test/services/withings/lib/withings.init.test.js b/server/test/services/withings/lib/withings.init.test.js index 1637f45933..48fe087eec 100644 --- a/server/test/services/withings/lib/withings.init.test.js +++ b/server/test/services/withings/lib/withings.init.test.js @@ -2,7 +2,7 @@ const { assert } = require('chai'); const { OAuth2Server } = require('oauth2-mock-server'); const { fake } = require('sinon'); const ServerMock = require('mock-http-server'); -const OAuth2Manager = require('../../../../lib/oauth2/index'); +const OAuth2Manager = require('../../../../lib/oauth2-client/index'); const WithingsHandler = require('../../../../services/withings/lib'); const { OAUTH2 } = require('../../../../utils/constants.js'); diff --git a/server/test/services/withings/lib/withings.poll.test.js b/server/test/services/withings/lib/withings.poll.test.js index c8e2bd6f98..15c888a02a 100644 --- a/server/test/services/withings/lib/withings.poll.test.js +++ b/server/test/services/withings/lib/withings.poll.test.js @@ -5,7 +5,7 @@ const sinon = require('sinon'); const WithingsHandler = require('../../../../services/withings/lib'); const { DEVICE_FEATURE_TYPES } = require('../../../../utils/constants'); const { OAUTH2 } = require('../../../../utils/constants.js'); -const OAuth2Manager = require('../../../../lib/oauth2/index'); +const OAuth2Manager = require('../../../../lib/oauth2-client/index'); const { assert, fake } = sinon; From f2ef2a0bfccf2f0a197c1bdc69a28bc6169b123d Mon Sep 17 00:00:00 2001 From: Euguuu Date: Mon, 28 Mar 2022 23:31:48 +0200 Subject: [PATCH 037/164] fix for review --- .../withings/settings/WithingsSettings.js | 14 ++++----- front/src/components/oauth2/OAuth2Config.jsx | 16 +++++----- front/src/components/oauth2/actions.js | 30 ++++++++----------- front/src/config/i18n/en.json | 24 +++++++-------- front/src/config/i18n/fr.json | 22 +++++++------- .../all/withings/device-page/actions.js | 1 - .../all/withings/settings-page/actions.js | 7 ++--- .../all/withings/settings-page/index.js | 11 +++---- .../withings/api/withings.controller.js | 18 ----------- server/services/withings/index.js | 29 +----------------- server/services/withings/lib/index.js | 14 ++++----- server/services/withings/lib/withings.init.js | 27 +++++++++++++++++ .../withings/lib/withings.postCreate.js | 16 ++++++++++ .../withings/api/withings.controller.test.js | 12 -------- server/test/services/withings/index.test.js | 9 +++--- .../lib/withings.deleteDevices.test.js | 6 +++- .../withings/lib/withings.deleteVar.test.js | 8 +++-- .../withings/lib/withings.init.test.js | 9 ++---- .../withings/lib/withings.poll.test.js | 9 ++---- 19 files changed, 129 insertions(+), 153 deletions(-) create mode 100755 server/services/withings/lib/withings.postCreate.js diff --git a/front/cypress/integration/routes/integration/withings/settings/WithingsSettings.js b/front/cypress/integration/routes/integration/withings/settings/WithingsSettings.js index 783eb49a8b..b77cec5603 100644 --- a/front/cypress/integration/routes/integration/withings/settings/WithingsSettings.js +++ b/front/cypress/integration/routes/integration/withings/settings/WithingsSettings.js @@ -28,9 +28,9 @@ describe('Withings settings page', () => { }); it('Check setting page and connect', () => { - cy.get('.markup').i18n('integration.oauth2.instructions'); + cy.get('.markup').i18n('oauth2.instructions'); - cy.get('.form-label').i18n('integration.oauth2.apiKeyLabel'); + cy.get('.form-label').i18n('oauth2.apiKeyLabel'); cy.get('input') .first() @@ -42,7 +42,7 @@ describe('Withings settings page', () => { .clear() .type('FakeSecret'); - cy.contains('button', 'integration.oauth2.buttonConnect').click(); + cy.contains('button', 'oauth2.buttonConnect').click(); // Check redirected to settings page cy.location('pathname').should('eq', '/dashboard/integration/health/withings/settings'); @@ -55,14 +55,14 @@ describe('Withings settings page', () => { cy.get('.alert-info').i18n('integration.withings.settings.instructionsToUse'); - cy.contains('p', 'integration.oauth2.delete').should('exist'); + cy.contains('p', 'oauth2.delete').should('exist'); }); it('Check unconnect', () => { - cy.contains('button', 'integration.oauth2.unconnectButton').click(); + cy.contains('button', 'oauth2.unconnectButton').click(); - cy.get('.markup').i18n('integration.oauth2.instructions'); + cy.get('.markup').i18n('oauth2.instructions'); - cy.get('.form-label').i18n('integration.oauth2.apiKeyLabel'); + cy.get('.form-label').i18n('oauth2.apiKeyLabel'); }); }); diff --git a/front/src/components/oauth2/OAuth2Config.jsx b/front/src/components/oauth2/OAuth2Config.jsx index dd9d9da074..b4313b0783 100755 --- a/front/src/components/oauth2/OAuth2Config.jsx +++ b/front/src/components/oauth2/OAuth2Config.jsx @@ -26,25 +26,25 @@ const OAuth2Config = ({ integrationImg, integrationName, children, ...props }) =
{props.oauth2ErrorMsg && (
- +
)}

- +

- +
} + placeholder={} onInput={props.updateClientId} value={props.clientId} /> @@ -57,7 +57,7 @@ const OAuth2Config = ({ integrationImg, integrationName, children, ...props }) = } + placeholder={} onInput={props.updateSecret} value={props.secret} /> @@ -67,7 +67,7 @@ const OAuth2Config = ({ integrationImg, integrationName, children, ...props }) =
@@ -90,12 +90,12 @@ const OAuth2Config = ({ integrationImg, integrationName, children, ...props }) =

- +

diff --git a/front/src/components/oauth2/actions.js b/front/src/components/oauth2/actions.js index a2de7755c0..ad602615b3 100755 --- a/front/src/components/oauth2/actions.js +++ b/front/src/components/oauth2/actions.js @@ -2,11 +2,6 @@ import { RequestStatus } from '../../utils/consts'; import { OAUTH2 } from '../../../../server/utils/constants'; const actions = store => ({ - updateIntegrationName(state, e) { - store.setState({ - integrationName: e - }); - }, updateClientId(state, e) { store.setState({ clientId: e.target.value @@ -22,10 +17,8 @@ const actions = store => ({ oauth2GetStatus: RequestStatus.Getting }); try { - const returnServiceId = (await state.httpClient.get(`/api/v1/service/${state.integrationName}`)).id; - const returnGetConfig = await state.httpClient.get('/api/v1/service/oauth2/client', { - service_id: returnServiceId + service_id: state.currentIntegration.id }); if (returnGetConfig) { @@ -59,16 +52,17 @@ const actions = store => ({ oauth2GetStatus: RequestStatus.Getting }); - const serviceId = (await state.httpClient.get(`/api/v1/service/${state.integrationName}`)).id; - // Save Oauth2 variables - await state.httpClient.post(`/api/v1/service/${state.integrationName}/variable/${OAUTH2.VARIABLE.CLIENT_ID}`, { - value: state.clientId, - userRelated: true - }); + await state.httpClient.post( + `/api/v1/service/${state.currentIntegration.name}/variable/${OAUTH2.VARIABLE.CLIENT_ID}`, + { + value: state.clientId, + userRelated: true + } + ); await state.httpClient.post( - `/api/v1/service/${state.integrationName}/variable/${OAUTH2.VARIABLE.CLIENT_SECRET}`, + `/api/v1/service/${state.currentIntegration.name}/variable/${OAUTH2.VARIABLE.CLIENT_SECRET}`, { value: state.secret, userRelated: true @@ -77,8 +71,8 @@ const actions = store => ({ // TODO : passer le client / secret en param et auver les param que apres ou dans ? const returnValue = await state.httpClient.post('/api/v1/service/oauth2/client/authorization-uri', { - integration_name: state.integrationName, - service_id: serviceId + integration_name: state.currentIntegration.name, + service_id: state.currentIntegration.id }); if (returnValue.authorizationUri) { @@ -103,7 +97,7 @@ const actions = store => ({ oauth2GetStatus: RequestStatus.Getting }); - await state.httpClient.get(`/api/v1/service/${state.integrationName}/reset`); + await state.httpClient.get(`/api/v1/service/${state.currentIntegration.name}/reset`); store.setState({ clientIdInDb: null, diff --git a/front/src/config/i18n/en.json b/front/src/config/i18n/en.json index b40d0218ef..8c1afc7b57 100644 --- a/front/src/config/i18n/en.json +++ b/front/src/config/i18n/en.json @@ -288,6 +288,17 @@ "validationError": "Dashboard created is not valid, did you fill all the boxes correctly?", "createDashboardButton": "Create" }, + "oauth2": { + "buttonConnect": "Connect now", + "apiKeyLabel": "Then, enter your client id and client secret keys here:", + "errorEmptyConfig": "Client id and client secret must not be empty!", + "errorAuthorizationUri": "Error in authorization provider connection configuration!", + "clientId": "Account client id", + "secret": "Account client secret", + "instructions": "In this stage please fill in the given client id and client secret key below and click on connect button.", + "delete": "To delete your account configuration clic on 'unlink' button (all data will be deleted).", + "unconnectButton": "Unlink" + }, "integration": { "root": { "title": "Integrations", @@ -863,20 +874,9 @@ "saveLabel": "Save configuration" } }, - "oauth2": { - "buttonConnect": "Connect now", - "apiKeyLabel": "Then, enter your client id and client secret keys here:", - "errorEmptyConfig": "Client id and client secret must not be empty!", - "errorAuthorizationUri": "Error in authorization provider connection configuration!", - "clientId": "Account client id", - "secret": "Account client secret", - "instructions": "In this stage please fill in the given client id and client secret key below and click on connect button.", - "delete": "To delete your account configuration clic on 'unlink' button (all data will be deleted).", - "unconnectButton": "Unlink" - }, "withings": { "settings": { - "outh2": { + "oauth2": { "title": "Withings Settings", "introduction": "To connect Withings account to Gladys, you first need to create a Withings user account in this link.

To connect Withings measures to Gladys, you need to create a Withings partner account in this link
(in callback url field put http://gladys.local/dashboard/integration/health/withings/settings, in environmnet field choose Dev, you can use Prod with gladys plus url and https protocol, refer to Documentation link for more details).
", "instructionsToUse": "To use this integration, go to the dashboard and create a device box or chart.", diff --git a/front/src/config/i18n/fr.json b/front/src/config/i18n/fr.json index 1bcbf8f404..4dde62352a 100644 --- a/front/src/config/i18n/fr.json +++ b/front/src/config/i18n/fr.json @@ -288,6 +288,17 @@ "validationError": "Le tableau de bord n'est pas valide, êtes-vous sûr d'avoir rempli tous les champs ?", "createDashboardButton": "Créer" }, + "oauth2": { + "buttonConnect": "Connecter maintenant", + "apiKeyLabel": "Saisissez ensuite vos clés client id et client secret ici :", + "errorEmptyConfig": "Client id et client secret ne doivent pas être vide !", + "errorAuthorizationUri": "Erreur dans la configuration du provider pour l'autorisation de connexion !", + "clientId": "Client id du compte", + "secret": "Client secret du compte", + "instructions": "À cette étape, veuillez remplir les champs client id et client secret ci-dessous et cliquez sur le bouton de connexion.", + "delete": "Pour supprimer vos configurations de compte cliquer sur le bouton 'Déconneter' (toutes les données associées seront supprimées).", + "unconnectButton": "Déconnecter" + }, "integration": { "root": { "title": "Intégrations", @@ -863,17 +874,6 @@ "magnet": "Capteur magnétique" } }, - "oauth2": { - "buttonConnect": "Connecter maintenant", - "apiKeyLabel": "Saisissez ensuite vos clés client id et client secret ici :", - "errorEmptyConfig": "Client id et client secret ne doivent pas être vide !", - "errorAuthorizationUri": "Erreur dans la configuration du provider pour l'autorisation de connexion !", - "clientId": "Client id du compte", - "secret": "Client secret du compte", - "instructions": "À cette étape, veuillez remplir les champs client id et client secret ci-dessous et cliquez sur le bouton de connexion.", - "delete": "Pour supprimer vos configurations de compte cliquer sur le bouton 'Déconneter' (toutes les données associées seront supprimées).", - "unconnectButton": "Déconnecter" - }, "withings": { "settings": { "oauth2": { diff --git a/front/src/routes/integration/all/withings/device-page/actions.js b/front/src/routes/integration/all/withings/device-page/actions.js index 628fa0fec0..909afc1a7c 100755 --- a/front/src/routes/integration/all/withings/device-page/actions.js +++ b/front/src/routes/integration/all/withings/device-page/actions.js @@ -18,7 +18,6 @@ const actions = store => ({ const deviceSaved = await state.httpClient.post('/api/v1/device', device); device.inDB = true; device.selector = deviceSaved.selector; - state.httpClient.get(`/api/v1/service/withings/post_create/${device.selector}`); }, async deleteDevice(state, device, index) { await state.httpClient.delete(`/api/v1/device/${device.selector}`); diff --git a/front/src/routes/integration/all/withings/settings-page/actions.js b/front/src/routes/integration/all/withings/settings-page/actions.js index 4063eecfbe..88ac9c252a 100755 --- a/front/src/routes/integration/all/withings/settings-page/actions.js +++ b/front/src/routes/integration/all/withings/settings-page/actions.js @@ -11,20 +11,17 @@ const actions = store => ({ // check if this call is a return of oauth2 authorize code if (state.currentUrl) { if (this.code) { - const serviceId = (await state.httpClient.get(`/api/v1/service/withings`)).id; await state.httpClient.post('/api/v1/service/oauth2/client/access-token', { integrationName: 'withings', authorization_code: this.code, - service_id: serviceId + service_id: state.currentIntegration.id }); route('/dashboard/integration/health/withings/settings'); } - const returnServiceId = (await state.httpClient.get('/api/v1/service/withings')).id; - const returnGetConfig = await state.httpClient.get('/api/v1/service/oauth2/client', { - service_id: returnServiceId + service_id: state.currentIntegration.id }); // Case of config found let withingsDevices; diff --git a/front/src/routes/integration/all/withings/settings-page/index.js b/front/src/routes/integration/all/withings/settings-page/index.js index 8dbbf537d9..6f18224d56 100755 --- a/front/src/routes/integration/all/withings/settings-page/index.js +++ b/front/src/routes/integration/all/withings/settings-page/index.js @@ -4,6 +4,7 @@ import { Text } from 'preact-i18n'; import actions from './actions'; import actionsWithingsDevice from '../device-page/actions'; import actionsOAuth2 from '../../../../../components/oauth2/actions'; +import actionsCommon from '../../../../../actions/integration'; import WithingsPage from '../WithingsPage'; import OAuth2Config from '../../../../../components/oauth2/OAuth2Config'; import { RequestStatus } from '../../../../../utils/consts'; @@ -12,13 +13,13 @@ import Device from '../device-page/Device'; @connect( 'user,session,clientIdInDb,withingsSaveStatus,oauth2GetStatus,oauth2ErrorMsg,houses,withingsClientId,withingsGetStatus,withingsImgMap,withingsDevices', - combineActions(actions, actionsOAuth2, actionsWithingsDevice) + combineActions(actions, actionsOAuth2, actionsWithingsDevice, actionsCommon) ) class WithingsSettingsPage extends Component { - componentWillMount() { - this.props.updateIntegrationName('withings'); - this.props.getCurrentConfig(); - this.props.initWithingsDevices(); + async componentWillMount() { + await this.props.getIntegrationByName('withings'); + await this.props.getCurrentConfig(); + await this.props.initWithingsDevices(); } render(props, {}) { diff --git a/server/services/withings/api/withings.controller.js b/server/services/withings/api/withings.controller.js index ff1e102d9f..4721cab819 100755 --- a/server/services/withings/api/withings.controller.js +++ b/server/services/withings/api/withings.controller.js @@ -14,20 +14,6 @@ module.exports = function WithingsController(gladys, withingsHandler) { }); } - /** - * @description Post create action to poll withings devices - * (used to initialize feature state on gladys device creation). - * @api {get} /api/v1/service/withings/post_create/:device_selector Poll withings devices. - * @apiName post_create - * @apiGroup Withings - */ - async function postCreate(req, res) { - if (req.params.device_selector) { - const deviceToPoll = await gladys.device.getBySelector(req.params.device_selector); - await withingsHandler.poll(deviceToPoll); - } - } - /** * @description Delete client id, secret client of withings oauth2 api and al withings devices. * @api {get} /api/v1/service/withings/reset Delete clientId and secret of withings oauth2 api. @@ -51,9 +37,5 @@ module.exports = function WithingsController(gladys, withingsHandler) { authenticated: true, controller: asyncMiddleware(reset), }, - 'get /api/v1/service/withings/post_create/:device_selector': { - authenticated: true, - controller: asyncMiddleware(postCreate), - }, }; }; diff --git a/server/services/withings/index.js b/server/services/withings/index.js index 4cd11ecdcd..1282012d2a 100755 --- a/server/services/withings/index.js +++ b/server/services/withings/index.js @@ -1,10 +1,9 @@ const logger = require('../../utils/logger'); const WithingsHandler = require('./lib/index'); const WithingsController = require('./api/withings.controller'); -const { OAUTH2 } = require('../../utils/constants.js'); module.exports = function WithingsService(gladys, serviceId) { - const withingsHandler = new WithingsHandler(gladys, serviceId, 'https://wbsapi.withings.net', 'withings'); + const withingsHandler = new WithingsHandler(gladys, serviceId); /** * @public @@ -14,32 +13,6 @@ module.exports = function WithingsService(gladys, serviceId) { */ async function start() { logger.log('starting Withings service'); - - // check if variable necessary to oauth2 connection is in variable table - const tokenHost = await gladys.variable.getValue(OAUTH2.VARIABLE.TOKEN_HOST, serviceId); - if (!tokenHost) { - // Init variable in db - await gladys.variable.setValue(OAUTH2.VARIABLE.TOKEN_HOST, 'https://wbsapi.withings.net', serviceId); - await gladys.variable.setValue(OAUTH2.VARIABLE.TOKEN_PATH, '/v2/oauth2', serviceId); - await gladys.variable.setValue(OAUTH2.VARIABLE.AUTHORIZE_HOST, 'https://account.withings.com', serviceId); - await gladys.variable.setValue(OAUTH2.VARIABLE.AUTHORIZE_PATH, '/oauth2_user/authorize2', serviceId); - await gladys.variable.setValue( - OAUTH2.VARIABLE.ADDITIONAL_ACCESS_TOKEN_REQUEST_ACTION_PARAM, - 'requesttoken', - serviceId, - ); - await gladys.variable.setValue( - OAUTH2.VARIABLE.INTEGRATION_SCOPE, - 'user.info,user.metrics,user.activity,user.sleepevents', - serviceId, - ); - await gladys.variable.setValue(OAUTH2.VARIABLE.GRANT_TYPE, 'authorization_code', serviceId); - await gladys.variable.setValue( - OAUTH2.VARIABLE.REDIRECT_URI_SUFFIX, - 'dashboard/integration/health/withings/settings', - serviceId, - ); - } } /** diff --git a/server/services/withings/lib/index.js b/server/services/withings/lib/index.js index b9b4d10e54..4fb2548dfb 100755 --- a/server/services/withings/lib/index.js +++ b/server/services/withings/lib/index.js @@ -3,25 +3,20 @@ const { init } = require('./withings.init'); const { deleteVar } = require('./withings.deleteVar'); const { deleteDevices } = require('./withings.deleteDevices'); const { poll } = require('./withings.poll'); +const { postCreate } = require('./withings.postCreate'); /** * @param {Object} gladys - The gladys object. * @param {string} serviceId - Identification of the service. - * @param {string} withingsServerUrl - Withings server url. - * @param {string} integrationName - [Optional] By default interationName='withings', param used only for test. * @description Create all device if not exist by listening * @example * const withingsHandler = WithingsHandler(gladys, serviceId) */ -const WithingsHandler = function WithingsHandler(gladys, serviceId, withingsServerUrl, integrationName) { +const WithingsHandler = function WithingsHandler(gladys, serviceId) { this.gladys = gladys; this.serviceId = serviceId; - this.withingsUrl = withingsServerUrl; - if (integrationName) { - this.integrationName = integrationName; - } else { - this.integrationName = 'withings'; - } + this.withingsUrl = 'https://wbsapi.withings.net'; + this.integrationName = 'withings'; }; // COMMANDS @@ -29,5 +24,6 @@ WithingsHandler.prototype.init = init; WithingsHandler.prototype.deleteVar = deleteVar; WithingsHandler.prototype.deleteDevices = deleteDevices; WithingsHandler.prototype.poll = poll; +WithingsHandler.prototype.postCreate = postCreate; module.exports = WithingsHandler; diff --git a/server/services/withings/lib/withings.init.js b/server/services/withings/lib/withings.init.js index 1a8ed74a83..0f31cbeb40 100755 --- a/server/services/withings/lib/withings.init.js +++ b/server/services/withings/lib/withings.init.js @@ -1,4 +1,5 @@ const uuid = require('uuid'); +const { OAUTH2 } = require('../../../utils/constants.js'); const logger = require('../../../utils/logger'); const { DEVICE_FEATURE_CATEGORIES, @@ -240,6 +241,32 @@ function buildFeature(currentGroup, device, currentFeatures) { async function init(userId) { const { serviceId } = this; + // check if variable necessary to oauth2 connection is in variable table + const tokenHost = this.gladys.variable.getValue(OAUTH2.VARIABLE.TOKEN_HOST, serviceId); + if (!tokenHost) { + // Init variable in db + this.gladys.variable.setValue(OAUTH2.VARIABLE.TOKEN_HOST, 'https://wbsapi.withings.net', serviceId); + this.gladys.variable.setValue(OAUTH2.VARIABLE.TOKEN_PATH, '/v2/oauth2', serviceId); + this.gladys.variable.setValue(OAUTH2.VARIABLE.AUTHORIZE_HOST, 'https://account.withings.com', serviceId); + this.gladys.variable.setValue(OAUTH2.VARIABLE.AUTHORIZE_PATH, '/oauth2_user/authorize2', serviceId); + this.gladys.variable.setValue( + OAUTH2.VARIABLE.ADDITIONAL_ACCESS_TOKEN_REQUEST_ACTION_PARAM, + 'requesttoken', + serviceId, + ); + this.gladys.variable.setValue( + OAUTH2.VARIABLE.INTEGRATION_SCOPE, + 'user.info,user.metrics,user.activity,user.sleepevents', + serviceId, + ); + this.gladys.variable.setValue(OAUTH2.VARIABLE.GRANT_TYPE, 'authorization_code', serviceId); + this.gladys.variable.setValue( + OAUTH2.VARIABLE.REDIRECT_URI_SUFFIX, + 'dashboard/integration/health/withings/settings', + serviceId, + ); + } + const userResult = await this.gladys.oauth2Client.executeOauth2HTTPQuery( serviceId, userId, diff --git a/server/services/withings/lib/withings.postCreate.js b/server/services/withings/lib/withings.postCreate.js new file mode 100755 index 0000000000..df6aa63423 --- /dev/null +++ b/server/services/withings/lib/withings.postCreate.js @@ -0,0 +1,16 @@ +const Promise = require('bluebird'); + +/** + * @description Call a poll value of a withings device after device creation. + * @param {Object} device - The device to update value. + * @returns {Promise} Resolve. + * @example + * postCreate(device); + */ +async function postCreate(device) { + await this.poll(device); +} + +module.exports = { + postCreate, +}; diff --git a/server/test/services/withings/api/withings.controller.test.js b/server/test/services/withings/api/withings.controller.test.js index 47115c5d2d..982398b33b 100644 --- a/server/test/services/withings/api/withings.controller.test.js +++ b/server/test/services/withings/api/withings.controller.test.js @@ -27,18 +27,6 @@ describe('WithingsController POST /api/v1/service/withings/init', () => { }); }); -describe('WithingsController GET /api/v1/service/withings/post_create', () => { - const controller = WithingsController(gladys, withingsHandler); - - it('should poll', async () => { - const req = { params: { device_selector: 'fsdfdd452f4181fsdf2sdfhgyrjfdsfsd' } }; - const res = { json: fake.returns(null) }; - - await controller['get /api/v1/service/withings/post_create/:device_selector'].controller(req, res); - assert.calledOnce(withingsHandler.poll); - }); -}); - describe('WithingsController GET /api/v1/service/withings/reset', () => { const controller = WithingsController(gladys, withingsHandler); diff --git a/server/test/services/withings/index.test.js b/server/test/services/withings/index.test.js index 0f8f1041b3..72eee6115a 100755 --- a/server/test/services/withings/index.test.js +++ b/server/test/services/withings/index.test.js @@ -12,12 +12,12 @@ const WithingsService = proxyquire('../../../services/withings', { describe('withingsService', () => { let countSetValueCount = 0; - let countGetValueCount = 0; + // let countGetValueCount = 0; const withingsService = WithingsService( { variable: { getValue: function returnValue(key, serviceId, userId) { - countGetValueCount += 1; + // countGetValueCount += 1; return ( '{' + '"access_token":"b96a86b654acb01c2aeb4d5a39f10ff9c964f8e4",' + @@ -37,11 +37,12 @@ describe('withingsService', () => { it('should start service', async () => { await withingsService.start(); assert.equal(countSetValueCount, 0); - assert.equal(countGetValueCount, 1); + // assert.equal(countGetValueCount, 1); }); it('should stop service', async () => { await withingsService.stop(); + assert.equal(countSetValueCount, 0); }); countSetValueCount = 0; @@ -58,6 +59,6 @@ describe('withingsService', () => { ); it('should start service (without db var)', async () => { await withingsServiceWithoutDBVar.start(); - assert.equal(countSetValueCount, 8); + // assert.equal(countSetValueCount, 8); }); }); diff --git a/server/test/services/withings/lib/withings.deleteDevices.test.js b/server/test/services/withings/lib/withings.deleteDevices.test.js index 0d7a674c5e..efe6f5c4d4 100644 --- a/server/test/services/withings/lib/withings.deleteDevices.test.js +++ b/server/test/services/withings/lib/withings.deleteDevices.test.js @@ -3,11 +3,15 @@ const { fake, assert } = require('sinon'); const WithingsHandler = require('../../../../services/withings/lib'); const gladys = { + variable: { + getValue: fake.resolves(null), + setValue: fake.resolves(null), + }, device: { destroyByServiceId: fake.returns(null) }, }; describe('WithingsHandler deleteDevices', () => { - const withingsHandler = new WithingsHandler(gladys, null, null, null); + const withingsHandler = new WithingsHandler(gladys, null); it('delete devices', async () => { await withingsHandler.deleteDevices(); diff --git a/server/test/services/withings/lib/withings.deleteVar.test.js b/server/test/services/withings/lib/withings.deleteVar.test.js index a27f6ad64b..5619cdcf6e 100644 --- a/server/test/services/withings/lib/withings.deleteVar.test.js +++ b/server/test/services/withings/lib/withings.deleteVar.test.js @@ -3,7 +3,11 @@ const { fake } = require('sinon'); const WithingsHandler = require('../../../../services/withings/lib'); const gladysOk = { - variable: { destroy: fake.resolves(null) }, + variable: { + getValue: fake.resolves(null), + setValue: fake.resolves(null), + destroy: fake.resolves(null), + }, oauth2Client: { deleteClient: fake.resolves({ success: true }), }, @@ -11,7 +15,7 @@ const gladysOk = { describe('WithingsHandler deleteVar', () => { it('deletes oauth2 vars', async () => { - const withingsHandler = new WithingsHandler(gladysOk, null, null, null); + const withingsHandler = new WithingsHandler(gladysOk, null); const result = await withingsHandler.deleteVar('req'); expect(result).to.eql({ success: true }); diff --git a/server/test/services/withings/lib/withings.init.test.js b/server/test/services/withings/lib/withings.init.test.js index 48fe087eec..91896c52f9 100644 --- a/server/test/services/withings/lib/withings.init.test.js +++ b/server/test/services/withings/lib/withings.init.test.js @@ -310,12 +310,9 @@ describe('WithingsHandler init', () => { serverOauth2.stop(); }); it('init devices in Gladys', async () => { - const withingsHandler = new WithingsHandler( - gladys, - '55f177d7-bc35-4560-a1f0-4c58b9e9f2c4', - 'http://localhost:9192', - 'test', - ); + const withingsHandler = new WithingsHandler(gladys, '55f177d7-bc35-4560-a1f0-4c58b9e9f2c4'); + withingsHandler.withingsUrl = 'http://localhost:9192'; + withingsHandler.integrationName = 'test'; const result = await withingsHandler.init('0cd30aef-9c4e-4a23-88e3-3547971296e5'); diff --git a/server/test/services/withings/lib/withings.poll.test.js b/server/test/services/withings/lib/withings.poll.test.js index 15c888a02a..adea010d7a 100644 --- a/server/test/services/withings/lib/withings.poll.test.js +++ b/server/test/services/withings/lib/withings.poll.test.js @@ -69,12 +69,9 @@ const gladys = { }; describe('WithingsHandler poll', () => { - const withingsHandler = new WithingsHandler( - gladys, - '55f177d7-bc35-4560-a1f0-4c58b9e9f2c4', - 'http://localhost:9192', - 'test', - ); + const withingsHandler = new WithingsHandler(gladys, '55f177d7-bc35-4560-a1f0-4c58b9e9f2c4'); + withingsHandler.withingsUrl = 'http://localhost:9192'; + withingsHandler.integrationName = 'test'; before((done) => { server.on({ From ab8da9536f06d366420c1a039566b1e687b83b1e Mon Sep 17 00:00:00 2001 From: Euguuu Date: Tue, 29 Mar 2022 21:51:31 +0200 Subject: [PATCH 038/164] fix for review --- server/services/withings/lib/index.js | 4 + .../withings/lib/utils/withings.getDevices.js | 21 ++ .../lib/utils/withings.getMeasures.js | 26 ++ server/services/withings/lib/withings.init.js | 16 +- server/services/withings/lib/withings.poll.js | 17 +- .../withings/lib/withings.init.test.js | 264 +----------------- .../withings/lib/withings.poll.test.js | 139 +-------- .../withings/lib/withings.serverMock.test.js | 190 +++++++++++++ 8 files changed, 269 insertions(+), 408 deletions(-) create mode 100644 server/services/withings/lib/utils/withings.getDevices.js create mode 100644 server/services/withings/lib/utils/withings.getMeasures.js create mode 100644 server/test/services/withings/lib/withings.serverMock.test.js diff --git a/server/services/withings/lib/index.js b/server/services/withings/lib/index.js index 4fb2548dfb..95f7f6e31a 100755 --- a/server/services/withings/lib/index.js +++ b/server/services/withings/lib/index.js @@ -4,6 +4,8 @@ const { deleteVar } = require('./withings.deleteVar'); const { deleteDevices } = require('./withings.deleteDevices'); const { poll } = require('./withings.poll'); const { postCreate } = require('./withings.postCreate'); +const { getDevices } = require('./utils/withings.getDevices'); +const { getMeasures } = require('./utils/withings.getMeasures'); /** * @param {Object} gladys - The gladys object. @@ -25,5 +27,7 @@ WithingsHandler.prototype.deleteVar = deleteVar; WithingsHandler.prototype.deleteDevices = deleteDevices; WithingsHandler.prototype.poll = poll; WithingsHandler.prototype.postCreate = postCreate; +WithingsHandler.prototype.getDevices = getDevices; +WithingsHandler.prototype.getMeasures = getMeasures; module.exports = WithingsHandler; diff --git a/server/services/withings/lib/utils/withings.getDevices.js b/server/services/withings/lib/utils/withings.getDevices.js new file mode 100644 index 0000000000..e54cdcc139 --- /dev/null +++ b/server/services/withings/lib/utils/withings.getDevices.js @@ -0,0 +1,21 @@ +/** + * @description Returns list of withings devices (after call to withings server). + * + * @param {string} userId - Gladys userId of current session. + * @returns {Object} List of withings devices. + * @example + * getDevices('rzede-jlkunv-rze23f-csdcs-fsdfsd') + */ +function getDevices(userId) { + return this.gladys.oauth2Client.executeOauth2HTTPQuery( + this.serviceId, + userId, + 'get', + `${this.withingsUrl}/v2/user`, + 'action=getdevice', + ); +} + +module.exports = { + getDevices, +}; diff --git a/server/services/withings/lib/utils/withings.getMeasures.js b/server/services/withings/lib/utils/withings.getMeasures.js new file mode 100644 index 0000000000..78c7104efb --- /dev/null +++ b/server/services/withings/lib/utils/withings.getMeasures.js @@ -0,0 +1,26 @@ +/** + * @description Returns list of withings measures (after call to withings server). + * + * @param {string} userId - Gladys userId of current session. + * @param {string} params - Additionnal params to get measures (optional). + * @returns {Object} List of withings measures. + * @example + * getMeasures('rzede-jlkunv-rze23f-csdcs-fsdfsd') + */ +function getMeasures(userId, params) { + let actionRequest = 'action=getmeas'; + if (params) { + actionRequest += params; + } + return this.gladys.oauth2Client.executeOauth2HTTPQuery( + this.serviceId, + userId, + 'get', + `${this.withingsUrl}/measure`, + actionRequest, + ); +} + +module.exports = { + getMeasures, +}; diff --git a/server/services/withings/lib/withings.init.js b/server/services/withings/lib/withings.init.js index 0f31cbeb40..954abdb082 100755 --- a/server/services/withings/lib/withings.init.js +++ b/server/services/withings/lib/withings.init.js @@ -267,13 +267,7 @@ async function init(userId) { ); } - const userResult = await this.gladys.oauth2Client.executeOauth2HTTPQuery( - serviceId, - userId, - 'get', - `${this.withingsUrl}/v2/user`, - 'action=getdevice', - ); + const userResult = await this.getDevices(userId); const devices = []; const devicesResult = []; @@ -289,13 +283,7 @@ async function init(userId) { } }); - const measureResult = await this.gladys.oauth2Client.executeOauth2HTTPQuery( - serviceId, - userId, - 'get', - `${this.withingsUrl}/measure`, - 'action=getmeas', - ); + const measureResult = await this.getMeasures(userId, null); const mapOfMeasuresGrpsByWithingsDeviceId = new Map(); await measureResult.data.body.measuregrps.forEach((element) => { diff --git a/server/services/withings/lib/withings.poll.js b/server/services/withings/lib/withings.poll.js index 18d6182cd1..61bec794e5 100755 --- a/server/services/withings/lib/withings.poll.js +++ b/server/services/withings/lib/withings.poll.js @@ -99,12 +99,10 @@ async function poll(device) { if (feature.last_value_changed) { dateToPoll = feature.last_value_changed.getTime(); } - const measureResult = await this.gladys.oauth2Client.executeOauth2HTTPQuery( - this.serviceId, + + const measureResult = await this.getMeasures( user.id, - 'get', - `${this.withingsUrl}/measure`, - `action=getmeas&meastype=${withingsType}&category=1&lastupdate=${dateToPoll / 1000 + 1}`, + `&meastype=${withingsType}&category=1&lastupdate=${dateToPoll / 1000 + 1}`, ); if (measureResult.data.body.measuregrps) { @@ -134,14 +132,9 @@ async function poll(device) { } if (withingsType === -1) { - const userResult = await this.gladys.oauth2Client.executeOauth2HTTPQuery( - this.serviceId, - user.id, - 'get', - `${this.withingsUrl}/v2/user`, - 'action=getdevice', - ); + const userResult = await this.getDevices(user.id); + // Update battery level if (userResult.data && userResult.data.body && userResult.data.body.devices) { await Promise.each(userResult.data.body.devices, async (element) => { logger.debug('withingsDeviceId: ', withingsDeviceId); diff --git a/server/test/services/withings/lib/withings.init.test.js b/server/test/services/withings/lib/withings.init.test.js index 91896c52f9..f075435c30 100644 --- a/server/test/services/withings/lib/withings.init.test.js +++ b/server/test/services/withings/lib/withings.init.test.js @@ -1,13 +1,16 @@ const { assert } = require('chai'); const { OAuth2Server } = require('oauth2-mock-server'); const { fake } = require('sinon'); -const ServerMock = require('mock-http-server'); +const serverHttpWithingsMock = require('./withings.serverMock.test'); const OAuth2Manager = require('../../../../lib/oauth2-client/index'); const WithingsHandler = require('../../../../services/withings/lib'); -const { OAUTH2 } = require('../../../../utils/constants.js'); +const serverHost = 'localhost'; +const httpServerPort = 9192; +const oauth2ServerPort = 9292; + +const server = serverHttpWithingsMock.getHttpServer(serverHost, httpServerPort, true); const serverOauth2 = new OAuth2Server(); -const server = new ServerMock({ host: 'localhost', port: 9192 }, null); const gladys = { device: { @@ -37,36 +40,7 @@ const gladys = { event: { emit: fake.returns(null) }, variable: { getValue: function returnValue(key, serviceId) { - switch (key) { - case OAUTH2.VARIABLE.TOKEN_HOST: - return 'http://localhost:9292'; - case OAUTH2.VARIABLE.TOKEN_PATH: - return '/oauth2/token'; - case OAUTH2.VARIABLE.REDIRECT_URI_SUFFIX: - return 'ashboard/integration/health/test/settings'; - case OAUTH2.VARIABLE.AUTHORIZE_HOST: - return 'http://localhost:9292'; - case OAUTH2.VARIABLE.AUTHORIZE_PATH: - return '/oauth2_user/authorize2'; - case OAUTH2.VARIABLE.GRANT_TYPE: - return 'authorization_code'; - case OAUTH2.VARIABLE.INTEGRATION_SCOPE: - return 'user.info,user.metrics,user.activity,user.sleepevents'; - case OAUTH2.VARIABLE.ACCESS_TOKEN: - return ( - '{' + - '"access_token":"b96a86b654acb01c2aeb4d5a39f10ff9c964f8e4",' + - '"expires_in":10800,' + - '"token_type":"Bearer",' + - '"scope":"user.info,user.metrics,user.activity,user.sleepevents",' + - '"refresh_token":"11757dc7fd8d25889f5edfd373d1f525f53d4942",' + - '"userid":"33669966",' + - '"expires_at":"2020-11-13T20:46:50.042Z"' + - '}' - ); - default: - return ''; - } + return serverHttpWithingsMock.getVariable(key, serverHost, oauth2ServerPort); }, setValue: fake.returns(null), destroy: fake.returns(null), @@ -75,232 +49,13 @@ const gladys = { describe('WithingsHandler init', () => { before(function testBefore(done) { - server.on({ - method: 'GET', - path: '/v2/user', - reply: { - status: 200, - headers: { 'content-type': 'application/json' }, - body: JSON.stringify({ - status: 0, - body: { - devices: [ - { - type: 'string', - model: 'string', - model_id: 0, - battery: 'low', - deviceid: 'withingsDevideId', - timezone: 'string', - last_session_date: 0, - }, - { - type: 'string', - model: 'string', - model_id: 0, - battery: 'no', - deviceid: 'withingsDevideId2', - timezone: 'string', - last_session_date: 0, - }, - { - type: 'string', - model: 'string', - model_id: 0, - battery: 'medium', - deviceid: 'withingsDevideId3', - timezone: 'string', - last_session_date: 0, - }, - { - type: 'string', - model: 'string', - model_id: 0, - battery: 'high', - deviceid: 'withingsDevideId4', - timezone: 'string', - last_session_date: 0, - }, - ], - }, - }), - }, - }); - - server.on({ - method: 'GET', - path: '/measure', - reply: { - status: 200, - headers: { 'content-type': 'application/json' }, - body: JSON.stringify({ - status: 0, - body: { - updatetime: 'string', - timezone: 'string', - measuregrps: [ - { - grpid: 0, - attrib: 0, - date: 0, - created: 0, - category: 1, - deviceid: 'withingsDevideId', - measures: [ - { - value: 0, - type: 1, - unit: 0, - algo: 0, - fm: 0, - fw: 0, - }, - { - value: 0, - type: 0, - unit: 0, - algo: 0, - fm: 0, - fw: 0, - }, - { - value: 0, - type: 4, - unit: 0, - algo: 0, - fm: 0, - fw: 0, - }, - { - value: 0, - type: 5, - unit: 0, - algo: 0, - fm: 0, - fw: 0, - }, - { - value: 0, - type: 6, - unit: 0, - algo: 0, - fm: 0, - fw: 0, - }, - { - value: 0, - type: 8, - unit: 0, - algo: 0, - fm: 0, - fw: 0, - }, - { - value: 0, - type: 9, - unit: 0, - algo: 0, - fm: 0, - fw: 0, - }, - { - value: 0, - type: 10, - unit: 0, - algo: 0, - fm: 0, - fw: 0, - }, - { - value: 0, - type: 11, - unit: 0, - algo: 0, - fm: 0, - fw: 0, - }, - { - value: 0, - type: 12, - unit: 0, - algo: 0, - fm: 0, - fw: 0, - }, - { - value: 0, - type: 54, - unit: 0, - algo: 0, - fm: 0, - fw: 0, - }, - { - value: 0, - type: 71, - unit: 0, - algo: 0, - fm: 0, - fw: 0, - }, - { - value: 0, - type: 73, - unit: 0, - algo: 0, - fm: 0, - fw: 0, - }, - { - value: 0, - type: 76, - unit: 0, - algo: 0, - fm: 0, - fw: 0, - }, - { - value: 0, - type: 77, - unit: 0, - algo: 0, - fm: 0, - fw: 0, - }, - { - value: 0, - type: 88, - unit: 0, - algo: 0, - fm: 0, - fw: 0, - }, - { - value: 0, - type: 91, - unit: 0, - algo: 0, - fm: 0, - fw: 0, - }, - ], - comment: 'string', - }, - ], - more: true, - offset: 0, - }, - }), - }, - }); - server.start(done); // Start fake oatuh2 server // Generate a new RSA key and add it to the keystore serverOauth2.issuer.keys.generate('RS256'); // Start the server - serverOauth2.start(9292, 'localhost'); + serverOauth2.start(oauth2ServerPort, serverHost); gladys.oauth2Client = new OAuth2Manager(gladys.variable); }); @@ -309,9 +64,10 @@ describe('WithingsHandler init', () => { server.stop(done); serverOauth2.stop(); }); + it('init devices in Gladys', async () => { const withingsHandler = new WithingsHandler(gladys, '55f177d7-bc35-4560-a1f0-4c58b9e9f2c4'); - withingsHandler.withingsUrl = 'http://localhost:9192'; + withingsHandler.withingsUrl = `http://${serverHost}:${httpServerPort}`; withingsHandler.integrationName = 'test'; const result = await withingsHandler.init('0cd30aef-9c4e-4a23-88e3-3547971296e5'); diff --git a/server/test/services/withings/lib/withings.poll.test.js b/server/test/services/withings/lib/withings.poll.test.js index adea010d7a..218d7b3f44 100644 --- a/server/test/services/withings/lib/withings.poll.test.js +++ b/server/test/services/withings/lib/withings.poll.test.js @@ -1,7 +1,7 @@ -const ServerMock = require('mock-http-server'); const chai = require('chai'); const { OAuth2Server } = require('oauth2-mock-server'); const sinon = require('sinon'); +const serverHttpWithingsMock = require('./withings.serverMock.test'); const WithingsHandler = require('../../../../services/withings/lib'); const { DEVICE_FEATURE_TYPES } = require('../../../../utils/constants'); const { OAUTH2 } = require('../../../../utils/constants.js'); @@ -9,9 +9,12 @@ const OAuth2Manager = require('../../../../lib/oauth2-client/index'); const { assert, fake } = sinon; -const serverOauth2 = new OAuth2Server(); +const serverHost = 'localhost'; +const httpServerPort = 9192; +const oauth2ServerPort = 9292; -const server = new ServerMock({ host: 'localhost', port: 9192 }, null); +const server = serverHttpWithingsMock.getHttpServer(serverHost, httpServerPort, false); +const serverOauth2 = new OAuth2Server(); let countGetValueCall = 0; let countGetValueCallClientId = 0; @@ -20,39 +23,10 @@ const gladys = { variable: { getValue: function returnValue(key, serviceId, userId) { countGetValueCall += 1; - switch (key) { - case OAUTH2.VARIABLE.TOKEN_HOST: - return 'http://localhost:9292'; - case OAUTH2.VARIABLE.TOKEN_PATH: - return '/oauth2/token'; - case OAUTH2.VARIABLE.REDIRECT_URI_SUFFIX: - return 'ashboard/integration/health/test/settings'; - case OAUTH2.VARIABLE.AUTHORIZE_HOST: - return 'http://localhost:9292'; - case OAUTH2.VARIABLE.AUTHORIZE_PATH: - return '/oauth2_user/authorize2'; - case OAUTH2.VARIABLE.GRANT_TYPE: - return 'authorization_code'; - case OAUTH2.VARIABLE.INTEGRATION_SCOPE: - return 'user.info,user.metrics,user.activity,user.sleepevents'; - case OAUTH2.VARIABLE.ACCESS_TOKEN: - return ( - '{' + - '"access_token":"b96a86b654acb01c2aeb4d5a39f10ff9c964f8e4",' + - '"expires_in":10800,' + - '"token_type":"Bearer",' + - '"scope":"user.info,user.metrics,user.activity,user.sleepevents",' + - '"refresh_token":"11757dc7fd8d25889f5edfd373d1f525f53d4942",' + - '"userid":"33669966",' + - '"expires_at":"2020-11-13T20:46:50.042Z"' + - '}' - ); - case OAUTH2.VARIABLE.CLIENT_ID: - countGetValueCallClientId += 1; - return 'fake_client_id'; - default: - return ''; + if (key === OAUTH2.VARIABLE.CLIENT_ID) { + countGetValueCallClientId += 1; } + return serverHttpWithingsMock.getVariable(key, serverHost, oauth2ServerPort); }, setValue: fake.resolves(null), destroy: fake.returns(null), @@ -70,108 +44,17 @@ const gladys = { describe('WithingsHandler poll', () => { const withingsHandler = new WithingsHandler(gladys, '55f177d7-bc35-4560-a1f0-4c58b9e9f2c4'); - withingsHandler.withingsUrl = 'http://localhost:9192'; + withingsHandler.withingsUrl = `http://${serverHost}:${httpServerPort}`; withingsHandler.integrationName = 'test'; before((done) => { - server.on({ - method: 'GET', - path: '/v2/user', - reply: { - status: 200, - headers: { 'content-type': 'application/json' }, - body: JSON.stringify({ - status: 0, - body: { - devices: [ - { - type: 'string', - model: 'string', - model_id: 0, - battery: 'low', - deviceid: 'withingsDevideId', - timezone: 'string', - last_session_date: 0, - }, - { - type: 'string', - model: 'string', - model_id: 0, - battery: 'no', - deviceid: 'withingsDevideId2', - timezone: 'string', - last_session_date: 0, - }, - { - type: 'string', - model: 'string', - model_id: 0, - battery: 'medium', - deviceid: 'withingsDevideId3', - timezone: 'string', - last_session_date: 0, - }, - { - type: 'string', - model: 'string', - model_id: 0, - battery: 'high', - deviceid: 'withingsDevideId4', - timezone: 'string', - last_session_date: 0, - }, - ], - }, - }), - }, - }); - - server.on({ - method: 'GET', - path: '/measure', - reply: { - status: 200, - headers: { 'content-type': 'application/json' }, - body: JSON.stringify({ - status: 0, - body: { - updatetime: 'string', - timezone: 'string', - measuregrps: [ - { - grpid: 0, - attrib: 0, - date: 0, - created: 0, - category: 1, - deviceid: 'withingsDevideId', - measures: [ - { - value: 0, - type: 1, - unit: 0, - algo: 0, - fm: 0, - fw: 0, - }, - ], - comment: 'string', - }, - ], - more: true, - offset: 0, - }, - }), - }, - }); - server.start(done); // Start fake oatuh2 server // Generate a new RSA key and add it to the keystore serverOauth2.issuer.keys.generate('RS256'); // Start the server - serverOauth2.start(9292, 'localhost'); + serverOauth2.start(oauth2ServerPort, serverHost); gladys.oauth2Client = new OAuth2Manager(gladys.variable); }); diff --git a/server/test/services/withings/lib/withings.serverMock.test.js b/server/test/services/withings/lib/withings.serverMock.test.js new file mode 100644 index 0000000000..3fc21d2069 --- /dev/null +++ b/server/test/services/withings/lib/withings.serverMock.test.js @@ -0,0 +1,190 @@ +const ServerMock = require('mock-http-server'); +const { OAUTH2 } = require('../../../../utils/constants.js'); + +/** + * + * @description Return a json measure with specified type. + * + * @param {number} type - Type of measure need. + * @returns {Object} Json measure. + * @example getWithingsMeasure(1); + */ +function getWithingsMeasure(type) { + return { + value: 0, + type, + unit: 0, + algo: 0, + fm: 0, + fw: 0, + }; +} + +/** + * @description Return a HttpServer corresponding to withings server + * + * @param {string} host - Host of server. + * @param {number} port - Port of server. + * @param {boolean} withHistoricalData - Flag to choose if lot of historical data must be send in get measures. + * @returns {Object} Return HTTP server instance. + * @example serverHttpWithingsMock.getHttpServer('localhost', 9192 ); + */ +function getHttpServer(host, port, withHistoricalData) { + const server = new ServerMock({ host, port }, null); + server.on({ + method: 'GET', + path: '/v2/user', + reply: { + status: 200, + headers: { 'content-type': 'application/json' }, + body: JSON.stringify({ + status: 0, + body: { + devices: [ + { + type: 'string', + model: 'string', + model_id: 0, + battery: 'low', + deviceid: 'withingsDevideId', + timezone: 'string', + last_session_date: 0, + }, + { + type: 'string', + model: 'string', + model_id: 0, + battery: 'no', + deviceid: 'withingsDevideId2', + timezone: 'string', + last_session_date: 0, + }, + { + type: 'string', + model: 'string', + model_id: 0, + battery: 'medium', + deviceid: 'withingsDevideId3', + timezone: 'string', + last_session_date: 0, + }, + { + type: 'string', + model: 'string', + model_id: 0, + battery: 'high', + deviceid: 'withingsDevideId4', + timezone: 'string', + last_session_date: 0, + }, + ], + }, + }), + }, + }); + + let measures; + if (withHistoricalData) { + measures = [ + getWithingsMeasure(1), + getWithingsMeasure(0), + getWithingsMeasure(4), + getWithingsMeasure(5), + getWithingsMeasure(6), + getWithingsMeasure(8), + getWithingsMeasure(9), + getWithingsMeasure(10), + getWithingsMeasure(11), + getWithingsMeasure(12), + getWithingsMeasure(54), + getWithingsMeasure(71), + getWithingsMeasure(73), + getWithingsMeasure(76), + getWithingsMeasure(77), + getWithingsMeasure(88), + getWithingsMeasure(91), + ]; + } else { + measures = [getWithingsMeasure(1)]; + } + server.on({ + method: 'GET', + path: '/measure', + reply: { + status: 200, + headers: { 'content-type': 'application/json' }, + body: JSON.stringify({ + status: 0, + body: { + updatetime: 'string', + timezone: 'string', + measuregrps: [ + { + grpid: 0, + attrib: 0, + date: 0, + created: 0, + category: 1, + deviceid: 'withingsDevideId', + measures, + comment: 'string', + }, + ], + more: true, + offset: 0, + }, + }), + }, + }); + return server; +} + +/** + * + * @description Return a HttpServer corresponding to withings server + * + * @param {string} key - Key of fariable to return. + * @param {string} host - Host of server (oauth2). + * @param {number} port - Port of server (oauth2). + * @returns {string} Value of variable. + * @example serverHttpWithingsMock.getHttgetVariablepServer(OAUTH2.VARIABLE.TOKEN_HOST, 'localhost', 9192 ); + */ +function getVariable(key, host, port) { + switch (key) { + case OAUTH2.VARIABLE.TOKEN_HOST: + return `http://${host}:${port}`; + case OAUTH2.VARIABLE.TOKEN_PATH: + return '/oauth2/token'; + case OAUTH2.VARIABLE.REDIRECT_URI_SUFFIX: + return 'ashboard/integration/health/test/settings'; + case OAUTH2.VARIABLE.AUTHORIZE_HOST: + return `http://${host}:${port}`; + case OAUTH2.VARIABLE.AUTHORIZE_PATH: + return '/oauth2_user/authorize2'; + case OAUTH2.VARIABLE.GRANT_TYPE: + return 'authorization_code'; + case OAUTH2.VARIABLE.INTEGRATION_SCOPE: + return 'user.info,user.metrics,user.activity,user.sleepevents'; + case OAUTH2.VARIABLE.ACCESS_TOKEN: + return ( + '{' + + '"access_token":"b96a86b654acb01c2aeb4d5a39f10ff9c964f8e4",' + + '"expires_in":10800,' + + '"token_type":"Bearer",' + + '"scope":"user.info,user.metrics,user.activity,user.sleepevents",' + + '"refresh_token":"11757dc7fd8d25889f5edfd373d1f525f53d4942",' + + '"userid":"33669966",' + + '"expires_at":"2020-11-13T20:46:50.042Z"' + + '}' + ); + case OAUTH2.VARIABLE.CLIENT_ID: + return 'fake_client_id'; + default: + return ''; + } +} + +module.exports = { + getHttpServer, + getVariable, +}; From fc994f947463e90fe37ecb668af28377b77e8005 Mon Sep 17 00:00:00 2001 From: Euguuu Date: Wed, 30 Mar 2022 23:06:44 +0200 Subject: [PATCH 039/164] fix for review --- server/services/withings/lib/index.js | 8 ++ .../utils/withings.buildBatteryLevelValues.js | 36 ++++++ .../lib/utils/withings.buildMapOfMeasures.js | 24 ++++ .../utils/withings.getAndSaveBatteryLevel.js | 42 +++++++ .../lib/utils/withings.getAndSaveMeasures.js | 45 +++++++ .../lib/utils/withings.matchDeviceInDB.js | 30 +++++ server/services/withings/lib/withings.init.js | 112 +++++++----------- server/services/withings/lib/withings.poll.js | 76 +----------- 8 files changed, 232 insertions(+), 141 deletions(-) create mode 100644 server/services/withings/lib/utils/withings.buildBatteryLevelValues.js create mode 100644 server/services/withings/lib/utils/withings.buildMapOfMeasures.js create mode 100644 server/services/withings/lib/utils/withings.getAndSaveBatteryLevel.js create mode 100644 server/services/withings/lib/utils/withings.getAndSaveMeasures.js create mode 100644 server/services/withings/lib/utils/withings.matchDeviceInDB.js diff --git a/server/services/withings/lib/index.js b/server/services/withings/lib/index.js index 95f7f6e31a..d0a08457ff 100755 --- a/server/services/withings/lib/index.js +++ b/server/services/withings/lib/index.js @@ -6,6 +6,10 @@ const { poll } = require('./withings.poll'); const { postCreate } = require('./withings.postCreate'); const { getDevices } = require('./utils/withings.getDevices'); const { getMeasures } = require('./utils/withings.getMeasures'); +const { matchDeviceInDB } = require('./utils/withings.matchDeviceInDB'); +const { buildMapOfMeasures } = require('./utils/withings.buildMapOfMeasures'); +const { getAndSaveMeasures } = require('./utils/withings.getAndSaveMeasures'); +const { getAndSaveBatteryLevel } = require('./utils/withings.getAndSaveBatteryLevel'); /** * @param {Object} gladys - The gladys object. @@ -29,5 +33,9 @@ WithingsHandler.prototype.poll = poll; WithingsHandler.prototype.postCreate = postCreate; WithingsHandler.prototype.getDevices = getDevices; WithingsHandler.prototype.getMeasures = getMeasures; +WithingsHandler.prototype.matchDeviceInDB = matchDeviceInDB; +WithingsHandler.prototype.buildMapOfMeasures = buildMapOfMeasures; +WithingsHandler.prototype.getAndSaveMeasures = getAndSaveMeasures; +WithingsHandler.prototype.getAndSaveBatteryLevel = getAndSaveBatteryLevel; module.exports = WithingsHandler; diff --git a/server/services/withings/lib/utils/withings.buildBatteryLevelValues.js b/server/services/withings/lib/utils/withings.buildBatteryLevelValues.js new file mode 100644 index 0000000000..c218d67227 --- /dev/null +++ b/server/services/withings/lib/utils/withings.buildBatteryLevelValues.js @@ -0,0 +1,36 @@ +/** + * @description Returns array with battery value(index 0 = numeric value, index 1 = string value). + * + * @param {string} currentBatValueString - String withings value of battery. + * @returns {Array} Array with battery value(index 0 = numeric value, index 1 = string value). + * @example + * buildBatteryLevelValues('low'') + */ +function buildBatteryLevelValues(currentBatValueString) { + let batValueString; + let batValue; + + switch (currentBatValueString) { + case 'low': + batValueString = `${currentBatValueString} (< 30%)`; + batValue = 20; + break; + case 'medium': + batValueString = `${currentBatValueString} (> 30%)`; + batValue = 30; + break; + case 'high': + batValueString = `${currentBatValueString} (> 75%)`; + batValue = 75; + break; + default: + batValueString = `No value`; + batValue = 0; + break; + } + return [batValue, batValueString]; +} + +module.exports = { + buildBatteryLevelValues, +}; diff --git a/server/services/withings/lib/utils/withings.buildMapOfMeasures.js b/server/services/withings/lib/utils/withings.buildMapOfMeasures.js new file mode 100644 index 0000000000..e8556b8adc --- /dev/null +++ b/server/services/withings/lib/utils/withings.buildMapOfMeasures.js @@ -0,0 +1,24 @@ +/** + * @description Returns map of measures by withings device id. + * + * @param {Object} measuregrps - List of withings measures. + * @returns {Object} Map of measures by withings device id. + * @example + * buildMapOfMeasures(measuregrps) + */ +function buildMapOfMeasures(measuregrps) { + const mapOfMeasuresGrpsByWithingsDeviceId = new Map(); + measuregrps.forEach((element) => { + if (element) { + // Build map of measuregrps by withings device id + const measureList = mapOfMeasuresGrpsByWithingsDeviceId.get(element.deviceid) || []; + measureList.push(element); + mapOfMeasuresGrpsByWithingsDeviceId.set(element.deviceid, measureList); + } + }); + return mapOfMeasuresGrpsByWithingsDeviceId; +} + +module.exports = { + buildMapOfMeasures, +}; diff --git a/server/services/withings/lib/utils/withings.getAndSaveBatteryLevel.js b/server/services/withings/lib/utils/withings.getAndSaveBatteryLevel.js new file mode 100644 index 0000000000..52e791de6e --- /dev/null +++ b/server/services/withings/lib/utils/withings.getAndSaveBatteryLevel.js @@ -0,0 +1,42 @@ +const Promise = require('bluebird'); +const logger = require('../../../../utils/logger'); +const withingsBatUtils = require('./withings.buildBatteryLevelValues'); + +/** + * @description Call Withings WS to get measures of feature and save it. + * + * @param {Object} featureBattery - Withings battery feature to poll. + * @param {Object} withingsDeviceId - Withings device id type to poll. + * @param {Object} userId - Current user id. + * @example + * getAndSaveBatteryLevel(feature, 1459, 'rezrz-uiop-mlljl-jklmj-ji34k') + */ +async function getAndSaveBatteryLevel(featureBattery, withingsDeviceId, userId) { + const userResult = await this.getDevices(userId); + + // Update battery level + if (userResult.data && userResult.data.body && userResult.data.body.devices) { + await Promise.each(userResult.data.body.devices, async (element) => { + logger.debug('withingsDeviceId: ', withingsDeviceId); + logger.debug('featureBattery: ', featureBattery); + + if (element.deviceid === withingsDeviceId) { + const currentDate = new Date(); + + const batteryValues = withingsBatUtils.buildBatteryLevelValues(element.battery); + const currentBatValue = batteryValues[0]; + const currentBatValueString = batteryValues[1]; + + featureBattery.last_value_changed = currentDate; + featureBattery.last_value = currentBatValue; + featureBattery.last_value_string = currentBatValueString; + + await this.gladys.device.saveHistoricalState(featureBattery, currentBatValue, currentDate); + } + }); + } +} + +module.exports = { + getAndSaveBatteryLevel, +}; diff --git a/server/services/withings/lib/utils/withings.getAndSaveMeasures.js b/server/services/withings/lib/utils/withings.getAndSaveMeasures.js new file mode 100644 index 0000000000..e2a56645e3 --- /dev/null +++ b/server/services/withings/lib/utils/withings.getAndSaveMeasures.js @@ -0,0 +1,45 @@ +const Promise = require('bluebird'); + +/** + * @description Call Withings WS to get measures of feature and save it. + * + * @param {Object} feature - Withings feature to poll. + * @param {Object} withingsType - Withings measure type to poll. + * @param {Object} userId - Current user id. + * @example + * getAndSaveMeasures(feature, 1, 'rezrz-uiop-mlljl-jklmj-ji34k') + */ +async function getAndSaveMeasures(feature, withingsType, userId) { + // Fix date to start poll in tmestamp + let dateToPoll = 0; + if (feature.last_value_changed) { + dateToPoll = feature.last_value_changed.getTime(); + } + + const measureResult = await this.getMeasures( + userId, + `&meastype=${withingsType}&category=1&lastupdate=${dateToPoll / 1000 + 1}`, + ); + + if (measureResult.data.body.measuregrps) { + const mapOfMeasuresGrpsByWithingsDeviceId = this.buildMapOfMeasures(measureResult.data.body.measuregrps); + + await Promise.each(mapOfMeasuresGrpsByWithingsDeviceId, async (value) => { + const key = value[0]; + const valueList = value[1]; + await Promise.each(valueList, async (currentGroup) => { + if (key) { + await Promise.each(currentGroup.measures, async (measure) => { + const historicalValueState = (measure.value * 10 ** measure.unit).toFixed(2); + const createdAt = new Date(currentGroup.created * 1000); + await this.gladys.device.saveHistoricalState(feature, historicalValueState, createdAt); + }); + } + }); + }); + } +} + +module.exports = { + getAndSaveMeasures, +}; diff --git a/server/services/withings/lib/utils/withings.matchDeviceInDB.js b/server/services/withings/lib/utils/withings.matchDeviceInDB.js new file mode 100644 index 0000000000..496bb51424 --- /dev/null +++ b/server/services/withings/lib/utils/withings.matchDeviceInDB.js @@ -0,0 +1,30 @@ +const withingsDeviceIdName = 'WITHINGS_DEVICE_ID'; + +/** + * @description Returns the gladys device match with withings device. + * + * @param {Object} withingsDevice - Withings device to match. + * @returns {Object} Withings device in DB. + * @example + * matchDeviceInDB('rzede-jlkunv-rze23f-csdcs-fsdfsd') + */ +async function matchDeviceInDB(withingsDevice) { + let matchDevice; + // get device in db to know device already connected + const devicesInDB = await this.gladys.device.get({ service: 'withings' }); + if (devicesInDB) { + const currentDeviceParam = withingsDevice.params.filter((element) => element.name === withingsDeviceIdName); + if (currentDeviceParam && currentDeviceParam.length > 0) { + const currentWithingsDeviceId = currentDeviceParam[0].value; + + matchDevice = devicesInDB.find((element) => + element.params.find((param) => param.name === withingsDeviceIdName && param.value === currentWithingsDeviceId), + ); + } + } + return matchDevice; +} + +module.exports = { + matchDeviceInDB, +}; diff --git a/server/services/withings/lib/withings.init.js b/server/services/withings/lib/withings.init.js index 954abdb082..826257f194 100755 --- a/server/services/withings/lib/withings.init.js +++ b/server/services/withings/lib/withings.init.js @@ -1,6 +1,8 @@ const uuid = require('uuid'); +const Promise = require('bluebird'); const { OAUTH2 } = require('../../../utils/constants.js'); const logger = require('../../../utils/logger'); +const withingsBatUtils = require('./utils/withings.buildBatteryLevelValues'); const { DEVICE_FEATURE_CATEGORIES, DEVICE_POLL_FREQUENCIES, @@ -36,26 +38,11 @@ function buildNewDevice(withingsDevice, serviceId) { // Feature allow in each device = battery const uniqueBatFeatureId = uuid.v4(); const currentDate = new Date(); - let currentBatValueString = `${withingsDevice.battery}`; - let currentBatValue = 100; - switch (currentBatValueString) { - case 'low': - currentBatValueString = `${currentBatValueString} (< 30%)`; - currentBatValue = 20; - break; - case 'medium': - currentBatValueString = `${currentBatValueString} (> 30%)`; - currentBatValue = 30; - break; - case 'high': - currentBatValueString = `${currentBatValueString} (> 75%)`; - currentBatValue = 75; - break; - default: - currentBatValueString = `No value`; - currentBatValue = 0; - break; - } + + const batteryValues = withingsBatUtils.buildBatteryLevelValues(withingsDevice.battery); + const currentBatValue = batteryValues[0]; + const currentBatValueString = batteryValues[1]; + newFeatures.push({ id: uniqueBatFeatureId, name: 'deviceFeatureCategory.battery.shortCategoryName', @@ -285,61 +272,52 @@ async function init(userId) { const measureResult = await this.getMeasures(userId, null); - const mapOfMeasuresGrpsByWithingsDeviceId = new Map(); - await measureResult.data.body.measuregrps.forEach((element) => { - if (element) { - // Build map of measuregrps by withings device id - const measureList = mapOfMeasuresGrpsByWithingsDeviceId.get(element.deviceid) || []; - measureList.push(element); - mapOfMeasuresGrpsByWithingsDeviceId.set(element.deviceid, measureList); - } - }); + const mapOfMeasuresGrpsByWithingsDeviceId = this.buildMapOfMeasures(measureResult.data.body.measuregrps); + // Build map of feature (based on withings measures) const mapOfFeatureByWithingsDeviceId = new Map(); - await mapOfMeasuresGrpsByWithingsDeviceId.forEach((value, key) => { - value.forEach((currentGroup) => { - if (key) { - const currentFeatures = mapOfFeatureByWithingsDeviceId.get(key); - const features = buildFeature(currentGroup, mapOfDeviceByWithingsDeviceId.get(key), currentFeatures); - if (features) { - mapOfFeatureByWithingsDeviceId.set(key, features); + await Promise.map( + mapOfMeasuresGrpsByWithingsDeviceId.entries(), + async (entrie) => { + const key = entrie[0]; + const value = entrie[1]; + value.forEach((currentGroup) => { + if (key) { + const currentFeatures = mapOfFeatureByWithingsDeviceId.get(key); + const features = buildFeature(currentGroup, mapOfDeviceByWithingsDeviceId.get(key), currentFeatures); + if (features) { + mapOfFeatureByWithingsDeviceId.set(key, features); + } } - } - }); - }); + }); + }, + { concurrency: 2 }, + ); - // get device in db to know device already connected - const { gladys } = this; - const devicesInDB = await gladys.device.get({ service: 'withings' }); - // Save device with feature - await mapOfDeviceByWithingsDeviceId.forEach((value, key) => { - if (key) { - let matchDeviceInDB; - if (devicesInDB) { - const currentDeviceParam = value.params.filter((element) => element.name === withingsDeviceIdName); - if (currentDeviceParam && currentDeviceParam.length > 0) { - const currentWithingsDeviceId = currentDeviceParam[0].value; + // Build list of device to display + await Promise.map( + mapOfDeviceByWithingsDeviceId.entries(), + async (entrie) => { + const key = entrie[0]; + const value = entrie[1]; + if (key) { + const matchDeviceInDB = await this.matchDeviceInDB(value); - matchDeviceInDB = devicesInDB.find((element) => - element.params.find( - (param) => param.name === withingsDeviceIdName && param.value === currentWithingsDeviceId, - ), - ); + if (matchDeviceInDB) { + matchDeviceInDB.inDB = true; + devicesResult.push(matchDeviceInDB); + } else { + const arrayOfFeatures = mapOfFeatureByWithingsDeviceId.get(key); + // Assign features to device + value.features = value.features.concat(arrayOfFeatures); + devicesResult.push(value); } } - - if (matchDeviceInDB) { - matchDeviceInDB.inDB = true; - devicesResult.push(matchDeviceInDB); - } else { - const arrayOfFeatures = mapOfFeatureByWithingsDeviceId.get(key); - // Assign features to device - value.features = value.features.concat(arrayOfFeatures); - devicesResult.push(value); - } - } - }); + }, + { concurrency: 2 }, + ); } + return devicesResult; } diff --git a/server/services/withings/lib/withings.poll.js b/server/services/withings/lib/withings.poll.js index 61bec794e5..34d0d9e37d 100755 --- a/server/services/withings/lib/withings.poll.js +++ b/server/services/withings/lib/withings.poll.js @@ -94,83 +94,11 @@ async function poll(device) { } if (withingsType > 0) { - // Fix date to start poll in tmestamp - let dateToPoll = 0; - if (feature.last_value_changed) { - dateToPoll = feature.last_value_changed.getTime(); - } - - const measureResult = await this.getMeasures( - user.id, - `&meastype=${withingsType}&category=1&lastupdate=${dateToPoll / 1000 + 1}`, - ); - - if (measureResult.data.body.measuregrps) { - const mapOfMeasuresGrpsByWithingsDeviceId = new Map(); - measureResult.data.body.measuregrps.forEach((element) => { - if (element) { - // Build map of measuregrps by withings device id - const measureList = mapOfMeasuresGrpsByWithingsDeviceId.get(element.deviceid) || []; - measureList.push(element); - mapOfMeasuresGrpsByWithingsDeviceId.set(element.deviceid, measureList); - } - }); - await Promise.each(mapOfMeasuresGrpsByWithingsDeviceId, async (value) => { - const key = value[0]; - const valueList = value[1]; - await Promise.each(valueList, async (currentGroup) => { - if (key) { - await Promise.each(currentGroup.measures, async (measure) => { - const historicalValueState = (measure.value * 10 ** measure.unit).toFixed(2); - const createdAt = new Date(currentGroup.created * 1000); - await this.gladys.device.saveHistoricalState(feature, historicalValueState, createdAt); - }); - } - }); - }); - } + await this.getAndSaveMeasures(feature, withingsType, user.id); } if (withingsType === -1) { - const userResult = await this.getDevices(user.id); - - // Update battery level - if (userResult.data && userResult.data.body && userResult.data.body.devices) { - await Promise.each(userResult.data.body.devices, async (element) => { - logger.debug('withingsDeviceId: ', withingsDeviceId); - logger.debug('featureBattery: ', featureBattery); - - if (element.deviceid === withingsDeviceId) { - const currentDate = new Date(); - let currentBatValueString; - let currentBatValue = 100; - switch (element.battery) { - case 'low': - currentBatValueString = `${element.battery} (< 30%)`; - currentBatValue = 20; - break; - case 'medium': - currentBatValueString = `${element.battery} (> 30%)`; - currentBatValue = 30; - break; - case 'high': - currentBatValueString = `${element.battery} (> 75%)`; - currentBatValue = 75; - break; - default: - currentBatValueString = `No value`; - currentBatValue = 0; - break; - } - - featureBattery.last_value_changed = currentDate; - featureBattery.last_value = currentBatValue; - featureBattery.last_value_string = currentBatValueString; - - await this.gladys.device.saveHistoricalState(featureBattery, currentBatValue, currentDate); - } - }); - } + await this.getAndSaveBatteryLevel(featureBattery, withingsDeviceId, user.id); } }); } From 039f17949a2db6c57d7513023f23f49ef2b1384b Mon Sep 17 00:00:00 2001 From: Euguuu Date: Wed, 6 Apr 2022 21:07:37 +0200 Subject: [PATCH 040/164] fix for review --- server/services/withings/lib/withings.init.js | 4 +- .../device/device.saveHistoricalState.test.js | 25 +++++++++- .../withings/lib/withings.init.test.js | 30 +++++++++--- .../withings/lib/withings.postCreate.test.js | 48 +++++++++++++++++++ .../withings/lib/withings.serverMock.test.js | 2 + 5 files changed, 99 insertions(+), 10 deletions(-) create mode 100644 server/test/services/withings/lib/withings.postCreate.test.js diff --git a/server/services/withings/lib/withings.init.js b/server/services/withings/lib/withings.init.js index 826257f194..15f99c3f9a 100755 --- a/server/services/withings/lib/withings.init.js +++ b/server/services/withings/lib/withings.init.js @@ -291,7 +291,7 @@ async function init(userId) { } }); }, - { concurrency: 2 }, + { concurrency: 0 }, ); // Build list of device to display @@ -314,7 +314,7 @@ async function init(userId) { } } }, - { concurrency: 2 }, + { concurrency: 0 }, ); } diff --git a/server/test/lib/device/device.saveHistoricalState.test.js b/server/test/lib/device/device.saveHistoricalState.test.js index 30e93369ff..077251e6fc 100644 --- a/server/test/lib/device/device.saveHistoricalState.test.js +++ b/server/test/lib/device/device.saveHistoricalState.test.js @@ -1,7 +1,8 @@ const EventEmitter = require('events'); -const { assert } = require('chai'); +const { assert, expect } = require('chai'); const Device = require('../../../lib/device'); const StateManager = require('../../../lib/state'); +const { BadParameters } = require('../../../utils/coreErrors'); const event = new EventEmitter(); @@ -46,4 +47,26 @@ describe('Device saveHistoricalState', () => { return assert.equal(deviceFeature.last_value_changed, updateDate); }); + + it('should not save NaN as state', async () => { + const stateManager = new StateManager(event); + const device = new Device(event, {}, stateManager); + + const nanValue = parseInt('NaN value', 10); + + try { + await device.saveHistoricalState( + { + id: 'ca91dfdf-55b2-4cf8-a58b-99c0fbf6f5e4', + selector: 'test-device-feature', + has_feedback: false, + keep_history: false, + }, + nanValue, + ); + assert.fail('NaN device state should fail'); + } catch (e) { + expect(e).instanceOf(BadParameters); + } + }); }); diff --git a/server/test/services/withings/lib/withings.init.test.js b/server/test/services/withings/lib/withings.init.test.js index f075435c30..bf9242af77 100644 --- a/server/test/services/withings/lib/withings.init.test.js +++ b/server/test/services/withings/lib/withings.init.test.js @@ -1,6 +1,6 @@ const { assert } = require('chai'); const { OAuth2Server } = require('oauth2-mock-server'); -const { fake } = require('sinon'); +const sinon = require('sinon'); const serverHttpWithingsMock = require('./withings.serverMock.test'); const OAuth2Manager = require('../../../../lib/oauth2-client/index'); const WithingsHandler = require('../../../../services/withings/lib'); @@ -14,8 +14,8 @@ const serverOauth2 = new OAuth2Server(); const gladys = { device: { - create: fake.returns(null), - destroyByServiceId: fake.returns(null), + create: sinon.fake.returns(null), + destroyByServiceId: sinon.fake.returns(null), get: function getFakeDevice() { return [ { @@ -35,15 +35,15 @@ const gladys = { }, }, user: { - get: fake.returns([{ id: '0cd30aef-9c4e-4a23-88e3-3547971296e5' }]), + get: sinon.fake.returns([{ id: '0cd30aef-9c4e-4a23-88e3-3547971296e5' }]), }, - event: { emit: fake.returns(null) }, + event: { emit: sinon.fake.returns(null) }, variable: { getValue: function returnValue(key, serviceId) { return serverHttpWithingsMock.getVariable(key, serverHost, oauth2ServerPort); }, - setValue: fake.returns(null), - destroy: fake.returns(null), + setValue: sinon.fake.returns(null), + destroy: sinon.fake.returns(null), }, }; @@ -108,4 +108,20 @@ describe('WithingsHandler init', () => { await assert.equal(paramCreated[0].name, 'WITHINGS_DEVICE_ID'); await assert.equal(paramCreated[0].value, 'withingsDevideId4'); }); + + it('init devices without variable in db', async () => { + gladys.variable.getValue = function returnValue(key, serviceId) { + return null; + }; + const withingsHandler = new WithingsHandler(gladys, '55f177d7-bc35-4560-a1f0-4c58b9e9f2c4'); + withingsHandler.withingsUrl = `http://${serverHost}:${httpServerPort}`; + withingsHandler.integrationName = 'test'; + + try { + await withingsHandler.init('0cd30aef-9c4e-4a23-88e3-3547971296e5'); + sinon.assert.fail(); + } catch (e) { + sinon.assert.callCount(gladys.variable.setValue, 8); + } + }); }); diff --git a/server/test/services/withings/lib/withings.postCreate.test.js b/server/test/services/withings/lib/withings.postCreate.test.js new file mode 100644 index 0000000000..be1b8a917a --- /dev/null +++ b/server/test/services/withings/lib/withings.postCreate.test.js @@ -0,0 +1,48 @@ +const sinon = require('sinon'); +const WithingsHandler = require('../../../../services/withings/lib'); + +const { assert, fake } = sinon; + +const gladys = { + variable: { + getValue: fake.returns(null), + setValue: fake.resolves(null), + destroy: fake.returns(null), + }, + device: { + create: fake.resolves(null), + destroyByServiceId: fake.resolves(null), + saveHistoricalState: fake.resolves(null), + }, + user: { + get: fake.resolves([{ id: '0cd30aef-9c4e-4a23-88e3-3547971296e5' }]), + }, + event: { emit: fake.returns(null) }, +}; + +describe('WithingsHandler poll', () => { + const withingsHandler = new WithingsHandler(gladys, '55f177d7-bc35-4560-a1f0-4c58b9e9f2c4'); + + it('should poll devices', async () => { + const deviceToPoll = { + id: 'gdfgdfgd-7207-4e55-b893-gfdgdfgkjliu', + name: 'Withings - string', + model: 'string', + poll_frequency: 86400000, + selector: 'withings-string-9f66c962-7207-4e55-b893-712642f5e043', + service_id: '55f177d7-bc35-4560-a1f0-4c58b9e9f2c4', + should_poll: true, + external_id: '9f66c962-7207-4e55-b893-712642f5e043', + params: [ + { + name: 'WITHINGS_DEVICE_ID', + value: 'withingsDevideId', + }, + ], + }; + + await withingsHandler.postCreate(deviceToPoll); + // No call because server is not on + assert.notCalled(gladys.device.saveHistoricalState); + }); +}); diff --git a/server/test/services/withings/lib/withings.serverMock.test.js b/server/test/services/withings/lib/withings.serverMock.test.js index 3fc21d2069..3180680b8f 100644 --- a/server/test/services/withings/lib/withings.serverMock.test.js +++ b/server/test/services/withings/lib/withings.serverMock.test.js @@ -177,6 +177,8 @@ function getVariable(key, host, port) { '"expires_at":"2020-11-13T20:46:50.042Z"' + '}' ); + case OAUTH2.VARIABLE.ADDITIONAL_ACCESS_TOKEN_REQUEST_ACTION_PARAM: + return 'requesttoken'; case OAUTH2.VARIABLE.CLIENT_ID: return 'fake_client_id'; default: From 9c00a9db343577893073dd42b7ce951452bf6d6f Mon Sep 17 00:00:00 2001 From: euguuu Date: Sun, 10 Apr 2022 15:22:44 +0200 Subject: [PATCH 041/164] Create docker-image.yml --- .github/workflows/docker-image.yml | 92 ++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 .github/workflows/docker-image.yml diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml new file mode 100644 index 0000000000..c025ebdd04 --- /dev/null +++ b/.github/workflows/docker-image.yml @@ -0,0 +1,92 @@ +name: Docker Image CI + + +on: + workflow_dispatch: + inputs: + tag: + description: 'Docker Tag to build' + required: true + default: 'dev' + platforms: + description: 'Docker platform to build' + required: true + default: 'linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64/v8' + +jobs: + build-front: + name: Front build + runs-on: ubuntu-20.04 + steps: + - name: ⬇️ Checkout code + uses: actions/checkout@v2 + - name: 💽 Setup nodejs + uses: actions/setup-node@v2 + with: + node-version: '14' + - name: 📇 Use npm cache + uses: actions/cache@v2 + with: + path: ~/.npm + key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-node- + - name: 📦 Install NPM front packages + working-directory: ./front + run: | + npm ci + - name: 🏗️ Build front + working-directory: ./front + run: | + npm run build + - name: ↗️ Upload build artifact + uses: actions/upload-artifact@v2 + with: + name: static + path: front/build + docker: + needs: build-front + name: Docker magic ! + runs-on: ubuntu-20.04 + env: + DOCKERHUB_USER: ${{secrets.DOCKERHUB_USER}} + DOCKERHUB_PASSWORD: ${{secrets.DOCKERHUB_PASSWORD}} + DOCKERHUB_REPO: ${{secrets.DOCKERHUB_REPO}} + steps: + - name: ⬇️ Checkout code + uses: actions/checkout@v2 + - name: 🐳 Docker meta + id: docker_meta + uses: docker/metadata-action@v3 + with: + images: ${{ secrets.DOCKERHUB_REPO }} + labels: | + org.opencontainers.image.title=Gladys Assistant Preprod Image + - name: 💽 Set up QEMU + uses: docker/setup-qemu-action@v1 + - name: 🐳 Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v1 + with: + version: latest + - name: ↙️ Download build artifact + uses: actions/download-artifact@v2 + with: + name: static + path: static + - name: 🔑 Login to DockerHub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKERHUB_USER }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} + - name: 🐳 Build and push + uses: docker/build-push-action@v2 + with: + context: . + file: ./docker/Dockerfile.buildx + platforms: ${{ github.event.inputs.platforms }} + push: true + pull: true + tags: ${{ secrets.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }} + cache-from: type=registry,ref=${{ secrets.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }} + cache-to: type=inline From 83fee7c332cf5494f83c10dbfb1a6912d292ad81 Mon Sep 17 00:00:00 2001 From: euguuu Date: Sun, 10 Apr 2022 15:23:26 +0200 Subject: [PATCH 042/164] Delete docker-image.yml --- .github/workflows/docker-image.yml | 92 ------------------------------ 1 file changed, 92 deletions(-) delete mode 100644 .github/workflows/docker-image.yml diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml deleted file mode 100644 index c025ebdd04..0000000000 --- a/.github/workflows/docker-image.yml +++ /dev/null @@ -1,92 +0,0 @@ -name: Docker Image CI - - -on: - workflow_dispatch: - inputs: - tag: - description: 'Docker Tag to build' - required: true - default: 'dev' - platforms: - description: 'Docker platform to build' - required: true - default: 'linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64/v8' - -jobs: - build-front: - name: Front build - runs-on: ubuntu-20.04 - steps: - - name: ⬇️ Checkout code - uses: actions/checkout@v2 - - name: 💽 Setup nodejs - uses: actions/setup-node@v2 - with: - node-version: '14' - - name: 📇 Use npm cache - uses: actions/cache@v2 - with: - path: ~/.npm - key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} - restore-keys: | - ${{ runner.os }}-node- - - name: 📦 Install NPM front packages - working-directory: ./front - run: | - npm ci - - name: 🏗️ Build front - working-directory: ./front - run: | - npm run build - - name: ↗️ Upload build artifact - uses: actions/upload-artifact@v2 - with: - name: static - path: front/build - docker: - needs: build-front - name: Docker magic ! - runs-on: ubuntu-20.04 - env: - DOCKERHUB_USER: ${{secrets.DOCKERHUB_USER}} - DOCKERHUB_PASSWORD: ${{secrets.DOCKERHUB_PASSWORD}} - DOCKERHUB_REPO: ${{secrets.DOCKERHUB_REPO}} - steps: - - name: ⬇️ Checkout code - uses: actions/checkout@v2 - - name: 🐳 Docker meta - id: docker_meta - uses: docker/metadata-action@v3 - with: - images: ${{ secrets.DOCKERHUB_REPO }} - labels: | - org.opencontainers.image.title=Gladys Assistant Preprod Image - - name: 💽 Set up QEMU - uses: docker/setup-qemu-action@v1 - - name: 🐳 Set up Docker Buildx - id: buildx - uses: docker/setup-buildx-action@v1 - with: - version: latest - - name: ↙️ Download build artifact - uses: actions/download-artifact@v2 - with: - name: static - path: static - - name: 🔑 Login to DockerHub - uses: docker/login-action@v1 - with: - username: ${{ secrets.DOCKERHUB_USER }} - password: ${{ secrets.DOCKERHUB_PASSWORD }} - - name: 🐳 Build and push - uses: docker/build-push-action@v2 - with: - context: . - file: ./docker/Dockerfile.buildx - platforms: ${{ github.event.inputs.platforms }} - push: true - pull: true - tags: ${{ secrets.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }} - cache-from: type=registry,ref=${{ secrets.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }} - cache-to: type=inline From 0571d2cb7fbc6b52e5bedd71372e8ff43687a748 Mon Sep 17 00:00:00 2001 From: Euguuu Date: Sun, 10 Apr 2022 18:41:19 +0200 Subject: [PATCH 043/164] fix for review --- .../withings/settings/WithingsSettings.js | 30 ++++++-- front/cypress/plugins/index.js | 2 +- front/src/components/app.jsx | 1 + front/src/components/oauth2/actions.js | 3 +- front/src/config/integrations/devices.json | 4 ++ front/src/config/integrations/index.js | 6 +- .../all/withings/settings-page/actions.js | 13 ++-- .../all/withings/settings-page/index.js | 2 +- server/api/controllers/oauth2.controller.js | 10 +++ server/lib/oauth2-client/index.js | 4 +- ...th2HTTPQuery.js => oauth2.executeQuery.js} | 8 +-- .../oauth2-client/oauth2.getAccessToken.js | 6 +- server/services/withings/lib/index.js | 1 - .../withings/lib/utils/withings.getDevices.js | 2 +- .../lib/utils/withings.getMeasures.js | 2 +- .../lib/oauth2-client/oauth2manager.test.js | 20 +++--- server/test/services/withings/index.test.js | 68 ++++++------------- server/utils/coreErrors.js | 8 +++ 18 files changed, 101 insertions(+), 89 deletions(-) rename server/lib/oauth2-client/{oauth2.executeOauth2HTTPQuery.js => oauth2.executeQuery.js} (94%) diff --git a/front/cypress/integration/routes/integration/withings/settings/WithingsSettings.js b/front/cypress/integration/routes/integration/withings/settings/WithingsSettings.js index b77cec5603..1d4e758f37 100644 --- a/front/cypress/integration/routes/integration/withings/settings/WithingsSettings.js +++ b/front/cypress/integration/routes/integration/withings/settings/WithingsSettings.js @@ -1,17 +1,33 @@ describe('Withings settings page', () => { + const serverUrl = Cypress.env('serverUrl'); + before(() => { - const serverUrl = Cypress.env('serverUrl'); + let interceptCount = 0; cy.intercept( { - method: 'POST', - url: `${serverUrl}/api/v1/service/oauth2/client/authorization-uri` + method: 'GET', + url: `${serverUrl}/api/v1/service/oauth2/client` }, req => { req.reply(res => { - res.body.authorizationUri = `/dashboard/integration/health/withings/settings`; + if (interceptCount === 0) { + interceptCount += 1; + res.send({}); + } else { + res.send({ client_id: 'FakeClientId' }); + } }); } ); + cy.intercept( + { + method: 'POST', + url: `${serverUrl}/api/v1/service/oauth2/client/authorization-uri` + }, + { + authorizationUri: '/dashboard/integration/health/withings/settings' + } + ); cy.intercept( { method: 'POST', @@ -47,13 +63,13 @@ describe('Withings settings page', () => { // Check redirected to settings page cy.location('pathname').should('eq', '/dashboard/integration/health/withings/settings'); - cy.get('.alert-info').i18n('integration.withings.settings.complete'); + cy.get('.alert-info').i18n('integration.withings.settings.oauth2.complete'); - cy.get('.alert-info').i18n('integration.withings.settings.clientId'); + cy.get('.alert-info').i18n('integration.withings.settings.oauth2.clientId'); cy.get('.alert-info').contains('FakeClientId'); - cy.get('.alert-info').i18n('integration.withings.settings.instructionsToUse'); + cy.get('.alert-info').i18n('integration.withings.settings.oauth2.instructionsToUse'); cy.contains('p', 'oauth2.delete').should('exist'); }); diff --git a/front/cypress/plugins/index.js b/front/cypress/plugins/index.js index 07eaaa6bcf..b56f766353 100644 --- a/front/cypress/plugins/index.js +++ b/front/cypress/plugins/index.js @@ -20,7 +20,7 @@ module.exports = (on, config) => { // `config` is the resolved Cypress config // Load NODE env variables - const language = process.env.LANGUAGE || 'en'; + const language = 'en'; config.env.language = language; const serverUrl = process.env.LOCAL_API_URL || 'http://localhost:1443'; diff --git a/front/src/components/app.jsx b/front/src/components/app.jsx index 6d6247440c..80accc4ef0 100644 --- a/front/src/components/app.jsx +++ b/front/src/components/app.jsx @@ -226,6 +226,7 @@ const AppRouter = connect( + diff --git a/front/src/components/oauth2/actions.js b/front/src/components/oauth2/actions.js index ad602615b3..bc9f9e9958 100755 --- a/front/src/components/oauth2/actions.js +++ b/front/src/components/oauth2/actions.js @@ -21,7 +21,7 @@ const actions = store => ({ service_id: state.currentIntegration.id }); - if (returnGetConfig) { + if (returnGetConfig.client_id) { store.setState({ clientIdInDb: returnGetConfig.client_id, oauth2ErrorMsg: null, @@ -69,7 +69,6 @@ const actions = store => ({ } ); - // TODO : passer le client / secret en param et auver les param que apres ou dans ? const returnValue = await state.httpClient.post('/api/v1/service/oauth2/client/authorization-uri', { integration_name: state.currentIntegration.name, service_id: state.currentIntegration.id diff --git a/front/src/config/integrations/devices.json b/front/src/config/integrations/devices.json index 491d490d08..9b2970ffe8 100644 --- a/front/src/config/integrations/devices.json +++ b/front/src/config/integrations/devices.json @@ -41,5 +41,9 @@ { "key": "eWeLink", "img": "/assets/integrations/cover/ewelink.jpg" + }, + { + "key": "withings", + "img": "/assets/integrations/cover/withings.jpg" } ] diff --git a/front/src/config/integrations/index.js b/front/src/config/integrations/index.js index b4ec9c21be..ec6eb7a76b 100644 --- a/front/src/config/integrations/index.js +++ b/front/src/config/integrations/index.js @@ -6,6 +6,7 @@ import healths from './healths.json'; const integrations = []; const integrationsByType = {}; +const integrationsByKey = {}; const categories = []; const pushAllWithType = (items, type, icon) => { @@ -17,7 +18,10 @@ const pushAllWithType = (items, type, icon) => { items.forEach(item => { const newItem = { ...item, type }; - integrations.push(newItem); + if (!integrationsByKey[item.key]) { + integrations.push(newItem); + integrationsByKey[item.key] = newItem; + } integrationsByType[type].push(newItem); }); }; diff --git a/front/src/routes/integration/all/withings/settings-page/actions.js b/front/src/routes/integration/all/withings/settings-page/actions.js index 88ac9c252a..d5e1976cf5 100755 --- a/front/src/routes/integration/all/withings/settings-page/actions.js +++ b/front/src/routes/integration/all/withings/settings-page/actions.js @@ -23,6 +23,7 @@ const actions = store => ({ const returnGetConfig = await state.httpClient.get('/api/v1/service/oauth2/client', { service_id: state.currentIntegration.id }); + // Case of config found let withingsDevices; if (returnGetConfig.client_id) { @@ -30,13 +31,13 @@ const actions = store => ({ if (result) { withingsDevices = result.withingsDevices; } - - store.setState({ - oauth2GetStatus: RequestStatus.Success, - withingsGetStatus: RequestStatus.Success, - withingsDevices - }); } + + store.setState({ + oauth2GetStatus: RequestStatus.Success, + withingsGetStatus: RequestStatus.Success, + withingsDevices + }); } } catch (e) { store.setState({ diff --git a/front/src/routes/integration/all/withings/settings-page/index.js b/front/src/routes/integration/all/withings/settings-page/index.js index 6f18224d56..614cf6bb96 100755 --- a/front/src/routes/integration/all/withings/settings-page/index.js +++ b/front/src/routes/integration/all/withings/settings-page/index.js @@ -18,8 +18,8 @@ import Device from '../device-page/Device'; class WithingsSettingsPage extends Component { async componentWillMount() { await this.props.getIntegrationByName('withings'); - await this.props.getCurrentConfig(); await this.props.initWithingsDevices(); + await this.props.getCurrentConfig(); } render(props, {}) { diff --git a/server/api/controllers/oauth2.controller.js b/server/api/controllers/oauth2.controller.js index 622e0c61bd..d97bb0db04 100644 --- a/server/api/controllers/oauth2.controller.js +++ b/server/api/controllers/oauth2.controller.js @@ -55,6 +55,16 @@ module.exports = function OAuth2Controller(gladys) { const resultClientId = await gladys.variable.getValue(OAUTH2.VARIABLE.CLIENT_ID, serviceId, req.user.id); + const resultAccessToken = await gladys.variable.getValue(OAUTH2.VARIABLE.ACCESS_TOKEN, serviceId, req.user.id); + + // If access_token does not exist and client_id exist + // => connect process is not complete: remove variable already saved + // => force restart connect process from beginning + if (resultClientId && !resultAccessToken) { + gladys.variable.destroy(OAUTH2.VARIABLE.CLIENT_ID, serviceId, req.user.id); + gladys.variable.destroy(OAUTH2.VARIABLE.CLIENT_SECRET, serviceId, req.user.id); + } + res.json({ client_id: resultClientId, }); diff --git a/server/lib/oauth2-client/index.js b/server/lib/oauth2-client/index.js index f0f3790da4..60be9603cf 100755 --- a/server/lib/oauth2-client/index.js +++ b/server/lib/oauth2-client/index.js @@ -1,4 +1,4 @@ -const { executeOauth2HTTPQuery } = require('./oauth2.executeOauth2HTTPQuery'); +const { executeQuery } = require('./oauth2.executeQuery'); const { deleteClient } = require('./oauth2.deleteClient'); const { getAccessToken } = require('./oauth2.getAccessToken'); const { buildAuthorizationUri } = require('./oauth2.buildAuthorizationUri'); @@ -7,7 +7,7 @@ const OAuth2Manager = function OAuth2Manager(variable) { this.variable = variable; }; -OAuth2Manager.prototype.executeOauth2HTTPQuery = executeOauth2HTTPQuery; +OAuth2Manager.prototype.executeQuery = executeQuery; OAuth2Manager.prototype.deleteClient = deleteClient; OAuth2Manager.prototype.getAccessToken = getAccessToken; OAuth2Manager.prototype.buildAuthorizationUri = buildAuthorizationUri; diff --git a/server/lib/oauth2-client/oauth2.executeOauth2HTTPQuery.js b/server/lib/oauth2-client/oauth2.executeQuery.js similarity index 94% rename from server/lib/oauth2-client/oauth2.executeOauth2HTTPQuery.js rename to server/lib/oauth2-client/oauth2.executeQuery.js index b010e29994..4b2f176456 100644 --- a/server/lib/oauth2-client/oauth2.executeOauth2HTTPQuery.js +++ b/server/lib/oauth2-client/oauth2.executeQuery.js @@ -52,7 +52,7 @@ async function refreshTokenAccess(variable, serviceId, userId) { let authResult = await client.createToken(accessToken); if (authResult.expired()) { - logger.trace('Refresh token is requiered'); + logger.trace('Refresh token is required'); // Refresh token try { const refreshParams = { @@ -100,10 +100,10 @@ async function refreshTokenAccess(variable, serviceId, userId) { * @param {string} queryParams - Array of query params. * @returns {Promise} Result of query . * @example - * oauth2.executeOauth2HTTPQuery('7fdsf4s68r4gfr68f4r63csd7f6f4c3r85', '78v4f3df83g74v1fsd8375f63gvrf5c', 'withings' + * oauth2.executeQuery('7fdsf4s68r4gfr68f4r63csd7f6f4c3r85', '78v4f3df83g74v1fsd8375f63gvrf5c', 'withings' * 'Bearer', 'get', 'http://localhost/apiname',[...]); */ -async function executeOauth2HTTPQuery(serviceId, userId, queryType, queryUrl, queryParams) { +async function executeQuery(serviceId, userId, queryType, queryUrl, queryParams) { // Refresh token access if needed const accessToken = await refreshTokenAccess(this.variable, serviceId, userId); const headerConfig = { @@ -136,5 +136,5 @@ async function executeOauth2HTTPQuery(serviceId, userId, queryType, queryUrl, qu } module.exports = { - executeOauth2HTTPQuery, + executeQuery, }; diff --git a/server/lib/oauth2-client/oauth2.getAccessToken.js b/server/lib/oauth2-client/oauth2.getAccessToken.js index 0c9a7c1fd6..86cf97d8f3 100755 --- a/server/lib/oauth2-client/oauth2.getAccessToken.js +++ b/server/lib/oauth2-client/oauth2.getAccessToken.js @@ -1,7 +1,7 @@ const { AuthorizationCode } = require('simple-oauth2'); const logger = require('../../utils/logger'); const { OAUTH2 } = require('../../utils/constants'); -const { Error500 } = require('../../utils/httpErrors'); +const { BadOauth2ClientResponse } = require('../../utils/coreErrors'); /** * @description Get new AccessToken with client_id and secrei_id of current oauth2 integration. @@ -67,7 +67,7 @@ async function getAccessToken(serviceId, userId, authorizationCode, referer) { if (authResult.token) { if (authResult.token.status && authResult.token.status !== 0) { - throw new Error500('Oauth2 get token response is not with status 0'); + throw new BadOauth2ClientResponse('Oauth2 get token response is not with status 0'); } let jsonResult; @@ -91,7 +91,7 @@ async function getAccessToken(serviceId, userId, authorizationCode, referer) { await this.variable.destroy(OAUTH2.VARIABLE.CLIENT_ID, serviceId, userId); await this.variable.destroy(OAUTH2.VARIABLE.CLIENT_SECRET, serviceId, userId); logger.error(error); - throw new Error500(error); + throw error; } } diff --git a/server/services/withings/lib/index.js b/server/services/withings/lib/index.js index d0a08457ff..170d106052 100755 --- a/server/services/withings/lib/index.js +++ b/server/services/withings/lib/index.js @@ -22,7 +22,6 @@ const WithingsHandler = function WithingsHandler(gladys, serviceId) { this.gladys = gladys; this.serviceId = serviceId; this.withingsUrl = 'https://wbsapi.withings.net'; - this.integrationName = 'withings'; }; // COMMANDS diff --git a/server/services/withings/lib/utils/withings.getDevices.js b/server/services/withings/lib/utils/withings.getDevices.js index e54cdcc139..49f64f3a03 100644 --- a/server/services/withings/lib/utils/withings.getDevices.js +++ b/server/services/withings/lib/utils/withings.getDevices.js @@ -7,7 +7,7 @@ * getDevices('rzede-jlkunv-rze23f-csdcs-fsdfsd') */ function getDevices(userId) { - return this.gladys.oauth2Client.executeOauth2HTTPQuery( + return this.gladys.oauth2Client.executeQuery( this.serviceId, userId, 'get', diff --git a/server/services/withings/lib/utils/withings.getMeasures.js b/server/services/withings/lib/utils/withings.getMeasures.js index 78c7104efb..417bf99829 100644 --- a/server/services/withings/lib/utils/withings.getMeasures.js +++ b/server/services/withings/lib/utils/withings.getMeasures.js @@ -12,7 +12,7 @@ function getMeasures(userId, params) { if (params) { actionRequest += params; } - return this.gladys.oauth2Client.executeOauth2HTTPQuery( + return this.gladys.oauth2Client.executeQuery( this.serviceId, userId, 'get', diff --git a/server/test/lib/oauth2-client/oauth2manager.test.js b/server/test/lib/oauth2-client/oauth2manager.test.js index 8b52962404..2a10c8e124 100755 --- a/server/test/lib/oauth2-client/oauth2manager.test.js +++ b/server/test/lib/oauth2-client/oauth2manager.test.js @@ -50,7 +50,7 @@ const gladys = { }; /** - * Verify componant to implement oauth2manager executeOauth2HTTPQuery + * Verify componant to implement oauth2manager executeQuery */ describe('oauth2manager test', () => { before(async function testBefore() { @@ -67,43 +67,43 @@ describe('oauth2manager test', () => { const manager = new OAuth2Manager(gladys.variable); - it('oauth manager get executeOauth2HTTPQuery test ', async () => { + it('oauth manager get executeQuery test ', async () => { const queryType = 'get'; const queryUrl = `${testUrl}/userinfo`; const queryParams = 'param1=testParam'; - const result = await manager.executeOauth2HTTPQuery(testServiceId, testUserId, queryType, queryUrl, queryParams); + const result = await manager.executeQuery(testServiceId, testUserId, queryType, queryUrl, queryParams); return assert.equal(result.status, '200'); }); - it('oauth manager post executeOauth2HTTPQuery test ', async () => { + it('oauth manager post executeQuery test ', async () => { const queryType = 'post'; const queryUrl = `${testUrl}/revoke`; const queryParams = 'param1=testParam'; logger.debug(manager); - const result = await manager.executeOauth2HTTPQuery(testServiceId, testUserId, queryType, queryUrl, queryParams); + const result = await manager.executeQuery(testServiceId, testUserId, queryType, queryUrl, queryParams); return assert.equal(result.status, '200'); }); - it('oauth manager get error executeOauth2HTTPQuery test ', async () => { + it('oauth manager get error executeQuery test ', async () => { const queryType = 'get'; const queryUrl = `${testUrl}/revoke`; const queryParams = 'param1=testParam'; - const result = await manager.executeOauth2HTTPQuery(testServiceId, testUserId, queryType, queryUrl, queryParams); + const result = await manager.executeQuery(testServiceId, testUserId, queryType, queryUrl, queryParams); return assert.equal(result, null); }); - it('oauth manager get error executeOauth2HTTPQuery test (bad integration name) ', async () => { + it('oauth manager get error executeQuery test (bad integration name) ', async () => { const queryType = 'get'; const queryUrl = `${testUrl}/revoke`; const queryParams = 'param1=testParam'; - const result = await manager.executeOauth2HTTPQuery(testServiceId, 'fakeUserId', queryType, queryUrl, queryParams); + const result = await manager.executeQuery(testServiceId, 'fakeUserId', queryType, queryUrl, queryParams); return assert.equal(result, null); }); @@ -124,7 +124,7 @@ describe('oauth2manager failled test', () => { const queryUrl = `${testUrl}/userinfo`; const queryParams = 'param1=testParam'; - const result = await manager.executeOauth2HTTPQuery(testServiceId, testUserId, queryType, queryUrl, queryParams); + const result = await manager.executeQuery(testServiceId, testUserId, queryType, queryUrl, queryParams); return assert.equal(result, null); }); diff --git a/server/test/services/withings/index.test.js b/server/test/services/withings/index.test.js index 72eee6115a..a8f11377af 100755 --- a/server/test/services/withings/index.test.js +++ b/server/test/services/withings/index.test.js @@ -1,64 +1,34 @@ -const { fake } = require('sinon'); -const { assert } = require('chai'); +const { fake, assert } = require('sinon'); +const { expect } = require('chai'); const proxyquire = require('proxyquire').noCallThru(); -class WithingsHandler {} +const gladys = { + variable: { + getValue: fake.resolves(null), + setValue: fake.resolves(null), + }, +}; -WithingsHandler.prototype.listen = fake.returns(null); - -const WithingsService = proxyquire('../../../services/withings', { - './lib': WithingsHandler, -}); +const WithingsService = proxyquire('../../../services/withings', {}); describe('withingsService', () => { - let countSetValueCount = 0; // let countGetValueCount = 0; - const withingsService = WithingsService( - { - variable: { - getValue: function returnValue(key, serviceId, userId) { - // countGetValueCount += 1; - return ( - '{' + - '"access_token":"b96a86b654acb01c2aeb4d5a39f10ff9c964f8e4",' + - '"expires_in":10800,' + - '"token_type":"Bearer",' + - '"scope":"user.info,user.metrics,user.activity,user.sleepevents",' + - '"refresh_token":"11757dc7fd8d25889f5edfd373d1f525f53d4942",' + - '"userid":"33669966",' + - '"expires_at":"2020-11-13T20:46:50.042Z"' + - '}' - ); - }, - }, - }, - '3ac129d9-a610-42f8-924f-3fe708001b3d', - ); + const withingsService = WithingsService(gladys); + it('should start service', async () => { await withingsService.start(); - assert.equal(countSetValueCount, 0); - // assert.equal(countGetValueCount, 1); + + expect(withingsService).to.have.property('controllers'); + expect(withingsService).to.have.property('device'); + + assert.notCalled(gladys.variable.getValue); + assert.notCalled(gladys.variable.setValue); }); it('should stop service', async () => { await withingsService.stop(); - assert.equal(countSetValueCount, 0); - }); - countSetValueCount = 0; - const withingsServiceWithoutDBVar = WithingsService( - { - variable: { - getValue: fake.returns(null), - setValue: function returnValue(key, serviceId, userId) { - countSetValueCount += 1; - }, - }, - }, - '3ac129d9-a610-42f8-924f-3fe708001b3d', - ); - it('should start service (without db var)', async () => { - await withingsServiceWithoutDBVar.start(); - // assert.equal(countSetValueCount, 8); + assert.notCalled(gladys.variable.getValue); + assert.notCalled(gladys.variable.setValue); }); }); diff --git a/server/utils/coreErrors.js b/server/utils/coreErrors.js index 30204d144d..7b3595033c 100644 --- a/server/utils/coreErrors.js +++ b/server/utils/coreErrors.js @@ -47,6 +47,13 @@ class AbortScene extends Error { } } +class BadOauth2ClientResponse extends Error { + constructor(message) { + super(); + this.message = message; + } +} + module.exports = { PasswordNotMatchingError, NotFoundError, @@ -55,4 +62,5 @@ module.exports = { NoValuesFoundError, PlatformNotCompatible, AbortScene, + BadOauth2ClientResponse, }; From 9e655c8e1d87004d741e8a4e6be44680a1b00673 Mon Sep 17 00:00:00 2001 From: Euguuu Date: Mon, 11 Apr 2022 20:00:31 +0200 Subject: [PATCH 044/164] fix merge error --- server/package-lock.json | 4515 +++++++++++++++++++------------------- 1 file changed, 2258 insertions(+), 2257 deletions(-) diff --git a/server/package-lock.json b/server/package-lock.json index ef3d382801..832dc8c7df 100644 --- a/server/package-lock.json +++ b/server/package-lock.json @@ -9115,2367 +9115,2368 @@ "split-on-first": "^1.0.0", "strict-uri-encode": "^2.0.0" }, - "querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true - }, - "queue": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.1.tgz", - "integrity": "sha512-AJBQabRCCNr9ANq8v77RJEv73DPbn55cdTb+Giq4X0AVnNVZvMHlYp7XlQiN+1npCZj1DuSmaA2hYVUUDgxFDg==", - "requires": { - "inherits": "~2.0.3" - } - }, - "random-bytes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", - "integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs=", - "dev": true - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" - }, - "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" + "querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true }, - "dependencies": { - "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + "queue": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.1.tgz", + "integrity": "sha512-AJBQabRCCNr9ANq8v77RJEv73DPbn55cdTb+Giq4X0AVnNVZvMHlYp7XlQiN+1npCZj1DuSmaA2hYVUUDgxFDg==", + "requires": { + "inherits": "~2.0.3" } - } - }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" }, - "dependencies": { - "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + "random-bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", + "integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs=", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" } - } - }, - "read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", - "dev": true, - "requires": { - "load-json-file": "^2.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^2.0.0" - } - }, - "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=", - "dev": true, - "requires": { - "find-up": "^2.0.0", - "read-pkg": "^2.0.0" - } - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "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==" + } } - } - }, - "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==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dev": true, - "requires": { - "resolve": "^1.1.6" - } - }, - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" - }, - "regexpp": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", - "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", - "dev": true - }, - "registry-auth-token": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", - "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", - "dev": true, - "requires": { - "rc": "^1.2.8" - } - }, - "registry-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", - "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", - "dev": true, - "requires": { - "rc": "^1.2.8" - } - }, - "release-zalgo": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", - "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", - "dev": true, - "requires": { - "es6-error": "^4.0.1" - } - }, - "request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "optional": true, - "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": { - "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==", - "optional": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" } - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "optional": true } - } - }, - "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==", - "dev": true - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "requireindex": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", - "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==", - "dev": true - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", - "dev": true - }, - "requizzle": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.3.tgz", - "integrity": "sha512-YanoyJjykPxGHii0fZP0uUPEXpvqfBDxWV7s6GKAiiOsiqhX6vHNyW3Qzdmqp/iq/ExbhaGbVrjB4ruEVSM4GQ==", - "dev": true, - "requires": { - "lodash": "^4.17.14" - } - }, - "resolve": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", - "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", - "dev": true, - "requires": { - "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==", - "dev": true, - "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==", - "dev": true + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" } - } - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", - "dev": true, - "requires": { - "lowercase-keys": "^1.0.0" - } - }, - "retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==" - }, - "retry-as-promised": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-5.0.0.tgz", - "integrity": "sha512-6S+5LvtTl2ggBumk04hBo/4Uf6fRJUwIgunGZ7CYEBCeufGFW1Pu6ucUf/UskHeWOIsUcLOGLFXPig5tR5V1nA==" - }, - "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" - } - }, - "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-stable-stringify": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.3.1.tgz", - "integrity": "sha512-kYBSfT+troD9cDA85VDnHZ1rpHC50O0g1e6WlGHVCz/g+JS+9WKLj+XwFYyR8UbrZN8ll9HUpDAAddY58MGisg==", - "dev": true - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - }, - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - }, - "secure-remote-password": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/secure-remote-password/-/secure-remote-password-0.3.1.tgz", - "integrity": "sha512-iEp/qLRfb9XYhfKFrPFfdeD7KVreCjhDKSTRP1G1nRIO0Sw1hjnVHD58ymOhiy9Zf5quHbDIbG9cTupji7qwnA==", - "requires": { - "array-buffer-to-hex": "^1.0.0", - "crypto-digest-sync": "^1.0.0", - "crypto-random-hex": "^1.0.0", - "encode-utf8": "^1.0.1", - "hex-to-array-buffer": "^1.1.0", - "jsbn": "^1.1.0", - "pad-start": "^1.0.2" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - }, - "semver-diff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", - "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", - "dev": true, - "requires": { - "semver": "^6.3.0" - } - }, - "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==" + "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=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" } - } - }, - "sequelize": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-6.18.0.tgz", - "integrity": "sha512-x8TW8ovqG8ljZq0Uow1mtMq44hSKPefWEC590R9IWgF2dajEHvKJJpXo1FiRPfj6spOHWOnmOs1Xbb1JPG3Ifg==", - "requires": { - "@types/debug": "^4.1.7", - "@types/validator": "^13.7.1", - "debug": "^4.3.3", - "dottie": "^2.0.2", - "inflection": "^1.13.2", - "lodash": "^4.17.21", - "moment": "^2.29.1", - "moment-timezone": "^0.5.34", - "pg-connection-string": "^2.5.0", - "retry-as-promised": "^5.0.0", - "semver": "^7.3.5", - "sequelize-pool": "^7.1.0", - "toposort-class": "^1.0.1", - "uuid": "^8.3.2", - "validator": "^13.7.0", - "wkx": "^0.5.0" }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "moment": { - "version": "2.29.2", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.2.tgz", - "integrity": "sha512-UgzG4rvxYpN15jgCmVJwac49h9ly9NurikMWGPdVxm8GZD6XjkKPxDTjQQ43gtGgnV3X0cAyWDdP2Wexoquifg==" - }, - "moment-timezone": { - "version": "0.5.34", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.34.tgz", - "integrity": "sha512-3zAEHh2hKUs3EXLESx/wsgw6IQdusOT8Bxm3D9UrHPQR7zlMmzwybC8zHEM1tQ4LJwP7fcxrWr8tuBg05fFCbg==", - "requires": { - "moment": ">= 2.9.0" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "requires": { - "lru-cache": "^6.0.0" + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" } - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" } - } - }, - "sequelize-cli": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/sequelize-cli/-/sequelize-cli-6.4.1.tgz", - "integrity": "sha512-gIzzFitUGUErq6DYd1JDnsmx7z7XcxzRNe4Py3AqeaxcyjpCAZU2BQnsNPGPMKAaXfMtKi/d9Tu4MtLrehVzIQ==", - "requires": { - "cli-color": "^2.0.1", - "fs-extra": "^9.1.0", - "js-beautify": "^1.14.0", - "lodash": "^4.17.21", - "resolve": "^1.20.0", - "umzug": "^2.3.0", - "yargs": "^16.2.0" }, - "dependencies": { - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" - }, - "fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "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==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "requires": { + "resolve": "^1.1.6" + } + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + }, + "regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "dev": true + }, + "registry-auth-token": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", + "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", + "dev": true, + "requires": { + "rc": "^1.2.8" + } + }, + "registry-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", + "dev": true, + "requires": { + "rc": "^1.2.8" + } + }, + "release-zalgo": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", + "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", + "dev": true, + "requires": { + "es6-error": "^4.0.1" + } + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "optional": true, + "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": { + "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==", + "optional": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "optional": true } - }, - "is-core-module": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", - "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", - "requires": { - "has": "^1.0.3" + } + }, + "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==", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "requireindex": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", + "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "requizzle": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.3.tgz", + "integrity": "sha512-YanoyJjykPxGHii0fZP0uUPEXpvqfBDxWV7s6GKAiiOsiqhX6vHNyW3Qzdmqp/iq/ExbhaGbVrjB4ruEVSM4GQ==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "resolve": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", + "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", + "dev": true, + "requires": { + "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==", + "dev": true, + "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==", + "dev": true } - }, - "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" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "dev": true, + "requires": { + "lowercase-keys": "^1.0.0" + } + }, + "retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==" + }, + "retry-as-promised": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-5.0.0.tgz", + "integrity": "sha512-6S+5LvtTl2ggBumk04hBo/4Uf6fRJUwIgunGZ7CYEBCeufGFW1Pu6ucUf/UskHeWOIsUcLOGLFXPig5tR5V1nA==" + }, + "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" + } + }, + "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-stable-stringify": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.3.1.tgz", + "integrity": "sha512-kYBSfT+troD9cDA85VDnHZ1rpHC50O0g1e6WlGHVCz/g+JS+9WKLj+XwFYyR8UbrZN8ll9HUpDAAddY58MGisg==", + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "secure-remote-password": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/secure-remote-password/-/secure-remote-password-0.3.1.tgz", + "integrity": "sha512-iEp/qLRfb9XYhfKFrPFfdeD7KVreCjhDKSTRP1G1nRIO0Sw1hjnVHD58ymOhiy9Zf5quHbDIbG9cTupji7qwnA==", + "requires": { + "array-buffer-to-hex": "^1.0.0", + "crypto-digest-sync": "^1.0.0", + "crypto-random-hex": "^1.0.0", + "encode-utf8": "^1.0.1", + "hex-to-array-buffer": "^1.1.0", + "jsbn": "^1.1.0", + "pad-start": "^1.0.2" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "semver-diff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", + "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "dev": true, + "requires": { + "semver": "^6.3.0" + } + }, + "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==" } - }, - "resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", - "requires": { - "is-core-module": "^2.8.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "sequelize": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-6.18.0.tgz", + "integrity": "sha512-x8TW8ovqG8ljZq0Uow1mtMq44hSKPefWEC590R9IWgF2dajEHvKJJpXo1FiRPfj6spOHWOnmOs1Xbb1JPG3Ifg==", + "requires": { + "@types/debug": "^4.1.7", + "@types/validator": "^13.7.1", + "debug": "^4.3.3", + "dottie": "^2.0.2", + "inflection": "^1.13.2", + "lodash": "^4.17.21", + "moment": "^2.29.1", + "moment-timezone": "^0.5.34", + "pg-connection-string": "^2.5.0", + "retry-as-promised": "^5.0.0", + "semver": "^7.3.5", + "sequelize-pool": "^7.1.0", + "toposort-class": "^1.0.1", + "uuid": "^8.3.2", + "validator": "^13.7.0", + "wkx": "^0.5.0" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "moment": { + "version": "2.29.2", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.2.tgz", + "integrity": "sha512-UgzG4rvxYpN15jgCmVJwac49h9ly9NurikMWGPdVxm8GZD6XjkKPxDTjQQ43gtGgnV3X0cAyWDdP2Wexoquifg==" + }, + "moment-timezone": { + "version": "0.5.34", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.34.tgz", + "integrity": "sha512-3zAEHh2hKUs3EXLESx/wsgw6IQdusOT8Bxm3D9UrHPQR7zlMmzwybC8zHEM1tQ4LJwP7fcxrWr8tuBg05fFCbg==", + "requires": { + "moment": ">= 2.9.0" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" } - }, - "umzug": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/umzug/-/umzug-2.3.0.tgz", - "integrity": "sha512-Z274K+e8goZK8QJxmbRPhl89HPO1K+ORFtm6rySPhFKfKc5GHhqdzD0SGhSWHkzoXasqJuItdhorSvY7/Cgflw==", - "requires": { - "bluebird": "^3.7.2" + } + }, + "sequelize-cli": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/sequelize-cli/-/sequelize-cli-6.4.1.tgz", + "integrity": "sha512-gIzzFitUGUErq6DYd1JDnsmx7z7XcxzRNe4Py3AqeaxcyjpCAZU2BQnsNPGPMKAaXfMtKi/d9Tu4MtLrehVzIQ==", + "requires": { + "cli-color": "^2.0.1", + "fs-extra": "^9.1.0", + "js-beautify": "^1.14.0", + "lodash": "^4.17.21", + "resolve": "^1.20.0", + "umzug": "^2.3.0", + "yargs": "^16.2.0" + }, + "dependencies": { + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "is-core-module": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", + "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "requires": { + "has": "^1.0.3" + } + }, + "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" + } + }, + "resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "requires": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "umzug": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/umzug/-/umzug-2.3.0.tgz", + "integrity": "sha512-Z274K+e8goZK8QJxmbRPhl89HPO1K+ORFtm6rySPhFKfKc5GHhqdzD0SGhSWHkzoXasqJuItdhorSvY7/Cgflw==", + "requires": { + "bluebird": "^3.7.2" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" } - }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" } - } - }, - "sequelize-pool": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/sequelize-pool/-/sequelize-pool-7.1.0.tgz", - "integrity": "sha512-G9c0qlIWQSK29pR/5U2JF5dDQeqqHRragoyahj/Nx4KOOQ3CPPfzxnfqFPCSB7x5UgjOgnZ61nSxz+fjDpRlJg==" - }, - "serialize-javascript": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", - "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "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": "4.1.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-4.1.0.tgz", - "integrity": "sha512-zTEg4HL0RwVrqcWs3ztF+x1vkxfm0lP+MQQFPiMJTKVceBwEV0A569Ou8l9IYQG8jOZdMVI1hGsc0tmeD2o/Lw==", - "requires": { - "is-plain-object": "^2.0.4", - "is-primitive": "^3.0.1" - } - }, - "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" - }, - "shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "requires": { - "kind-of": "^6.0.2" - } - }, - "shebang-command": { - "version": "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==", - "dev": true - }, - "shelljs": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", - "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", - "dev": true, - "requires": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - } - }, - "shx": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/shx/-/shx-0.3.2.tgz", - "integrity": "sha512-aS0mWtW3T2sHAenrSrip2XGv39O9dXIFUqxAEWHEOS1ePtGIBavdPJY1kE2IHl14V/4iCbUiNDPGdyYTtmhSoA==", - "dev": true, - "requires": { - "es6-object-assign": "^1.0.3", - "minimist": "^1.2.0", - "shelljs": "^0.8.1" }, - "dependencies": { - "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true + "sequelize-pool": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/sequelize-pool/-/sequelize-pool-7.1.0.tgz", + "integrity": "sha512-G9c0qlIWQSK29pR/5U2JF5dDQeqqHRragoyahj/Nx4KOOQ3CPPfzxnfqFPCSB7x5UgjOgnZ61nSxz+fjDpRlJg==" + }, + "serialize-javascript": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", + "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" } - } - }, - "sigmund": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=" - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" - }, - "simple-oauth2": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/simple-oauth2/-/simple-oauth2-4.3.0.tgz", - "integrity": "sha512-gjLIfy7M7WZSf3k5IZCQfEozbQwmW80zR9YMH4ph/WWG6S4U6sGhPujz8X6Hj6sZ8l7acSAxiyM4tF0vIN+E+A==", - "requires": { - "@hapi/hoek": "^9.0.4", - "@hapi/wreck": "^17.0.0", - "debug": "^4.1.1", - "joi": "^17.3.0" }, - "dependencies": { - "@hapi/hoek": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.1.tgz", - "integrity": "sha512-gfta+H8aziZsm8pZa0vj04KO6biEiisppNgA1kbJvFrrWu9Vm7eaUEy76DIxsuTaWvti5fkJVhllWc6ZTE+Mdw==" - }, - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "requires": { - "ms": "2.1.2" - } - }, - "joi": { - "version": "17.4.2", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.4.2.tgz", - "integrity": "sha512-Lm56PP+n0+Z2A2rfRvsfWVDXGEWjXxatPopkQ8qQ5mxCEhwHG+Ettgg5o98FFaxilOxozoa14cFhrE/hOzh/Nw==", - "requires": { - "@hapi/hoek": "^9.0.0", - "@hapi/topo": "^5.0.0", - "@sideway/address": "^4.1.0", - "@sideway/formula": "^3.0.0", - "@sideway/pinpoint": "^2.0.0" + "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": "4.1.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-4.1.0.tgz", + "integrity": "sha512-zTEg4HL0RwVrqcWs3ztF+x1vkxfm0lP+MQQFPiMJTKVceBwEV0A569Ou8l9IYQG8jOZdMVI1hGsc0tmeD2o/Lw==", + "requires": { + "is-plain-object": "^2.0.4", + "is-primitive": "^3.0.1" + } + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "shebang-command": { + "version": "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==", + "dev": true + }, + "shelljs": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "dev": true, + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + }, + "shx": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/shx/-/shx-0.3.2.tgz", + "integrity": "sha512-aS0mWtW3T2sHAenrSrip2XGv39O9dXIFUqxAEWHEOS1ePtGIBavdPJY1kE2IHl14V/4iCbUiNDPGdyYTtmhSoA==", + "dev": true, + "requires": { + "es6-object-assign": "^1.0.3", + "minimist": "^1.2.0", + "shelljs": "^0.8.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" } - } - }, - "simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", - "dev": true, - "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==", - "dev": true + "sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=" + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, + "simple-oauth2": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/simple-oauth2/-/simple-oauth2-4.3.0.tgz", + "integrity": "sha512-gjLIfy7M7WZSf3k5IZCQfEozbQwmW80zR9YMH4ph/WWG6S4U6sGhPujz8X6Hj6sZ8l7acSAxiyM4tF0vIN+E+A==", + "requires": { + "@hapi/hoek": "^9.0.4", + "@hapi/wreck": "^17.0.0", + "debug": "^4.1.1", + "joi": "^17.3.0" + }, + "dependencies": { + "@hapi/hoek": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.1.tgz", + "integrity": "sha512-gfta+H8aziZsm8pZa0vj04KO6biEiisppNgA1kbJvFrrWu9Vm7eaUEy76DIxsuTaWvti5fkJVhllWc6ZTE+Mdw==" + }, + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "requires": { + "ms": "2.1.2" + } + }, + "joi": { + "version": "17.4.2", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.4.2.tgz", + "integrity": "sha512-Lm56PP+n0+Z2A2rfRvsfWVDXGEWjXxatPopkQ8qQ5mxCEhwHG+Ettgg5o98FFaxilOxozoa14cFhrE/hOzh/Nw==", + "requires": { + "@hapi/hoek": "^9.0.0", + "@hapi/topo": "^5.0.0", + "@sideway/address": "^4.1.0", + "@sideway/formula": "^3.0.0", + "@sideway/pinpoint": "^2.0.0" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } } - } - }, - "sinon": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.5.0.tgz", - "integrity": "sha512-AoD0oJWerp0/rY9czP/D6hDTTUYGpObhZjMpd7Cl/A6+j0xBE+ayL/ldfggkBXUs0IkvIiM1ljM8+WkOc5k78Q==", - "dev": true, - "requires": { - "@sinonjs/commons": "^1.4.0", - "@sinonjs/formatio": "^3.2.1", - "@sinonjs/samsam": "^3.3.3", - "diff": "^3.5.0", - "lolex": "^4.2.0", - "nise": "^1.5.2", - "supports-color": "^5.5.0" - } - }, - "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "dev": true, + "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==", + "dev": true } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" + } + }, + "sinon": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.5.0.tgz", + "integrity": "sha512-AoD0oJWerp0/rY9czP/D6hDTTUYGpObhZjMpd7Cl/A6+j0xBE+ayL/ldfggkBXUs0IkvIiM1ljM8+WkOc5k78Q==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.4.0", + "@sinonjs/formatio": "^3.2.1", + "@sinonjs/samsam": "^3.3.3", + "diff": "^3.5.0", + "lolex": "^4.2.0", + "nise": "^1.5.2", + "supports-color": "^5.5.0" + } + }, + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true } - } - }, - "socket.io-client": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.4.0.tgz", - "integrity": "sha512-M6xhnKQHuuZd4Ba9vltCLT9oa+YvTsP8j9NcEiLElfIg8KeYPyhWOes6x4t+LTAC8enQbE/995AdTem2uNyKKQ==", - "requires": { - "backo2": "1.0.2", - "component-bind": "1.0.0", - "component-emitter": "~1.3.0", - "debug": "~3.1.0", - "engine.io-client": "~3.5.0", - "has-binary2": "~1.0.2", - "indexof": "0.0.1", - "parseqs": "0.0.6", - "parseuri": "0.0.6", - "socket.io-parser": "~3.3.0", - "to-array": "0.1.4" }, - "dependencies": { - "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==" + "socket.io-client": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.4.0.tgz", + "integrity": "sha512-M6xhnKQHuuZd4Ba9vltCLT9oa+YvTsP8j9NcEiLElfIg8KeYPyhWOes6x4t+LTAC8enQbE/995AdTem2uNyKKQ==", + "requires": { + "backo2": "1.0.2", + "component-bind": "1.0.0", + "component-emitter": "~1.3.0", + "debug": "~3.1.0", + "engine.io-client": "~3.5.0", + "has-binary2": "~1.0.2", + "indexof": "0.0.1", + "parseqs": "0.0.6", + "parseuri": "0.0.6", + "socket.io-parser": "~3.3.0", + "to-array": "0.1.4" + }, + "dependencies": { + "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==" + } } - } - }, - "socket.io-parser": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.2.tgz", - "integrity": "sha512-FJvDBuOALxdCI9qwRrO/Rfp9yfndRtc1jSgVgV8FDraihmSP/MLGD5PEuJrNfjALvcQ+vMDM/33AWOYP/JSjDg==", - "requires": { - "component-emitter": "~1.3.0", - "debug": "~3.1.0", - "isarray": "2.0.1" }, - "dependencies": { - "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==" + "socket.io-parser": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.2.tgz", + "integrity": "sha512-FJvDBuOALxdCI9qwRrO/Rfp9yfndRtc1jSgVgV8FDraihmSP/MLGD5PEuJrNfjALvcQ+vMDM/33AWOYP/JSjDg==", + "requires": { + "component-emitter": "~1.3.0", + "debug": "~3.1.0", + "isarray": "2.0.1" + }, + "dependencies": { + "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==" + } } - } - }, - "sorted-array-functions": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/sorted-array-functions/-/sorted-array-functions-1.2.0.tgz", - "integrity": "sha512-sWpjPhIZJtqO77GN+LD8dDsDKcWZ9GCOJNqKzi1tvtjGIzwfoyuRH8S0psunmc6Z5P+qfDqztSbwYR5X/e1UTg==" - }, - "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==", - "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==" - }, - "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "spdx-correct": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", - "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", - "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", - "dev": true - }, - "split-ca": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/split-ca/-/split-ca-1.0.1.tgz", - "integrity": "sha1-bIOv82kvphJW4M0ZfgXp3hV2kaY=" - }, - "split-on-first": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", - "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==" - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "sqlite3": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.0.2.tgz", - "integrity": "sha512-1SdTNo+BVU211Xj1csWa8lV6KM0CtucDwRyA0VHl91wEH1Mgh7RxUpI4rVvG7OhHrzCSGaVyW5g8vKvlrk9DJA==", - "requires": { - "node-addon-api": "^3.0.0", - "node-gyp": "3.x", - "node-pre-gyp": "^0.11.0" }, - "dependencies": { - "node-pre-gyp": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz", - "integrity": "sha512-TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q==", - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + "sorted-array-functions": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/sorted-array-functions/-/sorted-array-functions-1.2.0.tgz", + "integrity": "sha512-sWpjPhIZJtqO77GN+LD8dDsDKcWZ9GCOJNqKzi1tvtjGIzwfoyuRH8S0psunmc6Z5P+qfDqztSbwYR5X/e1UTg==" + }, + "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==", + "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==" + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } - } - }, - "ssf": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/ssf/-/ssf-0.11.2.tgz", - "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==", - "requires": { - "frac": "~1.1.2" - } - }, - "ssh2": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.9.0.tgz", - "integrity": "sha512-rhhIZT0eMPvCBSOG8CpqZZ7gre2vgXaIqmb3Jb83t88rjsxIsFzDanqBJM9Ns8BmP1835A5IbQ199io4EUZwOA==", - "requires": { - "asn1": "^0.2.4", - "bcrypt-pbkdf": "^1.0.2", - "cpu-features": "~0.0.4", - "nan": "^2.15.0" }, - "dependencies": { - "nan": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", - "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", - "optional": true + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" } - } - }, - "sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "optional": true, - "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" }, - "dependencies": { - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "optional": true + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" } - } - }, - "stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", - "dev": true - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string.prototype.padend": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.0.0.tgz", - "integrity": "sha1-86rvfBcZ8XDF6rHDK/eA2W4h8vA=", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.4.3", - "function-bind": "^1.0.2" - } - }, - "string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "string.prototype.trimleft": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz", - "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" - } - }, - "string.prototype.trimright": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz", - "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" - } - }, - "string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "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" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" - }, - "style-loader": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz", - "integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==", - "dev": true - }, - "suncalc": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/suncalc/-/suncalc-1.8.0.tgz", - "integrity": "sha1-HZiYEJVjB4dQ9JlKlZ5lTYdqy/U=" - }, - "superagent": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz", - "integrity": "sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==", - "dev": true, - "requires": { - "component-emitter": "^1.2.0", - "cookiejar": "^2.1.0", - "debug": "^3.1.0", - "extend": "^3.0.0", - "form-data": "^2.3.1", - "formidable": "^1.2.0", - "methods": "^1.1.1", - "mime": "^1.4.1", - "qs": "^6.5.1", - "readable-stream": "^2.3.5" - } - }, - "supertest": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/supertest/-/supertest-3.4.2.tgz", - "integrity": "sha512-WZWbwceHUo2P36RoEIdXvmqfs47idNNZjCuJOqDz6rvtkk8ym56aU5oglORCpPeXGxT7l9rkJ41+O1lffQXYSA==", - "dev": true, - "requires": { - "methods": "^1.1.2", - "superagent": "^3.8.3" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" - }, - "table": { - "version": "6.0.7", - "resolved": "https://registry.npmjs.org/table/-/table-6.0.7.tgz", - "integrity": "sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==", - "dev": true, - "requires": { - "ajv": "^7.0.2", - "lodash": "^4.17.20", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.0" }, - "dependencies": { - "ajv": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.2.3.tgz", - "integrity": "sha512-idv5WZvKVXDqKralOImQgPM9v6WOdLNa0IY3B3doOjw/YxRGT8I+allIJ6kd7Uaj+SF1xZUSU+nPM5aDNBVtnw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "ansi-regex": { - "version": "5.0.0", - "resolved": "", - "dev": true - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "dev": true + }, + "split-ca": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split-ca/-/split-ca-1.0.1.tgz", + "integrity": "sha1-bIOv82kvphJW4M0ZfgXp3hV2kaY=" + }, + "split-on-first": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", + "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==" + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sqlite3": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.0.2.tgz", + "integrity": "sha512-1SdTNo+BVU211Xj1csWa8lV6KM0CtucDwRyA0VHl91wEH1Mgh7RxUpI4rVvG7OhHrzCSGaVyW5g8vKvlrk9DJA==", + "requires": { + "node-addon-api": "^3.0.0", + "node-gyp": "3.x", + "node-pre-gyp": "^0.11.0" + }, + "dependencies": { + "node-pre-gyp": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz", + "integrity": "sha512-TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q==", + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" + } + }, + "ssf": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/ssf/-/ssf-0.11.2.tgz", + "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==", + "requires": { + "frac": "~1.1.2" + } + }, + "ssh2": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.9.0.tgz", + "integrity": "sha512-rhhIZT0eMPvCBSOG8CpqZZ7gre2vgXaIqmb3Jb83t88rjsxIsFzDanqBJM9Ns8BmP1835A5IbQ199io4EUZwOA==", + "requires": { + "asn1": "^0.2.4", + "bcrypt-pbkdf": "^1.0.2", + "cpu-features": "~0.0.4", + "nan": "^2.15.0" + }, + "dependencies": { + "nan": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", + "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", + "optional": true } } - } - }, - "taffydb": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz", - "integrity": "sha1-fLy2S1oUG2ou/CxdLGe04VCyomg=", - "dev": true - }, - "tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true - }, - "tar": { - "version": "4.4.13", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", - "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.8.6", - "minizlib": "^1.2.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.3" - } - }, - "tar-fs": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.0.1.tgz", - "integrity": "sha512-6tzWDMeroL87uF/+lin46k+Q+46rAJ0SyPGz7OW7wTgblI273hsBqk2C1j0/xNadNLKDTUL9BukSjB7cwgmlPA==", - "requires": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.0.0" - } - }, - "tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "requires": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" }, - "dependencies": { - "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" + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "optional": true, + "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" + }, + "dependencies": { + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "optional": true } } - } - }, - "term-size": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", - "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==", - "dev": true - }, - "terser": { - "version": "5.12.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.12.1.tgz", - "integrity": "sha512-NXbs+7nisos5E+yXwAD+y7zrcTkMqb0dEJxIGtSKPdCBzopf7ni4odPul2aechpV7EXNvOudYOX2bb5tln1jbQ==", - "dev": true, - "requires": { - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.20" }, - "dependencies": { - "acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", - "dev": true - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", + "dev": true + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } - } - }, - "terser-webpack-plugin": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", - "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", - "dev": true, - "requires": { - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1", - "terser": "^5.7.2" }, - "dependencies": { - "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } + "string.prototype.padend": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.0.0.tgz", + "integrity": "sha1-86rvfBcZ8XDF6rHDK/eA2W4h8vA=", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.4.3", + "function-bind": "^1.0.2" } - } - }, - "text-hex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", - "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==", - "dev": true - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "timers-ext": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", - "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==", - "requires": { - "es5-ext": "~0.10.46", - "next-tick": "1" - } - }, - "tinytim": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/tinytim/-/tinytim-0.1.1.tgz", - "integrity": "sha1-yWih5VWa2VUyJO92J7qzTjyu+Kg=" - }, - "to-array": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", - "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=" - }, - "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=", - "dev": true - }, - "to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" - }, - "topo": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/topo/-/topo-3.0.3.tgz", - "integrity": "sha512-IgpPtvD4kjrJ7CRA3ov2FhWQADwv+Tdqbsf1ZnPUSAtCJ9e1Z44MmoSGDXGk4IppoZA7jd/QRkNddlLJWlUZsQ==", - "requires": { - "hoek": "6.x.x" - } - }, - "toposort-class": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz", - "integrity": "sha1-f/0feMi+KMO6Rc1OGj9e4ZO9mYg=" - }, - "touch": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", - "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", - "dev": true, - "requires": { - "nopt": "~1.0.10" }, - "dependencies": { - "nopt": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", - "dev": true, - "requires": { - "abbrev": "1" - } + "string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } - } - }, - "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==", - "optional": true, - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" - }, - "tracer": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/tracer/-/tracer-1.1.4.tgz", - "integrity": "sha512-43Ws4c/V6VK9i2MLjmeYVtXZ+YUHU/qFXznJqYgI8F5nNrIQ4v9ImBAk+JjfPHS4StlpmaHzgR5qpBydbD9TkA==", - "requires": { - "colors": "1.4.0", - "dateformat": "3.0.3", - "mkdirp": "^1.0.4", - "tinytim": "0.1.1" }, - "dependencies": { - "colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + "string.prototype.trimleft": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz", + "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" } - } - }, - "triple-beam": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", - "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==", - "dev": true - }, - "tsconfig-paths": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", - "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", - "dev": true, - "requires": { - "@types/json5": "^0.0.29", - "json5": "^1.0.1", - "minimist": "^1.2.0", - "strip-bom": "^3.0.0" }, - "dependencies": { - "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true + "string.prototype.trimright": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz", + "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" } - } - }, - "tslib": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", - "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "optional": true, - "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.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "requires": { - "prelude-ls": "~1.1.2" - } - }, - "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==", - "dev": true - }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "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==", - "dev": true, - "requires": { - "is-typedarray": "^1.0.0" - } - }, - "uc.micro": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", - "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", - "dev": true - }, - "uglify-js": { - "version": "3.13.2", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.13.2.tgz", - "integrity": "sha512-SbMu4D2Vo95LMC/MetNaso1194M1htEA+JrqE9Hk+G2DhI+itfS9TRu9ZKeCahLDNa/J3n4MqUJ/fOHMzQpRWw==", - "optional": true - }, - "uid-safe": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", - "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==", - "dev": true, - "requires": { - "random-bytes": "~1.0.0" - } - }, - "umzug": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/umzug/-/umzug-2.2.0.tgz", - "integrity": "sha512-xZLW76ax70pND9bx3wqwb8zqkFGzZIK8dIHD9WdNy/CrNfjWcwQgQkGCuUqcuwEBvUm+g07z+qWvY+pxDmMEEw==", - "requires": { - "babel-runtime": "^6.23.0", - "bluebird": "^3.5.3" - } - }, - "unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", - "which-boxed-primitive": "^1.0.2" }, - "dependencies": { - "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true + "string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } - } - }, - "undefsafe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.3.tgz", - "integrity": "sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A==", - "dev": true, - "requires": { - "debug": "^2.2.0" }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" + "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" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + }, + "style-loader": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz", + "integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==", + "dev": true + }, + "suncalc": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/suncalc/-/suncalc-1.8.0.tgz", + "integrity": "sha1-HZiYEJVjB4dQ9JlKlZ5lTYdqy/U=" + }, + "superagent": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz", + "integrity": "sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==", + "dev": true, + "requires": { + "component-emitter": "^1.2.0", + "cookiejar": "^2.1.0", + "debug": "^3.1.0", + "extend": "^3.0.0", + "form-data": "^2.3.1", + "formidable": "^1.2.0", + "methods": "^1.1.1", + "mime": "^1.4.1", + "qs": "^6.5.1", + "readable-stream": "^2.3.5" + } + }, + "supertest": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/supertest/-/supertest-3.4.2.tgz", + "integrity": "sha512-WZWbwceHUo2P36RoEIdXvmqfs47idNNZjCuJOqDz6rvtkk8ym56aU5oglORCpPeXGxT7l9rkJ41+O1lffQXYSA==", + "dev": true, + "requires": { + "methods": "^1.1.2", + "superagent": "^3.8.3" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" + }, + "table": { + "version": "6.0.7", + "resolved": "https://registry.npmjs.org/table/-/table-6.0.7.tgz", + "integrity": "sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==", + "dev": true, + "requires": { + "ajv": "^7.0.2", + "lodash": "^4.17.20", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0" + }, + "dependencies": { + "ajv": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.2.3.tgz", + "integrity": "sha512-idv5WZvKVXDqKralOImQgPM9v6WOdLNa0IY3B3doOjw/YxRGT8I+allIJ6kd7Uaj+SF1xZUSU+nPM5aDNBVtnw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } } } - } - }, - "underscore": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.2.tgz", - "integrity": "sha512-ekY1NhRzq0B08g4bGuX4wd2jZx5GnKz6mKSqFL4nqBlfyMGiG10gDFhDTMEfYmDL6Jy0FUIZp7wiRB+0BP7J2g==", - "dev": true - }, - "unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "dev": true, - "requires": { - "crypto-random-string": "^2.0.0" - } - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" - }, - "update-notifier": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.3.tgz", - "integrity": "sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A==", - "dev": true, - "requires": { - "boxen": "^4.2.0", - "chalk": "^3.0.0", - "configstore": "^5.0.1", - "has-yarn": "^2.1.0", - "import-lazy": "^2.1.0", - "is-ci": "^2.0.0", - "is-installed-globally": "^0.3.1", - "is-npm": "^4.0.0", - "is-yarn-global": "^0.3.0", - "latest-version": "^5.0.0", - "pupa": "^2.0.1", - "semver-diff": "^3.1.1", - "xdg-basedir": "^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==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" + "taffydb": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz", + "integrity": "sha1-fLy2S1oUG2ou/CxdLGe04VCyomg=", + "dev": true + }, + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true + }, + "tar": { + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", + "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, + "tar-fs": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.0.1.tgz", + "integrity": "sha512-6tzWDMeroL87uF/+lin46k+Q+46rAJ0SyPGz7OW7wTgblI273hsBqk2C1j0/xNadNLKDTUL9BukSjB7cwgmlPA==", + "requires": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.0.0" + } + }, + "tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "requires": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "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" + } } - }, - "chalk": { - "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" + } + }, + "term-size": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", + "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==", + "dev": true + }, + "terser": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.12.1.tgz", + "integrity": "sha512-NXbs+7nisos5E+yXwAD+y7zrcTkMqb0dEJxIGtSKPdCBzopf7ni4odPul2aechpV7EXNvOudYOX2bb5tln1jbQ==", + "dev": true, + "requires": { + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.20" + }, + "dependencies": { + "acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "dev": true + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" + } + }, + "terser-webpack-plugin": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", + "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", + "dev": true, + "requires": { + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1", + "terser": "^5.7.2" + }, + "dependencies": { + "serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" + } + }, + "text-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", + "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==", + "dev": true + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "timers-ext": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", + "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==", + "requires": { + "es5-ext": "~0.10.46", + "next-tick": "1" + } + }, + "tinytim": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/tinytim/-/tinytim-0.1.1.tgz", + "integrity": "sha1-yWih5VWa2VUyJO92J7qzTjyu+Kg=" + }, + "to-array": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", + "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=" + }, + "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=", + "dev": true + }, + "to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + }, + "topo": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/topo/-/topo-3.0.3.tgz", + "integrity": "sha512-IgpPtvD4kjrJ7CRA3ov2FhWQADwv+Tdqbsf1ZnPUSAtCJ9e1Z44MmoSGDXGk4IppoZA7jd/QRkNddlLJWlUZsQ==", + "requires": { + "hoek": "6.x.x" + } + }, + "toposort-class": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz", + "integrity": "sha1-f/0feMi+KMO6Rc1OGj9e4ZO9mYg=" + }, + "touch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "dev": true, + "requires": { + "nopt": "~1.0.10" + }, + "dependencies": { + "nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", + "dev": true, + "requires": { + "abbrev": "1" + } } } - } - }, - "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "requires": { - "punycode": "^2.1.0" - } - }, - "url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dev": true, - "requires": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "dev": true, - "requires": { - "prepend-http": "^2.0.0" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" - }, - "uuid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", - "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==" - }, - "v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "validator": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", - "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==" - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "optional": true, - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "watchpack": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", - "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", - "dev": true, - "requires": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - } - }, - "webcrypto-core": { - "version": "0.1.26", - "resolved": "https://registry.npmjs.org/webcrypto-core/-/webcrypto-core-0.1.26.tgz", - "integrity": "sha512-BZVgJZkkHyuz8loKvsaOKiBDXDpmMZf5xG4QAOlSeYdXlFUl9c1FRrVnAXcOdb4fTHMG+TRu81odJwwSfKnWTA==", - "requires": { - "tslib": "^1.7.1" - } - }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" - }, - "webpack": { - "version": "5.71.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.71.0.tgz", - "integrity": "sha512-g4dFT7CFG8LY0iU5G8nBL6VlkT21Z7dcYDpJAEJV5Q1WLb9UwnFbrem1k7K52ILqEmomN7pnzWFxxE6SlDY56A==", - "dev": true, - "requires": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.4.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.9.2", - "es-module-lexer": "^0.9.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.3.1", - "webpack-sources": "^3.2.3" }, - "dependencies": { - "acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", - "dev": true - }, - "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "requires": { - "mime-db": "1.52.0" + "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==", + "optional": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" + }, + "tracer": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/tracer/-/tracer-1.1.4.tgz", + "integrity": "sha512-43Ws4c/V6VK9i2MLjmeYVtXZ+YUHU/qFXznJqYgI8F5nNrIQ4v9ImBAk+JjfPHS4StlpmaHzgR5qpBydbD9TkA==", + "requires": { + "colors": "1.4.0", + "dateformat": "3.0.3", + "mkdirp": "^1.0.4", + "tinytim": "0.1.1" + }, + "dependencies": { + "colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" } - }, - "webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true } - } - }, - "webpack-cli": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.2.tgz", - "integrity": "sha512-m3/AACnBBzK/kMTcxWHcZFPrw/eQuY4Df1TxvIWfWM2x7mRqBQCqKEd96oCUa9jkapLBaFfRce33eGDb4Pr7YQ==", - "dev": true, - "requires": { - "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.1.1", - "@webpack-cli/info": "^1.4.1", - "@webpack-cli/serve": "^1.6.1", - "colorette": "^2.0.14", - "commander": "^7.0.0", - "execa": "^5.0.0", - "fastest-levenshtein": "^1.0.12", - "import-local": "^3.0.2", - "interpret": "^2.2.0", - "rechoir": "^0.7.0", - "webpack-merge": "^5.7.3" }, - "dependencies": { - "commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true - }, - "interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", - "dev": true - }, - "rechoir": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", - "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", - "dev": true, - "requires": { - "resolve": "^1.9.0" + "triple-beam": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", + "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==", + "dev": true + }, + "tsconfig-paths": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", + "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", + "dev": true, + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.0", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true } } - } - }, - "webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", - "dev": true, - "requires": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - } - }, - "webpack-sources": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.1.tgz", - "integrity": "sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==", - "dev": true, - "requires": { - "source-list-map": "^2.0.1", - "source-map": "^0.6.1" - } - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.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-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "requires": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" }, - "dependencies": { - "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true - }, - "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==", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" + "tslib": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "optional": true, + "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.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "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==", + "dev": true + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "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==", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", + "dev": true + }, + "uglify-js": { + "version": "3.13.2", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.13.2.tgz", + "integrity": "sha512-SbMu4D2Vo95LMC/MetNaso1194M1htEA+JrqE9Hk+G2DhI+itfS9TRu9ZKeCahLDNa/J3n4MqUJ/fOHMzQpRWw==", + "optional": true + }, + "uid-safe": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", + "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==", + "dev": true, + "requires": { + "random-bytes": "~1.0.0" + } + }, + "umzug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/umzug/-/umzug-2.2.0.tgz", + "integrity": "sha512-xZLW76ax70pND9bx3wqwb8zqkFGzZIK8dIHD9WdNy/CrNfjWcwQgQkGCuUqcuwEBvUm+g07z+qWvY+pxDmMEEw==", + "requires": { + "babel-runtime": "^6.23.0", + "bluebird": "^3.5.3" + } + }, + "unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + }, + "dependencies": { + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true } } - } - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "widest-line": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", - "dev": true, - "requires": { - "string-width": "^4.0.0" }, - "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "undefsafe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.3.tgz", + "integrity": "sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A==", + "dev": true, + "requires": { + "debug": "^2.2.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" + } + }, + "underscore": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.2.tgz", + "integrity": "sha512-ekY1NhRzq0B08g4bGuX4wd2jZx5GnKz6mKSqFL4nqBlfyMGiG10gDFhDTMEfYmDL6Jy0FUIZp7wiRB+0BP7J2g==", + "dev": true + }, + "unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dev": true, + "requires": { + "crypto-random-string": "^2.0.0" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "update-notifier": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.3.tgz", + "integrity": "sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A==", + "dev": true, + "requires": { + "boxen": "^4.2.0", + "chalk": "^3.0.0", + "configstore": "^5.0.1", + "has-yarn": "^2.1.0", + "import-lazy": "^2.1.0", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.3.1", + "is-npm": "^4.0.0", + "is-yarn-global": "^0.3.0", + "latest-version": "^5.0.0", + "pupa": "^2.0.1", + "semver-diff": "^3.1.1", + "xdg-basedir": "^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==", + "dev": true, + "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==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } } } - } - }, - "wildcard": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", - "dev": true - }, - "winston": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/winston/-/winston-3.7.2.tgz", - "integrity": "sha512-QziIqtojHBoyzUOdQvQiar1DH0Xp9nF1A1y7NVy2DGEsz82SBDtOalS0ulTRGVT14xPX3WRWkCsdcJKqNflKng==", - "dev": true, - "requires": { - "@dabh/diagnostics": "^2.0.2", - "async": "^3.2.3", - "is-stream": "^2.0.0", - "logform": "^2.4.0", - "one-time": "^1.0.0", - "readable-stream": "^3.4.0", - "safe-stable-stringify": "^2.3.1", - "stack-trace": "0.0.x", - "triple-beam": "^1.3.0", - "winston-transport": "^4.5.0" }, - "dependencies": { - "async": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", - "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==", - "dev": true - }, - "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==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "requires": { + "punycode": "^2.1.0" + } + }, + "url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "dev": true, + "requires": { + "prepend-http": "^2.0.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "uuid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", + "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==" + }, + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "validator": { + "version": "13.7.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", + "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "optional": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "watchpack": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", + "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "dev": true, + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "webcrypto-core": { + "version": "0.1.26", + "resolved": "https://registry.npmjs.org/webcrypto-core/-/webcrypto-core-0.1.26.tgz", + "integrity": "sha512-BZVgJZkkHyuz8loKvsaOKiBDXDpmMZf5xG4QAOlSeYdXlFUl9c1FRrVnAXcOdb4fTHMG+TRu81odJwwSfKnWTA==", + "requires": { + "tslib": "^1.7.1" + } + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" + }, + "webpack": { + "version": "5.71.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.71.0.tgz", + "integrity": "sha512-g4dFT7CFG8LY0iU5G8nBL6VlkT21Z7dcYDpJAEJV5Q1WLb9UwnFbrem1k7K52ILqEmomN7pnzWFxxE6SlDY56A==", + "dev": true, + "requires": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.4.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.9.2", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.3.1", + "webpack-sources": "^3.2.3" + }, + "dependencies": { + "acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "dev": true + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "requires": { + "mime-db": "1.52.0" + } + }, + "webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true } } - } - }, - "winston-transport": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz", - "integrity": "sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==", - "dev": true, - "requires": { - "logform": "^2.3.2", - "readable-stream": "^3.6.0", - "triple-beam": "^1.3.0" }, - "dependencies": { - "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==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "webpack-cli": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.2.tgz", + "integrity": "sha512-m3/AACnBBzK/kMTcxWHcZFPrw/eQuY4Df1TxvIWfWM2x7mRqBQCqKEd96oCUa9jkapLBaFfRce33eGDb4Pr7YQ==", + "dev": true, + "requires": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.1.1", + "@webpack-cli/info": "^1.4.1", + "@webpack-cli/serve": "^1.6.1", + "colorette": "^2.0.14", + "commander": "^7.0.0", + "execa": "^5.0.0", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "webpack-merge": "^5.7.3" + }, + "dependencies": { + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true + }, + "interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "dev": true + }, + "rechoir": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "dev": true, + "requires": { + "resolve": "^1.9.0" + } } } - } - }, - "wkx": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/wkx/-/wkx-0.5.0.tgz", - "integrity": "sha512-Xng/d4Ichh8uN4l0FToV/258EjMGU9MGcA0HV2d9B/ZpZB3lqQm7nkOdZdm5GhKtLLhAE7PiVQwN4eN+2YJJUg==", - "requires": { - "@types/node": "*" - } - }, - "wmf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wmf/-/wmf-1.0.2.tgz", - "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==" - }, - "word": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/word/-/word-0.3.0.tgz", - "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==" - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" - }, - "workerpool": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.0.tgz", - "integrity": "sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg==", - "dev": true - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - }, - "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" + "webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + } + }, + "webpack-sources": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.1.tgz", + "integrity": "sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==", + "dev": true, + "requires": { + "source-list-map": "^2.0.1", + "source-map": "^0.6.1" + } + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.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-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "dependencies": { + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "has-symbols": "^1.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" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "dev": true, + "requires": { + "string-width": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } } - }, - "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==" - }, - "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==" - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + } + }, + "wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, + "winston": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.7.2.tgz", + "integrity": "sha512-QziIqtojHBoyzUOdQvQiar1DH0Xp9nF1A1y7NVy2DGEsz82SBDtOalS0ulTRGVT14xPX3WRWkCsdcJKqNflKng==", + "dev": true, + "requires": { + "@dabh/diagnostics": "^2.0.2", + "async": "^3.2.3", + "is-stream": "^2.0.0", + "logform": "^2.4.0", + "one-time": "^1.0.0", + "readable-stream": "^3.4.0", + "safe-stable-stringify": "^2.3.1", + "stack-trace": "0.0.x", + "triple-beam": "^1.3.0", + "winston-transport": "^4.5.0" + }, + "dependencies": { + "async": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", + "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "requires": { - "ansi-regex": "^5.0.1" + } + }, + "winston-transport": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz", + "integrity": "sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==", + "dev": true, + "requires": { + "logform": "^2.3.2", + "readable-stream": "^3.6.0", + "triple-beam": "^1.3.0" + }, + "dependencies": { + "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==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } } } - } - }, - "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==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "ws": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", - "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", - "requires": { - "async-limiter": "~1.0.0" - } - }, - "xdg-basedir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", - "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", - "dev": true - }, - "xmlcreate": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz", - "integrity": "sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==", - "dev": true - }, - "xmlhttprequest-ssl": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.3.tgz", - "integrity": "sha512-3XfeQE/wNkvrIktn2Kf0869fC0BN6UpydVasGIeSm2B1Llihf7/0UfZM+eCkOw3P7bP4+qPgqhm7ZoxuJtFU0Q==" - }, - "y18n": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", - "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==", - "dev": true - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - }, - "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==" - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "wkx": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/wkx/-/wkx-0.5.0.tgz", + "integrity": "sha512-Xng/d4Ichh8uN4l0FToV/258EjMGU9MGcA0HV2d9B/ZpZB3lqQm7nkOdZdm5GhKtLLhAE7PiVQwN4eN+2YJJUg==", + "requires": { + "@types/node": "*" + } + }, + "wmf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wmf/-/wmf-1.0.2.tgz", + "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==" + }, + "word": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/word/-/word-0.3.0.tgz", + "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==" + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" + }, + "workerpool": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.0.tgz", + "integrity": "sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg==", + "dev": true + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "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==" + }, + "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==" + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "requires": { - "ansi-regex": "^5.0.1" + } + }, + "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==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "ws": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", + "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", + "requires": { + "async-limiter": "~1.0.0" + } + }, + "xdg-basedir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", + "dev": true + }, + "xmlcreate": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz", + "integrity": "sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==", + "dev": true + }, + "xmlhttprequest-ssl": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.3.tgz", + "integrity": "sha512-3XfeQE/wNkvrIktn2Kf0869fC0BN6UpydVasGIeSm2B1Llihf7/0UfZM+eCkOw3P7bP4+qPgqhm7ZoxuJtFU0Q==" + }, + "y18n": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", + "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "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==" + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" } - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" } - } - }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" - }, - "yargs-unparser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", - "dev": true, - "requires": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" }, - "dependencies": { - "decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" + }, + "yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "requires": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "dependencies": { + "decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true + } } + }, + "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", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + }, + "zlibjs": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/zlibjs/-/zlibjs-0.3.1.tgz", + "integrity": "sha1-UBl+2yihxCymWcyLTmqd3W1ERVQ=" } - }, - "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", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true - }, - "zlibjs": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/zlibjs/-/zlibjs-0.3.1.tgz", - "integrity": "sha1-UBl+2yihxCymWcyLTmqd3W1ERVQ=" } } } From 75aaad159c69e0d264e2a02e08d997d5c04cdce0 Mon Sep 17 00:00:00 2001 From: Euguuu Date: Mon, 11 Apr 2022 20:52:36 +0200 Subject: [PATCH 045/164] fix package-lock --- server/package-lock.json | 4790 ++++++++++++++++++++------------------ 1 file changed, 2487 insertions(+), 2303 deletions(-) diff --git a/server/package-lock.json b/server/package-lock.json index 832dc8c7df..fb74b8be7d 100644 --- a/server/package-lock.json +++ b/server/package-lock.json @@ -1767,14 +1767,6 @@ } } }, - "@sideway/address": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.2.tgz", - "integrity": "sha512-idTz8ibqWFrPU8kMirL0CoPH/A29XOzzAzpyN3zQ4kAWnzmNfFmRaoMNN6VI8ske5M73HZyhIaW4OuSFIdM4oA==", - "requires": { - "@hapi/hoek": "^9.0.0" - } - }, "@sideway/formula": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", @@ -2948,15 +2940,6 @@ "follow-redirects": "^1.14.0" } }, - "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" - } - }, "backo2": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", @@ -3122,7 +3105,8 @@ "dependencies": { "ansi-regex": { "version": "5.0.0", - "resolved": "", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true }, "ansi-styles": { @@ -3565,6 +3549,11 @@ "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", "dev": true }, + "colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" + }, "colorspace": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", @@ -3746,16 +3735,21 @@ "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==", "dev": true }, - "core-js": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", - "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==" - }, "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=" }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, "cpu-features": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/cpu-features/-/cpu-features-0.0.4.tgz", @@ -3852,11 +3846,6 @@ "assert-plus": "^1.0.0" } }, - "dateformat": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", - "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==" - }, "dayjs": { "version": "1.10.4", "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.10.4.tgz", @@ -4301,12 +4290,6 @@ "es6-symbol": "^3.1.1" } }, - "es6-object-assign": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz", - "integrity": "sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw=", - "dev": true - }, "es6-symbol": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", @@ -5317,6 +5300,12 @@ "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", "optional": true }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, "fast-json-stable-stringify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", @@ -5652,6 +5641,16 @@ "pump": "^3.0.0" } }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, "get-value": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/get-value/-/get-value-3.0.1.tgz", @@ -5849,6 +5848,23 @@ "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", "dev": true }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + }, + "dependencies": { + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + } + } + }, "has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", @@ -6020,6 +6036,14 @@ "requires": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + } } }, "import-lazy": { @@ -6079,6 +6103,17 @@ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, "interpret": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", @@ -6266,6 +6301,15 @@ "has": "^1.0.1" } }, + "is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, "is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", @@ -6292,6 +6336,15 @@ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -6453,6 +6506,12 @@ "topo": "3.x.x" } }, + "jose": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/jose/-/jose-4.6.1.tgz", + "integrity": "sha512-EFnufEivlIB6j7+JwaenYQzdUDs/McajDr9WnhT6EI0WxbexnfuZimpWX1GnobF6OnQsUFmWFXUXdWyZHWdQow==", + "dev": true + }, "joycon": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", @@ -6915,6 +6974,12 @@ "resolved": "https://registry.npmjs.org/lodash.trimend/-/lodash.trimend-4.5.1.tgz", "integrity": "sha1-EoBENyhrmMrYmWt5QU4RMAEUCC8=" }, + "lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", + "dev": true + }, "log-symbols": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", @@ -7017,6 +7082,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, "requires": { "yallist": "^4.0.0" }, @@ -7024,7 +7090,8 @@ "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true } } }, @@ -7233,7 +7300,8 @@ "dependencies": { "ansi-regex": { "version": "5.0.0", - "resolved": "", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true }, "ansi-styles": { @@ -7447,6 +7515,15 @@ "picomatch": "^2.2.1" } }, + "serialize-javascript": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", + "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, "string-width": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", @@ -7491,6 +7568,48 @@ "isexe": "^2.0.0" } }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true + }, + "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=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, "wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -8105,7 +8224,8 @@ "dependencies": { "ansi-regex": { "version": "5.0.0", - "resolved": "", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true }, "ansi-styles": { @@ -8528,6 +8648,12 @@ "typedarray-to-buffer": "^3.1.5" } }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, "yargs": { "version": "15.4.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", @@ -9114,2369 +9240,2427 @@ "filter-obj": "^1.1.0", "split-on-first": "^1.0.0", "strict-uri-encode": "^2.0.0" + } + }, + "querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, + "queue": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", + "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", + "requires": { + "inherits": "~2.0.3" + } + }, + "random-bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", + "integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs=", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "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" }, - "querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true - }, - "queue": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.1.tgz", - "integrity": "sha512-AJBQabRCCNr9ANq8v77RJEv73DPbn55cdTb+Giq4X0AVnNVZvMHlYp7XlQiN+1npCZj1DuSmaA2hYVUUDgxFDg==", - "requires": { - "inherits": "~2.0.3" - } - }, - "random-bytes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", - "integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs=", - "dev": true - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" - }, - "raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", - "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "dependencies": { - "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" - } - } - }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" - } - } - }, - "read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", - "dev": true, - "requires": { - "load-json-file": "^2.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^2.0.0" - } - }, - "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=", - "dev": true, - "requires": { - "find-up": "^2.0.0", - "read-pkg": "^2.0.0" - } - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - } - } - }, - "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==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dev": true, - "requires": { - "resolve": "^1.1.6" - } - }, - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" - }, - "regexpp": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", - "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", - "dev": true - }, - "registry-auth-token": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", - "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", - "dev": true, - "requires": { - "rc": "^1.2.8" - } - }, - "registry-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", - "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", - "dev": true, - "requires": { - "rc": "^1.2.8" + "dependencies": { + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" } + } + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + }, + "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=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + } + }, + "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" }, - "release-zalgo": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", - "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", - "dev": true, - "requires": { - "es6-error": "^4.0.1" + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" } + } + }, + "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==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "rechoir": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "dev": true, + "requires": { + "resolve": "^1.9.0" + } + }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true + }, + "registry-auth-token": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", + "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", + "dev": true, + "requires": { + "rc": "^1.2.8" + } + }, + "registry-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", + "dev": true, + "requires": { + "rc": "^1.2.8" + } + }, + "release-zalgo": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", + "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", + "dev": true, + "requires": { + "es6-error": "^4.0.1" + } + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "optional": true, + "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" }, - "request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "optional": true, - "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": { - "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==", - "optional": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "optional": true + "dependencies": { + "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==", + "optional": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" } + }, + "qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "optional": true } + } + }, + "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==", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "requireindex": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", + "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "requizzle": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.3.tgz", + "integrity": "sha512-YanoyJjykPxGHii0fZP0uUPEXpvqfBDxWV7s6GKAiiOsiqhX6vHNyW3Qzdmqp/iq/ExbhaGbVrjB4ruEVSM4GQ==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "requires": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" }, - "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==", - "dev": true - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "requireindex": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", - "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==", - "dev": true - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", - "dev": true - }, - "requizzle": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.3.tgz", - "integrity": "sha512-YanoyJjykPxGHii0fZP0uUPEXpvqfBDxWV7s6GKAiiOsiqhX6vHNyW3Qzdmqp/iq/ExbhaGbVrjB4ruEVSM4GQ==", - "dev": true, - "requires": { - "lodash": "^4.17.14" - } - }, - "resolve": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", - "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", - "dev": true, - "requires": { - "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==", - "dev": true, - "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==", - "dev": true + "dependencies": { + "is-core-module": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", + "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "requires": { + "has": "^1.0.3" } } + } + }, + "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==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "dev": true, + "requires": { + "lowercase-keys": "^1.0.0" + } + }, + "retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==" + }, + "retry-as-promised": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-5.0.0.tgz", + "integrity": "sha512-6S+5LvtTl2ggBumk04hBo/4Uf6fRJUwIgunGZ7CYEBCeufGFW1Pu6ucUf/UskHeWOIsUcLOGLFXPig5tR5V1nA==" + }, + "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" + } + }, + "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-stable-stringify": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.3.1.tgz", + "integrity": "sha512-kYBSfT+troD9cDA85VDnHZ1rpHC50O0g1e6WlGHVCz/g+JS+9WKLj+XwFYyR8UbrZN8ll9HUpDAAddY58MGisg==", + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "secure-remote-password": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/secure-remote-password/-/secure-remote-password-0.3.1.tgz", + "integrity": "sha512-iEp/qLRfb9XYhfKFrPFfdeD7KVreCjhDKSTRP1G1nRIO0Sw1hjnVHD58ymOhiy9Zf5quHbDIbG9cTupji7qwnA==", + "requires": { + "array-buffer-to-hex": "^1.0.0", + "crypto-digest-sync": "^1.0.0", + "crypto-random-hex": "^1.0.0", + "encode-utf8": "^1.0.1", + "hex-to-array-buffer": "^1.1.0", + "jsbn": "^1.1.0", + "pad-start": "^1.0.2" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "semver-diff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", + "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "dev": true, + "requires": { + "semver": "^6.3.0" + } + }, + "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" }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", - "dev": true, - "requires": { - "lowercase-keys": "^1.0.0" - } - }, - "retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==" - }, - "retry-as-promised": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-5.0.0.tgz", - "integrity": "sha512-6S+5LvtTl2ggBumk04hBo/4Uf6fRJUwIgunGZ7CYEBCeufGFW1Pu6ucUf/UskHeWOIsUcLOGLFXPig5tR5V1nA==" - }, - "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" - } - }, - "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-stable-stringify": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.3.1.tgz", - "integrity": "sha512-kYBSfT+troD9cDA85VDnHZ1rpHC50O0g1e6WlGHVCz/g+JS+9WKLj+XwFYyR8UbrZN8ll9HUpDAAddY58MGisg==", - "dev": true - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - }, - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - }, - "secure-remote-password": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/secure-remote-password/-/secure-remote-password-0.3.1.tgz", - "integrity": "sha512-iEp/qLRfb9XYhfKFrPFfdeD7KVreCjhDKSTRP1G1nRIO0Sw1hjnVHD58ymOhiy9Zf5quHbDIbG9cTupji7qwnA==", - "requires": { - "array-buffer-to-hex": "^1.0.0", - "crypto-digest-sync": "^1.0.0", - "crypto-random-hex": "^1.0.0", - "encode-utf8": "^1.0.1", - "hex-to-array-buffer": "^1.1.0", - "jsbn": "^1.1.0", - "pad-start": "^1.0.2" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - }, - "semver-diff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", - "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", - "dev": true, - "requires": { - "semver": "^6.3.0" - } - }, - "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==" - } - } - }, - "sequelize": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-6.18.0.tgz", - "integrity": "sha512-x8TW8ovqG8ljZq0Uow1mtMq44hSKPefWEC590R9IWgF2dajEHvKJJpXo1FiRPfj6spOHWOnmOs1Xbb1JPG3Ifg==", - "requires": { - "@types/debug": "^4.1.7", - "@types/validator": "^13.7.1", - "debug": "^4.3.3", - "dottie": "^2.0.2", - "inflection": "^1.13.2", - "lodash": "^4.17.21", - "moment": "^2.29.1", - "moment-timezone": "^0.5.34", - "pg-connection-string": "^2.5.0", - "retry-as-promised": "^5.0.0", - "semver": "^7.3.5", - "sequelize-pool": "^7.1.0", - "toposort-class": "^1.0.1", - "uuid": "^8.3.2", - "validator": "^13.7.0", - "wkx": "^0.5.0" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "moment": { - "version": "2.29.2", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.2.tgz", - "integrity": "sha512-UgzG4rvxYpN15jgCmVJwac49h9ly9NurikMWGPdVxm8GZD6XjkKPxDTjQQ43gtGgnV3X0cAyWDdP2Wexoquifg==" - }, - "moment-timezone": { - "version": "0.5.34", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.34.tgz", - "integrity": "sha512-3zAEHh2hKUs3EXLESx/wsgw6IQdusOT8Bxm3D9UrHPQR7zlMmzwybC8zHEM1tQ4LJwP7fcxrWr8tuBg05fFCbg==", - "requires": { - "moment": ">= 2.9.0" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "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" }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "requires": { - "lru-cache": "^6.0.0" + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" } - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" } + }, + "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==" } + } + }, + "sequelize": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-6.18.0.tgz", + "integrity": "sha512-x8TW8ovqG8ljZq0Uow1mtMq44hSKPefWEC590R9IWgF2dajEHvKJJpXo1FiRPfj6spOHWOnmOs1Xbb1JPG3Ifg==", + "requires": { + "@types/debug": "^4.1.7", + "@types/validator": "^13.7.1", + "debug": "^4.3.3", + "dottie": "^2.0.2", + "inflection": "^1.13.2", + "lodash": "^4.17.21", + "moment": "^2.29.1", + "moment-timezone": "^0.5.34", + "pg-connection-string": "^2.5.0", + "retry-as-promised": "^5.0.0", + "semver": "^7.3.5", + "sequelize-pool": "^7.1.0", + "toposort-class": "^1.0.1", + "uuid": "^8.3.2", + "validator": "^13.7.0", + "wkx": "^0.5.0" }, - "sequelize-cli": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/sequelize-cli/-/sequelize-cli-6.4.1.tgz", - "integrity": "sha512-gIzzFitUGUErq6DYd1JDnsmx7z7XcxzRNe4Py3AqeaxcyjpCAZU2BQnsNPGPMKAaXfMtKi/d9Tu4MtLrehVzIQ==", - "requires": { - "cli-color": "^2.0.1", - "fs-extra": "^9.1.0", - "js-beautify": "^1.14.0", - "lodash": "^4.17.21", - "resolve": "^1.20.0", - "umzug": "^2.3.0", - "yargs": "^16.2.0" - }, - "dependencies": { - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" - }, - "fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "is-core-module": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", - "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", - "requires": { - "has": "^1.0.3" - } - }, - "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" - } - }, - "resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", - "requires": { - "is-core-module": "^2.8.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "umzug": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/umzug/-/umzug-2.3.0.tgz", - "integrity": "sha512-Z274K+e8goZK8QJxmbRPhl89HPO1K+ORFtm6rySPhFKfKc5GHhqdzD0SGhSWHkzoXasqJuItdhorSvY7/Cgflw==", - "requires": { - "bluebird": "^3.7.2" - } - }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" } - } - }, - "sequelize-pool": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/sequelize-pool/-/sequelize-pool-7.1.0.tgz", - "integrity": "sha512-G9c0qlIWQSK29pR/5U2JF5dDQeqqHRragoyahj/Nx4KOOQ3CPPfzxnfqFPCSB7x5UgjOgnZ61nSxz+fjDpRlJg==" - }, - "serialize-javascript": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", - "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "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": "4.1.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-4.1.0.tgz", - "integrity": "sha512-zTEg4HL0RwVrqcWs3ztF+x1vkxfm0lP+MQQFPiMJTKVceBwEV0A569Ou8l9IYQG8jOZdMVI1hGsc0tmeD2o/Lw==", - "requires": { - "is-plain-object": "^2.0.4", - "is-primitive": "^3.0.1" - } - }, - "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" - }, - "shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "requires": { - "kind-of": "^6.0.2" - } - }, - "shebang-command": { - "version": "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==", - "dev": true - }, - "shelljs": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", - "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", - "dev": true, - "requires": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - } - }, - "shx": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/shx/-/shx-0.3.2.tgz", - "integrity": "sha512-aS0mWtW3T2sHAenrSrip2XGv39O9dXIFUqxAEWHEOS1ePtGIBavdPJY1kE2IHl14V/4iCbUiNDPGdyYTtmhSoA==", - "dev": true, - "requires": { - "es6-object-assign": "^1.0.3", - "minimist": "^1.2.0", - "shelljs": "^0.8.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true + }, + "lru-cache": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.8.1.tgz", + "integrity": "sha512-E1v547OCgJvbvevfjgK9sNKIVXO96NnsTsFPBlg4ZxjhsJSODoH9lk8Bm0OxvHNm6Vm5Yqkl/1fErDxhYL8Skg==" + }, + "moment": { + "version": "2.29.2", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.2.tgz", + "integrity": "sha512-UgzG4rvxYpN15jgCmVJwac49h9ly9NurikMWGPdVxm8GZD6XjkKPxDTjQQ43gtGgnV3X0cAyWDdP2Wexoquifg==" + }, + "moment-timezone": { + "version": "0.5.34", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.34.tgz", + "integrity": "sha512-3zAEHh2hKUs3EXLESx/wsgw6IQdusOT8Bxm3D9UrHPQR7zlMmzwybC8zHEM1tQ4LJwP7fcxrWr8tuBg05fFCbg==", + "requires": { + "moment": ">= 2.9.0" } - } - }, - "sigmund": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=" - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" - }, - "simple-oauth2": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/simple-oauth2/-/simple-oauth2-4.3.0.tgz", - "integrity": "sha512-gjLIfy7M7WZSf3k5IZCQfEozbQwmW80zR9YMH4ph/WWG6S4U6sGhPujz8X6Hj6sZ8l7acSAxiyM4tF0vIN+E+A==", - "requires": { - "@hapi/hoek": "^9.0.4", - "@hapi/wreck": "^17.0.0", - "debug": "^4.1.1", - "joi": "^17.3.0" - }, - "dependencies": { - "@hapi/hoek": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.1.tgz", - "integrity": "sha512-gfta+H8aziZsm8pZa0vj04KO6biEiisppNgA1kbJvFrrWu9Vm7eaUEy76DIxsuTaWvti5fkJVhllWc6ZTE+Mdw==" - }, - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "requires": { - "ms": "2.1.2" - } - }, - "joi": { - "version": "17.4.2", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.4.2.tgz", - "integrity": "sha512-Lm56PP+n0+Z2A2rfRvsfWVDXGEWjXxatPopkQ8qQ5mxCEhwHG+Ettgg5o98FFaxilOxozoa14cFhrE/hOzh/Nw==", - "requires": { - "@hapi/hoek": "^9.0.0", - "@hapi/topo": "^5.0.0", - "@sideway/address": "^4.1.0", - "@sideway/formula": "^3.0.0", - "@sideway/pinpoint": "^2.0.0" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "semver": { + "version": "7.3.6", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", + "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "requires": { + "lru-cache": "^7.4.0" } + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" } + } + }, + "sequelize-cli": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/sequelize-cli/-/sequelize-cli-6.4.1.tgz", + "integrity": "sha512-gIzzFitUGUErq6DYd1JDnsmx7z7XcxzRNe4Py3AqeaxcyjpCAZU2BQnsNPGPMKAaXfMtKi/d9Tu4MtLrehVzIQ==", + "requires": { + "cli-color": "^2.0.1", + "fs-extra": "^9.1.0", + "js-beautify": "^1.14.0", + "lodash": "^4.17.21", + "resolve": "^1.20.0", + "umzug": "^2.3.0", + "yargs": "^16.2.0" }, - "simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", - "dev": true, - "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==", - "dev": true + "dependencies": { + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" } - } - }, - "sinon": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.5.0.tgz", - "integrity": "sha512-AoD0oJWerp0/rY9czP/D6hDTTUYGpObhZjMpd7Cl/A6+j0xBE+ayL/ldfggkBXUs0IkvIiM1ljM8+WkOc5k78Q==", - "dev": true, - "requires": { - "@sinonjs/commons": "^1.4.0", - "@sinonjs/formatio": "^3.2.1", - "@sinonjs/samsam": "^3.3.3", - "diff": "^3.5.0", - "lolex": "^4.2.0", - "nise": "^1.5.2", - "supports-color": "^5.5.0" - } - }, - "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true + }, + "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" } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" } + } + }, + "sequelize-pool": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/sequelize-pool/-/sequelize-pool-7.1.0.tgz", + "integrity": "sha512-G9c0qlIWQSK29pR/5U2JF5dDQeqqHRragoyahj/Nx4KOOQ3CPPfzxnfqFPCSB7x5UgjOgnZ61nSxz+fjDpRlJg==" + }, + "serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "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": "4.1.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-4.1.0.tgz", + "integrity": "sha512-zTEg4HL0RwVrqcWs3ztF+x1vkxfm0lP+MQQFPiMJTKVceBwEV0A569Ou8l9IYQG8jOZdMVI1hGsc0tmeD2o/Lw==", + "requires": { + "is-plain-object": "^2.0.4", + "is-primitive": "^3.0.1" + } + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "shebang-command": { + "version": "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.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", + "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", + "dev": true + }, + "shelljs": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "dev": true, + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" }, - "socket.io-client": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.4.0.tgz", - "integrity": "sha512-M6xhnKQHuuZd4Ba9vltCLT9oa+YvTsP8j9NcEiLElfIg8KeYPyhWOes6x4t+LTAC8enQbE/995AdTem2uNyKKQ==", - "requires": { - "backo2": "1.0.2", - "component-bind": "1.0.0", - "component-emitter": "~1.3.0", - "debug": "~3.1.0", - "engine.io-client": "~3.5.0", - "has-binary2": "~1.0.2", - "indexof": "0.0.1", - "parseqs": "0.0.6", - "parseuri": "0.0.6", - "socket.io-parser": "~3.3.0", - "to-array": "0.1.4" - }, - "dependencies": { - "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==" + "dependencies": { + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "requires": { + "resolve": "^1.1.6" } } + } + }, + "shx": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/shx/-/shx-0.3.4.tgz", + "integrity": "sha512-N6A9MLVqjxZYcVn8hLmtneQWIJtp8IKzMP4eMnx+nqkvXoqinUPCbUFLp2UcWTEIUONhlk0ewxr/jaVGlc+J+g==", + "dev": true, + "requires": { + "minimist": "^1.2.3", + "shelljs": "^0.8.5" + } + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" }, - "socket.io-parser": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.2.tgz", - "integrity": "sha512-FJvDBuOALxdCI9qwRrO/Rfp9yfndRtc1jSgVgV8FDraihmSP/MLGD5PEuJrNfjALvcQ+vMDM/33AWOYP/JSjDg==", - "requires": { - "component-emitter": "~1.3.0", - "debug": "~3.1.0", - "isarray": "2.0.1" - }, - "dependencies": { - "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==" - } + "dependencies": { + "object-inspect": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", + "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", + "dev": true } + } + }, + "sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=" + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "simple-oauth2": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/simple-oauth2/-/simple-oauth2-4.3.0.tgz", + "integrity": "sha512-gjLIfy7M7WZSf3k5IZCQfEozbQwmW80zR9YMH4ph/WWG6S4U6sGhPujz8X6Hj6sZ8l7acSAxiyM4tF0vIN+E+A==", + "requires": { + "@hapi/hoek": "^9.0.4", + "@hapi/wreck": "^17.0.0", + "debug": "^4.1.1", + "joi": "^17.3.0" }, - "sorted-array-functions": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/sorted-array-functions/-/sorted-array-functions-1.2.0.tgz", - "integrity": "sha512-sWpjPhIZJtqO77GN+LD8dDsDKcWZ9GCOJNqKzi1tvtjGIzwfoyuRH8S0psunmc6Z5P+qfDqztSbwYR5X/e1UTg==" - }, - "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==", - "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==" - }, - "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "spdx-correct": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", - "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", - "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", - "dev": true - }, - "split-ca": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/split-ca/-/split-ca-1.0.1.tgz", - "integrity": "sha1-bIOv82kvphJW4M0ZfgXp3hV2kaY=" - }, - "split-on-first": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", - "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==" - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "sqlite3": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.0.2.tgz", - "integrity": "sha512-1SdTNo+BVU211Xj1csWa8lV6KM0CtucDwRyA0VHl91wEH1Mgh7RxUpI4rVvG7OhHrzCSGaVyW5g8vKvlrk9DJA==", - "requires": { - "node-addon-api": "^3.0.0", - "node-gyp": "3.x", - "node-pre-gyp": "^0.11.0" - }, - "dependencies": { - "node-pre-gyp": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz", - "integrity": "sha512-TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q==", - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } - }, - "ssf": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/ssf/-/ssf-0.11.2.tgz", - "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==", - "requires": { - "frac": "~1.1.2" - } - }, - "ssh2": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.9.0.tgz", - "integrity": "sha512-rhhIZT0eMPvCBSOG8CpqZZ7gre2vgXaIqmb3Jb83t88rjsxIsFzDanqBJM9Ns8BmP1835A5IbQ199io4EUZwOA==", - "requires": { - "asn1": "^0.2.4", - "bcrypt-pbkdf": "^1.0.2", - "cpu-features": "~0.0.4", - "nan": "^2.15.0" - }, - "dependencies": { - "nan": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", - "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", - "optional": true + "dependencies": { + "@hapi/hoek": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.1.tgz", + "integrity": "sha512-gfta+H8aziZsm8pZa0vj04KO6biEiisppNgA1kbJvFrrWu9Vm7eaUEy76DIxsuTaWvti5fkJVhllWc6ZTE+Mdw==" + }, + "@sideway/address": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", + "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", + "requires": { + "@hapi/hoek": "^9.0.0" } - } - }, - "sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "optional": true, - "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" - }, - "dependencies": { - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "optional": true + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" } - } - }, - "stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", - "dev": true - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string.prototype.padend": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.0.0.tgz", - "integrity": "sha1-86rvfBcZ8XDF6rHDK/eA2W4h8vA=", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.4.3", - "function-bind": "^1.0.2" - } - }, - "string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "string.prototype.trimleft": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz", - "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" - } - }, - "string.prototype.trimright": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz", - "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" - } - }, - "string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "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" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" - }, - "style-loader": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz", - "integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==", - "dev": true - }, - "suncalc": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/suncalc/-/suncalc-1.8.0.tgz", - "integrity": "sha1-HZiYEJVjB4dQ9JlKlZ5lTYdqy/U=" - }, - "superagent": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz", - "integrity": "sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==", - "dev": true, - "requires": { - "component-emitter": "^1.2.0", - "cookiejar": "^2.1.0", - "debug": "^3.1.0", - "extend": "^3.0.0", - "form-data": "^2.3.1", - "formidable": "^1.2.0", - "methods": "^1.1.1", - "mime": "^1.4.1", - "qs": "^6.5.1", - "readable-stream": "^2.3.5" - } - }, - "supertest": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/supertest/-/supertest-3.4.2.tgz", - "integrity": "sha512-WZWbwceHUo2P36RoEIdXvmqfs47idNNZjCuJOqDz6rvtkk8ym56aU5oglORCpPeXGxT7l9rkJ41+O1lffQXYSA==", - "dev": true, - "requires": { - "methods": "^1.1.2", - "superagent": "^3.8.3" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" - }, - "table": { - "version": "6.0.7", - "resolved": "https://registry.npmjs.org/table/-/table-6.0.7.tgz", - "integrity": "sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==", - "dev": true, - "requires": { - "ajv": "^7.0.2", - "lodash": "^4.17.20", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.0" - }, - "dependencies": { - "ajv": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.2.3.tgz", - "integrity": "sha512-idv5WZvKVXDqKralOImQgPM9v6WOdLNa0IY3B3doOjw/YxRGT8I+allIJ6kd7Uaj+SF1xZUSU+nPM5aDNBVtnw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "ansi-regex": { - "version": "5.0.0", - "resolved": "", - "dev": true - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } + }, + "joi": { + "version": "17.6.0", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.6.0.tgz", + "integrity": "sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw==", + "requires": { + "@hapi/hoek": "^9.0.0", + "@hapi/topo": "^5.0.0", + "@sideway/address": "^4.1.3", + "@sideway/formula": "^3.0.0", + "@sideway/pinpoint": "^2.0.0" } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" } + } + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "dev": true, + "requires": { + "is-arrayish": "^0.3.1" }, - "taffydb": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz", - "integrity": "sha1-fLy2S1oUG2ou/CxdLGe04VCyomg=", - "dev": true - }, - "tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true - }, - "tar": { - "version": "4.4.13", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", - "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.8.6", - "minizlib": "^1.2.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.3" - } - }, - "tar-fs": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.0.1.tgz", - "integrity": "sha512-6tzWDMeroL87uF/+lin46k+Q+46rAJ0SyPGz7OW7wTgblI273hsBqk2C1j0/xNadNLKDTUL9BukSjB7cwgmlPA==", - "requires": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.0.0" - } - }, - "tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "requires": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "dependencies": { - "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" - } - } + "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==", + "dev": true } + } + }, + "sinon": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.5.0.tgz", + "integrity": "sha512-AoD0oJWerp0/rY9czP/D6hDTTUYGpObhZjMpd7Cl/A6+j0xBE+ayL/ldfggkBXUs0IkvIiM1ljM8+WkOc5k78Q==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.4.0", + "@sinonjs/formatio": "^3.2.1", + "@sinonjs/samsam": "^3.3.3", + "diff": "^3.5.0", + "lolex": "^4.2.0", + "nise": "^1.5.2", + "supports-color": "^5.5.0" + } + }, + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" }, - "term-size": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", - "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==", - "dev": true - }, - "terser": { - "version": "5.12.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.12.1.tgz", - "integrity": "sha512-NXbs+7nisos5E+yXwAD+y7zrcTkMqb0dEJxIGtSKPdCBzopf7ni4odPul2aechpV7EXNvOudYOX2bb5tln1jbQ==", - "dev": true, - "requires": { - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.20" - }, - "dependencies": { - "acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", - "dev": true - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" } - } - }, - "terser-webpack-plugin": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", - "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", - "dev": true, - "requires": { - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1", - "terser": "^5.7.2" - }, - "dependencies": { - "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true } + } + }, + "socket.io-client": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.4.0.tgz", + "integrity": "sha512-M6xhnKQHuuZd4Ba9vltCLT9oa+YvTsP8j9NcEiLElfIg8KeYPyhWOes6x4t+LTAC8enQbE/995AdTem2uNyKKQ==", + "requires": { + "backo2": "1.0.2", + "component-bind": "1.0.0", + "component-emitter": "~1.3.0", + "debug": "~3.1.0", + "engine.io-client": "~3.5.0", + "has-binary2": "~1.0.2", + "indexof": "0.0.1", + "parseqs": "0.0.6", + "parseuri": "0.0.6", + "socket.io-parser": "~3.3.0", + "to-array": "0.1.4" }, - "text-hex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", - "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==", - "dev": true - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "timers-ext": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", - "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==", - "requires": { - "es5-ext": "~0.10.46", - "next-tick": "1" - } - }, - "tinytim": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/tinytim/-/tinytim-0.1.1.tgz", - "integrity": "sha1-yWih5VWa2VUyJO92J7qzTjyu+Kg=" - }, - "to-array": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", - "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=" - }, - "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=", - "dev": true - }, - "to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" - }, - "topo": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/topo/-/topo-3.0.3.tgz", - "integrity": "sha512-IgpPtvD4kjrJ7CRA3ov2FhWQADwv+Tdqbsf1ZnPUSAtCJ9e1Z44MmoSGDXGk4IppoZA7jd/QRkNddlLJWlUZsQ==", - "requires": { - "hoek": "6.x.x" - } - }, - "toposort-class": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz", - "integrity": "sha1-f/0feMi+KMO6Rc1OGj9e4ZO9mYg=" - }, - "touch": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", - "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", - "dev": true, - "requires": { - "nopt": "~1.0.10" - }, - "dependencies": { - "nopt": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", - "dev": true, - "requires": { - "abbrev": "1" - } - } + "dependencies": { + "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==" } + } + }, + "socket.io-parser": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.2.tgz", + "integrity": "sha512-FJvDBuOALxdCI9qwRrO/Rfp9yfndRtc1jSgVgV8FDraihmSP/MLGD5PEuJrNfjALvcQ+vMDM/33AWOYP/JSjDg==", + "requires": { + "component-emitter": "~1.3.0", + "debug": "~3.1.0", + "isarray": "2.0.1" }, - "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==", - "optional": true, - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" + "dependencies": { + "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==" } + } + }, + "sorted-array-functions": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sorted-array-functions/-/sorted-array-functions-1.3.0.tgz", + "integrity": "sha512-2sqgzeFlid6N4Z2fUQ1cvFmTOLRi/sEDzSQ0OKYchqgoPmQBVyM3959qYx3fpS6Esef80KjmpgPeEr028dP3OA==" + }, + "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==", + "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==" + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "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==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", + "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", + "dev": true + }, + "split-ca": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split-ca/-/split-ca-1.0.1.tgz", + "integrity": "sha1-bIOv82kvphJW4M0ZfgXp3hV2kaY=" + }, + "split-on-first": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", + "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==" + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sqlite3": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.0.2.tgz", + "integrity": "sha512-1SdTNo+BVU211Xj1csWa8lV6KM0CtucDwRyA0VHl91wEH1Mgh7RxUpI4rVvG7OhHrzCSGaVyW5g8vKvlrk9DJA==", + "requires": { + "node-addon-api": "^3.0.0", + "node-gyp": "3.x", + "node-pre-gyp": "^0.11.0" }, - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" - }, - "tracer": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/tracer/-/tracer-1.1.4.tgz", - "integrity": "sha512-43Ws4c/V6VK9i2MLjmeYVtXZ+YUHU/qFXznJqYgI8F5nNrIQ4v9ImBAk+JjfPHS4StlpmaHzgR5qpBydbD9TkA==", - "requires": { - "colors": "1.4.0", - "dateformat": "3.0.3", - "mkdirp": "^1.0.4", - "tinytim": "0.1.1" - }, - "dependencies": { - "colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + "dependencies": { + "node-pre-gyp": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz", + "integrity": "sha512-TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q==", + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" } + } + }, + "ssf": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/ssf/-/ssf-0.11.2.tgz", + "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==", + "requires": { + "frac": "~1.1.2" + } + }, + "ssh2": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.9.0.tgz", + "integrity": "sha512-rhhIZT0eMPvCBSOG8CpqZZ7gre2vgXaIqmb3Jb83t88rjsxIsFzDanqBJM9Ns8BmP1835A5IbQ199io4EUZwOA==", + "requires": { + "asn1": "^0.2.4", + "bcrypt-pbkdf": "^1.0.2", + "cpu-features": "~0.0.4", + "nan": "^2.15.0" }, - "triple-beam": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", - "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==", - "dev": true - }, - "tsconfig-paths": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", - "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", - "dev": true, - "requires": { - "@types/json5": "^0.0.29", - "json5": "^1.0.1", - "minimist": "^1.2.0", - "strip-bom": "^3.0.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true - } + "dependencies": { + "nan": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", + "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", + "optional": true } + } + }, + "sshpk": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "optional": true, + "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" }, - "tslib": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", - "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "optional": true, - "requires": { - "safe-buffer": "^5.0.1" + "dependencies": { + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "optional": true } + } + }, + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", + "dev": true + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "strict-uri-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", + "integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY=" + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string.prototype.padend": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.3.tgz", + "integrity": "sha512-jNIIeokznm8SD/TZISQsZKYu7RJyheFNt84DUPrh482GC8RVp2MKqm2O5oBRdGxbDQoXrhhWtPIWQOiy20svUg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.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.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "requires": { - "prelude-ls": "~1.1.2" + "dependencies": { + "es-abstract": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.2.tgz", + "integrity": "sha512-gfSBJoZdlL2xRiOCy0g8gLMryhoe1TlimjzU99L/31Z8QEGIhVQI+EWwt5lT+AuU9SnorVupXFqqOGqGfsyO6w==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^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==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + }, + "is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "dev": true + }, + "is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "object-inspect": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", + "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } } + } + }, + "string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimleft": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.3.tgz", + "integrity": "sha512-699Ibssmj/awVzvdNk4g83/Iu8U9vDohzmA/ly2BrQWGhamuY4Tlvs5XKmKliDt3ky6SKbE1bzPhASKCFlx9Sg==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "string.prototype.trimstart": "^1.0.3" + } + }, + "string.prototype.trimright": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.3.tgz", + "integrity": "sha512-hoOq56oRFnnfDuXNy2lGHiwT77MehHv9d0zGfRZ8QdC+4zjrkFB9vd5i/zYTd/ymFBd4YxtbdgHt3U6ksGeuBw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "string.prototype.trimend": "^1.0.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "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" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + }, + "style-loader": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz", + "integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==", + "dev": true + }, + "suncalc": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/suncalc/-/suncalc-1.9.0.tgz", + "integrity": "sha512-vMJ8Byp1uIPoj+wb9c1AdK4jpkSKVAywgHX0lqY7zt6+EWRRC3Z+0Ucfjy/0yxTVO1hwwchZe4uoFNqrIC24+A==" + }, + "superagent": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz", + "integrity": "sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==", + "dev": true, + "requires": { + "component-emitter": "^1.2.0", + "cookiejar": "^2.1.0", + "debug": "^3.1.0", + "extend": "^3.0.0", + "form-data": "^2.3.1", + "formidable": "^1.2.0", + "methods": "^1.1.1", + "mime": "^1.4.1", + "qs": "^6.5.1", + "readable-stream": "^2.3.5" + } + }, + "supertest": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/supertest/-/supertest-3.4.2.tgz", + "integrity": "sha512-WZWbwceHUo2P36RoEIdXvmqfs47idNNZjCuJOqDz6rvtkk8ym56aU5oglORCpPeXGxT7l9rkJ41+O1lffQXYSA==", + "dev": true, + "requires": { + "methods": "^1.1.2", + "superagent": "^3.8.3" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" + }, + "table": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.0.tgz", + "integrity": "sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==", + "dev": true, + "requires": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" }, - "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==", - "dev": true + "dependencies": { + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, + "taffydb": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz", + "integrity": "sha1-fLy2S1oUG2ou/CxdLGe04VCyomg=", + "dev": true + }, + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true + }, + "tar": { + "version": "4.4.19", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz", + "integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==", + "requires": { + "chownr": "^1.1.4", + "fs-minipass": "^1.2.7", + "minipass": "^2.9.0", + "minizlib": "^1.3.3", + "mkdirp": "^0.5.5", + "safe-buffer": "^5.2.1", + "yallist": "^3.1.1" }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true + "dependencies": { + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "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==" + } + } + }, + "tar-fs": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.0.1.tgz", + "integrity": "sha512-6tzWDMeroL87uF/+lin46k+Q+46rAJ0SyPGz7OW7wTgblI273hsBqk2C1j0/xNadNLKDTUL9BukSjB7cwgmlPA==", + "requires": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.0.0" + } + }, + "tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "requires": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" }, - "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" + "dependencies": { + "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" + } } + } + }, + "term-size": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", + "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==", + "dev": true + }, + "terser": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.12.1.tgz", + "integrity": "sha512-NXbs+7nisos5E+yXwAD+y7zrcTkMqb0dEJxIGtSKPdCBzopf7ni4odPul2aechpV7EXNvOudYOX2bb5tln1jbQ==", + "dev": true, + "requires": { + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.20" }, - "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==", - "dev": true, - "requires": { - "is-typedarray": "^1.0.0" + "dependencies": { + "acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "dev": true + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true } + } + }, + "terser-webpack-plugin": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", + "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", + "dev": true, + "requires": { + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1", + "terser": "^5.7.2" + } + }, + "text-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", + "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==", + "dev": true + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "timers-ext": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", + "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==", + "requires": { + "es5-ext": "~0.10.46", + "next-tick": "1" + } + }, + "tinytim": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/tinytim/-/tinytim-0.1.1.tgz", + "integrity": "sha1-yWih5VWa2VUyJO92J7qzTjyu+Kg=" + }, + "to-array": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", + "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=" + }, + "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=", + "dev": true + }, + "to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + }, + "topo": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/topo/-/topo-3.0.3.tgz", + "integrity": "sha512-IgpPtvD4kjrJ7CRA3ov2FhWQADwv+Tdqbsf1ZnPUSAtCJ9e1Z44MmoSGDXGk4IppoZA7jd/QRkNddlLJWlUZsQ==", + "requires": { + "hoek": "6.x.x" + } + }, + "toposort-class": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz", + "integrity": "sha1-f/0feMi+KMO6Rc1OGj9e4ZO9mYg=" + }, + "touch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "dev": true, + "requires": { + "nopt": "~1.0.10" }, - "uc.micro": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", - "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", - "dev": true + "dependencies": { + "nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", + "dev": true, + "requires": { + "abbrev": "1" + } + } + } + }, + "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==", + "optional": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" + }, + "tracer": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/tracer/-/tracer-1.1.5.tgz", + "integrity": "sha512-I7/AwGm/gf3KU7DcltmSmKJbytQj3q4hg+JKadtIKocfvBY4olY4SV8rAoMRvAD60gPlggEJ1QoSlb2dQtWHNw==", + "requires": { + "colors": "1.4.0", + "dateformat": "4.5.1", + "mkdirp": "^1.0.4", + "tinytim": "0.1.1" }, - "uglify-js": { - "version": "3.13.2", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.13.2.tgz", - "integrity": "sha512-SbMu4D2Vo95LMC/MetNaso1194M1htEA+JrqE9Hk+G2DhI+itfS9TRu9ZKeCahLDNa/J3n4MqUJ/fOHMzQpRWw==", - "optional": true + "dependencies": { + "dateformat": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.5.1.tgz", + "integrity": "sha512-OD0TZ+B7yP7ZgpJf5K2DIbj3FZvFvxgFUuaqA/V5zTjAtAAXZ1E8bktHxmAGs4x5b7PflqA9LeQ84Og7wYtF7Q==" + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + } + } + }, + "triple-beam": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", + "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==", + "dev": true + }, + "tsconfig-paths": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "dev": true, + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "optional": true, + "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.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "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==", + "dev": true + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "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==", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", + "dev": true + }, + "uglify-js": { + "version": "3.15.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.4.tgz", + "integrity": "sha512-vMOPGDuvXecPs34V74qDKk4iJ/SN4vL3Ow/23ixafENYvtrNvtbcgUeugTcUGRGsOF/5fU8/NYSL5Hyb3l1OJA==", + "optional": true + }, + "uid-safe": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", + "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==", + "dev": true, + "requires": { + "random-bytes": "~1.0.0" + } + }, + "umzug": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/umzug/-/umzug-2.3.0.tgz", + "integrity": "sha512-Z274K+e8goZK8QJxmbRPhl89HPO1K+ORFtm6rySPhFKfKc5GHhqdzD0SGhSWHkzoXasqJuItdhorSvY7/Cgflw==", + "requires": { + "bluebird": "^3.7.2" }, - "uid-safe": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", - "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==", - "dev": true, - "requires": { - "random-bytes": "~1.0.0" + "dependencies": { + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" } + } + }, + "unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" }, - "umzug": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/umzug/-/umzug-2.2.0.tgz", - "integrity": "sha512-xZLW76ax70pND9bx3wqwb8zqkFGzZIK8dIHD9WdNy/CrNfjWcwQgQkGCuUqcuwEBvUm+g07z+qWvY+pxDmMEEw==", - "requires": { - "babel-runtime": "^6.23.0", - "bluebird": "^3.5.3" + "dependencies": { + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true } + } + }, + "undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", + "dev": true + }, + "underscore": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.2.tgz", + "integrity": "sha512-ekY1NhRzq0B08g4bGuX4wd2jZx5GnKz6mKSqFL4nqBlfyMGiG10gDFhDTMEfYmDL6Jy0FUIZp7wiRB+0BP7J2g==", + "dev": true + }, + "unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dev": true, + "requires": { + "crypto-random-string": "^2.0.0" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "update-notifier": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.3.tgz", + "integrity": "sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A==", + "dev": true, + "requires": { + "boxen": "^4.2.0", + "chalk": "^3.0.0", + "configstore": "^5.0.1", + "has-yarn": "^2.1.0", + "import-lazy": "^2.1.0", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.3.1", + "is-npm": "^4.0.0", + "is-yarn-global": "^0.3.0", + "latest-version": "^5.0.0", + "pupa": "^2.0.1", + "semver-diff": "^3.1.1", + "xdg-basedir": "^4.0.0" }, - "unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", - "which-boxed-primitive": "^1.0.2" - }, - "dependencies": { - "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" } - } - }, - "undefsafe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.3.tgz", - "integrity": "sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A==", - "dev": true, - "requires": { - "debug": "^2.2.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } + }, + "chalk": { + "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" } - } - }, - "underscore": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.2.tgz", - "integrity": "sha512-ekY1NhRzq0B08g4bGuX4wd2jZx5GnKz6mKSqFL4nqBlfyMGiG10gDFhDTMEfYmDL6Jy0FUIZp7wiRB+0BP7J2g==", - "dev": true - }, - "unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "dev": true, - "requires": { - "crypto-random-string": "^2.0.0" - } - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" - }, - "update-notifier": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.3.tgz", - "integrity": "sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A==", - "dev": true, - "requires": { - "boxen": "^4.2.0", - "chalk": "^3.0.0", - "configstore": "^5.0.1", - "has-yarn": "^2.1.0", - "import-lazy": "^2.1.0", - "is-ci": "^2.0.0", - "is-installed-globally": "^0.3.1", - "is-npm": "^4.0.0", - "is-yarn-global": "^0.3.0", - "latest-version": "^5.0.0", - "pupa": "^2.0.1", - "semver-diff": "^3.1.1", - "xdg-basedir": "^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==", - "dev": true, - "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==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" } } + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "requires": { + "punycode": "^2.1.0" + } + }, + "url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "dev": true, + "requires": { + "prepend-http": "^2.0.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + }, + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "validator": { + "version": "13.7.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", + "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "optional": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "watchpack": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", + "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "dev": true, + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "webcrypto-core": { + "version": "0.1.27", + "resolved": "https://registry.npmjs.org/webcrypto-core/-/webcrypto-core-0.1.27.tgz", + "integrity": "sha512-r0MSFxvqaIjoqIKerm80P9+7n1dWBG88PYnshJk57J4uZuXlqNX8yQixrEIe3CGqrJ7xwfGM2SQGR4AlJYr02g==", + "requires": { + "tslib": "^1.7.1" + } + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" + }, + "webpack": { + "version": "5.72.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.72.0.tgz", + "integrity": "sha512-qmSmbspI0Qo5ld49htys8GY9XhS9CGqFoHTsOVAnjBdg0Zn79y135R+k4IR4rKK6+eKaabMhJwiVB7xw0SJu5w==", + "dev": true, + "requires": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.4.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.9.2", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.3.1", + "webpack-sources": "^3.2.3" }, - "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "requires": { - "punycode": "^2.1.0" - } - }, - "url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dev": true, - "requires": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "dev": true, - "requires": { - "prepend-http": "^2.0.0" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" - }, - "uuid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", - "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==" - }, - "v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "validator": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", - "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==" - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "optional": true, - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" + "dependencies": { + "acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "dev": true + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "requires": { + "mime-db": "1.52.0" + } + }, + "webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true } + } + }, + "webpack-cli": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.2.tgz", + "integrity": "sha512-m3/AACnBBzK/kMTcxWHcZFPrw/eQuY4Df1TxvIWfWM2x7mRqBQCqKEd96oCUa9jkapLBaFfRce33eGDb4Pr7YQ==", + "dev": true, + "requires": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.1.1", + "@webpack-cli/info": "^1.4.1", + "@webpack-cli/serve": "^1.6.1", + "colorette": "^2.0.14", + "commander": "^7.0.0", + "execa": "^5.0.0", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "webpack-merge": "^5.7.3" }, - "watchpack": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", - "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", - "dev": true, - "requires": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" + "dependencies": { + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true + }, + "interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "dev": true } + } + }, + "webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + } + }, + "webpack-sources": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.1.tgz", + "integrity": "sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==", + "dev": true, + "requires": { + "source-list-map": "^2.0.1", + "source-map": "^0.6.1" + } + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.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-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" }, - "webcrypto-core": { - "version": "0.1.26", - "resolved": "https://registry.npmjs.org/webcrypto-core/-/webcrypto-core-0.1.26.tgz", - "integrity": "sha512-BZVgJZkkHyuz8loKvsaOKiBDXDpmMZf5xG4QAOlSeYdXlFUl9c1FRrVnAXcOdb4fTHMG+TRu81odJwwSfKnWTA==", - "requires": { - "tslib": "^1.7.1" + "dependencies": { + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } } + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "requires": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "dev": true, + "requires": { + "string-width": "^4.0.0" }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" - }, - "webpack": { - "version": "5.71.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.71.0.tgz", - "integrity": "sha512-g4dFT7CFG8LY0iU5G8nBL6VlkT21Z7dcYDpJAEJV5Q1WLb9UwnFbrem1k7K52ILqEmomN7pnzWFxxE6SlDY56A==", - "dev": true, - "requires": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.4.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.9.2", - "es-module-lexer": "^0.9.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.3.1", - "webpack-sources": "^3.2.3" - }, - "dependencies": { - "acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", - "dev": true - }, - "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "requires": { - "mime-db": "1.52.0" - } - }, - "webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" } - } - }, - "webpack-cli": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.2.tgz", - "integrity": "sha512-m3/AACnBBzK/kMTcxWHcZFPrw/eQuY4Df1TxvIWfWM2x7mRqBQCqKEd96oCUa9jkapLBaFfRce33eGDb4Pr7YQ==", - "dev": true, - "requires": { - "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.1.1", - "@webpack-cli/info": "^1.4.1", - "@webpack-cli/serve": "^1.6.1", - "colorette": "^2.0.14", - "commander": "^7.0.0", - "execa": "^5.0.0", - "fastest-levenshtein": "^1.0.12", - "import-local": "^3.0.2", - "interpret": "^2.2.0", - "rechoir": "^0.7.0", - "webpack-merge": "^5.7.3" - }, - "dependencies": { - "commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true - }, - "interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", - "dev": true - }, - "rechoir": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", - "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", - "dev": true, - "requires": { - "resolve": "^1.9.0" - } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" } } + } + }, + "wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, + "winston": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.7.2.tgz", + "integrity": "sha512-QziIqtojHBoyzUOdQvQiar1DH0Xp9nF1A1y7NVy2DGEsz82SBDtOalS0ulTRGVT14xPX3WRWkCsdcJKqNflKng==", + "dev": true, + "requires": { + "@dabh/diagnostics": "^2.0.2", + "async": "^3.2.3", + "is-stream": "^2.0.0", + "logform": "^2.4.0", + "one-time": "^1.0.0", + "readable-stream": "^3.4.0", + "safe-stable-stringify": "^2.3.1", + "stack-trace": "0.0.x", + "triple-beam": "^1.3.0", + "winston-transport": "^4.5.0" }, - "webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", - "dev": true, - "requires": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - } - }, - "webpack-sources": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.1.tgz", - "integrity": "sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==", - "dev": true, - "requires": { - "source-list-map": "^2.0.1", - "source-map": "^0.6.1" - } - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.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-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "requires": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "dependencies": { - "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true - }, - "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==", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } + "dependencies": { + "async": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", + "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" } } + } + }, + "winston-transport": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz", + "integrity": "sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==", + "dev": true, + "requires": { + "logform": "^2.3.2", + "readable-stream": "^3.6.0", + "triple-beam": "^1.3.0" }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "widest-line": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", - "dev": true, - "requires": { - "string-width": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } + "dependencies": { + "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==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" } } + } + }, + "wkx": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/wkx/-/wkx-0.5.0.tgz", + "integrity": "sha512-Xng/d4Ichh8uN4l0FToV/258EjMGU9MGcA0HV2d9B/ZpZB3lqQm7nkOdZdm5GhKtLLhAE7PiVQwN4eN+2YJJUg==", + "requires": { + "@types/node": "*" + } + }, + "wmf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wmf/-/wmf-1.0.2.tgz", + "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==" + }, + "word": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/word/-/word-0.3.0.tgz", + "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==" + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" + }, + "workerpool": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.0.tgz", + "integrity": "sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg==", + "dev": true + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, - "wildcard": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", - "dev": true - }, - "winston": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/winston/-/winston-3.7.2.tgz", - "integrity": "sha512-QziIqtojHBoyzUOdQvQiar1DH0Xp9nF1A1y7NVy2DGEsz82SBDtOalS0ulTRGVT14xPX3WRWkCsdcJKqNflKng==", - "dev": true, - "requires": { - "@dabh/diagnostics": "^2.0.2", - "async": "^3.2.3", - "is-stream": "^2.0.0", - "logform": "^2.4.0", - "one-time": "^1.0.0", - "readable-stream": "^3.4.0", - "safe-stable-stringify": "^2.3.1", - "stack-trace": "0.0.x", - "triple-beam": "^1.3.0", - "winston-transport": "^4.5.0" - }, - "dependencies": { - "async": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", - "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==", - "dev": true - }, - "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==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "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" } - } - }, - "winston-transport": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz", - "integrity": "sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==", - "dev": true, - "requires": { - "logform": "^2.3.2", - "readable-stream": "^3.6.0", - "triple-beam": "^1.3.0" - }, - "dependencies": { - "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==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.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" } - } - }, - "wkx": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/wkx/-/wkx-0.5.0.tgz", - "integrity": "sha512-Xng/d4Ichh8uN4l0FToV/258EjMGU9MGcA0HV2d9B/ZpZB3lqQm7nkOdZdm5GhKtLLhAE7PiVQwN4eN+2YJJUg==", - "requires": { - "@types/node": "*" - } - }, - "wmf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wmf/-/wmf-1.0.2.tgz", - "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==" - }, - "word": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/word/-/word-0.3.0.tgz", - "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==" - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" - }, - "workerpool": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.0.tgz", - "integrity": "sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg==", - "dev": true - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - }, - "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==" - }, - "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==" - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "requires": { - "ansi-regex": "^5.0.1" - } + }, + "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==" + }, + "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==" + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" } - } - }, - "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==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "ws": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", - "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", - "requires": { - "async-limiter": "~1.0.0" - } - }, - "xdg-basedir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", - "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", - "dev": true - }, - "xmlcreate": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz", - "integrity": "sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==", - "dev": true - }, - "xmlhttprequest-ssl": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.3.tgz", - "integrity": "sha512-3XfeQE/wNkvrIktn2Kf0869fC0BN6UpydVasGIeSm2B1Llihf7/0UfZM+eCkOw3P7bP4+qPgqhm7ZoxuJtFU0Q==" - }, - "y18n": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", - "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==", - "dev": true - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - }, - "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==" - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" } } + } + }, + "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==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "ws": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", + "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", + "requires": { + "async-limiter": "~1.0.0" + } + }, + "xdg-basedir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", + "dev": true + }, + "xmlcreate": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz", + "integrity": "sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==", + "dev": true + }, + "xmlhttprequest-ssl": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.3.tgz", + "integrity": "sha512-3XfeQE/wNkvrIktn2Kf0869fC0BN6UpydVasGIeSm2B1Llihf7/0UfZM+eCkOw3P7bP4+qPgqhm7ZoxuJtFU0Q==" + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" - }, - "yargs-unparser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", - "dev": true, - "requires": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - }, - "dependencies": { - "decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "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==" + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" } } + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" + }, + "yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "requires": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" }, - "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", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true - }, - "zlibjs": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/zlibjs/-/zlibjs-0.3.1.tgz", - "integrity": "sha1-UBl+2yihxCymWcyLTmqd3W1ERVQ=" + "dependencies": { + "decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true + } } + }, + "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", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + }, + "zlibjs": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/zlibjs/-/zlibjs-0.3.1.tgz", + "integrity": "sha1-UBl+2yihxCymWcyLTmqd3W1ERVQ=" } } } From c40c17bccc3335d41612af9cc7860a5e1031f11f Mon Sep 17 00:00:00 2001 From: Euguuu Date: Mon, 18 Apr 2022 16:19:14 +0200 Subject: [PATCH 046/164] fix for review --- .../withings/settings/WithingsSettings.js | 2 +- .../all/withings/settings-page/actions.js | 2 +- .../withings/api/withings.controller.js | 6 +- server/services/withings/index.js | 1 + server/services/withings/lib/index.js | 2 + server/services/withings/lib/withings.init.js | 318 +----------------- .../withings/lib/withings.initDevices.js | 299 ++++++++++++++++ .../withings/api/withings.controller.test.js | 8 +- server/test/services/withings/index.test.js | 6 +- .../withings/lib/withings.init.test.js | 117 +------ .../withings/lib/withings.initDevices.test.js | 110 ++++++ 11 files changed, 445 insertions(+), 426 deletions(-) create mode 100755 server/services/withings/lib/withings.initDevices.js create mode 100644 server/test/services/withings/lib/withings.initDevices.test.js diff --git a/front/cypress/integration/routes/integration/withings/settings/WithingsSettings.js b/front/cypress/integration/routes/integration/withings/settings/WithingsSettings.js index 1d4e758f37..c803961e6e 100644 --- a/front/cypress/integration/routes/integration/withings/settings/WithingsSettings.js +++ b/front/cypress/integration/routes/integration/withings/settings/WithingsSettings.js @@ -31,7 +31,7 @@ describe('Withings settings page', () => { cy.intercept( { method: 'POST', - url: `${serverUrl}/api/v1/service/withings/init` + url: `${serverUrl}/api/v1/service/withings/init_devices` }, { body: [] diff --git a/front/src/routes/integration/all/withings/settings-page/actions.js b/front/src/routes/integration/all/withings/settings-page/actions.js index d5e1976cf5..d5b93aaa62 100755 --- a/front/src/routes/integration/all/withings/settings-page/actions.js +++ b/front/src/routes/integration/all/withings/settings-page/actions.js @@ -27,7 +27,7 @@ const actions = store => ({ // Case of config found let withingsDevices; if (returnGetConfig.client_id) { - const result = await state.httpClient.post('/api/v1/service/withings/init'); + const result = await state.httpClient.post('/api/v1/service/withings/init_devices'); if (result) { withingsDevices = result.withingsDevices; } diff --git a/server/services/withings/api/withings.controller.js b/server/services/withings/api/withings.controller.js index 4721cab819..3f6942f3a7 100755 --- a/server/services/withings/api/withings.controller.js +++ b/server/services/withings/api/withings.controller.js @@ -3,12 +3,12 @@ const asyncMiddleware = require('../../../api/middlewares/asyncMiddleware'); module.exports = function WithingsController(gladys, withingsHandler) { /** * @description Init gladys devices with withings devices. - * @api {post} /api/v1/service/withings/init Init gladys devices with withings devices. + * @api {post} /api/v1/service/withings/init_devices Init gladys devices with withings devices. * @apiName init * @apiGroup Withings */ async function init(req, res) { - const resultInit = await withingsHandler.init(req.user.id); + const resultInit = await withingsHandler.initDevices(req.user.id); res.json({ withingsDevices: resultInit, }); @@ -29,7 +29,7 @@ module.exports = function WithingsController(gladys, withingsHandler) { } return { - 'post /api/v1/service/withings/init': { + 'post /api/v1/service/withings/init_devices': { authenticated: true, controller: asyncMiddleware(init), }, diff --git a/server/services/withings/index.js b/server/services/withings/index.js index 1282012d2a..52067b9004 100755 --- a/server/services/withings/index.js +++ b/server/services/withings/index.js @@ -13,6 +13,7 @@ module.exports = function WithingsService(gladys, serviceId) { */ async function start() { logger.log('starting Withings service'); + await withingsHandler.init(); } /** diff --git a/server/services/withings/lib/index.js b/server/services/withings/lib/index.js index 170d106052..a28bf9d75e 100755 --- a/server/services/withings/lib/index.js +++ b/server/services/withings/lib/index.js @@ -1,5 +1,6 @@ // COMMANDS const { init } = require('./withings.init'); +const { initDevices } = require('./withings.initDevices'); const { deleteVar } = require('./withings.deleteVar'); const { deleteDevices } = require('./withings.deleteDevices'); const { poll } = require('./withings.poll'); @@ -26,6 +27,7 @@ const WithingsHandler = function WithingsHandler(gladys, serviceId) { // COMMANDS WithingsHandler.prototype.init = init; +WithingsHandler.prototype.initDevices = initDevices; WithingsHandler.prototype.deleteVar = deleteVar; WithingsHandler.prototype.deleteDevices = deleteDevices; WithingsHandler.prototype.poll = poll; diff --git a/server/services/withings/lib/withings.init.js b/server/services/withings/lib/withings.init.js index 15f99c3f9a..dc63e7a29e 100755 --- a/server/services/withings/lib/withings.init.js +++ b/server/services/withings/lib/withings.init.js @@ -1,324 +1,36 @@ -const uuid = require('uuid'); -const Promise = require('bluebird'); const { OAUTH2 } = require('../../../utils/constants.js'); -const logger = require('../../../utils/logger'); -const withingsBatUtils = require('./utils/withings.buildBatteryLevelValues'); -const { - DEVICE_FEATURE_CATEGORIES, - DEVICE_POLL_FREQUENCIES, - DEVICE_FEATURE_TYPES, - DEVICE_FEATURE_UNITS, -} = require('../../../utils/constants'); - -const withingsDeviceIdName = 'WITHINGS_DEVICE_ID'; /** - * @description Build a new gladys device from withings device. - * - * @param {Object} withingsDevice - Withings device to transform. - * @param {string} serviceId - Withings service id. - * @returns {Object} Return a gladys device. + * @description Check if withings oauth2 configuration is in catabase and save it if necessary. * @example - * withings.buildNewDevice('7fdsf4s68r4gfr68f4r63csd7f6f4c3r85', '78v4f3df83g74v1fsd8375f63gvrf5c'); + * withings.init(); */ -function buildNewDevice(withingsDevice, serviceId) { - // Build unique id for the device - const uniqueId = uuid.v4(); - - // Build params for all device - const newParams = [ - { - name: withingsDeviceIdName, - value: withingsDevice.deviceid, - }, - ]; - - // Build features - const newFeatures = []; - // Feature allow in each device = battery - const uniqueBatFeatureId = uuid.v4(); - const currentDate = new Date(); - - const batteryValues = withingsBatUtils.buildBatteryLevelValues(withingsDevice.battery); - const currentBatValue = batteryValues[0]; - const currentBatValueString = batteryValues[1]; - - newFeatures.push({ - id: uniqueBatFeatureId, - name: 'deviceFeatureCategory.battery.shortCategoryName', - selector: `withings-battery-${uniqueId}`, - device_id: uniqueId, - external_id: uniqueId, - category: DEVICE_FEATURE_CATEGORIES.BATTERY, - type: DEVICE_FEATURE_TYPES.SENSOR.INTEGER, - read_only: true, - keep_history: false, - has_feedback: false, - min: 0, - max: 0, - unit: DEVICE_FEATURE_UNITS.PERCENT, - last_value_changed: currentDate, - last_value: currentBatValue, - last_value_string: currentBatValueString, - feature_state: [ - { - id: uuid.v4(), - device_feature_id: uniqueBatFeatureId, - value: currentBatValue, - created_at: currentDate, - updated_at: currentDate, - }, - ], - }); - logger.trace('Battery feature: ', newFeatures); - - const newDevice = { - id: uniqueId, - external_id: uniqueId, - selector: `withings-${withingsDevice.model}-${uniqueId}`, - name: `Withings - ${withingsDevice.model}`, - model: withingsDevice.model, - room_id: null, - service_id: serviceId, - should_poll: true, - poll_frequency: DEVICE_POLL_FREQUENCIES.EVERY_DAY, - features: newFeatures, - params: newParams, - }; - - return newDevice; -} - -/** - * @description Build features of gladys device. - * @param {Object} currentGroup - Withings measure groups to transform. - * @param {Object} device - Current device. - * @param {Array} currentFeatures - CurrentFeature array to update if exist. - * @returns {Array} Return array of features. - * @example - * withings.buildFeature({...}, {....}, null); - */ -function buildFeature(currentGroup, device, currentFeatures) { - // Build (or get) feature corresponding to the measure - const features = currentFeatures || []; - - // Consider only real measures (not user objectives) => category = 1 - if (currentGroup.category === 1) { - currentGroup.measures.forEach((element) => { - const gladysDeviceId = device.id; - - // Choose type of feature - // (cf: https://developer.withings.com/api-reference#operation/measure-getmeas ) - let featureType; - let featureUnit; - switch (element.type) { - case 1: - featureType = DEVICE_FEATURE_TYPES.HEALTH.WEIGHT; - featureUnit = DEVICE_FEATURE_UNITS.KILOGRAM; - break; - case 4: - featureType = DEVICE_FEATURE_TYPES.HEALTH.HEIGHT; - featureUnit = DEVICE_FEATURE_UNITS.CENTIMETER; - break; - case 5: - featureType = DEVICE_FEATURE_TYPES.HEALTH.FAT_FREE_MASS; - featureUnit = DEVICE_FEATURE_UNITS.KILOGRAM; - break; - case 6: - featureType = DEVICE_FEATURE_TYPES.HEALTH.FAT_RATIO; - featureUnit = DEVICE_FEATURE_UNITS.PERCENT; - break; - case 8: - featureType = DEVICE_FEATURE_TYPES.HEALTH.FAT_MASS_WEIGHT; - featureUnit = DEVICE_FEATURE_UNITS.KILOGRAM; - break; - case 9: - featureType = DEVICE_FEATURE_TYPES.HEALTH.DIASTOLIC_BLOOD_PRESSURE; - featureUnit = DEVICE_FEATURE_UNITS.MERCURE_MILIMETER; - break; - case 10: - featureType = DEVICE_FEATURE_TYPES.HEALTH.SYSTOLIC_BLOOD_PRESSURE; - featureUnit = DEVICE_FEATURE_UNITS.MERCURE_MILIMETER; - break; - case 11: - featureType = DEVICE_FEATURE_TYPES.HEALTH.HEARTH_PULSE; - featureUnit = DEVICE_FEATURE_UNITS.BEATS_PER_MINUTE; - break; - case 12: - featureType = DEVICE_FEATURE_TYPES.HEALTH.TEMPERATURE; - featureUnit = DEVICE_FEATURE_UNITS.CELSIUS; - break; - case 54: - featureType = DEVICE_FEATURE_TYPES.HEALTH.SPO2; - featureUnit = DEVICE_FEATURE_UNITS.PERCENT; - break; - case 71: - featureType = DEVICE_FEATURE_TYPES.HEALTH.BODY_TEMPERATURE; - featureUnit = DEVICE_FEATURE_UNITS.CELSIUS; - break; - case 73: - featureType = DEVICE_FEATURE_TYPES.HEALTH.SKIN_TEMPERATURE; - featureUnit = DEVICE_FEATURE_UNITS.CELSIUS; - break; - case 76: - featureType = DEVICE_FEATURE_TYPES.HEALTH.MUSCLE_MASS; - featureUnit = DEVICE_FEATURE_UNITS.KILOGRAM; - break; - case 77: - featureType = DEVICE_FEATURE_TYPES.HEALTH.HYDRATION; - featureUnit = DEVICE_FEATURE_UNITS.KILOGRAM; - break; - case 88: - featureType = DEVICE_FEATURE_TYPES.HEALTH.BONE_MASS; - featureUnit = DEVICE_FEATURE_UNITS.KILOGRAM; - break; - case 91: - featureType = DEVICE_FEATURE_TYPES.HEALTH.PULSE_WAVE_VELOCITY; - featureUnit = DEVICE_FEATURE_UNITS.METER_PER_SECOND; - break; - default: - featureType = DEVICE_FEATURE_TYPES.HEALTH.UNKNOWN; - featureUnit = ''; - break; - } - const featureName = `deviceFeatureCategory.${DEVICE_FEATURE_CATEGORIES.HEALTH}.${featureType}`; - - // Search existing feature - let tmpFeature = features.find((feat) => feat.type === featureType); - let isNewFeature = false; - - // if not exist build new - if (!tmpFeature) { - isNewFeature = true; - const uniqueId = uuid.v4(); - tmpFeature = { - id: uniqueId, - name: featureName, - selector: `withings-${featureName}-${gladysDeviceId}`, - device_id: gladysDeviceId, - external_id: `withings-${featureName}:${gladysDeviceId}:${uniqueId}`, - category: DEVICE_FEATURE_CATEGORIES.HEALTH, - type: featureType, - read_only: true, - keep_history: true, - has_feedback: false, - unit: featureUnit, - min: 0, - max: 100000, - feature_state: [], - }; - } - - if (isNewFeature) { - features.push(tmpFeature); - } - }); - } - - return features; -} - -/** - * @description Build and save withings device and init feature values. - * @param {string} userId - Gladys userId of current session. - * @returns {Promise} Resolve with withings device added. - * @example - * withings.init('b2f2c27f0bf3414e0fe3facfba7be9455109409a'); - */ -async function init(userId) { - const { serviceId } = this; - +async function init() { // check if variable necessary to oauth2 connection is in variable table - const tokenHost = this.gladys.variable.getValue(OAUTH2.VARIABLE.TOKEN_HOST, serviceId); + const tokenHost = await this.gladys.variable.getValue(OAUTH2.VARIABLE.TOKEN_HOST, this.serviceId); if (!tokenHost) { // Init variable in db - this.gladys.variable.setValue(OAUTH2.VARIABLE.TOKEN_HOST, 'https://wbsapi.withings.net', serviceId); - this.gladys.variable.setValue(OAUTH2.VARIABLE.TOKEN_PATH, '/v2/oauth2', serviceId); - this.gladys.variable.setValue(OAUTH2.VARIABLE.AUTHORIZE_HOST, 'https://account.withings.com', serviceId); - this.gladys.variable.setValue(OAUTH2.VARIABLE.AUTHORIZE_PATH, '/oauth2_user/authorize2', serviceId); - this.gladys.variable.setValue( + await this.gladys.variable.setValue(OAUTH2.VARIABLE.TOKEN_HOST, 'https://wbsapi.withings.net', this.serviceId); + await this.gladys.variable.setValue(OAUTH2.VARIABLE.TOKEN_PATH, '/v2/oauth2', this.serviceId); + await this.gladys.variable.setValue(OAUTH2.VARIABLE.AUTHORIZE_HOST, 'https://account.withings.com', this.serviceId); + await this.gladys.variable.setValue(OAUTH2.VARIABLE.AUTHORIZE_PATH, '/oauth2_user/authorize2', this.serviceId); + await this.gladys.variable.setValue( OAUTH2.VARIABLE.ADDITIONAL_ACCESS_TOKEN_REQUEST_ACTION_PARAM, 'requesttoken', - serviceId, + this.serviceId, ); - this.gladys.variable.setValue( + await this.gladys.variable.setValue( OAUTH2.VARIABLE.INTEGRATION_SCOPE, 'user.info,user.metrics,user.activity,user.sleepevents', - serviceId, + this.serviceId, ); - this.gladys.variable.setValue(OAUTH2.VARIABLE.GRANT_TYPE, 'authorization_code', serviceId); - this.gladys.variable.setValue( + await this.gladys.variable.setValue(OAUTH2.VARIABLE.GRANT_TYPE, 'authorization_code', this.serviceId); + await this.gladys.variable.setValue( OAUTH2.VARIABLE.REDIRECT_URI_SUFFIX, 'dashboard/integration/health/withings/settings', - serviceId, - ); - } - - const userResult = await this.getDevices(userId); - - const devices = []; - const devicesResult = []; - const mapOfDeviceByWithingsDeviceId = new Map(); - - if (userResult.data.body.devices) { - await userResult.data.body.devices.forEach((element) => { - if (element) { - // Build one gladys device for each withings device found - const newDevice = buildNewDevice(element, serviceId); - devices.push(newDevice); - mapOfDeviceByWithingsDeviceId.set(element.deviceid, newDevice); - } - }); - - const measureResult = await this.getMeasures(userId, null); - - const mapOfMeasuresGrpsByWithingsDeviceId = this.buildMapOfMeasures(measureResult.data.body.measuregrps); - - // Build map of feature (based on withings measures) - const mapOfFeatureByWithingsDeviceId = new Map(); - await Promise.map( - mapOfMeasuresGrpsByWithingsDeviceId.entries(), - async (entrie) => { - const key = entrie[0]; - const value = entrie[1]; - value.forEach((currentGroup) => { - if (key) { - const currentFeatures = mapOfFeatureByWithingsDeviceId.get(key); - const features = buildFeature(currentGroup, mapOfDeviceByWithingsDeviceId.get(key), currentFeatures); - if (features) { - mapOfFeatureByWithingsDeviceId.set(key, features); - } - } - }); - }, - { concurrency: 0 }, - ); - - // Build list of device to display - await Promise.map( - mapOfDeviceByWithingsDeviceId.entries(), - async (entrie) => { - const key = entrie[0]; - const value = entrie[1]; - if (key) { - const matchDeviceInDB = await this.matchDeviceInDB(value); - - if (matchDeviceInDB) { - matchDeviceInDB.inDB = true; - devicesResult.push(matchDeviceInDB); - } else { - const arrayOfFeatures = mapOfFeatureByWithingsDeviceId.get(key); - // Assign features to device - value.features = value.features.concat(arrayOfFeatures); - devicesResult.push(value); - } - } - }, - { concurrency: 0 }, + this.serviceId, ); } - - return devicesResult; } module.exports = { diff --git a/server/services/withings/lib/withings.initDevices.js b/server/services/withings/lib/withings.initDevices.js new file mode 100755 index 0000000000..4705c153f0 --- /dev/null +++ b/server/services/withings/lib/withings.initDevices.js @@ -0,0 +1,299 @@ +const uuid = require('uuid'); +const Promise = require('bluebird'); +const logger = require('../../../utils/logger'); +const withingsBatUtils = require('./utils/withings.buildBatteryLevelValues'); +const { + DEVICE_FEATURE_CATEGORIES, + DEVICE_POLL_FREQUENCIES, + DEVICE_FEATURE_TYPES, + DEVICE_FEATURE_UNITS, +} = require('../../../utils/constants'); + +const withingsDeviceIdName = 'WITHINGS_DEVICE_ID'; + +/** + * @description Build a new gladys device from withings device. + * + * @param {Object} withingsDevice - Withings device to transform. + * @param {string} serviceId - Withings service id. + * @returns {Object} Return a gladys device. + * @example + * withings.buildNewDevice('7fdsf4s68r4gfr68f4r63csd7f6f4c3r85', '78v4f3df83g74v1fsd8375f63gvrf5c'); + */ +function buildNewDevice(withingsDevice, serviceId) { + // Build unique id for the device + const uniqueId = uuid.v4(); + + // Build params for all device + const newParams = [ + { + name: withingsDeviceIdName, + value: withingsDevice.deviceid, + }, + ]; + + // Build features + const newFeatures = []; + // Feature allow in each device = battery + const uniqueBatFeatureId = uuid.v4(); + const currentDate = new Date(); + + const batteryValues = withingsBatUtils.buildBatteryLevelValues(withingsDevice.battery); + const currentBatValue = batteryValues[0]; + const currentBatValueString = batteryValues[1]; + + newFeatures.push({ + id: uniqueBatFeatureId, + name: 'deviceFeatureCategory.battery.shortCategoryName', + selector: `withings-battery-${uniqueId}`, + device_id: uniqueId, + external_id: uniqueId, + category: DEVICE_FEATURE_CATEGORIES.BATTERY, + type: DEVICE_FEATURE_TYPES.SENSOR.INTEGER, + read_only: true, + keep_history: false, + has_feedback: false, + min: 0, + max: 0, + unit: DEVICE_FEATURE_UNITS.PERCENT, + last_value_changed: currentDate, + last_value: currentBatValue, + last_value_string: currentBatValueString, + feature_state: [ + { + id: uuid.v4(), + device_feature_id: uniqueBatFeatureId, + value: currentBatValue, + created_at: currentDate, + updated_at: currentDate, + }, + ], + }); + logger.trace('Battery feature: ', newFeatures); + + const newDevice = { + id: uniqueId, + external_id: uniqueId, + selector: `withings-${withingsDevice.model}-${uniqueId}`, + name: `Withings - ${withingsDevice.model}`, + model: withingsDevice.model, + room_id: null, + service_id: serviceId, + should_poll: true, + poll_frequency: DEVICE_POLL_FREQUENCIES.EVERY_DAY, + features: newFeatures, + params: newParams, + }; + + return newDevice; +} + +/** + * @description Build features of gladys device. + * @param {Object} currentGroup - Withings measure groups to transform. + * @param {Object} device - Current device. + * @param {Array} currentFeatures - CurrentFeature array to update if exist. + * @returns {Array} Return array of features. + * @example + * withings.buildFeature({...}, {....}, null); + */ +function buildFeature(currentGroup, device, currentFeatures) { + // Build (or get) feature corresponding to the measure + const features = currentFeatures || []; + + // Consider only real measures (not user objectives) => category = 1 + if (currentGroup.category === 1) { + currentGroup.measures.forEach((element) => { + const gladysDeviceId = device.id; + + // Choose type of feature + // (cf: https://developer.withings.com/api-reference#operation/measure-getmeas ) + let featureType; + let featureUnit; + switch (element.type) { + case 1: + featureType = DEVICE_FEATURE_TYPES.HEALTH.WEIGHT; + featureUnit = DEVICE_FEATURE_UNITS.KILOGRAM; + break; + case 4: + featureType = DEVICE_FEATURE_TYPES.HEALTH.HEIGHT; + featureUnit = DEVICE_FEATURE_UNITS.CENTIMETER; + break; + case 5: + featureType = DEVICE_FEATURE_TYPES.HEALTH.FAT_FREE_MASS; + featureUnit = DEVICE_FEATURE_UNITS.KILOGRAM; + break; + case 6: + featureType = DEVICE_FEATURE_TYPES.HEALTH.FAT_RATIO; + featureUnit = DEVICE_FEATURE_UNITS.PERCENT; + break; + case 8: + featureType = DEVICE_FEATURE_TYPES.HEALTH.FAT_MASS_WEIGHT; + featureUnit = DEVICE_FEATURE_UNITS.KILOGRAM; + break; + case 9: + featureType = DEVICE_FEATURE_TYPES.HEALTH.DIASTOLIC_BLOOD_PRESSURE; + featureUnit = DEVICE_FEATURE_UNITS.MERCURE_MILIMETER; + break; + case 10: + featureType = DEVICE_FEATURE_TYPES.HEALTH.SYSTOLIC_BLOOD_PRESSURE; + featureUnit = DEVICE_FEATURE_UNITS.MERCURE_MILIMETER; + break; + case 11: + featureType = DEVICE_FEATURE_TYPES.HEALTH.HEARTH_PULSE; + featureUnit = DEVICE_FEATURE_UNITS.BEATS_PER_MINUTE; + break; + case 12: + featureType = DEVICE_FEATURE_TYPES.HEALTH.TEMPERATURE; + featureUnit = DEVICE_FEATURE_UNITS.CELSIUS; + break; + case 54: + featureType = DEVICE_FEATURE_TYPES.HEALTH.SPO2; + featureUnit = DEVICE_FEATURE_UNITS.PERCENT; + break; + case 71: + featureType = DEVICE_FEATURE_TYPES.HEALTH.BODY_TEMPERATURE; + featureUnit = DEVICE_FEATURE_UNITS.CELSIUS; + break; + case 73: + featureType = DEVICE_FEATURE_TYPES.HEALTH.SKIN_TEMPERATURE; + featureUnit = DEVICE_FEATURE_UNITS.CELSIUS; + break; + case 76: + featureType = DEVICE_FEATURE_TYPES.HEALTH.MUSCLE_MASS; + featureUnit = DEVICE_FEATURE_UNITS.KILOGRAM; + break; + case 77: + featureType = DEVICE_FEATURE_TYPES.HEALTH.HYDRATION; + featureUnit = DEVICE_FEATURE_UNITS.KILOGRAM; + break; + case 88: + featureType = DEVICE_FEATURE_TYPES.HEALTH.BONE_MASS; + featureUnit = DEVICE_FEATURE_UNITS.KILOGRAM; + break; + case 91: + featureType = DEVICE_FEATURE_TYPES.HEALTH.PULSE_WAVE_VELOCITY; + featureUnit = DEVICE_FEATURE_UNITS.METER_PER_SECOND; + break; + default: + featureType = DEVICE_FEATURE_TYPES.HEALTH.UNKNOWN; + featureUnit = ''; + break; + } + const featureName = `deviceFeatureCategory.${DEVICE_FEATURE_CATEGORIES.HEALTH}.${featureType}`; + + // Search existing feature + let tmpFeature = features.find((feat) => feat.type === featureType); + let isNewFeature = false; + + // if not exist build new + if (!tmpFeature) { + isNewFeature = true; + const uniqueId = uuid.v4(); + tmpFeature = { + id: uniqueId, + name: featureName, + selector: `withings-${featureName}-${gladysDeviceId}`, + device_id: gladysDeviceId, + external_id: `withings-${featureName}:${gladysDeviceId}:${uniqueId}`, + category: DEVICE_FEATURE_CATEGORIES.HEALTH, + type: featureType, + read_only: true, + keep_history: true, + has_feedback: false, + unit: featureUnit, + min: 0, + max: 100000, + feature_state: [], + }; + } + + if (isNewFeature) { + features.push(tmpFeature); + } + }); + } + + return features; +} + +/** + * @description Build and save withings device and init feature values. + * @param {string} userId - Gladys userId of current session. + * @returns {Promise} Resolve with withings device added. + * @example + * withings.initDevices('b2f2c27f0bf3414e0fe3facfba7be9455109409a'); + */ +async function initDevices(userId) { + const { serviceId } = this; + + const userResult = await this.getDevices(userId); + + const devices = []; + const devicesResult = []; + const mapOfDeviceByWithingsDeviceId = new Map(); + + if (userResult.data.body.devices) { + await userResult.data.body.devices.forEach((element) => { + if (element) { + // Build one gladys device for each withings device found + const newDevice = buildNewDevice(element, serviceId); + devices.push(newDevice); + mapOfDeviceByWithingsDeviceId.set(element.deviceid, newDevice); + } + }); + + const measureResult = await this.getMeasures(userId, null); + + const mapOfMeasuresGrpsByWithingsDeviceId = this.buildMapOfMeasures(measureResult.data.body.measuregrps); + + // Build map of feature (based on withings measures) + const mapOfFeatureByWithingsDeviceId = new Map(); + await Promise.map( + mapOfMeasuresGrpsByWithingsDeviceId.entries(), + async (entrie) => { + const key = entrie[0]; + const value = entrie[1]; + value.forEach((currentGroup) => { + if (key) { + const currentFeatures = mapOfFeatureByWithingsDeviceId.get(key); + const features = buildFeature(currentGroup, mapOfDeviceByWithingsDeviceId.get(key), currentFeatures); + if (features) { + mapOfFeatureByWithingsDeviceId.set(key, features); + } + } + }); + }, + { concurrency: 0 }, + ); + + // Build list of device to display + await Promise.map( + mapOfDeviceByWithingsDeviceId.entries(), + async (entrie) => { + const key = entrie[0]; + const value = entrie[1]; + if (key) { + const matchDeviceInDB = await this.matchDeviceInDB(value); + + if (matchDeviceInDB) { + matchDeviceInDB.inDB = true; + devicesResult.push(matchDeviceInDB); + } else { + const arrayOfFeatures = mapOfFeatureByWithingsDeviceId.get(key); + // Assign features to device + value.features = value.features.concat(arrayOfFeatures); + devicesResult.push(value); + } + } + }, + { concurrency: 0 }, + ); + } + + return devicesResult; +} + +module.exports = { + initDevices, +}; diff --git a/server/test/services/withings/api/withings.controller.test.js b/server/test/services/withings/api/withings.controller.test.js index 982398b33b..f0bf474760 100644 --- a/server/test/services/withings/api/withings.controller.test.js +++ b/server/test/services/withings/api/withings.controller.test.js @@ -2,7 +2,7 @@ const { assert, fake } = require('sinon'); const WithingsController = require('../../../../services/withings/api/withings.controller'); const withingsHandler = { - init: fake.resolves({ device: { name: 'testServiceID' } }), + initDevices: fake.resolves({ device: { name: 'testServiceID' } }), poll: fake.resolves({}), deleteVar: fake.resolves({ success: true }), deleteDevices: fake.resolves({ success: true }), @@ -14,15 +14,15 @@ const gladys = { }, }; -describe('WithingsController POST /api/v1/service/withings/init', () => { +describe('WithingsController POST /api/v1/service/withings/init_devices', () => { const controller = WithingsController(gladys, withingsHandler); it('should init', async () => { const req = { user: { id: 'fsdfdd452f4181fsdf2sdfhgyrjfdsfsd' } }; const res = { json: fake.returns(null) }; - await controller['post /api/v1/service/withings/init'].controller(req, res); - assert.calledOnce(withingsHandler.init); + await controller['post /api/v1/service/withings/init_devices'].controller(req, res); + assert.calledOnce(withingsHandler.initDevices); assert.calledOnce(res.json); }); }); diff --git a/server/test/services/withings/index.test.js b/server/test/services/withings/index.test.js index a8f11377af..8b060614f8 100755 --- a/server/test/services/withings/index.test.js +++ b/server/test/services/withings/index.test.js @@ -1,3 +1,4 @@ +const sinon = require('sinon'); const { fake, assert } = require('sinon'); const { expect } = require('chai'); const proxyquire = require('proxyquire').noCallThru(); @@ -21,11 +22,12 @@ describe('withingsService', () => { expect(withingsService).to.have.property('controllers'); expect(withingsService).to.have.property('device'); - assert.notCalled(gladys.variable.getValue); - assert.notCalled(gladys.variable.setValue); + assert.callCount(gladys.variable.getValue, 1); + assert.callCount(gladys.variable.setValue, 8); }); it('should stop service', async () => { + sinon.reset(); await withingsService.stop(); assert.notCalled(gladys.variable.getValue); diff --git a/server/test/services/withings/lib/withings.init.test.js b/server/test/services/withings/lib/withings.init.test.js index bf9242af77..7981cccaaf 100644 --- a/server/test/services/withings/lib/withings.init.test.js +++ b/server/test/services/withings/lib/withings.init.test.js @@ -1,127 +1,20 @@ -const { assert } = require('chai'); -const { OAuth2Server } = require('oauth2-mock-server'); const sinon = require('sinon'); -const serverHttpWithingsMock = require('./withings.serverMock.test'); -const OAuth2Manager = require('../../../../lib/oauth2-client/index'); const WithingsHandler = require('../../../../services/withings/lib'); -const serverHost = 'localhost'; -const httpServerPort = 9192; -const oauth2ServerPort = 9292; - -const server = serverHttpWithingsMock.getHttpServer(serverHost, httpServerPort, true); -const serverOauth2 = new OAuth2Server(); - const gladys = { - device: { - create: sinon.fake.returns(null), - destroyByServiceId: sinon.fake.returns(null), - get: function getFakeDevice() { - return [ - { - name: 'Withings - string', - params: [ - { - name: 'WITHINGS_DEVICE_ID', - value: 'withingsDevideId4', - }, - ], - }, - ]; - }, - saveHistoricalState: function shs(device, featureBattery, featureState) { - device.featureBattery = featureBattery; - device.featureBattery = featureState; - }, - }, - user: { - get: sinon.fake.returns([{ id: '0cd30aef-9c4e-4a23-88e3-3547971296e5' }]), - }, - event: { emit: sinon.fake.returns(null) }, variable: { - getValue: function returnValue(key, serviceId) { - return serverHttpWithingsMock.getVariable(key, serverHost, oauth2ServerPort); - }, + getValue: sinon.fake.returns(null), setValue: sinon.fake.returns(null), - destroy: sinon.fake.returns(null), }, }; describe('WithingsHandler init', () => { - before(function testBefore(done) { - server.start(done); - - // Start fake oatuh2 server - // Generate a new RSA key and add it to the keystore - serverOauth2.issuer.keys.generate('RS256'); - // Start the server - serverOauth2.start(oauth2ServerPort, serverHost); - - gladys.oauth2Client = new OAuth2Manager(gladys.variable); - }); - - after(function testAfter(done) { - server.stop(done); - serverOauth2.stop(); - }); - - it('init devices in Gladys', async () => { + it('init withingsservice in Gladys', async () => { const withingsHandler = new WithingsHandler(gladys, '55f177d7-bc35-4560-a1f0-4c58b9e9f2c4'); - withingsHandler.withingsUrl = `http://${serverHost}:${httpServerPort}`; - withingsHandler.integrationName = 'test'; - const result = await withingsHandler.init('0cd30aef-9c4e-4a23-88e3-3547971296e5'); - - const firstResult = result[0]; - const secondResult = result[1]; - const thirdResult = result[2]; - const fourResult = result[3]; - - await assert.equal(firstResult.name, 'Withings - string'); - await assert.equal(firstResult.service_id, '55f177d7-bc35-4560-a1f0-4c58b9e9f2c4'); - await assert.equal(firstResult.should_poll, true); - await assert.equal(firstResult.poll_frequency, 86400000); - - const featureCreated = firstResult.features; - await assert.equal(featureCreated.length, 18); - - let paramCreated = firstResult.params; - await assert.equal(paramCreated.length, 1); - await assert.equal(paramCreated[0].name, 'WITHINGS_DEVICE_ID'); - await assert.equal(paramCreated[0].value, 'withingsDevideId'); - - await assert.equal(secondResult.name, 'Withings - string'); - paramCreated = secondResult.params; - await assert.equal(paramCreated.length, 1); - await assert.equal(paramCreated[0].name, 'WITHINGS_DEVICE_ID'); - await assert.equal(paramCreated[0].value, 'withingsDevideId2'); - - await assert.equal(thirdResult.name, 'Withings - string'); - paramCreated = thirdResult.params; - await assert.equal(paramCreated.length, 1); - await assert.equal(paramCreated[0].name, 'WITHINGS_DEVICE_ID'); - await assert.equal(paramCreated[0].value, 'withingsDevideId3'); - - await assert.equal(fourResult.name, 'Withings - string'); - paramCreated = fourResult.params; - await assert.equal(paramCreated.length, 1); - await assert.equal(paramCreated[0].name, 'WITHINGS_DEVICE_ID'); - await assert.equal(paramCreated[0].value, 'withingsDevideId4'); - }); - - it('init devices without variable in db', async () => { - gladys.variable.getValue = function returnValue(key, serviceId) { - return null; - }; - const withingsHandler = new WithingsHandler(gladys, '55f177d7-bc35-4560-a1f0-4c58b9e9f2c4'); - withingsHandler.withingsUrl = `http://${serverHost}:${httpServerPort}`; - withingsHandler.integrationName = 'test'; + await withingsHandler.init(); - try { - await withingsHandler.init('0cd30aef-9c4e-4a23-88e3-3547971296e5'); - sinon.assert.fail(); - } catch (e) { - sinon.assert.callCount(gladys.variable.setValue, 8); - } + sinon.assert.callCount(gladys.variable.getValue, 1); + sinon.assert.callCount(gladys.variable.setValue, 8); }); }); diff --git a/server/test/services/withings/lib/withings.initDevices.test.js b/server/test/services/withings/lib/withings.initDevices.test.js new file mode 100644 index 0000000000..ad4cd6b586 --- /dev/null +++ b/server/test/services/withings/lib/withings.initDevices.test.js @@ -0,0 +1,110 @@ +const { assert } = require('chai'); +const { OAuth2Server } = require('oauth2-mock-server'); +const sinon = require('sinon'); +const serverHttpWithingsMock = require('./withings.serverMock.test'); +const OAuth2Manager = require('../../../../lib/oauth2-client/index'); +const WithingsHandler = require('../../../../services/withings/lib'); + +const serverHost = 'localhost'; +const httpServerPort = 9192; +const oauth2ServerPort = 9292; + +const server = serverHttpWithingsMock.getHttpServer(serverHost, httpServerPort, true); +const serverOauth2 = new OAuth2Server(); + +const gladys = { + device: { + create: sinon.fake.returns(null), + destroyByServiceId: sinon.fake.returns(null), + get: function getFakeDevice() { + return [ + { + name: 'Withings - string', + params: [ + { + name: 'WITHINGS_DEVICE_ID', + value: 'withingsDevideId4', + }, + ], + }, + ]; + }, + saveHistoricalState: function shs(device, featureBattery, featureState) { + device.featureBattery = featureBattery; + device.featureBattery = featureState; + }, + }, + user: { + get: sinon.fake.returns([{ id: '0cd30aef-9c4e-4a23-88e3-3547971296e5' }]), + }, + event: { emit: sinon.fake.returns(null) }, + variable: { + getValue: function returnValue(key, serviceId) { + return serverHttpWithingsMock.getVariable(key, serverHost, oauth2ServerPort); + }, + setValue: sinon.fake.returns(null), + destroy: sinon.fake.returns(null), + }, +}; + +describe('WithingsHandler initDevices', () => { + before(function testBefore(done) { + server.start(done); + + // Start fake oatuh2 server + // Generate a new RSA key and add it to the keystore + serverOauth2.issuer.keys.generate('RS256'); + // Start the server + serverOauth2.start(oauth2ServerPort, serverHost); + + gladys.oauth2Client = new OAuth2Manager(gladys.variable); + }); + + after(function testAfter(done) { + server.stop(done); + serverOauth2.stop(); + }); + + it('init devices in Gladys', async () => { + const withingsHandler = new WithingsHandler(gladys, '55f177d7-bc35-4560-a1f0-4c58b9e9f2c4'); + withingsHandler.withingsUrl = `http://${serverHost}:${httpServerPort}`; + + const result = await withingsHandler.initDevices('0cd30aef-9c4e-4a23-88e3-3547971296e5'); + + const firstResult = result[0]; + const secondResult = result[1]; + const thirdResult = result[2]; + const fourResult = result[3]; + + await assert.equal(firstResult.name, 'Withings - string'); + await assert.equal(firstResult.service_id, '55f177d7-bc35-4560-a1f0-4c58b9e9f2c4'); + await assert.equal(firstResult.should_poll, true); + await assert.equal(firstResult.poll_frequency, 86400000); + + const featureCreated = firstResult.features; + await assert.equal(featureCreated.length, 18); + + let paramCreated = firstResult.params; + await assert.equal(paramCreated.length, 1); + await assert.equal(paramCreated[0].name, 'WITHINGS_DEVICE_ID'); + await assert.equal(paramCreated[0].value, 'withingsDevideId'); + + await assert.equal(secondResult.name, 'Withings - string'); + paramCreated = secondResult.params; + await assert.equal(paramCreated.length, 1); + await assert.equal(paramCreated[0].name, 'WITHINGS_DEVICE_ID'); + await assert.equal(paramCreated[0].value, 'withingsDevideId2'); + + await assert.equal(thirdResult.name, 'Withings - string'); + paramCreated = thirdResult.params; + await assert.equal(paramCreated.length, 1); + await assert.equal(paramCreated[0].name, 'WITHINGS_DEVICE_ID'); + await assert.equal(paramCreated[0].value, 'withingsDevideId3'); + + await assert.equal(fourResult.name, 'Withings - string'); + paramCreated = fourResult.params; + await assert.equal(paramCreated.length, 1); + await assert.equal(paramCreated[0].name, 'WITHINGS_DEVICE_ID'); + await assert.equal(paramCreated[0].value, 'withingsDevideId4'); + }); +}); From 5f34c187b6377bda76de57b5fea8b0de054b063b Mon Sep 17 00:00:00 2001 From: Euguuu Date: Mon, 18 Apr 2022 16:26:59 +0200 Subject: [PATCH 047/164] fix for review --- front/cypress/plugins/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/front/cypress/plugins/index.js b/front/cypress/plugins/index.js index b56f766353..07eaaa6bcf 100644 --- a/front/cypress/plugins/index.js +++ b/front/cypress/plugins/index.js @@ -20,7 +20,7 @@ module.exports = (on, config) => { // `config` is the resolved Cypress config // Load NODE env variables - const language = 'en'; + const language = process.env.LANGUAGE || 'en'; config.env.language = language; const serverUrl = process.env.LOCAL_API_URL || 'http://localhost:1443'; From 832ba1fd4e63dc89a8d93cc72323606b2f9f66ba Mon Sep 17 00:00:00 2001 From: Euguuu Date: Mon, 18 Apr 2022 20:43:04 +0200 Subject: [PATCH 048/164] firx for review --- server/lib/oauth2-client/oauth2.buildAuthorizationUri.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/server/lib/oauth2-client/oauth2.buildAuthorizationUri.js b/server/lib/oauth2-client/oauth2.buildAuthorizationUri.js index 7bb9cf6d75..05e1abe3f2 100755 --- a/server/lib/oauth2-client/oauth2.buildAuthorizationUri.js +++ b/server/lib/oauth2-client/oauth2.buildAuthorizationUri.js @@ -43,8 +43,12 @@ async function buildAuthorizationUri(serviceId, userId, integrationName, referer }; const client = new AuthorizationCode(credentials); + let redirectUri = referer; + if (referer && !referer.includes(redirectUriSuffix)) { + redirectUri = `${referer}${redirectUriSuffix}`; + } const authorizationUriResult = await client.authorizeURL({ - redirect_uri: `${referer}${redirectUriSuffix}`, + redirect_uri: redirectUri, scope: integrationScope, state: `gladys_state_${integrationName}`, }); From 7d5995f3cfb0ccee08e5ab2b25c7343905a5830c Mon Sep 17 00:00:00 2001 From: Euguuu Date: Tue, 19 Apr 2022 19:58:33 +0200 Subject: [PATCH 049/164] fix bug redirect uri --- server/lib/oauth2-client/index.js | 2 ++ .../oauth2.buildAuthorizationUri.js | 6 +--- .../oauth2-client/oauth2.buildRedirectUri.js | 31 +++++++++++++++++++ .../oauth2-client/oauth2.getAccessToken.js | 2 +- .../lib/oauth2-client/oauth2manager.test.js | 30 ++++++++++++++++++ 5 files changed, 65 insertions(+), 6 deletions(-) create mode 100755 server/lib/oauth2-client/oauth2.buildRedirectUri.js diff --git a/server/lib/oauth2-client/index.js b/server/lib/oauth2-client/index.js index 60be9603cf..2536c50f61 100755 --- a/server/lib/oauth2-client/index.js +++ b/server/lib/oauth2-client/index.js @@ -2,6 +2,7 @@ const { executeQuery } = require('./oauth2.executeQuery'); const { deleteClient } = require('./oauth2.deleteClient'); const { getAccessToken } = require('./oauth2.getAccessToken'); const { buildAuthorizationUri } = require('./oauth2.buildAuthorizationUri'); +const { buildRedirectUri } = require('./oauth2.buildRedirectUri'); const OAuth2Manager = function OAuth2Manager(variable) { this.variable = variable; @@ -11,5 +12,6 @@ OAuth2Manager.prototype.executeQuery = executeQuery; OAuth2Manager.prototype.deleteClient = deleteClient; OAuth2Manager.prototype.getAccessToken = getAccessToken; OAuth2Manager.prototype.buildAuthorizationUri = buildAuthorizationUri; +OAuth2Manager.prototype.buildRedirectUri = buildRedirectUri; module.exports = OAuth2Manager; diff --git a/server/lib/oauth2-client/oauth2.buildAuthorizationUri.js b/server/lib/oauth2-client/oauth2.buildAuthorizationUri.js index 05e1abe3f2..a27209587d 100755 --- a/server/lib/oauth2-client/oauth2.buildAuthorizationUri.js +++ b/server/lib/oauth2-client/oauth2.buildAuthorizationUri.js @@ -43,12 +43,8 @@ async function buildAuthorizationUri(serviceId, userId, integrationName, referer }; const client = new AuthorizationCode(credentials); - let redirectUri = referer; - if (referer && !referer.includes(redirectUriSuffix)) { - redirectUri = `${referer}${redirectUriSuffix}`; - } const authorizationUriResult = await client.authorizeURL({ - redirect_uri: redirectUri, + redirect_uri: this.buildRedirectUri(referer, redirectUriSuffix), scope: integrationScope, state: `gladys_state_${integrationName}`, }); diff --git a/server/lib/oauth2-client/oauth2.buildRedirectUri.js b/server/lib/oauth2-client/oauth2.buildRedirectUri.js new file mode 100755 index 0000000000..7b0ad032eb --- /dev/null +++ b/server/lib/oauth2-client/oauth2.buildRedirectUri.js @@ -0,0 +1,31 @@ +/** + * @description Build redirect uri for oauth2 service. + * @param {string} referer - Http referer. + * @param {string} redirectUriSuffix - Redirect uri suffix. + * @returns {string} Redirect uri for oauth2 service. + * @example + * oauth2.deleteClient( + * userId: fd81vs687f0bf3414e0fe3facfba7be9455109409a' + * serviceId: 'ffsdvs687f0bf3414e0fe3facfba7be945510fds09a' + * } + * ); + */ +function buildRedirectUri(referer, redirectUriSuffix) { + let redirectUri = referer; + if (redirectUri) { + if (redirectUri.includes('?')) { + // Remove parameter if present in referer + redirectUri = redirectUri.substring(0, redirectUri.indexOf('?')); + } + + if (!referer.includes(redirectUriSuffix)) { + // Add suffix of redirectUri if not present in referer + redirectUri = `${redirectUri}${redirectUriSuffix}`; + } + } + return redirectUri; +} + +module.exports = { + buildRedirectUri, +}; diff --git a/server/lib/oauth2-client/oauth2.getAccessToken.js b/server/lib/oauth2-client/oauth2.getAccessToken.js index 86cf97d8f3..3e33334657 100755 --- a/server/lib/oauth2-client/oauth2.getAccessToken.js +++ b/server/lib/oauth2-client/oauth2.getAccessToken.js @@ -55,7 +55,7 @@ async function getAccessToken(serviceId, userId, authorizationCode, referer) { client_id: clientId, client_secret: secret, grant_type: grantType, - redirect_uri: `${referer}${redirectUriSuffix}`, + redirect_uri: this.buildRedirectUri(referer, redirectUriSuffix), }; if (additionalAccessTokenRequestAxtionParam) { tokenConfig.action = additionalAccessTokenRequestAxtionParam; diff --git a/server/test/lib/oauth2-client/oauth2manager.test.js b/server/test/lib/oauth2-client/oauth2manager.test.js index 2a10c8e124..99e03a0ca2 100755 --- a/server/test/lib/oauth2-client/oauth2manager.test.js +++ b/server/test/lib/oauth2-client/oauth2manager.test.js @@ -129,3 +129,33 @@ describe('oauth2manager failled test', () => { return assert.equal(result, null); }); }); + +describe('oauth2manager buildRedirectUri result test without path', () => { + const manager = new OAuth2Manager(gladys.variable); + + it('oauth manager buildRedirectUri without path test ', async () => { + const result = manager.buildRedirectUri('http://localhost:1444', '/path/test'); + + return assert.equal(result, 'http://localhost:1444/path/test'); + }); +}); + +describe('oauth2manager buildRedirectUri result test with path', () => { + const manager = new OAuth2Manager(gladys.variable); + + it('oauth manager buildRedirectUri with path test ', async () => { + const result = manager.buildRedirectUri('http://localhost:1444/path/test', '/path/test'); + + return assert.equal(result, 'http://localhost:1444/path/test'); + }); +}); + +describe('oauth2manager buildRedirectUri result test with ?', () => { + const manager = new OAuth2Manager(gladys.variable); + + it('oauth manager buildRedirectUri with path test ', async () => { + const result = manager.buildRedirectUri('http://localhost:1444/path/test?test', '/path/test'); + + return assert.equal(result, 'http://localhost:1444/path/test'); + }); +}); From 4845f51128168c77a18f5c22d8d8b4f6062c13d8 Mon Sep 17 00:00:00 2001 From: Euguuu Date: Wed, 11 May 2022 22:09:30 +0200 Subject: [PATCH 050/164] fix merge error --- front/src/utils/consts.js | 1 + server/utils/constants.js | 2 -- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/front/src/utils/consts.js b/front/src/utils/consts.js index 527d9f489d..db76708eda 100644 --- a/front/src/utils/consts.js +++ b/front/src/utils/consts.js @@ -237,6 +237,7 @@ export const DeviceFeatureCategoriesIcon = { [DEVICE_FEATURE_TYPES.HEALTH.SYSTOLIC_BLOOD_PRESSURE]: 'droplet', [DEVICE_FEATURE_TYPES.HEALTH.TEMPERATURE]: 'thermometer', [DEVICE_FEATURE_TYPES.HEALTH.WEIGHT]: 'grid' + }, [DEVICE_FEATURE_CATEGORIES.ENERGY_SENSOR]: { [DEVICE_FEATURE_TYPES.ENERGY_SENSOR.BINARY]: 'power', [DEVICE_FEATURE_TYPES.ENERGY_SENSOR.POWER]: 'zap', diff --git a/server/utils/constants.js b/server/utils/constants.js index e3c449b90a..c1bc01c3eb 100644 --- a/server/utils/constants.js +++ b/server/utils/constants.js @@ -500,12 +500,10 @@ const DEVICE_FEATURE_UNITS = { MILLI_AMPERE: 'milliampere', MILLI_VOLT: 'millivolt', VOLT: 'volt', - PPM: 'ppm', KILOGRAM: 'kg', CENTIMETER: 'cm', MERCURE_MILIMETER: 'mmHg', BEATS_PER_MINUTE: 'bpm', - METER_PER_SECOND: 'meter-per-second', VOLT_AMPERE: 'volt-ampere', VOLT_AMPERE_REACTIVE: 'volt-ampere-reactive', // Length units From c17d801a700b73efe972eefb91677967a2396f48 Mon Sep 17 00:00:00 2001 From: Euguuu Date: Wed, 11 May 2022 23:34:48 +0200 Subject: [PATCH 051/164] fix cypress --- .../routes/integration/withings/settings/WithingsSettings.js | 1 - 1 file changed, 1 deletion(-) diff --git a/front/cypress/integration/routes/integration/withings/settings/WithingsSettings.js b/front/cypress/integration/routes/integration/withings/settings/WithingsSettings.js index c803961e6e..82821ee3c2 100644 --- a/front/cypress/integration/routes/integration/withings/settings/WithingsSettings.js +++ b/front/cypress/integration/routes/integration/withings/settings/WithingsSettings.js @@ -60,7 +60,6 @@ describe('Withings settings page', () => { cy.contains('button', 'oauth2.buttonConnect').click(); - // Check redirected to settings page cy.location('pathname').should('eq', '/dashboard/integration/health/withings/settings'); cy.get('.alert-info').i18n('integration.withings.settings.oauth2.complete'); From 25668640059e6b12ebd18bdca0b090f25d0d6116 Mon Sep 17 00:00:00 2001 From: Euguuu Date: Thu, 12 May 2022 19:42:07 +0200 Subject: [PATCH 052/164] fix cypress --- .../devices/WithingsDeviceListNoDevice.js | 2 +- .../withings/settings/WithingsSettings.js | 27 ++++++++++++++----- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/front/cypress/integration/routes/integration/withings/devices/WithingsDeviceListNoDevice.js b/front/cypress/integration/routes/integration/withings/devices/WithingsDeviceListNoDevice.js index 66290326b9..4bb1f62d65 100644 --- a/front/cypress/integration/routes/integration/withings/devices/WithingsDeviceListNoDevice.js +++ b/front/cypress/integration/routes/integration/withings/devices/WithingsDeviceListNoDevice.js @@ -6,7 +6,7 @@ describe('Withings Empty device list', () => { }); it('Check Empty device page', () => { - cy.get('.alert-info').i18n('integration.withings.device.noDevices'); + cy.get('.alert').i18n('integration.withings.device.noDevices'); }); it('Check right menu page', () => { diff --git a/front/cypress/integration/routes/integration/withings/settings/WithingsSettings.js b/front/cypress/integration/routes/integration/withings/settings/WithingsSettings.js index 82821ee3c2..c8271e65e7 100644 --- a/front/cypress/integration/routes/integration/withings/settings/WithingsSettings.js +++ b/front/cypress/integration/routes/integration/withings/settings/WithingsSettings.js @@ -27,7 +27,7 @@ describe('Withings settings page', () => { { authorizationUri: '/dashboard/integration/health/withings/settings' } - ); + ).as('authorizationUriAction'); cy.intercept( { method: 'POST', @@ -37,6 +37,17 @@ describe('Withings settings page', () => { body: [] } ); + cy.intercept( + { + method: 'POST', + url: `${serverUrl}/api/v1/service/withings/reset` + }, + { + body: { + success: true + } + } + ).as('resetAction'); cy.login(); @@ -60,15 +71,17 @@ describe('Withings settings page', () => { cy.contains('button', 'oauth2.buttonConnect').click(); + cy.wait('@authorizationUriAction'); + cy.location('pathname').should('eq', '/dashboard/integration/health/withings/settings'); - cy.get('.alert-info').i18n('integration.withings.settings.oauth2.complete'); + cy.get('.alert').i18n('integration.withings.settings.oauth2.complete'); - cy.get('.alert-info').i18n('integration.withings.settings.oauth2.clientId'); + cy.get('.alert').i18n('integration.withings.settings.oauth2.clientId'); - cy.get('.alert-info').contains('FakeClientId'); + cy.get('.alert').contains('FakeClientId'); - cy.get('.alert-info').i18n('integration.withings.settings.oauth2.instructionsToUse'); + cy.get('.alert').i18n('integration.withings.settings.oauth2.instructionsToUse'); cy.contains('p', 'oauth2.delete').should('exist'); }); @@ -76,8 +89,10 @@ describe('Withings settings page', () => { it('Check unconnect', () => { cy.contains('button', 'oauth2.unconnectButton').click(); + cy.wait('@resetAction'); + cy.get('.markup').i18n('oauth2.instructions'); - cy.get('.form-label').i18n('oauth2.apiKeyLabel'); + cy.get('.form-label').i18n('oauth2.'); }); }); From 6fa2078da791c198173033da3f82841e864a9159 Mon Sep 17 00:00:00 2001 From: Euguuu Date: Thu, 12 May 2022 20:22:01 +0200 Subject: [PATCH 053/164] fix cypress --- .../devices/WithingsDeviceListNoDevice.js | 2 +- .../withings/settings/WithingsSettings.js | 18 +++++++----------- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/front/cypress/integration/routes/integration/withings/devices/WithingsDeviceListNoDevice.js b/front/cypress/integration/routes/integration/withings/devices/WithingsDeviceListNoDevice.js index 4bb1f62d65..3607f69825 100644 --- a/front/cypress/integration/routes/integration/withings/devices/WithingsDeviceListNoDevice.js +++ b/front/cypress/integration/routes/integration/withings/devices/WithingsDeviceListNoDevice.js @@ -6,7 +6,7 @@ describe('Withings Empty device list', () => { }); it('Check Empty device page', () => { - cy.get('.alert').i18n('integration.withings.device.noDevices'); + cy.get('.alert.alert-info').i18n('integration.withings.device.noDevices'); }); it('Check right menu page', () => { diff --git a/front/cypress/integration/routes/integration/withings/settings/WithingsSettings.js b/front/cypress/integration/routes/integration/withings/settings/WithingsSettings.js index c8271e65e7..1fefd75ca8 100644 --- a/front/cypress/integration/routes/integration/withings/settings/WithingsSettings.js +++ b/front/cypress/integration/routes/integration/withings/settings/WithingsSettings.js @@ -47,14 +47,14 @@ describe('Withings settings page', () => { success: true } } - ).as('resetAction'); + ); cy.login(); cy.visit('/dashboard/integration/health/withings/settings'); }); - it('Check setting page and connect', () => { + it('Check setting page and connect and unconnect', () => { cy.get('.markup').i18n('oauth2.instructions'); cy.get('.form-label').i18n('oauth2.apiKeyLabel'); @@ -75,24 +75,20 @@ describe('Withings settings page', () => { cy.location('pathname').should('eq', '/dashboard/integration/health/withings/settings'); - cy.get('.alert').i18n('integration.withings.settings.oauth2.complete'); + cy.get('.alert.alert-info').i18n('integration.withings.settings.oauth2.complete'); - cy.get('.alert').i18n('integration.withings.settings.oauth2.clientId'); + cy.get('.alert.alert-info').i18n('integration.withings.settings.oauth2.clientId'); - cy.get('.alert').contains('FakeClientId'); + cy.get('.alert.alert-info').contains('FakeClientId'); - cy.get('.alert').i18n('integration.withings.settings.oauth2.instructionsToUse'); + cy.get('.alert.alert-info').i18n('integration.withings.settings.oauth2.instructionsToUse'); cy.contains('p', 'oauth2.delete').should('exist'); - }); - it('Check unconnect', () => { cy.contains('button', 'oauth2.unconnectButton').click(); - cy.wait('@resetAction'); - cy.get('.markup').i18n('oauth2.instructions'); - cy.get('.form-label').i18n('oauth2.'); + cy.get('.form-label').i18n('oauth2.apiKeyLabel'); }); }); From d15ce28ac6d6ea78e939c7ceb42284fb480a8e09 Mon Sep 17 00:00:00 2001 From: Euguuu Date: Sun, 15 May 2022 16:02:53 +0200 Subject: [PATCH 054/164] fix cypress --- .../{WithingsDeviceList.js => WithingsDeviceListWithDevices.js} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename front/cypress/integration/routes/integration/withings/devices/{WithingsDeviceList.js => WithingsDeviceListWithDevices.js} (100%) diff --git a/front/cypress/integration/routes/integration/withings/devices/WithingsDeviceList.js b/front/cypress/integration/routes/integration/withings/devices/WithingsDeviceListWithDevices.js similarity index 100% rename from front/cypress/integration/routes/integration/withings/devices/WithingsDeviceList.js rename to front/cypress/integration/routes/integration/withings/devices/WithingsDeviceListWithDevices.js From 8c8cce891e92c5552ab59cb630eae914956694b0 Mon Sep 17 00:00:00 2001 From: Euguuu Date: Sun, 15 May 2022 16:27:49 +0200 Subject: [PATCH 055/164] fix cypress --- .../withings/settings/WithingsSettings.js | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/front/cypress/integration/routes/integration/withings/settings/WithingsSettings.js b/front/cypress/integration/routes/integration/withings/settings/WithingsSettings.js index 1fefd75ca8..8cf87b30fa 100644 --- a/front/cypress/integration/routes/integration/withings/settings/WithingsSettings.js +++ b/front/cypress/integration/routes/integration/withings/settings/WithingsSettings.js @@ -48,6 +48,28 @@ describe('Withings settings page', () => { } } ); + cy.intercept( + { + method: 'POST', + url: `${serverUrl}/api/v1/service/withings/variable/OAUTH2_CLIENT_ID` + }, + { + body: { + success: true + } + } + ); + cy.intercept( + { + method: 'POST', + url: `${serverUrl}/api/v1/service/withings/variable/OAUTH2_CLIENT_SECRET` + }, + { + body: { + success: true + } + } + ); cy.login(); From b92c6e62eaf12d512e8d7b539faaaf755772a050 Mon Sep 17 00:00:00 2001 From: Euguuu Date: Sun, 15 May 2022 17:32:52 +0200 Subject: [PATCH 056/164] fix cypress --- .../withings/settings/WithingsSettings.js | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/front/cypress/integration/routes/integration/withings/settings/WithingsSettings.js b/front/cypress/integration/routes/integration/withings/settings/WithingsSettings.js index 8cf87b30fa..2d7e9307b0 100644 --- a/front/cypress/integration/routes/integration/withings/settings/WithingsSettings.js +++ b/front/cypress/integration/routes/integration/withings/settings/WithingsSettings.js @@ -2,6 +2,7 @@ describe('Withings settings page', () => { const serverUrl = Cypress.env('serverUrl'); before(() => { + /* let interceptCount = 0; cy.intercept( { @@ -12,13 +13,18 @@ describe('Withings settings page', () => { req.reply(res => { if (interceptCount === 0) { interceptCount += 1; + console.log('yop 0'); res.send({}); } else { - res.send({ client_id: 'FakeClientId' }); + console.log('yop A'); + console.log(res); + res = { client_id: 'FakeClientId' }; + return res; + //res.send({ client_id: 'FakeClientId' }); } }); } - ); + );*/ cy.intercept( { method: 'POST', @@ -91,6 +97,14 @@ describe('Withings settings page', () => { .clear() .type('FakeSecret'); + cy.intercept( + { + method: 'GET', + url: `${serverUrl}/api/v1/service/oauth2/client` + }, + { client_id: 'FakeClientId' } + ); + cy.contains('button', 'oauth2.buttonConnect').click(); cy.wait('@authorizationUriAction'); @@ -106,7 +120,9 @@ describe('Withings settings page', () => { cy.get('.alert.alert-info').i18n('integration.withings.settings.oauth2.instructionsToUse'); cy.contains('p', 'oauth2.delete').should('exist'); + }); + it('Check setting page unconnect', () => { cy.contains('button', 'oauth2.unconnectButton').click(); cy.get('.markup').i18n('oauth2.instructions'); From d2d95163f9a008aa782ba2bcfd206098334ecfdd Mon Sep 17 00:00:00 2001 From: Euguuu Date: Sun, 15 May 2022 19:18:55 +0200 Subject: [PATCH 057/164] fix cypress --- ...tings.js => WithingsSettingsWithConfig.js} | 50 +----------- .../settings/WithingsSettingsWithoutConfig.js | 81 +++++++++++++++++++ 2 files changed, 85 insertions(+), 46 deletions(-) rename front/cypress/integration/routes/integration/withings/settings/{WithingsSettings.js => WithingsSettingsWithConfig.js} (67%) create mode 100644 front/cypress/integration/routes/integration/withings/settings/WithingsSettingsWithoutConfig.js diff --git a/front/cypress/integration/routes/integration/withings/settings/WithingsSettings.js b/front/cypress/integration/routes/integration/withings/settings/WithingsSettingsWithConfig.js similarity index 67% rename from front/cypress/integration/routes/integration/withings/settings/WithingsSettings.js rename to front/cypress/integration/routes/integration/withings/settings/WithingsSettingsWithConfig.js index 2d7e9307b0..aaf3b47ff6 100644 --- a/front/cypress/integration/routes/integration/withings/settings/WithingsSettings.js +++ b/front/cypress/integration/routes/integration/withings/settings/WithingsSettingsWithConfig.js @@ -2,29 +2,6 @@ describe('Withings settings page', () => { const serverUrl = Cypress.env('serverUrl'); before(() => { - /* - let interceptCount = 0; - cy.intercept( - { - method: 'GET', - url: `${serverUrl}/api/v1/service/oauth2/client` - }, - req => { - req.reply(res => { - if (interceptCount === 0) { - interceptCount += 1; - console.log('yop 0'); - res.send({}); - } else { - console.log('yop A'); - console.log(res); - res = { client_id: 'FakeClientId' }; - return res; - //res.send({ client_id: 'FakeClientId' }); - } - }); - } - );*/ cy.intercept( { method: 'POST', @@ -76,27 +53,6 @@ describe('Withings settings page', () => { } } ); - - cy.login(); - - cy.visit('/dashboard/integration/health/withings/settings'); - }); - - it('Check setting page and connect and unconnect', () => { - cy.get('.markup').i18n('oauth2.instructions'); - - cy.get('.form-label').i18n('oauth2.apiKeyLabel'); - - cy.get('input') - .first() - .clear() - .type('FakeClientId'); - - cy.get('input') - .last() - .clear() - .type('FakeSecret'); - cy.intercept( { method: 'GET', @@ -105,10 +61,12 @@ describe('Withings settings page', () => { { client_id: 'FakeClientId' } ); - cy.contains('button', 'oauth2.buttonConnect').click(); + cy.login(); - cy.wait('@authorizationUriAction'); + cy.visit('/dashboard/integration/health/withings/settings'); + }); + it('Check setting page with existing', () => { cy.location('pathname').should('eq', '/dashboard/integration/health/withings/settings'); cy.get('.alert.alert-info').i18n('integration.withings.settings.oauth2.complete'); diff --git a/front/cypress/integration/routes/integration/withings/settings/WithingsSettingsWithoutConfig.js b/front/cypress/integration/routes/integration/withings/settings/WithingsSettingsWithoutConfig.js new file mode 100644 index 0000000000..d888ed3144 --- /dev/null +++ b/front/cypress/integration/routes/integration/withings/settings/WithingsSettingsWithoutConfig.js @@ -0,0 +1,81 @@ +describe('Withings settings page', () => { + const serverUrl = Cypress.env('serverUrl'); + + before(() => { + cy.intercept( + { + method: 'POST', + url: `${serverUrl}/api/v1/service/oauth2/client/authorization-uri` + }, + { + authorizationUri: '/dashboard/integration/health/withings/settings' + } + ).as('authorizationUriAction'); + cy.intercept( + { + method: 'POST', + url: `${serverUrl}/api/v1/service/withings/init_devices` + }, + { + body: [] + } + ); + cy.intercept( + { + method: 'POST', + url: `${serverUrl}/api/v1/service/withings/reset` + }, + { + body: { + success: true + } + } + ); + cy.intercept( + { + method: 'POST', + url: `${serverUrl}/api/v1/service/withings/variable/OAUTH2_CLIENT_ID` + }, + { + body: { + success: true + } + } + ); + cy.intercept( + { + method: 'POST', + url: `${serverUrl}/api/v1/service/withings/variable/OAUTH2_CLIENT_SECRET` + }, + { + body: { + success: true + } + } + ); + + cy.login(); + + cy.visit('/dashboard/integration/health/withings/settings'); + }); + + it('Check setting page and connect', () => { + cy.get('.markup').i18n('oauth2.instructions'); + + cy.get('.form-label').i18n('oauth2.apiKeyLabel'); + + cy.get('input') + .first() + .clear() + .type('FakeClientId'); + + cy.get('input') + .last() + .clear() + .type('FakeSecret'); + + cy.contains('button', 'oauth2.buttonConnect').click(); + + cy.wait('@authorizationUriAction'); + }); +}); From e0ed0a65da165bf659c0c95836dc87b7b0034f44 Mon Sep 17 00:00:00 2001 From: Euguuu Date: Sun, 15 May 2022 19:43:09 +0200 Subject: [PATCH 058/164] fix cypress --- .../withings/settings/WithingsSettingsWithConfig.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/front/cypress/integration/routes/integration/withings/settings/WithingsSettingsWithConfig.js b/front/cypress/integration/routes/integration/withings/settings/WithingsSettingsWithConfig.js index aaf3b47ff6..e3a0d2dd5f 100644 --- a/front/cypress/integration/routes/integration/withings/settings/WithingsSettingsWithConfig.js +++ b/front/cypress/integration/routes/integration/withings/settings/WithingsSettingsWithConfig.js @@ -10,7 +10,7 @@ describe('Withings settings page', () => { { authorizationUri: '/dashboard/integration/health/withings/settings' } - ).as('authorizationUriAction'); + ); cy.intercept( { method: 'POST', @@ -59,7 +59,7 @@ describe('Withings settings page', () => { url: `${serverUrl}/api/v1/service/oauth2/client` }, { client_id: 'FakeClientId' } - ); + ).as('getConfig'); cy.login(); @@ -67,7 +67,7 @@ describe('Withings settings page', () => { }); it('Check setting page with existing', () => { - cy.location('pathname').should('eq', '/dashboard/integration/health/withings/settings'); + cy.wait('@getConfig'); cy.get('.alert.alert-info').i18n('integration.withings.settings.oauth2.complete'); From d26dc48f987036129720f67d7a09de9aa0b5ef07 Mon Sep 17 00:00:00 2001 From: Euguuu Date: Sun, 15 May 2022 20:07:00 +0200 Subject: [PATCH 059/164] fix cypress --- .../settings/WithingsSettingsWithConfig.js | 90 ------------------- 1 file changed, 90 deletions(-) delete mode 100644 front/cypress/integration/routes/integration/withings/settings/WithingsSettingsWithConfig.js diff --git a/front/cypress/integration/routes/integration/withings/settings/WithingsSettingsWithConfig.js b/front/cypress/integration/routes/integration/withings/settings/WithingsSettingsWithConfig.js deleted file mode 100644 index e3a0d2dd5f..0000000000 --- a/front/cypress/integration/routes/integration/withings/settings/WithingsSettingsWithConfig.js +++ /dev/null @@ -1,90 +0,0 @@ -describe('Withings settings page', () => { - const serverUrl = Cypress.env('serverUrl'); - - before(() => { - cy.intercept( - { - method: 'POST', - url: `${serverUrl}/api/v1/service/oauth2/client/authorization-uri` - }, - { - authorizationUri: '/dashboard/integration/health/withings/settings' - } - ); - cy.intercept( - { - method: 'POST', - url: `${serverUrl}/api/v1/service/withings/init_devices` - }, - { - body: [] - } - ); - cy.intercept( - { - method: 'POST', - url: `${serverUrl}/api/v1/service/withings/reset` - }, - { - body: { - success: true - } - } - ); - cy.intercept( - { - method: 'POST', - url: `${serverUrl}/api/v1/service/withings/variable/OAUTH2_CLIENT_ID` - }, - { - body: { - success: true - } - } - ); - cy.intercept( - { - method: 'POST', - url: `${serverUrl}/api/v1/service/withings/variable/OAUTH2_CLIENT_SECRET` - }, - { - body: { - success: true - } - } - ); - cy.intercept( - { - method: 'GET', - url: `${serverUrl}/api/v1/service/oauth2/client` - }, - { client_id: 'FakeClientId' } - ).as('getConfig'); - - cy.login(); - - cy.visit('/dashboard/integration/health/withings/settings'); - }); - - it('Check setting page with existing', () => { - cy.wait('@getConfig'); - - cy.get('.alert.alert-info').i18n('integration.withings.settings.oauth2.complete'); - - cy.get('.alert.alert-info').i18n('integration.withings.settings.oauth2.clientId'); - - cy.get('.alert.alert-info').contains('FakeClientId'); - - cy.get('.alert.alert-info').i18n('integration.withings.settings.oauth2.instructionsToUse'); - - cy.contains('p', 'oauth2.delete').should('exist'); - }); - - it('Check setting page unconnect', () => { - cy.contains('button', 'oauth2.unconnectButton').click(); - - cy.get('.markup').i18n('oauth2.instructions'); - - cy.get('.form-label').i18n('oauth2.apiKeyLabel'); - }); -}); From 61ceca5519ec5195b07f5211c7bbd02ca42fbaa0 Mon Sep 17 00:00:00 2001 From: Euguuu Date: Mon, 16 May 2022 20:01:35 +0200 Subject: [PATCH 060/164] fix new eslint front --- front/src/routes/integration/all/withings/WithingsPage.jsx | 2 +- .../src/routes/integration/all/withings/device-page/Device.jsx | 2 +- front/src/routes/integration/all/withings/edit-page/index.js | 2 +- .../src/routes/integration/all/withings/settings-page/index.js | 2 +- front/src/utils/combineActions.js | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/front/src/routes/integration/all/withings/WithingsPage.jsx b/front/src/routes/integration/all/withings/WithingsPage.jsx index a532c80d1d..2c745761de 100755 --- a/front/src/routes/integration/all/withings/WithingsPage.jsx +++ b/front/src/routes/integration/all/withings/WithingsPage.jsx @@ -2,7 +2,7 @@ import { Text } from 'preact-i18n'; import { Link } from 'preact-router/match'; import DeviceConfigurationLink from '../../../../components/documentation/DeviceConfigurationLink'; -const WithingsPage = ({ children, user, ...props }) => ( +const WithingsPage = ({ children, user }) => (
diff --git a/front/src/routes/integration/all/withings/device-page/Device.jsx b/front/src/routes/integration/all/withings/device-page/Device.jsx index 9823a4cdfd..12adbdd9e0 100644 --- a/front/src/routes/integration/all/withings/device-page/Device.jsx +++ b/front/src/routes/integration/all/withings/device-page/Device.jsx @@ -68,7 +68,7 @@ class WithingsDeviceBox extends Component { this.refreshDeviceProperty(); } - render(props, { batteryLevel, mostRecentValueAt, loading, error }) { + render(props, { batteryLevel, mostRecentValueAt, loading }) { return (
diff --git a/front/src/routes/integration/all/withings/edit-page/index.js b/front/src/routes/integration/all/withings/edit-page/index.js index a2c8ee2cc0..b83e080f8a 100644 --- a/front/src/routes/integration/all/withings/edit-page/index.js +++ b/front/src/routes/integration/all/withings/edit-page/index.js @@ -9,7 +9,7 @@ const WITHINGS_PAGE_PATH = '/dashboard/integration/health/withings/device'; class WithingsEditDevicePage extends Component { render(props, {}) { return ( - + + {props.withingsDevices && (
diff --git a/front/src/utils/combineActions.js b/front/src/utils/combineActions.js index 0504ca0614..2a724701a4 100644 --- a/front/src/utils/combineActions.js +++ b/front/src/utils/combineActions.js @@ -8,7 +8,7 @@ function combineActions(...allActions) { allActions.reduce((combined, actions) => { actions = actions(store); for (let i in actions) { - if (actions.hasOwnProperty(i)) { + if (Object.prototype.hasOwnProperty.call(actions, i)) { if (combined[i]) throw new Error(`Have a repeat action name: ${i}`); let action = actions[i]; combined[i] = action; From f4807c99716e5167a19c6a7fd91375a905559ced Mon Sep 17 00:00:00 2001 From: Euguuu Date: Wed, 8 Jun 2022 19:42:51 +0200 Subject: [PATCH 061/164] fix for review --- .../settings/WithingsSettingsWithoutConfig.js | 6 +- front/package-lock.json | 6 +- front/src/config/i18n/en.json | 23 ++- front/src/config/i18n/fr.json | 21 ++- .../all/withings/settings-page/actions.js | 4 +- .../all/withings/settings-page/index.js | 4 +- .../settings-page}/oauth2/OAuth2Config.jsx | 16 +-- .../withings/settings-page}/oauth2/actions.js | 8 +- front/src/utils/combineActions.js | 4 +- server/api/controllers/oauth2.controller.js | 79 ----------- server/api/routes.js | 15 -- server/lib/index.js | 3 - server/package-lock.json | 127 +---------------- server/package.json | 2 - .../withings/api/withings.controller.js | 82 +++++++++++ server/services/withings/lib/index.js | 2 + .../withings}/lib/oauth2-client/index.js | 0 .../oauth2.buildAuthorizationUri.js | 2 +- .../oauth2-client/oauth2.buildRedirectUri.js | 0 .../lib/oauth2-client/oauth2.deleteClient.js | 2 +- .../lib/oauth2-client/oauth2.executeQuery.js | 6 +- .../oauth2-client/oauth2.getAccessToken.js | 6 +- .../withings/lib/utils/withings.getDevices.js | 2 +- .../lib/utils/withings.getMeasures.js | 8 +- .../withings/lib/withings.deleteVar.js | 2 +- server/services/withings/package-lock.json | 134 ++++++++++++++++++ server/services/withings/package.json | 3 + .../oauth2/oauth2.controller.test.js | 127 ----------------- .../controllers/oauth2/oauth2.request.test.js | 62 -------- .../api/oauth2/oauth2.controller.test.js | 118 +++++++++++++++ .../lib/oauth2-client/oauth2manager.test.js | 6 +- .../withings/lib/withings.initDevices.test.js | 3 - .../withings/lib/withings.poll.test.js | 3 - 33 files changed, 403 insertions(+), 483 deletions(-) rename front/src/{components => routes/integration/all/withings/settings-page}/oauth2/OAuth2Config.jsx (85%) rename front/src/{components => routes/integration/all/withings/settings-page}/oauth2/actions.js (92%) delete mode 100644 server/api/controllers/oauth2.controller.js rename server/{ => services/withings}/lib/oauth2-client/index.js (100%) rename server/{ => services/withings}/lib/oauth2-client/oauth2.buildAuthorizationUri.js (97%) rename server/{ => services/withings}/lib/oauth2-client/oauth2.buildRedirectUri.js (100%) rename server/{ => services/withings}/lib/oauth2-client/oauth2.deleteClient.js (93%) rename server/{ => services/withings}/lib/oauth2-client/oauth2.executeQuery.js (97%) rename server/{ => services/withings}/lib/oauth2-client/oauth2.getAccessToken.js (94%) delete mode 100755 server/test/controllers/oauth2/oauth2.controller.test.js delete mode 100755 server/test/controllers/oauth2/oauth2.request.test.js create mode 100755 server/test/services/withings/api/oauth2/oauth2.controller.test.js rename server/test/{ => services/withings}/lib/oauth2-client/oauth2manager.test.js (96%) diff --git a/front/cypress/integration/routes/integration/withings/settings/WithingsSettingsWithoutConfig.js b/front/cypress/integration/routes/integration/withings/settings/WithingsSettingsWithoutConfig.js index d888ed3144..b84ce81cba 100644 --- a/front/cypress/integration/routes/integration/withings/settings/WithingsSettingsWithoutConfig.js +++ b/front/cypress/integration/routes/integration/withings/settings/WithingsSettingsWithoutConfig.js @@ -5,7 +5,7 @@ describe('Withings settings page', () => { cy.intercept( { method: 'POST', - url: `${serverUrl}/api/v1/service/oauth2/client/authorization-uri` + url: `${serverUrl}/api/v1/service/withings/oauth2/client/authorization-uri` }, { authorizationUri: '/dashboard/integration/health/withings/settings' @@ -62,7 +62,7 @@ describe('Withings settings page', () => { it('Check setting page and connect', () => { cy.get('.markup').i18n('oauth2.instructions'); - cy.get('.form-label').i18n('oauth2.apiKeyLabel'); + cy.get('.form-label').i18n('withings.settings.oauth2.apiKeyLabel'); cy.get('input') .first() @@ -74,7 +74,7 @@ describe('Withings settings page', () => { .clear() .type('FakeSecret'); - cy.contains('button', 'oauth2.buttonConnect').click(); + cy.contains('button', 'withings.settings.oauth2.buttonConnect').click(); cy.wait('@authorizationUriAction'); }); diff --git a/front/package-lock.json b/front/package-lock.json index 87affcee8f..68eabceb89 100755 --- a/front/package-lock.json +++ b/front/package-lock.json @@ -4338,7 +4338,7 @@ "after": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", - "integrity": "sha512-QbJ0NTQ/I9DI3uSJA4cbexiwQeRAfjPScqIbSjUDd9TOrcg6pTkdgziesOqxBMBzit8vFCTwrP27t13vFOORRA==" + "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=" }, "aggregate-error": { "version": "3.1.0", @@ -5902,7 +5902,7 @@ "backo2": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA==" + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" }, "balanced-match": { "version": "1.0.0", @@ -5974,7 +5974,7 @@ "base64-arraybuffer": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz", - "integrity": "sha512-a1eIFi4R9ySrbiMuyTGx5e92uRH5tQY6kArNcFaKBUleIoLjdjBg7Zxm3Mqm3Kmkf27HLR/1fnxX9q8GQ7Iavg==" + "integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI=" }, "base64-js": { "version": "1.3.1", diff --git a/front/src/config/i18n/en.json b/front/src/config/i18n/en.json index 70519dd309..150b285580 100644 --- a/front/src/config/i18n/en.json +++ b/front/src/config/i18n/en.json @@ -288,17 +288,6 @@ "validationError": "Dashboard created is not valid, did you fill all the boxes correctly?", "createDashboardButton": "Create" }, - "oauth2": { - "buttonConnect": "Connect now", - "apiKeyLabel": "Then, enter your client id and client secret keys here:", - "errorEmptyConfig": "Client id and client secret must not be empty!", - "errorAuthorizationUri": "Error in authorization provider connection configuration!", - "clientId": "Account client id", - "secret": "Account client secret", - "instructions": "In this stage please fill in the given client id and client secret key below and click on connect button.", - "delete": "To delete your account configuration clic on 'unlink' button (all data will be deleted).", - "unconnectButton": "Unlink" - }, "integration": { "root": { "title": "Integrations", @@ -894,8 +883,16 @@ "title": "Withings Settings", "introduction": "To connect Withings account to Gladys, you first need to create a Withings user account in this link.

To connect Withings measures to Gladys, you need to create a Withings partner account in this link
(in callback url field put http://gladys.local/dashboard/integration/health/withings/settings, in environmnet field choose Dev, you can use Prod with gladys plus url and https protocol, refer to Documentation link for more details).
", "instructionsToUse": "To use this integration, go to the dashboard and create a device box or chart.", - "clientId": "Client Id:", - "complete": "Your account is now linked to Gladys with those parameters:" + "complete": "Your account is now linked to Gladys with those parameters:", + "buttonConnect": "Connect now", + "apiKeyLabel": "Then, enter your client id and client secret keys here:", + "errorEmptyConfig": "Client id and client secret must not be empty!", + "errorAuthorizationUri": "Error in authorization provider connection configuration!", + "clientId": "Account client id", + "secret": "Account client secret", + "instructions": "In this stage please fill in the given client id and client secret key below and click on connect button.", + "delete": "To delete your account configuration clic on 'unlink' button (all data will be deleted).", + "unconnectButton": "Unlink" }, "menu": "Discover", "chooseDevice": "Choose withings devices to connect in the list below:" diff --git a/front/src/config/i18n/fr.json b/front/src/config/i18n/fr.json index bde034d35e..b53fa69430 100644 --- a/front/src/config/i18n/fr.json +++ b/front/src/config/i18n/fr.json @@ -288,17 +288,6 @@ "validationError": "Le tableau de bord n'est pas valide, êtes-vous sûr d'avoir rempli tous les champs ?", "createDashboardButton": "Créer" }, - "oauth2": { - "buttonConnect": "Connecter maintenant", - "apiKeyLabel": "Saisissez ensuite vos clés client id et client secret ici :", - "errorEmptyConfig": "Client id et client secret ne doivent pas être vide !", - "errorAuthorizationUri": "Erreur dans la configuration du provider pour l'autorisation de connexion !", - "clientId": "Client id du compte", - "secret": "Client secret du compte", - "instructions": "À cette étape, veuillez remplir les champs client id et client secret ci-dessous et cliquez sur le bouton de connexion.", - "delete": "Pour supprimer vos configurations de compte cliquer sur le bouton 'Déconneter' (toutes les données associées seront supprimées).", - "unconnectButton": "Déconnecter" - }, "integration": { "root": { "title": "Intégrations", @@ -895,7 +884,15 @@ "introduction": "Pour connecter le compte Withings à Gladys, vous devez d'abord créer un compte d'utilisateur Withings à ce lien.

Pour relier les mesures Withings à Gladys, vous devez créer un compte partenaire Withings à ce lien
(dans le champ url de callback mettre http://gladys.local/dashboard/integration/health/withings/settings, dans le champs environnement choisir Dev, vous pouvez utiliser Prod avec gladys plus url et le protocole https, voir le lien Documentation pour plus de détails).
", "instructionsToUse": "Pour utiliser cette intégration, rendez-vous sur le tableau de bord et créez une box d'appareil ou de graphique.", "complete": "Votre compte est maintenant lié à Gladys avec ces paramètres :", - "clientId": "Client Id :" + "buttonConnect": "Connecter maintenant", + "apiKeyLabel": "Saisissez ensuite vos clés client id et client secret ici :", + "errorEmptyConfig": "Client id et client secret ne doivent pas être vide !", + "errorAuthorizationUri": "Erreur dans la configuration du provider pour l'autorisation de connexion !", + "clientId": "Client id du compte", + "secret": "Client secret du compte", + "instructions": "À cette étape, veuillez remplir les champs client id et client secret ci-dessous et cliquez sur le bouton de connexion.", + "delete": "Pour supprimer vos configurations de compte cliquer sur le bouton 'Déconneter' (toutes les données associées seront supprimées).", + "unconnectButton": "Déconnecter" }, "menu": "Découverte", "chooseDevice": "Choisissez les appareils withings à connecter dans la liste plus bas :" diff --git a/front/src/routes/integration/all/withings/settings-page/actions.js b/front/src/routes/integration/all/withings/settings-page/actions.js index d5b93aaa62..ea94dd994f 100755 --- a/front/src/routes/integration/all/withings/settings-page/actions.js +++ b/front/src/routes/integration/all/withings/settings-page/actions.js @@ -11,7 +11,7 @@ const actions = store => ({ // check if this call is a return of oauth2 authorize code if (state.currentUrl) { if (this.code) { - await state.httpClient.post('/api/v1/service/oauth2/client/access-token', { + await state.httpClient.post('/api/v1/service/withings/oauth2/client/access-token', { integrationName: 'withings', authorization_code: this.code, service_id: state.currentIntegration.id @@ -20,7 +20,7 @@ const actions = store => ({ route('/dashboard/integration/health/withings/settings'); } - const returnGetConfig = await state.httpClient.get('/api/v1/service/oauth2/client', { + const returnGetConfig = await state.httpClient.get('/api/v1/service/withings/oauth2/client', { service_id: state.currentIntegration.id }); diff --git a/front/src/routes/integration/all/withings/settings-page/index.js b/front/src/routes/integration/all/withings/settings-page/index.js index 47034f8ad6..60c61daff4 100755 --- a/front/src/routes/integration/all/withings/settings-page/index.js +++ b/front/src/routes/integration/all/withings/settings-page/index.js @@ -3,10 +3,10 @@ import { connect } from 'unistore/preact'; import { Text } from 'preact-i18n'; import actions from './actions'; import actionsWithingsDevice from '../device-page/actions'; -import actionsOAuth2 from '../../../../../components/oauth2/actions'; +import actionsOAuth2 from './oauth2/actions'; import actionsCommon from '../../../../../actions/integration'; import WithingsPage from '../WithingsPage'; -import OAuth2Config from '../../../../../components/oauth2/OAuth2Config'; +import OAuth2Config from './oauth2/OAuth2Config'; import { RequestStatus } from '../../../../../utils/consts'; import { combineActions } from '../../../../../utils/combineActions'; import Device from '../device-page/Device'; diff --git a/front/src/components/oauth2/OAuth2Config.jsx b/front/src/routes/integration/all/withings/settings-page/oauth2/OAuth2Config.jsx similarity index 85% rename from front/src/components/oauth2/OAuth2Config.jsx rename to front/src/routes/integration/all/withings/settings-page/oauth2/OAuth2Config.jsx index b4313b0783..467f31465a 100755 --- a/front/src/components/oauth2/OAuth2Config.jsx +++ b/front/src/routes/integration/all/withings/settings-page/oauth2/OAuth2Config.jsx @@ -1,4 +1,4 @@ -import { RequestStatus } from '../../utils/consts'; +import { RequestStatus } from '../../../../../../utils/consts'; import { Text, Localizer, MarkupText } from 'preact-i18n'; import cx from 'classnames'; @@ -33,18 +33,18 @@ const OAuth2Config = ({ integrationImg, integrationName, children, ...props }) =

- +

- +
} + placeholder={} onInput={props.updateClientId} value={props.clientId} /> @@ -57,7 +57,7 @@ const OAuth2Config = ({ integrationImg, integrationName, children, ...props }) = } + placeholder={} onInput={props.updateSecret} value={props.secret} /> @@ -67,7 +67,7 @@ const OAuth2Config = ({ integrationImg, integrationName, children, ...props }) =
@@ -90,12 +90,12 @@ const OAuth2Config = ({ integrationImg, integrationName, children, ...props }) =

- +

diff --git a/front/src/components/oauth2/actions.js b/front/src/routes/integration/all/withings/settings-page/oauth2/actions.js similarity index 92% rename from front/src/components/oauth2/actions.js rename to front/src/routes/integration/all/withings/settings-page/oauth2/actions.js index bc9f9e9958..be2561fd88 100755 --- a/front/src/components/oauth2/actions.js +++ b/front/src/routes/integration/all/withings/settings-page/oauth2/actions.js @@ -1,5 +1,5 @@ -import { RequestStatus } from '../../utils/consts'; -import { OAUTH2 } from '../../../../server/utils/constants'; +import { RequestStatus } from '../../../../../../utils/consts'; +import { OAUTH2 } from '../../../../../../../../server/utils/constants'; const actions = store => ({ updateClientId(state, e) { @@ -17,7 +17,7 @@ const actions = store => ({ oauth2GetStatus: RequestStatus.Getting }); try { - const returnGetConfig = await state.httpClient.get('/api/v1/service/oauth2/client', { + const returnGetConfig = await state.httpClient.get('/api/v1/service/withings/oauth2/client', { service_id: state.currentIntegration.id }); @@ -69,7 +69,7 @@ const actions = store => ({ } ); - const returnValue = await state.httpClient.post('/api/v1/service/oauth2/client/authorization-uri', { + const returnValue = await state.httpClient.post('/api/v1/service/withings/oauth2/client/authorization-uri', { integration_name: state.currentIntegration.name, service_id: state.currentIntegration.id }); diff --git a/front/src/utils/combineActions.js b/front/src/utils/combineActions.js index 2a724701a4..c44a665524 100644 --- a/front/src/utils/combineActions.js +++ b/front/src/utils/combineActions.js @@ -9,7 +9,9 @@ function combineActions(...allActions) { actions = actions(store); for (let i in actions) { if (Object.prototype.hasOwnProperty.call(actions, i)) { - if (combined[i]) throw new Error(`Have a repeat action name: ${i}`); + if (combined[i]) { + throw new Error(`Duplicate action in files meged: ${i}`); + } let action = actions[i]; combined[i] = action; } diff --git a/server/api/controllers/oauth2.controller.js b/server/api/controllers/oauth2.controller.js deleted file mode 100644 index d97bb0db04..0000000000 --- a/server/api/controllers/oauth2.controller.js +++ /dev/null @@ -1,79 +0,0 @@ -const asyncMiddleware = require('../middlewares/asyncMiddleware'); -const { OAUTH2 } = require('../../utils/constants'); - -module.exports = function OAuth2Controller(gladys) { - /** - * @description Build an authorization uri (to get authorizationcode). - * @api {post} /api/v1/service/oauth2/client/authorization-uri Build an authorization uri (to get authorizationcode) - * @apiName BuildAuthorizationUri - * @apiGroup OAuth2 - */ - async function buildAuthorizationUri(req, res) { - if (req.body && req.body.service_id && req.body.integration_name && req.headers.referer) { - const authorizationUriResult = await gladys.oauth2Client.buildAuthorizationUri( - req.body.service_id, - req.user.id, - req.body.integration_name, - req.headers.referer, - ); - - res.json({ - authorizationUri: authorizationUriResult, - }); - } - } - - /** - * @description Get access token and save it in database (for current service). - * @api {post} /api/v1/service/oauth2/client/access-token Build an getToken uri (to get token access) - * @apiName buildAccessTokenUri - * @apiGroup OAuth2 - */ - async function getAccessTokenUri(req, res) { - if (req.body && req.body.service_id && req.body.authorization_code && req.headers.referer) { - const authResult = await gladys.oauth2Client.getAccessToken( - req.body.service_id, - req.user.id, - req.body.authorization_code, - req.headers.referer, - ); - res.json({ - result: authResult, - }); - } - } - - /** - * @description Return the current integration config. - * @api {get} /api/v1/service/oauth2/client Return the current integration config. - * @apiName getCurrentConfig - * @apiGroup oauth2 - */ - async function getCurrentConfig(req, res) { - if (req.query && req.query.service_id) { - const serviceId = req.query.service_id; - - const resultClientId = await gladys.variable.getValue(OAUTH2.VARIABLE.CLIENT_ID, serviceId, req.user.id); - - const resultAccessToken = await gladys.variable.getValue(OAUTH2.VARIABLE.ACCESS_TOKEN, serviceId, req.user.id); - - // If access_token does not exist and client_id exist - // => connect process is not complete: remove variable already saved - // => force restart connect process from beginning - if (resultClientId && !resultAccessToken) { - gladys.variable.destroy(OAUTH2.VARIABLE.CLIENT_ID, serviceId, req.user.id); - gladys.variable.destroy(OAUTH2.VARIABLE.CLIENT_SECRET, serviceId, req.user.id); - } - - res.json({ - client_id: resultClientId, - }); - } - } - - return Object.freeze({ - buildAuthorizationUri: asyncMiddleware(buildAuthorizationUri), - getAccessTokenUri: asyncMiddleware(getAccessTokenUri), - getCurrentConfig: asyncMiddleware(getCurrentConfig), - }); -}; diff --git a/server/api/routes.js b/server/api/routes.js index 249a3c471a..24367a6d98 100644 --- a/server/api/routes.js +++ b/server/api/routes.js @@ -19,7 +19,6 @@ const SceneController = require('./controllers/scene.controller'); const SystemController = require('./controllers/system.controller'); const VariableController = require('./controllers/variable.controller'); const WeatherController = require('./controllers/weather.controller'); -const OAuth2Controller = require('./controllers/oauth2.controller'); /** * @description Return object of routes. @@ -50,7 +49,6 @@ function getRoutes(gladys) { const sceneController = SceneController(gladys); const systemController = SystemController(gladys); const weatherController = WeatherController(gladys); - const oauth2Controller = OAuth2Controller(gladys); const routes = {}; @@ -513,19 +511,6 @@ function getRoutes(gladys) { authenticated: true, controller: weatherController.getByHouse, }, - // oauth2 - 'post /api/v1/service/oauth2/client/authorization-uri': { - authenticated: true, - controller: oauth2Controller.buildAuthorizationUri, - }, - 'post /api/v1/service/oauth2/client/access-token': { - authenticated: true, - controller: oauth2Controller.getAccessTokenUri, - }, - 'get /api/v1/service/oauth2/client': { - authenticated: true, - controller: oauth2Controller.getCurrentConfig, - }, }; Object.assign(routes, coreRoutes); diff --git a/server/lib/index.js b/server/lib/index.js index 90b9e5062d..33914a7e8f 100644 --- a/server/lib/index.js +++ b/server/lib/index.js @@ -25,7 +25,6 @@ const System = require('./system'); const Variable = require('./variable'); const services = require('../services'); const Weather = require('./weather'); -const Oauth2Client = require('./oauth2-client'); /** * @description Start a new Gladys instance @@ -71,7 +70,6 @@ function Gladys(params = {}) { const scheduler = new Scheduler(event); const weather = new Weather(service, event, message, house); const gateway = new Gateway(variable, event, system, db.sequelize, config, user, stateManager, service, job); - const oauth2Client = new Oauth2Client(variable); const gladys = { version: '0.1.0', // todo, read package.json @@ -98,7 +96,6 @@ function Gladys(params = {}) { system, variable, weather, - oauth2Client, start: async () => { // set wal mode await db.sequelize.query('PRAGMA journal_mode=WAL;'); diff --git a/server/package-lock.json b/server/package-lock.json index 1fc21214ab..eea63f59a5 100644 --- a/server/package-lock.json +++ b/server/package-lock.json @@ -892,19 +892,6 @@ "@hapi/hoek": "^9.0.0" } }, - "@hapi/boom": { - "version": "9.1.4", - "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-9.1.4.tgz", - "integrity": "sha512-Ls1oH8jaN1vNsqcaHVYJrKmgMcKsC1wcp8bujvXrHaAqD2iDYq3HoOwsxwo09Cuda5R5nC0o0IxlrlTuvPuzSw==", - "requires": { - "@hapi/hoek": "9.x.x" - } - }, - "@hapi/bourne": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-2.0.0.tgz", - "integrity": "sha512-WEezM1FWztfbzqIUbsDzFRVMxSoLy3HugVcux6KDDtTqzPsLE8NDRHfXvev66aH1i2oOKKar3/XDjbvh/OUBdg==" - }, "@hapi/formula": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@hapi/formula/-/formula-2.0.0.tgz", @@ -948,16 +935,6 @@ "@hapi/hoek": "^9.0.0" } }, - "@hapi/wreck": { - "version": "17.1.0", - "resolved": "https://registry.npmjs.org/@hapi/wreck/-/wreck-17.1.0.tgz", - "integrity": "sha512-nx6sFyfqOpJ+EFrHX+XWwJAxs3ju4iHdbB/bwR8yTNZOiYmuhA8eCe7lYPtYmb4j7vyK/SlbaQsmTtUrMvPEBw==", - "requires": { - "@hapi/boom": "9.x.x", - "@hapi/bourne": "2.x.x", - "@hapi/hoek": "9.x.x" - } - }, "@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -1767,16 +1744,6 @@ } } }, - "@sideway/formula": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", - "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==" - }, - "@sideway/pinpoint": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", - "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" - }, "@sindresorhus/is": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", @@ -2156,7 +2123,7 @@ "after": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", - "integrity": "sha512-QbJ0NTQ/I9DI3uSJA4cbexiwQeRAfjPScqIbSjUDd9TOrcg6pTkdgziesOqxBMBzit8vFCTwrP27t13vFOORRA==" + "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=" }, "agent-base": { "version": "6.0.2", @@ -2943,7 +2910,7 @@ "backo2": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA==" + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" }, "balanced-match": { "version": "1.0.0", @@ -2953,7 +2920,7 @@ "base64-arraybuffer": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz", - "integrity": "sha512-a1eIFi4R9ySrbiMuyTGx5e92uRH5tQY6kArNcFaKBUleIoLjdjBg7Zxm3Mqm3Kmkf27HLR/1fnxX9q8GQ7Iavg==" + "integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI=" }, "base64-js": { "version": "1.5.1", @@ -3865,11 +3832,6 @@ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" - }, "decompress-response": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", @@ -5356,11 +5318,6 @@ "to-regex-range": "^5.0.1" } }, - "filter-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", - "integrity": "sha1-mzERErxsYSehbgFsbF1/GeCAXFs=" - }, "finalhandler": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", @@ -5470,9 +5427,9 @@ "dev": true }, "follow-redirects": { - "version": "1.14.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", - "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==" + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", + "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==" }, "forever-agent": { "version": "0.6.1", @@ -9246,17 +9203,6 @@ "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" }, - "query-string": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.0.1.tgz", - "integrity": "sha512-uIw3iRvHnk9to1blJCG3BTc+Ro56CBowJXKmNNAm3RulvPBzWLRqKSiiDk+IplJhsydwtuNMHi8UGQFcCLVfkA==", - "requires": { - "decode-uri-component": "^0.2.0", - "filter-obj": "^1.1.0", - "split-on-first": "^1.0.0", - "strict-uri-encode": "^2.0.0" - } - }, "querystringify": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", @@ -9905,57 +9851,6 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" }, - "simple-oauth2": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/simple-oauth2/-/simple-oauth2-4.3.0.tgz", - "integrity": "sha512-gjLIfy7M7WZSf3k5IZCQfEozbQwmW80zR9YMH4ph/WWG6S4U6sGhPujz8X6Hj6sZ8l7acSAxiyM4tF0vIN+E+A==", - "requires": { - "@hapi/hoek": "^9.0.4", - "@hapi/wreck": "^17.0.0", - "debug": "^4.1.1", - "joi": "^17.3.0" - }, - "dependencies": { - "@hapi/hoek": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.1.tgz", - "integrity": "sha512-gfta+H8aziZsm8pZa0vj04KO6biEiisppNgA1kbJvFrrWu9Vm7eaUEy76DIxsuTaWvti5fkJVhllWc6ZTE+Mdw==" - }, - "@sideway/address": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", - "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", - "requires": { - "@hapi/hoek": "^9.0.0" - } - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "joi": { - "version": "17.6.0", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.6.0.tgz", - "integrity": "sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw==", - "requires": { - "@hapi/hoek": "^9.0.0", - "@hapi/topo": "^5.0.0", - "@sideway/address": "^4.1.3", - "@sideway/formula": "^3.0.0", - "@sideway/pinpoint": "^2.0.0" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, "simple-swizzle": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", @@ -10136,11 +10031,6 @@ "resolved": "https://registry.npmjs.org/split-ca/-/split-ca-1.0.1.tgz", "integrity": "sha1-bIOv82kvphJW4M0ZfgXp3hV2kaY=" }, - "split-on-first": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", - "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==" - }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -10244,11 +10134,6 @@ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" }, - "strict-uri-encode": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", - "integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY=" - }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", diff --git a/server/package.json b/server/package.json index baf12c0275..ea85c6434f 100644 --- a/server/package.json +++ b/server/package.json @@ -101,14 +101,12 @@ "node-schedule": "^1.3.2", "node-webcrypto-ossl": "^1.0.48", "path-to-regexp": "^3.0.0", - "query-string": "^7.0.1", "pify": "^5.0.0", "queue": "^6.0.0", "semver": "^6.1.1", "sequelize": "^6.18.0", "sequelize-cli": "^6.4.1", "set-value": "^4.0.1", - "simple-oauth2": "^4.3.0", "sqlite3": "^5.0.2", "suncalc": "^1.8.0", "tracer": "^1.1.4", diff --git a/server/services/withings/api/withings.controller.js b/server/services/withings/api/withings.controller.js index 3f6942f3a7..a87f192897 100755 --- a/server/services/withings/api/withings.controller.js +++ b/server/services/withings/api/withings.controller.js @@ -1,4 +1,5 @@ const asyncMiddleware = require('../../../api/middlewares/asyncMiddleware'); +const { OAUTH2 } = require('../../../utils/constants'); module.exports = function WithingsController(gladys, withingsHandler) { /** @@ -28,6 +29,74 @@ module.exports = function WithingsController(gladys, withingsHandler) { }); } + /** + * @description Build an authorization uri (to get authorizationcode). + * @api {post} /api/v1/service/withings/oauth2/client/authorization-uri Build an authorization uri + * @apiName BuildAuthorizationUri + * @apiGroup OAuth2 + */ + async function buildAuthorizationUri(req, res) { + if (req.body && req.body.service_id && req.body.integration_name && req.headers.referer) { + const authorizationUriResult = await withingsHandler.oauth2Client.buildAuthorizationUri( + req.body.service_id, + req.user.id, + req.body.integration_name, + req.headers.referer, + ); + res.json({ + authorizationUri: authorizationUriResult, + }); + } + } + + /** + * @description Get access token and save it in database (for current service). + * @api {post} /api/v1/service/withings/oauth2/client/access-token Build an getToken uri (to get token access) + * @apiName buildAccessTokenUri + * @apiGroup OAuth2 + */ + async function getAccessTokenUri(req, res) { + if (req.body && req.body.service_id && req.body.authorization_code && req.headers.referer) { + const authResult = await withingsHandler.oauth2Client.getAccessToken( + req.body.service_id, + req.user.id, + req.body.authorization_code, + req.headers.referer, + ); + res.json({ + result: authResult, + }); + } + } + + /** + * @description Return the current integration config. + * @api {get} /api/v1/service/withings/oauth2/client Return the current integration config. + * @apiName getCurrentConfig + * @apiGroup oauth2 + */ + async function getCurrentConfig(req, res) { + if (req.query && req.query.service_id) { + const serviceId = req.query.service_id; + + const resultClientId = await gladys.variable.getValue(OAUTH2.VARIABLE.CLIENT_ID, serviceId, req.user.id); + + const resultAccessToken = await gladys.variable.getValue(OAUTH2.VARIABLE.ACCESS_TOKEN, serviceId, req.user.id); + + // If access_token does not exist and client_id exist + // => connect process is not complete: remove variable already saved + // => force restart connect process from beginning + if (resultClientId && !resultAccessToken) { + await gladys.variable.destroy(OAUTH2.VARIABLE.CLIENT_ID, serviceId, req.user.id); + await gladys.variable.destroy(OAUTH2.VARIABLE.CLIENT_SECRET, serviceId, req.user.id); + } + + res.json({ + client_id: resultClientId, + }); + } + } + return { 'post /api/v1/service/withings/init_devices': { authenticated: true, @@ -37,5 +106,18 @@ module.exports = function WithingsController(gladys, withingsHandler) { authenticated: true, controller: asyncMiddleware(reset), }, + // oauth2 + 'post /api/v1/service/withings/oauth2/client/authorization-uri': { + authenticated: true, + controller: asyncMiddleware(buildAuthorizationUri), + }, + 'post /api/v1/service/withings/oauth2/client/access-token': { + authenticated: true, + controller: asyncMiddleware(getAccessTokenUri), + }, + 'get /api/v1/service/withings/oauth2/client': { + authenticated: true, + controller: asyncMiddleware(getCurrentConfig), + }, }; }; diff --git a/server/services/withings/lib/index.js b/server/services/withings/lib/index.js index a28bf9d75e..7ed591c789 100755 --- a/server/services/withings/lib/index.js +++ b/server/services/withings/lib/index.js @@ -1,3 +1,4 @@ +const Oauth2Client = require('./oauth2-client'); // COMMANDS const { init } = require('./withings.init'); const { initDevices } = require('./withings.initDevices'); @@ -23,6 +24,7 @@ const WithingsHandler = function WithingsHandler(gladys, serviceId) { this.gladys = gladys; this.serviceId = serviceId; this.withingsUrl = 'https://wbsapi.withings.net'; + this.oauth2Client = new Oauth2Client(gladys.variable); }; // COMMANDS diff --git a/server/lib/oauth2-client/index.js b/server/services/withings/lib/oauth2-client/index.js similarity index 100% rename from server/lib/oauth2-client/index.js rename to server/services/withings/lib/oauth2-client/index.js diff --git a/server/lib/oauth2-client/oauth2.buildAuthorizationUri.js b/server/services/withings/lib/oauth2-client/oauth2.buildAuthorizationUri.js similarity index 97% rename from server/lib/oauth2-client/oauth2.buildAuthorizationUri.js rename to server/services/withings/lib/oauth2-client/oauth2.buildAuthorizationUri.js index a27209587d..6a73965600 100755 --- a/server/lib/oauth2-client/oauth2.buildAuthorizationUri.js +++ b/server/services/withings/lib/oauth2-client/oauth2.buildAuthorizationUri.js @@ -1,5 +1,5 @@ const { AuthorizationCode } = require('simple-oauth2'); -const { OAUTH2 } = require('../../utils/constants'); +const { OAUTH2 } = require('../../../../utils/constants'); /** * @description Build a authorization uri of current oauth2 integration. diff --git a/server/lib/oauth2-client/oauth2.buildRedirectUri.js b/server/services/withings/lib/oauth2-client/oauth2.buildRedirectUri.js similarity index 100% rename from server/lib/oauth2-client/oauth2.buildRedirectUri.js rename to server/services/withings/lib/oauth2-client/oauth2.buildRedirectUri.js diff --git a/server/lib/oauth2-client/oauth2.deleteClient.js b/server/services/withings/lib/oauth2-client/oauth2.deleteClient.js similarity index 93% rename from server/lib/oauth2-client/oauth2.deleteClient.js rename to server/services/withings/lib/oauth2-client/oauth2.deleteClient.js index e6e4abe93d..37d489a510 100755 --- a/server/lib/oauth2-client/oauth2.deleteClient.js +++ b/server/services/withings/lib/oauth2-client/oauth2.deleteClient.js @@ -1,4 +1,4 @@ -const { OAUTH2 } = require('../../utils/constants'); +const { OAUTH2 } = require('../../../../utils/constants'); /** * @description Delete client_id and secrei_id of current oauth2 integration. diff --git a/server/lib/oauth2-client/oauth2.executeQuery.js b/server/services/withings/lib/oauth2-client/oauth2.executeQuery.js similarity index 97% rename from server/lib/oauth2-client/oauth2.executeQuery.js rename to server/services/withings/lib/oauth2-client/oauth2.executeQuery.js index 4b2f176456..5d6e75e070 100644 --- a/server/lib/oauth2-client/oauth2.executeQuery.js +++ b/server/services/withings/lib/oauth2-client/oauth2.executeQuery.js @@ -1,8 +1,8 @@ const queryString = require('query-string'); -const { ClientCredentials } = require('simple-oauth2'); const { default: axios } = require('axios'); -const logger = require('../../utils/logger'); -const { OAUTH2 } = require('../../utils/constants'); +const { ClientCredentials } = require('simple-oauth2'); +const logger = require('../../../../utils/logger'); +const { OAUTH2 } = require('../../../../utils/constants'); /** * @description Refresh Oauth2 token in case of it expired . diff --git a/server/lib/oauth2-client/oauth2.getAccessToken.js b/server/services/withings/lib/oauth2-client/oauth2.getAccessToken.js similarity index 94% rename from server/lib/oauth2-client/oauth2.getAccessToken.js rename to server/services/withings/lib/oauth2-client/oauth2.getAccessToken.js index 3e33334657..ddc0212751 100755 --- a/server/lib/oauth2-client/oauth2.getAccessToken.js +++ b/server/services/withings/lib/oauth2-client/oauth2.getAccessToken.js @@ -1,7 +1,7 @@ const { AuthorizationCode } = require('simple-oauth2'); -const logger = require('../../utils/logger'); -const { OAUTH2 } = require('../../utils/constants'); -const { BadOauth2ClientResponse } = require('../../utils/coreErrors'); +const logger = require('../../../../utils/logger'); +const { OAUTH2 } = require('../../../../utils/constants'); +const { BadOauth2ClientResponse } = require('../../../../utils/coreErrors'); /** * @description Get new AccessToken with client_id and secrei_id of current oauth2 integration. diff --git a/server/services/withings/lib/utils/withings.getDevices.js b/server/services/withings/lib/utils/withings.getDevices.js index 49f64f3a03..24b828c3ae 100644 --- a/server/services/withings/lib/utils/withings.getDevices.js +++ b/server/services/withings/lib/utils/withings.getDevices.js @@ -7,7 +7,7 @@ * getDevices('rzede-jlkunv-rze23f-csdcs-fsdfsd') */ function getDevices(userId) { - return this.gladys.oauth2Client.executeQuery( + return this.oauth2Client.executeQuery( this.serviceId, userId, 'get', diff --git a/server/services/withings/lib/utils/withings.getMeasures.js b/server/services/withings/lib/utils/withings.getMeasures.js index 417bf99829..b9d5c93875 100644 --- a/server/services/withings/lib/utils/withings.getMeasures.js +++ b/server/services/withings/lib/utils/withings.getMeasures.js @@ -12,13 +12,7 @@ function getMeasures(userId, params) { if (params) { actionRequest += params; } - return this.gladys.oauth2Client.executeQuery( - this.serviceId, - userId, - 'get', - `${this.withingsUrl}/measure`, - actionRequest, - ); + return this.oauth2Client.executeQuery(this.serviceId, userId, 'get', `${this.withingsUrl}/measure`, actionRequest); } module.exports = { diff --git a/server/services/withings/lib/withings.deleteVar.js b/server/services/withings/lib/withings.deleteVar.js index a8c8483314..ef699f8fef 100755 --- a/server/services/withings/lib/withings.deleteVar.js +++ b/server/services/withings/lib/withings.deleteVar.js @@ -10,7 +10,7 @@ * ); */ async function deleteVar(userId) { - return this.gladys.oauth2Client.deleteClient(this.serviceId, userId); + return this.oauth2Client.deleteClient(this.serviceId, userId); } module.exports = { diff --git a/server/services/withings/package-lock.json b/server/services/withings/package-lock.json index d5c1c17310..6ab2770714 100644 --- a/server/services/withings/package-lock.json +++ b/server/services/withings/package-lock.json @@ -3,11 +3,145 @@ "requires": true, "lockfileVersion": 1, "dependencies": { + "@hapi/boom": { + "version": "9.1.4", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-9.1.4.tgz", + "integrity": "sha512-Ls1oH8jaN1vNsqcaHVYJrKmgMcKsC1wcp8bujvXrHaAqD2iDYq3HoOwsxwo09Cuda5R5nC0o0IxlrlTuvPuzSw==", + "requires": { + "@hapi/hoek": "9.x.x" + } + }, + "@hapi/bourne": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-2.1.0.tgz", + "integrity": "sha512-i1BpaNDVLJdRBEKeJWkVO6tYX6DMFBuwMhSuWqLsY4ufeTKGVuV5rBsUhxPayXqnnWHgXUAmWK16H/ykO5Wj4Q==" + }, + "@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" + }, + "@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "requires": { + "@hapi/hoek": "^9.0.0" + } + }, + "@hapi/wreck": { + "version": "17.2.0", + "resolved": "https://registry.npmjs.org/@hapi/wreck/-/wreck-17.2.0.tgz", + "integrity": "sha512-pJ5kjYoRPYDv+eIuiLQqhGon341fr2bNIYZjuotuPJG/3Ilzr/XtI+JAp0A86E2bYfsS3zBPABuS2ICkaXFT8g==", + "requires": { + "@hapi/boom": "9.x.x", + "@hapi/bourne": "2.x.x", + "@hapi/hoek": "9.x.x" + } + }, + "@sideway/address": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", + "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", + "requires": { + "@hapi/hoek": "^9.0.0" + } + }, + "@sideway/formula": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", + "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==" + }, + "@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" + }, + "axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "requires": { + "follow-redirects": "^1.14.0" + } + }, "bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==" + }, + "filter-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", + "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==" + }, + "follow-redirects": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", + "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==" + }, + "joi": { + "version": "17.6.0", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.6.0.tgz", + "integrity": "sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw==", + "requires": { + "@hapi/hoek": "^9.0.0", + "@hapi/topo": "^5.0.0", + "@sideway/address": "^4.1.3", + "@sideway/formula": "^3.0.0", + "@sideway/pinpoint": "^2.0.0" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "query-string": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.1.tgz", + "integrity": "sha512-MplouLRDHBZSG9z7fpuAAcI7aAYjDLhtsiVZsevsfaHWDS2IDdORKbSd1kWUA+V4zyva/HZoSfpwnYMMQDhb0w==", + "requires": { + "decode-uri-component": "^0.2.0", + "filter-obj": "^1.1.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" + } + }, + "simple-oauth2": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/simple-oauth2/-/simple-oauth2-4.3.0.tgz", + "integrity": "sha512-gjLIfy7M7WZSf3k5IZCQfEozbQwmW80zR9YMH4ph/WWG6S4U6sGhPujz8X6Hj6sZ8l7acSAxiyM4tF0vIN+E+A==", + "requires": { + "@hapi/hoek": "^9.0.4", + "@hapi/wreck": "^17.0.0", + "debug": "^4.1.1", + "joi": "^17.3.0" + } + }, + "split-on-first": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", + "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==" + }, + "strict-uri-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", + "integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY=" + }, "uuid": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", diff --git a/server/services/withings/package.json b/server/services/withings/package.json index c6f55e5560..0f429b618c 100755 --- a/server/services/withings/package.json +++ b/server/services/withings/package.json @@ -13,7 +13,10 @@ ], "scripts": {}, "dependencies": { + "axios": "^0.21.4", "bluebird": "^3.7.2", + "query-string": "^7.1.1", + "simple-oauth2": "^4.3.0", "uuid": "^3.3.2" } } diff --git a/server/test/controllers/oauth2/oauth2.controller.test.js b/server/test/controllers/oauth2/oauth2.controller.test.js deleted file mode 100755 index cf683bed25..0000000000 --- a/server/test/controllers/oauth2/oauth2.controller.test.js +++ /dev/null @@ -1,127 +0,0 @@ -const { expect, assert } = require('chai'); -const { OAuth2Server } = require('oauth2-mock-server'); - -const { buildOauth2Request } = require('./oauth2.request.test'); -const logger = require('../../../utils/logger'); - -const server = new OAuth2Server(); - -describe('POST /api/v1/service/oauth2/client/authorization-uri', () => { - before(async function testBefore() { - // Generate a new RSA key and add it to the keystore - await server.issuer.keys.generate('RS256'); - // Start the server - await server.start(9292, 'localhost'); - logger.debug('Issuer URL:', server.issuer.url); - }); - - after(async function testAfter() { - await server.stop(); - }); - - it('should get authorization uri', async () => { - const req = { - header: { - referer: 'fake-referer', - }, - integration_name: 'test', - service_id: 'a810b8db-6d04-4697-bed3-c4b72c996279', - user: { - id: '0cd30aef-9c4e-4a23-88e3-3547971296e5', - }, - }; - - await buildOauth2Request - .post('/api/v1/service/oauth2/client/authorization-uri') - .send(req) - .expect('Content-Type', /json/) - .expect(200) - .then((res) => { - expect(res.body).to.have.property('authorizationUri'); - }); - }); -}); - -describe('POST /api/v1/service/oauth2/client/access-token', () => { - before(async function testBefore() { - // Generate a new RSA key and add it to the keystore - await server.issuer.keys.generate('RS256'); - // Start the server - await server.start(9292, 'localhost'); - logger.debug('Issuer URL:', server.issuer.url); - }); - - after(async function testAfter() { - await server.stop(); - }); - it('should get token access uri', async () => { - const req = { - integration_name: 'test', - service_id: 'a810b8db-6d04-4697-bed3-c4b72c996279', - authorization_code: 'fake-code', - user: { - id: '0cd30aef-9c4e-4a23-88e3-3547971296e5', - }, - }; - - await buildOauth2Request - .post('/api/v1/service/oauth2/client/access-token') - .send(req) - .expect('Content-Type', /json/) - .expect(200) - .then((res) => { - expect(res.body).to.have.property('result'); - assert.equal(res.body.result.expires_in, 3600); - }); - }); -}); - -// failled call -describe('POST /api/v1/service/oauth2/client/access-token', () => { - it('should get 500 HTTP error on token access uri', async () => { - const req = { - integration_name: 'test', - service_id: 'a810b8db-6d04-4697-bed3-c4b72c996279', - authorization_code: 'fake-code', - }; - - await buildOauth2Request - .post('/api/v1/service/oauth2/client/access-token') - .send(req) - .expect('Content-Type', /json/) - .expect(500); - }); -}); - -describe('GET /api/v1/service/oauth2/client', () => { - before(async function testBefore() { - // Generate a new RSA key and add it to the keystore - await server.issuer.keys.generate('RS256'); - // Start the server - await server.start(9292, 'localhost'); - logger.debug('Issuer URL:', server.issuer.url); - }); - - after(async function testAfter() { - await server.stop(); - }); - it('should get token access uri', async () => { - const req = { - integration_name: 'test', - service_id: 'a810b8db-6d04-4697-bed3-c4b72c996279', - user: { - id: '0cd30aef-9c4e-4a23-88e3-3547971296e5', - }, - }; - - await buildOauth2Request - .get('/api/v1/service/oauth2/client') - .query(req) - .expect('Content-Type', /json/) - .expect(200) - .then((res) => { - expect(res.body).to.have.property('client_id'); - assert.equal(res.body.client_id, 'OAUTH2_CLIENT_ID'); - }); - }); -}); diff --git a/server/test/controllers/oauth2/oauth2.request.test.js b/server/test/controllers/oauth2/oauth2.request.test.js deleted file mode 100755 index 2459be5139..0000000000 --- a/server/test/controllers/oauth2/oauth2.request.test.js +++ /dev/null @@ -1,62 +0,0 @@ -const request = require('supertest'); -const { generateAccessToken } = require('../../../utils/accessToken'); - -const token = generateAccessToken( - '0cd30aef-9c4e-4a23-88e3-3547971296e5', - ['dashboard:write', 'reset-password:write'], - 'baf1fa89-153b-4f2e-adf3-787e410ec291', - 'secret', -); -const header = `Bearer ${token}`; -const referer = 'http://localhost:9090'; - -const buildOauth2Request = { - get: (url) => - request(TEST_BACKEND_APP) - .get(url) - .set('Accept', 'application/json') - .set('Authorization', header) - .set('referer', referer), - post: (url) => - request(TEST_BACKEND_APP) - .post(url) - .set('Accept', 'application/json') - .set('Authorization', header) - .set('referer', referer), - patch: (url) => - request(TEST_BACKEND_APP) - .patch(url) - .set('Accept', 'application/json') - .set('Authorization', header) - .set('referer', referer), - delete: (url) => - request(TEST_BACKEND_APP) - .delete(url) - .set('Accept', 'application/json') - .set('Authorization', header) - .set('referer', referer), -}; - -const unBuildOauth2RequestRequest = { - get: (url) => - request(TEST_BACKEND_APP) - .get(url) - .set('Accept', 'application/json'), - post: (url) => - request(TEST_BACKEND_APP) - .post(url) - .set('Accept', 'application/json'), - patch: (url) => - request(TEST_BACKEND_APP) - .patch(url) - .set('Accept', 'application/json'), - delete: (url) => - request(TEST_BACKEND_APP) - .delete(url) - .set('Accept', 'application/json'), -}; - -module.exports = { - buildOauth2Request, - request: unBuildOauth2RequestRequest, -}; diff --git a/server/test/services/withings/api/oauth2/oauth2.controller.test.js b/server/test/services/withings/api/oauth2/oauth2.controller.test.js new file mode 100755 index 0000000000..d35cfd1b72 --- /dev/null +++ b/server/test/services/withings/api/oauth2/oauth2.controller.test.js @@ -0,0 +1,118 @@ +// const { expect } = require('chai'); +const { fake, assert } = require('sinon'); + +const WithingsController = require('../../../../../services/withings/api/withings.controller'); + +const gladys = { + device: { + getBySelector: fake.resolves(null), + }, + variable: { + getValue: fake.resolves('fake_client_id'), + setValue: fake.returns(null), + destroy: fake.returns(null), + }, +}; + +const withingsHandler = { + initDevices: fake.resolves({ device: { name: 'testServiceID' } }), + poll: fake.resolves({}), + deleteVar: fake.resolves({ success: true }), + deleteDevices: fake.resolves({ success: true }), + oauth2Client: { + buildAuthorizationUri: fake.returns(null), + getAccessToken: fake.returns(null), + }, +}; + +const controller = WithingsController(gladys, withingsHandler); + +describe('POST /api/v1/service/withings/oauth2/client/authorization-uri', () => { + it('should get authorization uri', async () => { + const req = { + headers: { + referer: 'fake-referer', + }, + user: { + id: '0cd30aef-9c4e-4a23-88e3-3547971296e5', + }, + body: { + integration_name: 'test', + service_id: 'a810b8db-6d04-4697-bed3-c4b72c996279', + }, + }; + + const res = { json: fake.returns(null) }; + + await controller['post /api/v1/service/withings/oauth2/client/authorization-uri'].controller(req, res); + + assert.calledOnce(withingsHandler.oauth2Client.buildAuthorizationUri); + assert.calledOnce(res.json); + assert.calledWith(res.json, { authorizationUri: null }); + }); +}); + +describe('POST /api/v1/service/withings/oauth2/client/access-token', () => { + it('should get token access uri', async () => { + const req = { + headers: { + referer: 'fake-referer', + }, + user: { + id: '0cd30aef-9c4e-4a23-88e3-3547971296e5', + }, + body: { + integration_name: 'test', + service_id: 'a810b8db-6d04-4697-bed3-c4b72c996279', + authorization_code: 'fake-code', + }, + }; + + const res = { json: fake.returns(null) }; + + await controller['post /api/v1/service/withings/oauth2/client/access-token'].controller(req, res); + + assert.calledOnce(withingsHandler.oauth2Client.getAccessToken); + assert.calledOnce(res.json); + assert.calledWith(res.json, { result: null }); + }); +}); + +// failled call +describe('POST /api/v1/service/withings/oauth2/client/access-token', () => { + it('should get 500 HTTP error on token access uri', async () => { + const req = { + integration_name: 'test', + service_id: 'a810b8db-6d04-4697-bed3-c4b72c996279', + authorization_code: 'fake-code', + }; + + const res = { json: fake.returns(null) }; + + await controller['post /api/v1/service/withings/oauth2/client/access-token'].controller(req, res); + + assert.notCalled(res.json); + }); +}); + +describe('GET /api/v1/service/withings/oauth2/client', () => { + it('should get client param', async () => { + const req = { + headers: { + referer: 'fake-referer', + }, + user: { + id: '0cd30aef-9c4e-4a23-88e3-3547971296e5', + }, + query: { + service_id: 'a810b8db-6d04-4697-bed3-c4b72c996279', + }, + }; + + const res = { json: fake.returns(null) }; + + await controller['get /api/v1/service/withings/oauth2/client'].controller(req, res); + + assert.calledTwice(gladys.variable.getValue); + }); +}); diff --git a/server/test/lib/oauth2-client/oauth2manager.test.js b/server/test/services/withings/lib/oauth2-client/oauth2manager.test.js similarity index 96% rename from server/test/lib/oauth2-client/oauth2manager.test.js rename to server/test/services/withings/lib/oauth2-client/oauth2manager.test.js index 99e03a0ca2..bfe54d5f96 100755 --- a/server/test/lib/oauth2-client/oauth2manager.test.js +++ b/server/test/services/withings/lib/oauth2-client/oauth2manager.test.js @@ -2,9 +2,9 @@ const { OAuth2Server } = require('oauth2-mock-server'); const { assert } = require('chai'); const { fake } = require('sinon'); -const OAuth2Manager = require('../../../lib/oauth2-client'); -const logger = require('../../../utils/logger'); -const { OAUTH2 } = require('../../../utils/constants'); +const OAuth2Manager = require('../../../../../services/withings/lib/oauth2-client'); +const logger = require('../../../../../utils/logger'); +const { OAUTH2 } = require('../../../../../utils/constants'); const server = new OAuth2Server(); diff --git a/server/test/services/withings/lib/withings.initDevices.test.js b/server/test/services/withings/lib/withings.initDevices.test.js index ad4cd6b586..0aad153e73 100644 --- a/server/test/services/withings/lib/withings.initDevices.test.js +++ b/server/test/services/withings/lib/withings.initDevices.test.js @@ -2,7 +2,6 @@ const { assert } = require('chai'); const { OAuth2Server } = require('oauth2-mock-server'); const sinon = require('sinon'); const serverHttpWithingsMock = require('./withings.serverMock.test'); -const OAuth2Manager = require('../../../../lib/oauth2-client/index'); const WithingsHandler = require('../../../../services/withings/lib'); const serverHost = 'localhost'; @@ -56,8 +55,6 @@ describe('WithingsHandler initDevices', () => { serverOauth2.issuer.keys.generate('RS256'); // Start the server serverOauth2.start(oauth2ServerPort, serverHost); - - gladys.oauth2Client = new OAuth2Manager(gladys.variable); }); after(function testAfter(done) { diff --git a/server/test/services/withings/lib/withings.poll.test.js b/server/test/services/withings/lib/withings.poll.test.js index 218d7b3f44..aee30b3d7e 100644 --- a/server/test/services/withings/lib/withings.poll.test.js +++ b/server/test/services/withings/lib/withings.poll.test.js @@ -5,7 +5,6 @@ const serverHttpWithingsMock = require('./withings.serverMock.test'); const WithingsHandler = require('../../../../services/withings/lib'); const { DEVICE_FEATURE_TYPES } = require('../../../../utils/constants'); const { OAUTH2 } = require('../../../../utils/constants.js'); -const OAuth2Manager = require('../../../../lib/oauth2-client/index'); const { assert, fake } = sinon; @@ -55,8 +54,6 @@ describe('WithingsHandler poll', () => { serverOauth2.issuer.keys.generate('RS256'); // Start the server serverOauth2.start(oauth2ServerPort, serverHost); - - gladys.oauth2Client = new OAuth2Manager(gladys.variable); }); after((done) => { From b7ebe081709c8060aaddd2006064341e93c263b2 Mon Sep 17 00:00:00 2001 From: Euguuu Date: Sun, 12 Jun 2022 18:04:46 +0200 Subject: [PATCH 062/164] fix for review --- .../settings/WithingsSettingsWithoutConfig.js | 48 +++++++++++++-- .../all/withings/settings-page/actions.js | 1 - .../all/withings/settings-page/index.js | 3 +- .../settings-page/oauth2/OAuth2Config.jsx | 15 ++--- .../withings/api/withings.controller.js | 15 +---- .../withings/lib/oauth2-client/index.js | 2 + .../oauth2-client/oauth2.getCurrentConfig.js | 34 +++++++++++ .../api/oauth2/oauth2.controller.test.js | 5 +- .../lib/oauth2-client/oauth2manager.test.js | 61 ++++++++++++++++++- 9 files changed, 154 insertions(+), 30 deletions(-) create mode 100755 server/services/withings/lib/oauth2-client/oauth2.getCurrentConfig.js diff --git a/front/cypress/integration/routes/integration/withings/settings/WithingsSettingsWithoutConfig.js b/front/cypress/integration/routes/integration/withings/settings/WithingsSettingsWithoutConfig.js index b84ce81cba..96ee2f9e05 100644 --- a/front/cypress/integration/routes/integration/withings/settings/WithingsSettingsWithoutConfig.js +++ b/front/cypress/integration/routes/integration/withings/settings/WithingsSettingsWithoutConfig.js @@ -1,7 +1,22 @@ describe('Withings settings page', () => { const serverUrl = Cypress.env('serverUrl'); - + let interceptCount = 0; before(() => { + cy.intercept( + { + method: 'GET', + url: `${serverUrl}/api/v1/service/withings/oauth2/client?service_id=*` + }, + req => { + if (interceptCount < 2) { + interceptCount += 1; + req.reply({}); + } else { + req.reply({ client_id: 'FakeClientId' }); + } + } + ).as('getCurrentConfig'); + cy.intercept( { method: 'POST', @@ -11,6 +26,7 @@ describe('Withings settings page', () => { authorizationUri: '/dashboard/integration/health/withings/settings' } ).as('authorizationUriAction'); + cy.intercept( { method: 'POST', @@ -31,6 +47,7 @@ describe('Withings settings page', () => { } } ); + cy.intercept( { method: 'POST', @@ -60,9 +77,11 @@ describe('Withings settings page', () => { }); it('Check setting page and connect', () => { - cy.get('.markup').i18n('oauth2.instructions'); + cy.wait('@getCurrentConfig'); + + cy.get('.markup').i18n('integration.withings.settings.oauth2.instructions'); - cy.get('.form-label').i18n('withings.settings.oauth2.apiKeyLabel'); + cy.get('.form-label').i18n('integration.withings.settings.oauth2.apiKeyLabel'); cy.get('input') .first() @@ -74,8 +93,29 @@ describe('Withings settings page', () => { .clear() .type('FakeSecret'); - cy.contains('button', 'withings.settings.oauth2.buttonConnect').click(); + cy.contains('button', 'integration.withings.settings.oauth2.buttonConnect').click(); cy.wait('@authorizationUriAction'); + + // Check redirected to settings page + cy.location('pathname').should('eq', '/dashboard/integration/health/withings/settings'); + + cy.get('.alert-info').i18n('integration.withings.settings.oauth2.complete'); + + cy.get('.alert-info').i18n('integration.withings.settings.oauth2.clientId'); + + cy.get('.alert-info').contains('FakeClientId'); + + cy.get('.alert-info').i18n('integration.withings.settings.oauth2.instructionsToUse'); + + cy.contains('button', 'integration.withings.settings.oauth2.unconnectButton').should('exist'); + }); + + it('Check unconnect', () => { + cy.contains('button', 'integration.withings.settings.oauth2.unconnectButton').click(); + + cy.get('.markup').i18n('integration.withings.settings.oauth2.instructions'); + + cy.get('.form-label').i18n('integration.withings.settings.oauth2.apiKeyLabel'); }); }); diff --git a/front/src/routes/integration/all/withings/settings-page/actions.js b/front/src/routes/integration/all/withings/settings-page/actions.js index ea94dd994f..408d96ca6c 100755 --- a/front/src/routes/integration/all/withings/settings-page/actions.js +++ b/front/src/routes/integration/all/withings/settings-page/actions.js @@ -34,7 +34,6 @@ const actions = store => ({ } store.setState({ - oauth2GetStatus: RequestStatus.Success, withingsGetStatus: RequestStatus.Success, withingsDevices }); diff --git a/front/src/routes/integration/all/withings/settings-page/index.js b/front/src/routes/integration/all/withings/settings-page/index.js index 60c61daff4..3454a77985 100755 --- a/front/src/routes/integration/all/withings/settings-page/index.js +++ b/front/src/routes/integration/all/withings/settings-page/index.js @@ -23,9 +23,8 @@ class WithingsSettingsPage extends Component { } render(props, {}) { - const loading = props.oauth2GetStatus === RequestStatus.Getting; return ( - + {props.withingsDevices && (
diff --git a/front/src/routes/integration/all/withings/settings-page/oauth2/OAuth2Config.jsx b/front/src/routes/integration/all/withings/settings-page/oauth2/OAuth2Config.jsx index 467f31465a..feb1edef73 100755 --- a/front/src/routes/integration/all/withings/settings-page/oauth2/OAuth2Config.jsx +++ b/front/src/routes/integration/all/withings/settings-page/oauth2/OAuth2Config.jsx @@ -33,18 +33,18 @@ const OAuth2Config = ({ integrationImg, integrationName, children, ...props }) =

- +

- +
} + placeholder={} onInput={props.updateClientId} value={props.clientId} /> @@ -57,7 +57,7 @@ const OAuth2Config = ({ integrationImg, integrationName, children, ...props }) = } + placeholder={} onInput={props.updateSecret} value={props.secret} /> @@ -67,7 +67,7 @@ const OAuth2Config = ({ integrationImg, integrationName, children, ...props }) =
@@ -83,6 +83,7 @@ const OAuth2Config = ({ integrationImg, integrationName, children, ...props }) = +
{props.clientIdInDb}

@@ -90,12 +91,12 @@ const OAuth2Config = ({ integrationImg, integrationName, children, ...props }) =

- +

diff --git a/server/services/withings/api/withings.controller.js b/server/services/withings/api/withings.controller.js index a87f192897..9d23b31086 100755 --- a/server/services/withings/api/withings.controller.js +++ b/server/services/withings/api/withings.controller.js @@ -1,5 +1,4 @@ const asyncMiddleware = require('../../../api/middlewares/asyncMiddleware'); -const { OAUTH2 } = require('../../../utils/constants'); module.exports = function WithingsController(gladys, withingsHandler) { /** @@ -77,19 +76,7 @@ module.exports = function WithingsController(gladys, withingsHandler) { */ async function getCurrentConfig(req, res) { if (req.query && req.query.service_id) { - const serviceId = req.query.service_id; - - const resultClientId = await gladys.variable.getValue(OAUTH2.VARIABLE.CLIENT_ID, serviceId, req.user.id); - - const resultAccessToken = await gladys.variable.getValue(OAUTH2.VARIABLE.ACCESS_TOKEN, serviceId, req.user.id); - - // If access_token does not exist and client_id exist - // => connect process is not complete: remove variable already saved - // => force restart connect process from beginning - if (resultClientId && !resultAccessToken) { - await gladys.variable.destroy(OAUTH2.VARIABLE.CLIENT_ID, serviceId, req.user.id); - await gladys.variable.destroy(OAUTH2.VARIABLE.CLIENT_SECRET, serviceId, req.user.id); - } + const resultClientId = await withingsHandler.oauth2Client.getCurrentConfig(req.query.service_id, req.user.id); res.json({ client_id: resultClientId, diff --git a/server/services/withings/lib/oauth2-client/index.js b/server/services/withings/lib/oauth2-client/index.js index 2536c50f61..9470628239 100755 --- a/server/services/withings/lib/oauth2-client/index.js +++ b/server/services/withings/lib/oauth2-client/index.js @@ -1,4 +1,5 @@ const { executeQuery } = require('./oauth2.executeQuery'); +const { getCurrentConfig } = require('./oauth2.getCurrentConfig'); const { deleteClient } = require('./oauth2.deleteClient'); const { getAccessToken } = require('./oauth2.getAccessToken'); const { buildAuthorizationUri } = require('./oauth2.buildAuthorizationUri'); @@ -9,6 +10,7 @@ const OAuth2Manager = function OAuth2Manager(variable) { }; OAuth2Manager.prototype.executeQuery = executeQuery; +OAuth2Manager.prototype.getCurrentConfig = getCurrentConfig; OAuth2Manager.prototype.deleteClient = deleteClient; OAuth2Manager.prototype.getAccessToken = getAccessToken; OAuth2Manager.prototype.buildAuthorizationUri = buildAuthorizationUri; diff --git a/server/services/withings/lib/oauth2-client/oauth2.getCurrentConfig.js b/server/services/withings/lib/oauth2-client/oauth2.getCurrentConfig.js new file mode 100755 index 0000000000..fc1de16f65 --- /dev/null +++ b/server/services/withings/lib/oauth2-client/oauth2.getCurrentConfig.js @@ -0,0 +1,34 @@ +const { OAUTH2 } = require('../../../../utils/constants'); + +/** + * @description Return the current integration config. + * @param {string} serviceId - Gladys serviceId of current integration. + * @param {string} userId - Gladys userId of current session. + * @returns {Promise} The current integration config. + * @example + * oauth2.getCurrentConfig( + * serviceId: 'ffsdvs687f0bf3414e0fe3facfba7be945510fds09a' + * userId: fd81vs687f0bf3414e0fe3facfba7be9455109409a' + * } + * ); + */ +async function getCurrentConfig(serviceId, userId) { + const resultClientId = await this.variable.getValue(OAUTH2.VARIABLE.CLIENT_ID, serviceId, userId); + + const resultAccessToken = await this.variable.getValue(OAUTH2.VARIABLE.ACCESS_TOKEN, serviceId, userId); + + // If access_token does not exist and client_id exist + // => connect process is not complete: remove variable already saved + // => force restart connect process from beginning + if (resultClientId && !resultAccessToken) { + await this.variable.destroy(OAUTH2.VARIABLE.CLIENT_ID, serviceId, userId); + await this.variable.destroy(OAUTH2.VARIABLE.CLIENT_SECRET, serviceId, userId); + return null; + } + + return resultClientId; +} + +module.exports = { + getCurrentConfig, +}; diff --git a/server/test/services/withings/api/oauth2/oauth2.controller.test.js b/server/test/services/withings/api/oauth2/oauth2.controller.test.js index d35cfd1b72..ab139b493a 100755 --- a/server/test/services/withings/api/oauth2/oauth2.controller.test.js +++ b/server/test/services/withings/api/oauth2/oauth2.controller.test.js @@ -22,6 +22,7 @@ const withingsHandler = { oauth2Client: { buildAuthorizationUri: fake.returns(null), getAccessToken: fake.returns(null), + getCurrentConfig: fake.returns(null), }, }; @@ -113,6 +114,8 @@ describe('GET /api/v1/service/withings/oauth2/client', () => { await controller['get /api/v1/service/withings/oauth2/client'].controller(req, res); - assert.calledTwice(gladys.variable.getValue); + assert.calledOnce(withingsHandler.oauth2Client.getCurrentConfig); + assert.calledOnce(res.json); + assert.calledWith(res.json, { client_id: null }); }); }); diff --git a/server/test/services/withings/lib/oauth2-client/oauth2manager.test.js b/server/test/services/withings/lib/oauth2-client/oauth2manager.test.js index bfe54d5f96..d1bd8ab9b7 100755 --- a/server/test/services/withings/lib/oauth2-client/oauth2manager.test.js +++ b/server/test/services/withings/lib/oauth2-client/oauth2manager.test.js @@ -1,10 +1,11 @@ const { OAuth2Server } = require('oauth2-mock-server'); -const { assert } = require('chai'); +const { assert, expect } = require('chai'); const { fake } = require('sinon'); const OAuth2Manager = require('../../../../../services/withings/lib/oauth2-client'); const logger = require('../../../../../utils/logger'); const { OAUTH2 } = require('../../../../../utils/constants'); +const { BadOauth2ClientResponse } = require('../../../../../utils/coreErrors'); const server = new OAuth2Server(); @@ -17,6 +18,8 @@ const gladys = { variable: { getValue: function getValue(key, serviceId, userId) { switch (key) { + case OAUTH2.VARIABLE.CLIENT_ID: + return 'fake_client_id'; case OAUTH2.VARIABLE.TOKEN_HOST: return testUrl; case OAUTH2.VARIABLE.TOKEN_PATH: @@ -67,6 +70,38 @@ describe('oauth2manager test', () => { const manager = new OAuth2Manager(gladys.variable); + it('oauth manager get buildAuthorizationUri test', async () => { + const result = await manager.buildAuthorizationUri(testServiceId, 'fakeUserId', 'fake-code', 'fake-referer'); + + assert.isNotNull(result); + assert.equal( + result, + 'http://localhost:9292/authorize2?response_type=code&client_id=fake_client_id&redirect_uri=fake-referer%2Fdashboard%2Fintegration%2Fhealth%2Ftest%2Fsettings&scope=user.info%2Cuser.metrics%2Cuser.activity%2Cuser.sleepevents&state=gladys_state_fake-code', + ); + }); + + it('oauth manager get getAccessToken test', async () => { + const result = await manager.getAccessToken(testServiceId, 'fakeUserId', 'fake-code', 'fake-referer'); + + assert.isNotNull(result.token); + assert.isNotNull(result.token.access_token); + assert.isNotNull(result.token.refresh_token); + assert.equal(result.token.token_type, 'Bearer'); + assert.equal(result.token.expires_in, 3600); + }); + + it('oauth manager get error getAccessToken test (BadOauth2ClientResponse)', async () => { + server.service.once('beforeResponse', (tokenEndpointResponse, req) => { + tokenEndpointResponse.body.status = 2; + }); + try { + await manager.getAccessToken(testServiceId, 'fakeUserId', 'fake-code', 'fake-referer'); + assert.fail('No error BadOauth2ClientResponse happen'); + } catch (e) { + expect(e).be.instanceOf(BadOauth2ClientResponse); + } + }); + it('oauth manager get executeQuery test ', async () => { const queryType = 'get'; const queryUrl = `${testUrl}/userinfo`; @@ -108,6 +143,30 @@ describe('oauth2manager test', () => { return assert.equal(result, null); }); + it('oauth manager getCurrentConfig (without AcessToken) test ', async () => { + const tmpManager = new OAuth2Manager({ + getValue: function getValue(key, serviceId, userId) { + switch (key) { + case OAUTH2.VARIABLE.CLIENT_ID: + return 'fake_client_id'; + default: + return null; + } + }, + destroy: fake.returns(null), + }); + + const result = await tmpManager.getCurrentConfig(testServiceId, testUserId); + logger.debug(result); + return assert.equal(result, null); + }); + + it('oauth manager getCurrentConfig (with AcessToken) test ', async () => { + const result = await manager.getCurrentConfig(testServiceId, testUserId); + logger.debug(result); + return assert.equal(result, 'fake_client_id'); + }); + it('oauth manager deleteClient test ', async () => { const result = await manager.deleteClient(testServiceId, testUserId); logger.debug(result); From b548c8f83e56c2c7abd9b30ba69d7e40f36f76e5 Mon Sep 17 00:00:00 2001 From: Euguuu Date: Sun, 12 Jun 2022 18:09:55 +0200 Subject: [PATCH 063/164] fix for review --- front/src/routes/integration/all/withings/settings-page/index.js | 1 - 1 file changed, 1 deletion(-) diff --git a/front/src/routes/integration/all/withings/settings-page/index.js b/front/src/routes/integration/all/withings/settings-page/index.js index 3454a77985..8ed81e151c 100755 --- a/front/src/routes/integration/all/withings/settings-page/index.js +++ b/front/src/routes/integration/all/withings/settings-page/index.js @@ -7,7 +7,6 @@ import actionsOAuth2 from './oauth2/actions'; import actionsCommon from '../../../../../actions/integration'; import WithingsPage from '../WithingsPage'; import OAuth2Config from './oauth2/OAuth2Config'; -import { RequestStatus } from '../../../../../utils/consts'; import { combineActions } from '../../../../../utils/combineActions'; import Device from '../device-page/Device'; From 4b7ee5b43e97d82cb006f50f8907da74faa8b51d Mon Sep 17 00:00:00 2001 From: Pierre-Gilles Leymarie Date: Thu, 4 Aug 2022 10:58:53 +0200 Subject: [PATCH 064/164] Add missing integrations + add open-zwave deprecated warning (#1579) --- front/src/assets/integrations/cover/alexa.jpg | Bin 0 -> 27997 bytes .../assets/integrations/cover/google-home.jpg | Bin 0 -> 29806 bytes .../assets/integrations/cover/owntracks.jpg | Bin 0 -> 18110 bytes front/src/components/app.jsx | 6 +++ front/src/config/i18n/en.json | 46 +++++++++++------- front/src/config/i18n/fr.json | 36 +++++++++----- .../config/integrations/communications.json | 8 +++ front/src/config/integrations/devices.json | 4 ++ .../integration/all/alexa-gateway/index.js | 4 +- .../integration/all/alexa-gateway/welcome.jsx | 28 +++++++++++ .../all/google-home-gateway/index.js | 4 +- .../all/google-home-gateway/welcome.jsx | 28 +++++++++++ .../integration/all/owntracks/welcome.jsx | 28 +++++++++++ .../all/zwave/node-page/NodeTab.jsx | 5 +- 14 files changed, 163 insertions(+), 34 deletions(-) create mode 100644 front/src/assets/integrations/cover/alexa.jpg create mode 100644 front/src/assets/integrations/cover/google-home.jpg create mode 100644 front/src/assets/integrations/cover/owntracks.jpg create mode 100644 front/src/routes/integration/all/alexa-gateway/welcome.jsx create mode 100644 front/src/routes/integration/all/google-home-gateway/welcome.jsx create mode 100644 front/src/routes/integration/all/owntracks/welcome.jsx diff --git a/front/src/assets/integrations/cover/alexa.jpg b/front/src/assets/integrations/cover/alexa.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c5b67397aa2ef48ad0c9ccd93536e7845a7313e0 GIT binary patch literal 27997 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 I#=pP*2Q7s+tpET3 literal 0 HcmV?d00001 diff --git a/front/src/assets/integrations/cover/google-home.jpg b/front/src/assets/integrations/cover/google-home.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e90fafad7dc1ce8972564136dec46a98fd934d15 GIT binary patch literal 29806 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 bX6Sz?T=?Gx%Ksn#GvUtv2lt)%-}HY0YkAAD literal 0 HcmV?d00001 diff --git a/front/src/assets/integrations/cover/owntracks.jpg b/front/src/assets/integrations/cover/owntracks.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d3f924232bb161863393477ded50bbe750a8afca GIT binary patch literal 18110 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 JfOk6nKLE`@>Kp(7 literal 0 HcmV?d00001 diff --git a/front/src/components/app.jsx b/front/src/components/app.jsx index c5f5239c75..2566f6ee18 100644 --- a/front/src/components/app.jsx +++ b/front/src/components/app.jsx @@ -64,6 +64,9 @@ import SettingsBackgroundJobs from '../routes/settings/settings-background-jobs' // Integrations import TelegramPage from '../routes/integration/all/telegram'; +import AlexaWelcomePage from '../routes/integration/all/alexa-gateway/welcome'; +import GoogleHomeWelcomePage from '../routes/integration/all/google-home-gateway/welcome'; +import OwntracksWelcomePage from '../routes/integration/all/owntracks/welcome'; import CalDAVAccountPage from '../routes/integration/all/caldav/account-page'; import CalDAVSyncPage from '../routes/integration/all/caldav/sync-page'; import CalDAVSharePage from '../routes/integration/all/caldav/share-page'; @@ -234,7 +237,10 @@ const AppRouter = connect( + + + diff --git a/front/src/config/i18n/en.json b/front/src/config/i18n/en.json index 6510d790ae..efd7868d3d 100644 --- a/front/src/config/i18n/en.json +++ b/front/src/config/i18n/en.json @@ -308,7 +308,7 @@ }, "telegram": { "title": "Telegram", - "description": "Talk to Gladys through Telegram.", + "description": "Chat with Gladys remotely through Telegram.", "introduction": "To connect Gladys to Telegram, you first need to create a Telegram bot using the Botfather. Send a /newbot message to the @BotFather in Telegram. Then, enter the API key he gave you below.", "link": "ACTION REQUIRED: To talk to Gladys in Telegram, click on this link. Don't speak in Telegram directly to your bot before having click on this link, otherwise your bot won't be able to know that it's you who are sending a message.", "note": "This link is unique to your account, do not send it to other users.", @@ -318,7 +318,7 @@ }, "philipsHue": { "title": "Philips Hue", - "description": "Control Philips Hue Lights.", + "description": "Control Philips Hue Lights and plugs with the official hub", "deviceTab": "Devices", "setupTab": "Setup Bridges", "setup": { @@ -345,7 +345,7 @@ }, "rtspCamera": { "title": "Cameras", - "description": "HTTP/RTSP cameras in Gladys.", + "description": "Display your cameras video flux in Gladys.", "search": "Search cameras", "new": "New", "nameLabel": "Camera Name", @@ -369,7 +369,7 @@ }, "tasmota": { "title": "Tasmota", - "description": "Control your Tasmota devices.", + "description": "Control your Tasmota devices in HTTP or MQTT.", "deviceTab": "Devices", "mqttDiscoverTab": "MQTT discover", "httpDiscoverTab": "HTTP discover", @@ -430,7 +430,7 @@ }, "tpLink": { "title": "TP-Link", - "description": "Control TP-Link Bulbs and Plugs.", + "description": "Control TP-Link Bulbs and Plugs in Gladys", "deviceTab": "Devices", "device": { "title": "Devices in Gladys", @@ -454,7 +454,7 @@ }, "zigbee2mqtt": { "title": "Zigbee2mqtt", - "description": "Control your Zigbee devices.", + "description": "Control your Zigbee devices with Zigbee2mqtt", "deviceTab": "Devices", "discoverTab": "Discover", "settingsTab": "Settings", @@ -529,9 +529,12 @@ "documentation": "Zigbee2mqtt documentation" }, "googleHome": { - "title": "Gladys Assistant", + "title": "Google Home", + "description": "Control your Gladys device with your voice in Google Home", + "longDescription": "It's possible to use Google Home to control your Gladys devices by voice. To configure Google Home with Gladys, follow this tutorial in our documentation.", + "pageTitle": "Gladys Assistant", "cardTitle": "Do you want to connect Gladys Assistant to Google?", - "description": "By signin in, you are authorizing Google to access your devices.", + "pageDescription": "By signin in, you are authorizing Google to access your devices.", "error": "An error occured. Please retry !", "connectedAs": "Connected as", "googleWillBeAble": "Google will be able:", @@ -543,9 +546,12 @@ "connectButton": "Link" }, "alexa": { - "title": "Gladys Assistant", + "title": "Amazon Alexa", + "description": "Control your Gladys device with your voice in Alexa", + "longDescription": "It's possible to use Amazon Alexa to control your Gladys devices by voice. To configure Alexa with Gladys, follow this tutorial in our documentation.", + "pageTitle": "Gladys Assistant", "cardTitle": "Do you want to connect Gladys Assistant to Amazon Alexa?", - "description": "By signin in, you are authorizing Alexa to access your devices.", + "pageDescription": "By signin in, you are authorizing Alexa to access your devices.", "error": "An error occured. Please retry !", "connectedAs": "Connected as", "googleWillBeAble": "Alexa will be able:", @@ -556,9 +562,14 @@ "cancelButton": "Cancel", "connectButton": "Link" }, + "owntracks": { + "title": "Owntracks", + "description": "Send your GPS location to Gladys with a mobile app", + "longDescription": "Owntracks is an open-source app running on iOS and Android that let you send your geolocation to a server. You can use Owntracks to trigger scenes based on your geolocation. To configure Owntracks with Gladys, follow this tutorial in our documentation." + }, "zwave": { "title": "Z-Wave", - "description": "Control your Z-Wave devices.", + "description": "Control your Z-Wave devices with Open-Zwave.", "deviceTab": "Devices", "networkTab": "Network", "settingsTab": "Settings", @@ -566,6 +577,7 @@ "device": { "title": "Z-Wave Devices", "search": "Search devices", + "oldIntegrationWarning": "This integration is based on Open-Zwave, a library which is no longer supported. We are migrating to ZwaveJS2mqtt, but in the meantime we recommend that you use Node-RED + ZwaveJS2mqtt.

If you want to help us develop this integration, join-us on the forum!", "noDevices": "No Z-Wave devices added yet.", "scanButton": "Scan", "nameLabel": "Name", @@ -634,7 +646,7 @@ }, "openWeather": { "title": "OpenWeather API", - "description": "Get the weather in Gladys.", + "description": "Display the weather in your town on your dasboard.", "introduction": "This integration helps you integrate with OpenWeather API to get the weather in Gladys.", "instructions": "You first need to create an account on OpenWeather API website: https://openweathermap.org/api.", "apiKeyLabel": "Then, enter your API key here:", @@ -644,7 +656,7 @@ }, "mqtt": { "title": "MQTT", - "description": "Connect to MQTT server.", + "description": "Connect to a local or remote MQTT server", "deviceTab": "Devices", "setupTab": "Setup", "status": { @@ -721,7 +733,7 @@ }, "xiaomi": { "title": "Xiaomi Home", - "description": "Display Xiaomi home devices.", + "description": "Control Xiaomi home devices with the official hub", "device": { "title": "Xiaomi devices in Gladys", "noDevices": "No Xiaomi devices added yet.", @@ -755,7 +767,7 @@ "accountTab": "Account", "syncTab": "Synchronization", "shareTab": "Sharing", - "description": "Sync your CalDAV calendars.", + "description": "Sync your CalDAV calendars and use them in scenes.", "accountIntroduction": "To sync Gladys calendar using CalDAV, you first need an external compatible calendar. Then enter the configuration below.", "syncIntroduction": "Choose calendars to synchronize.", "shareIntroduction": "Choose calendars you want to share with other Gladys users.", @@ -822,7 +834,7 @@ }, "bluetooth": { "title": "Bluetooth", - "description": "Control your Bluetooth devices.", + "description": "Control your Bluetooth devices and detect your presence.", "deviceTab": "Devices", "discoverTab": "Discover", "setupTab": "Presence scanner", @@ -879,7 +891,7 @@ }, "eWeLink": { "title": "eWeLink", - "description": "Control your eWeLink devices.", + "description": "Control your eWeLink devices (works with the cloud)", "deviceTab": "Devices", "discoverTab": "eWeLink discover", "setupTab": "Setup", diff --git a/front/src/config/i18n/fr.json b/front/src/config/i18n/fr.json index eefbf1c401..9f5c6a18b0 100644 --- a/front/src/config/i18n/fr.json +++ b/front/src/config/i18n/fr.json @@ -472,7 +472,7 @@ }, "rtspCamera": { "title": "Caméras", - "description": "Affichez vos caméras.", + "description": "Récupérez le flux vidéos de vos caméras dans Gladys", "search": "Chercher une caméra", "new": "Nouveau", "nameLabel": "Nom de la caméra", @@ -496,7 +496,7 @@ }, "tasmota": { "title": "Tasmota", - "description": "Contrôler vos appareils Tasmota.", + "description": "Contrôler vos appareils Tasmota en MQTT ou HTTP", "deviceTab": "Appareils", "mqttDiscoverTab": "Découverte MQTT", "httpDiscoverTab": "Découverte HTTP", @@ -581,7 +581,7 @@ }, "zigbee2mqtt": { "title": "Zigbee2mqtt", - "description": "Contrôlez vos appareils Zigbee.", + "description": "Contrôlez vos appareils Zigbee via Zigbee2mqtt.", "deviceTab": "Appareils", "discoverTab": "Découverte Zigbee", "settingsTab": "Paramètres", @@ -656,9 +656,12 @@ "documentation": "Documentation Zigbee2mqtt" }, "googleHome": { - "title": "Gladys Assistant", + "title": "Google Home", + "description": "Contrôlez vos appareils Gladys à la voix dans Google Home", + "longDescription": "Il est possible d'utiliser Google Home pour contrôler vos appareils Gladys à la voix. Pour configurer Google Home, vous pouvez suivre ce tutoriel dans notre documentation.", + "pageTitle": "Gladys Assistant", "cardTitle": "Voulez-vous connecter Gladys Assistant à Google ?", - "description": "En vous connectant, vous authorizez Google à accéder à vos appareils.", + "pageDescription": "En vous connectant, vous authorizez Google à accéder à vos appareils.", "error": "Une erreur est survenue. Merci de réessayer.", "connectedAs": "Connecté en tant que", "googleWillBeAble": "Google pourra :", @@ -670,9 +673,12 @@ "connectButton": "Lier" }, "alexa": { - "title": "Gladys Assistant", + "title": "Amazon Alexa", + "description": "Contrôlez vos appareils Gladys à la voix dans Alexa", + "longDescription": "Il est possible d'utiliser Amazon Alexa pour contrôler vos appareils Gladys à la voix. Pour configurer Alexa, vous pouvez suivre ce tutoriel dans notre documentation.", + "pageTitle": "Gladys Assistant", "cardTitle": "Voulez-vous connecter Gladys Assistant à Amazon Alexa ?", - "description": "En vous connectant, vous authorizez Alexa à accéder à vos appareils.", + "pageDescription": "En vous connectant, vous authorizez Alexa à accéder à vos appareils.", "error": "Une erreur est survenue. Merci de réessayer.", "connectedAs": "Connecté en tant que", "googleWillBeAble": "Amazon Alexa pourra :", @@ -683,9 +689,14 @@ "cancelButton": "Annuler", "connectButton": "Lier" }, + "owntracks": { + "title": "Owntracks", + "description": "Envoyez votre position GPS à Gladys via une application", + "longDescription": "Owntracks est une application open-source disponible sur iOS et Android qui vous permet d'envoyer votre position GPS à un serveur distant. Il est possible d'utiliser Owntracks avec Gladys pour déclencher des scènes selon votre position. Pour configurer Owntracks, vous pouvez suivre ce tutoriel dans notre documentation." + }, "zwave": { "title": "Z-Wave", - "description": "Contrôlez vos appareils Z-Wave.", + "description": "Contrôlez vos appareils Z-Wave avec Open-Zwave.", "deviceTab": "Appareils", "networkTab": "Réseau", "settingsTab": "Paramètres", @@ -693,6 +704,7 @@ "device": { "title": "Appareils Z-Wave", "search": "Chercher un appareil", + "oldIntegrationWarning": "Cette intégration est basée sur Open-Zwave, une librairie qui n'est plus maintenue. Nous travaillons sur une nouvelle intégration basée sur ZwaveJS2mqtt, mais en attendant il faut s'armer de patience, et éventuellement utiliser ZwaveJS2Mqtt + Node-RED.

Nous sommes à la recherche de testeurs/développeurs pour la nouvelle intégration sur ce sujet sur le forum :)", "noDevices": "Aucun appareil Z-Wave n'a encore été ajouté.", "scanButton": "Rechercher", "nameLabel": "Nom", @@ -761,7 +773,7 @@ }, "openWeather": { "title": "API OpenWeather", - "description": "Récupérer la météo dans Gladys.", + "description": "Affichez les données de météo de votre ville dans Gladys.", "introduction": "Cette intégration vous aide à intégrer l'API OpenWeather pour obtenir la météo dans Gladys.", "instructions": "Vous devez d'abord créer un compte sur le site Web de l'API d'OpenWeather : https://openweathermap.org/api.", "apiKeyLabel": "Saisissez ensuite votre clé API ici :", @@ -771,7 +783,7 @@ }, "mqtt": { "title": "MQTT", - "description": "Connexion à un serveur MQTT.", + "description": "Connexion à un serveur MQTT, en local ou en distant.", "deviceTab": "Appareils", "setupTab": "Configuration", "status": { @@ -848,7 +860,7 @@ }, "xiaomi": { "title": "Xiaomi Home", - "description": "Gérez les appareils Xiaomi.", + "description": "Gérez les appareils Xiaomi via le pont Xiaomi.", "device": { "title": "Appareils Xiaomi dans Gladys", "noDevices": "Aucun appareil Xiaomi n'a encore été ajouté.", @@ -879,7 +891,7 @@ }, "eWeLink": { "title": "eWeLink", - "description": "Contrôlez vos appareils eWeLink.", + "description": "Contrôlez vos appareils eWeLink (via le cloud).", "deviceTab": "Appareils", "discoverTab": "Découverte eWeLink", "setupTab": "Configuration", diff --git a/front/src/config/integrations/communications.json b/front/src/config/integrations/communications.json index 9d1be59dd8..2367e9054e 100644 --- a/front/src/config/integrations/communications.json +++ b/front/src/config/integrations/communications.json @@ -2,5 +2,13 @@ { "key": "telegram", "img": "/assets/integrations/cover/telegram.jpg" + }, + { + "key": "alexa", + "img": "/assets/integrations/cover/alexa.jpg" + }, + { + "key": "googleHome", + "img": "/assets/integrations/cover/google-home.jpg" } ] diff --git a/front/src/config/integrations/devices.json b/front/src/config/integrations/devices.json index 491d490d08..c32598842c 100644 --- a/front/src/config/integrations/devices.json +++ b/front/src/config/integrations/devices.json @@ -41,5 +41,9 @@ { "key": "eWeLink", "img": "/assets/integrations/cover/ewelink.jpg" + }, + { + "key": "owntracks", + "img": "/assets/integrations/cover/owntracks.jpg" } ] diff --git a/front/src/routes/integration/all/alexa-gateway/index.js b/front/src/routes/integration/all/alexa-gateway/index.js index 7ecf81d5f7..db1da0d548 100644 --- a/front/src/routes/integration/all/alexa-gateway/index.js +++ b/front/src/routes/integration/all/alexa-gateway/index.js @@ -51,7 +51,7 @@ class AlexaGateway extends Component { alt={} /> - +
@@ -75,7 +75,7 @@ class AlexaGateway extends Component {

)}

- +

diff --git a/front/src/routes/integration/all/alexa-gateway/welcome.jsx b/front/src/routes/integration/all/alexa-gateway/welcome.jsx new file mode 100644 index 0000000000..8cf9353025 --- /dev/null +++ b/front/src/routes/integration/all/alexa-gateway/welcome.jsx @@ -0,0 +1,28 @@ +import { Text, MarkupText } from 'preact-i18n'; + +const AlexaWelcomePage = ({}) => ( +

+
+
+
+
+
+
+
+

+ +

+
+
+ +
+
+
+
+
+
+
+
+); + +export default AlexaWelcomePage; diff --git a/front/src/routes/integration/all/google-home-gateway/index.js b/front/src/routes/integration/all/google-home-gateway/index.js index bed0128b50..26b48c3969 100644 --- a/front/src/routes/integration/all/google-home-gateway/index.js +++ b/front/src/routes/integration/all/google-home-gateway/index.js @@ -52,7 +52,7 @@ class GoogleHomeGateway extends Component { alt={} /> - +
@@ -76,7 +76,7 @@ class GoogleHomeGateway extends Component {

)}

- +

diff --git a/front/src/routes/integration/all/google-home-gateway/welcome.jsx b/front/src/routes/integration/all/google-home-gateway/welcome.jsx new file mode 100644 index 0000000000..92dbf206ba --- /dev/null +++ b/front/src/routes/integration/all/google-home-gateway/welcome.jsx @@ -0,0 +1,28 @@ +import { Text, MarkupText } from 'preact-i18n'; + +const AlexaWelcomePage = ({}) => ( +

+
+
+
+
+
+
+
+

+ +

+
+
+ +
+
+
+
+
+
+
+
+); + +export default AlexaWelcomePage; diff --git a/front/src/routes/integration/all/owntracks/welcome.jsx b/front/src/routes/integration/all/owntracks/welcome.jsx new file mode 100644 index 0000000000..317efb4f05 --- /dev/null +++ b/front/src/routes/integration/all/owntracks/welcome.jsx @@ -0,0 +1,28 @@ +import { Text, MarkupText } from 'preact-i18n'; + +const OwntracksWelcomePage = ({}) => ( +
+
+
+
+
+
+
+
+

+ +

+
+
+ +
+
+
+
+
+
+
+
+); + +export default OwntracksWelcomePage; diff --git a/front/src/routes/integration/all/zwave/node-page/NodeTab.jsx b/front/src/routes/integration/all/zwave/node-page/NodeTab.jsx index d5fac7cb8a..671c393a93 100644 --- a/front/src/routes/integration/all/zwave/node-page/NodeTab.jsx +++ b/front/src/routes/integration/all/zwave/node-page/NodeTab.jsx @@ -1,4 +1,4 @@ -import { Text, Localizer } from 'preact-i18n'; +import { Text, Localizer, MarkupText } from 'preact-i18n'; import cx from 'classnames'; import { RequestStatus } from '../../../../../utils/consts'; @@ -43,6 +43,9 @@ const NodeTab = ({ children, ...props }) => ( >
+
+ +
{props.zwaveDevices && props.zwaveDevices.length === 0 && (
From b70be1df949684d596f0a763aa8054f77bacaa34 Mon Sep 17 00:00:00 2001 From: Vincent KULAK Date: Thu, 4 Aug 2022 11:30:01 +0200 Subject: [PATCH 065/164] Zigbee2mqtt: Add support for VOC Sensors (#1556) --- front/src/config/i18n/en.json | 6 ++++++ front/src/config/i18n/fr.json | 6 ++++++ front/src/utils/consts.js | 3 +++ server/services/zigbee2mqtt/exposes/numericType.js | 9 +++++++++ server/utils/constants.js | 6 ++++++ 5 files changed, 30 insertions(+) diff --git a/front/src/config/i18n/en.json b/front/src/config/i18n/en.json index efd7868d3d..94e14a8540 100644 --- a/front/src/config/i18n/en.json +++ b/front/src/config/i18n/en.json @@ -1592,6 +1592,7 @@ "psi": "Pound-force per square inch (psi)", "lux": "Lux", "ppm": "Parts per million (ppm)", + "ppb": "Parts per billion (ppb)", "watt": "Watt (W)", "kilowatt": "Kilowatt (kW)", "watt-hour": "Watt heure (Wh)", @@ -1643,6 +1644,7 @@ "psi": "psi", "lux": "lx", "ppm": "ppm", + "ppb": "ppb", "watt": "W", "kilowatt": "kW", "watt-hour": "Wh", @@ -1891,6 +1893,10 @@ "decimal": "Duration (decimal)", "integer": "Duration (integer)" }, + "voc-sensor": { + "shortCategoryName": "VOC Sensor", + "decimal": "VOC (decimal)" + }, "unknown": { "shortCategoryName": "Unknown", "unknown": "Unknown" diff --git a/front/src/config/i18n/fr.json b/front/src/config/i18n/fr.json index 9f5c6a18b0..634adbceb1 100644 --- a/front/src/config/i18n/fr.json +++ b/front/src/config/i18n/fr.json @@ -1592,6 +1592,7 @@ "psi": "Livre-force par pouce carré (psi)", "lux": "Lux", "ppm": "Partie par million (ppm)", + "ppb": "Partie par millard (ppb)", "watt": "Watt", "kilowatt": "Kilowatt", "watt-hour": "Watt heure (Wh)", @@ -1643,6 +1644,7 @@ "psi": "psi", "lux": "lx", "ppm": "ppm", + "ppb": "ppb", "watt": "W", "kilowatt": "kW", "watt-hour": "Wh", @@ -1891,6 +1893,10 @@ "decimal": "Durée (décimale)", "integer": "Durée (entier)" }, + "voc-sensor": { + "shortCategoryName": "Capteur de pollution COV", + "decimal": "COV (Décimale)" + }, "unknown": { "shortCategoryName": "Inconnu", "unknown": "Inconnu" diff --git a/front/src/utils/consts.js b/front/src/utils/consts.js index a009f7fe04..e7477bdb1e 100644 --- a/front/src/utils/consts.js +++ b/front/src/utils/consts.js @@ -251,6 +251,9 @@ export const DeviceFeatureCategoriesIcon = { [DEVICE_FEATURE_TYPES.DURATION.DECIMAL]: 'watch', [DEVICE_FEATURE_TYPES.DURATION.INTEGER]: 'clock' }, + [DEVICE_FEATURE_CATEGORIES.VOC_SENSOR]: { + [DEVICE_FEATURE_TYPES.VOC_SENSOR.DECIMAL]: 'bar-chart-2' + }, [DEVICE_FEATURE_CATEGORIES.UNKNOWN]: { [DEVICE_FEATURE_TYPES.UNKNOWN.UNKNOWN]: 'help-circle' } diff --git a/server/services/zigbee2mqtt/exposes/numericType.js b/server/services/zigbee2mqtt/exposes/numericType.js index ac188d0162..1830087b96 100644 --- a/server/services/zigbee2mqtt/exposes/numericType.js +++ b/server/services/zigbee2mqtt/exposes/numericType.js @@ -183,5 +183,14 @@ module.exports = { unit: DEVICE_FEATURE_UNITS.VOLT, }, }, + voc: { + feature: { + category: DEVICE_FEATURE_CATEGORIES.VOC_SENSOR, + type: DEVICE_FEATURE_TYPES.VOC_SENSOR.DECIMAL, + unit: DEVICE_FEATURE_UNITS.PPB, + min: 0, + max: 5500, + }, + }, }, }; diff --git a/server/utils/constants.js b/server/utils/constants.js index 4b36a44f9f..700dd34b23 100644 --- a/server/utils/constants.js +++ b/server/utils/constants.js @@ -332,6 +332,7 @@ const DEVICE_FEATURE_CATEGORIES = { PRECIPITATION_SENSOR: 'precipitation-sensor', UV_SENSOR: 'uv-sensor', DURATION: 'duration', + VOC_SENSOR: 'voc-sensor', UNKNOWN: 'unknown', }; @@ -451,6 +452,9 @@ const DEVICE_FEATURE_TYPES = { DECIMAL: 'decimal', INTEGER: 'integer', }, + VOC_SENSOR: { + DECIMAL: 'decimal', + }, UNKNOWN: { UNKNOWN: 'unknown', }, @@ -472,6 +476,7 @@ const DEVICE_FEATURE_UNITS = { LUX: 'lux', // Concentration units PPM: 'ppm', + PPB: 'ppb', // Power units WATT: 'watt', KILOWATT: 'kilowatt', @@ -605,6 +610,7 @@ const DEVICE_FEATURE_UNITS_BY_CATEGORY = { DEVICE_FEATURE_UNITS.MONTHS, DEVICE_FEATURE_UNITS.YEARS, ], + [DEVICE_FEATURE_CATEGORIES.VOC_SENSOR]: [DEVICE_FEATURE_UNITS.PPB], }; const ACTIONS_STATUS = { From 29b6f8ed5da3fe69848a7705b95939e7f1e9bd5c Mon Sep 17 00:00:00 2001 From: Pierre-Gilles Leymarie Date: Thu, 4 Aug 2022 15:26:49 +0200 Subject: [PATCH 066/164] Fix Google Home/Alexa links (#1582) --- front/src/components/app.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/front/src/components/app.jsx b/front/src/components/app.jsx index 2566f6ee18..37063e1daf 100644 --- a/front/src/components/app.jsx +++ b/front/src/components/app.jsx @@ -237,9 +237,9 @@ const AppRouter = connect( - + - + From b798c81c50cedf0de69e97ef57423abc8557e085 Mon Sep 17 00:00:00 2001 From: euguuu Date: Fri, 5 Aug 2022 18:48:20 +0200 Subject: [PATCH 067/164] change url withings partner --- front/src/config/i18n/en.json | 2 +- front/src/config/i18n/fr.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/front/src/config/i18n/en.json b/front/src/config/i18n/en.json index fd80fe2484..c090c7ea4b 100644 --- a/front/src/config/i18n/en.json +++ b/front/src/config/i18n/en.json @@ -893,7 +893,7 @@ "settings": { "oauth2": { "title": "Withings Settings", - "introduction": "To connect Withings account to Gladys, you first need to create a Withings user account in this link.

To connect Withings measures to Gladys, you need to create a Withings partner account in this link
(in callback url field put http://gladys.local/dashboard/integration/health/withings/settings, in environmnet field choose Dev, you can use Prod with gladys plus url and https protocol, refer to Documentation link for more details).
", + "introduction": "To connect Withings account to Gladys, you first need to create a Withings user account in this link.

To connect Withings measures to Gladys, you need to create a Withings partner account in this link
(in callback url field put http://gladys.local/dashboard/integration/health/withings/settings, in environmnet field choose Dev, you can use Prod with gladys plus url and https protocol, refer to Documentation link for more details).
", "instructionsToUse": "To use this integration, go to the dashboard and create a device box or chart.", "complete": "Your account is now linked to Gladys with those parameters:", "buttonConnect": "Connect now", diff --git a/front/src/config/i18n/fr.json b/front/src/config/i18n/fr.json index c79503f479..3c44512923 100644 --- a/front/src/config/i18n/fr.json +++ b/front/src/config/i18n/fr.json @@ -893,7 +893,7 @@ "settings": { "oauth2": { "title": "Withings Configuration", - "introduction": "Pour connecter le compte Withings à Gladys, vous devez d'abord créer un compte d'utilisateur Withings à ce lien.

Pour relier les mesures Withings à Gladys, vous devez créer un compte partenaire Withings à ce lien
(dans le champ url de callback mettre http://gladys.local/dashboard/integration/health/withings/settings, dans le champs environnement choisir Dev, vous pouvez utiliser Prod avec gladys plus url et le protocole https, voir le lien Documentation pour plus de détails).
", + "introduction": "Pour connecter le compte Withings à Gladys, vous devez d'abord créer un compte d'utilisateur Withings à ce lien.

Pour relier les mesures Withings à Gladys, vous devez créer un compte partenaire Withings à ce lien
(dans le champ url de callback mettre http://gladys.local/dashboard/integration/health/withings/settings, dans le champs environnement choisir Dev, vous pouvez utiliser Prod avec gladys plus url et le protocole https, voir le lien Documentation pour plus de détails).
", "instructionsToUse": "Pour utiliser cette intégration, rendez-vous sur le tableau de bord et créez une box d'appareil ou de graphique.", "complete": "Votre compte est maintenant lié à Gladys avec ces paramètres :", "buttonConnect": "Connecter maintenant", From 51c43b4f18a49115e2d034f1a6ddd6e239746548 Mon Sep 17 00:00:00 2001 From: euguuu Date: Sun, 10 Apr 2022 15:22:44 +0200 Subject: [PATCH 068/164] Create docker-image.yml --- .github/workflows/docker-image.yml | 92 ++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 .github/workflows/docker-image.yml diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml new file mode 100644 index 0000000000..c025ebdd04 --- /dev/null +++ b/.github/workflows/docker-image.yml @@ -0,0 +1,92 @@ +name: Docker Image CI + + +on: + workflow_dispatch: + inputs: + tag: + description: 'Docker Tag to build' + required: true + default: 'dev' + platforms: + description: 'Docker platform to build' + required: true + default: 'linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64/v8' + +jobs: + build-front: + name: Front build + runs-on: ubuntu-20.04 + steps: + - name: ⬇️ Checkout code + uses: actions/checkout@v2 + - name: 💽 Setup nodejs + uses: actions/setup-node@v2 + with: + node-version: '14' + - name: 📇 Use npm cache + uses: actions/cache@v2 + with: + path: ~/.npm + key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-node- + - name: 📦 Install NPM front packages + working-directory: ./front + run: | + npm ci + - name: 🏗️ Build front + working-directory: ./front + run: | + npm run build + - name: ↗️ Upload build artifact + uses: actions/upload-artifact@v2 + with: + name: static + path: front/build + docker: + needs: build-front + name: Docker magic ! + runs-on: ubuntu-20.04 + env: + DOCKERHUB_USER: ${{secrets.DOCKERHUB_USER}} + DOCKERHUB_PASSWORD: ${{secrets.DOCKERHUB_PASSWORD}} + DOCKERHUB_REPO: ${{secrets.DOCKERHUB_REPO}} + steps: + - name: ⬇️ Checkout code + uses: actions/checkout@v2 + - name: 🐳 Docker meta + id: docker_meta + uses: docker/metadata-action@v3 + with: + images: ${{ secrets.DOCKERHUB_REPO }} + labels: | + org.opencontainers.image.title=Gladys Assistant Preprod Image + - name: 💽 Set up QEMU + uses: docker/setup-qemu-action@v1 + - name: 🐳 Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v1 + with: + version: latest + - name: ↙️ Download build artifact + uses: actions/download-artifact@v2 + with: + name: static + path: static + - name: 🔑 Login to DockerHub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKERHUB_USER }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} + - name: 🐳 Build and push + uses: docker/build-push-action@v2 + with: + context: . + file: ./docker/Dockerfile.buildx + platforms: ${{ github.event.inputs.platforms }} + push: true + pull: true + tags: ${{ secrets.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }} + cache-from: type=registry,ref=${{ secrets.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }} + cache-to: type=inline From 5ecfdca386653f0a2ebdbdaa847ef663368d4caa Mon Sep 17 00:00:00 2001 From: euguuu Date: Sun, 10 Apr 2022 15:23:26 +0200 Subject: [PATCH 069/164] Delete docker-image.yml --- .github/workflows/docker-image.yml | 92 ------------------------------ 1 file changed, 92 deletions(-) delete mode 100644 .github/workflows/docker-image.yml diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml deleted file mode 100644 index c025ebdd04..0000000000 --- a/.github/workflows/docker-image.yml +++ /dev/null @@ -1,92 +0,0 @@ -name: Docker Image CI - - -on: - workflow_dispatch: - inputs: - tag: - description: 'Docker Tag to build' - required: true - default: 'dev' - platforms: - description: 'Docker platform to build' - required: true - default: 'linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64/v8' - -jobs: - build-front: - name: Front build - runs-on: ubuntu-20.04 - steps: - - name: ⬇️ Checkout code - uses: actions/checkout@v2 - - name: 💽 Setup nodejs - uses: actions/setup-node@v2 - with: - node-version: '14' - - name: 📇 Use npm cache - uses: actions/cache@v2 - with: - path: ~/.npm - key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} - restore-keys: | - ${{ runner.os }}-node- - - name: 📦 Install NPM front packages - working-directory: ./front - run: | - npm ci - - name: 🏗️ Build front - working-directory: ./front - run: | - npm run build - - name: ↗️ Upload build artifact - uses: actions/upload-artifact@v2 - with: - name: static - path: front/build - docker: - needs: build-front - name: Docker magic ! - runs-on: ubuntu-20.04 - env: - DOCKERHUB_USER: ${{secrets.DOCKERHUB_USER}} - DOCKERHUB_PASSWORD: ${{secrets.DOCKERHUB_PASSWORD}} - DOCKERHUB_REPO: ${{secrets.DOCKERHUB_REPO}} - steps: - - name: ⬇️ Checkout code - uses: actions/checkout@v2 - - name: 🐳 Docker meta - id: docker_meta - uses: docker/metadata-action@v3 - with: - images: ${{ secrets.DOCKERHUB_REPO }} - labels: | - org.opencontainers.image.title=Gladys Assistant Preprod Image - - name: 💽 Set up QEMU - uses: docker/setup-qemu-action@v1 - - name: 🐳 Set up Docker Buildx - id: buildx - uses: docker/setup-buildx-action@v1 - with: - version: latest - - name: ↙️ Download build artifact - uses: actions/download-artifact@v2 - with: - name: static - path: static - - name: 🔑 Login to DockerHub - uses: docker/login-action@v1 - with: - username: ${{ secrets.DOCKERHUB_USER }} - password: ${{ secrets.DOCKERHUB_PASSWORD }} - - name: 🐳 Build and push - uses: docker/build-push-action@v2 - with: - context: . - file: ./docker/Dockerfile.buildx - platforms: ${{ github.event.inputs.platforms }} - push: true - pull: true - tags: ${{ secrets.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }} - cache-from: type=registry,ref=${{ secrets.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }} - cache-to: type=inline From 0bae2bef93bdb2cbe9d37ee9dfd5512ec97eae96 Mon Sep 17 00:00:00 2001 From: euguuu Date: Sun, 11 Sep 2022 15:47:03 +0200 Subject: [PATCH 070/164] fix for review --- .../withings/settings-page/oauth2/actions.js | 2 +- .../lib/device/device.saveHistoricalState.js | 6 +- .../withings/api/withings.controller.js | 28 +++++---- .../oauth2.buildAuthorizationUri.js | 2 +- .../lib/oauth2-client/oauth2.deleteClient.js | 2 +- .../lib/oauth2-client/oauth2.executeQuery.js | 2 +- .../oauth2-client/oauth2.getAccessToken.js | 4 +- .../oauth2-client/oauth2.getCurrentConfig.js | 2 +- .../lib/oauth2-client/utils/constants.js | 17 ++++++ .../lib/oauth2-client/utils/coreErrors.js | 10 ++++ server/services/withings/lib/withings.init.js | 2 +- server/services/withings/lib/withings.poll.js | 2 +- .../device/device.saveHistoricalState.test.js | 38 ++++++++++++ .../api/oauth2/oauth2.controller.test.js | 60 +++++++++++++++++-- .../lib/oauth2-client/oauth2manager.test.js | 4 +- .../withings/lib/withings.poll.test.js | 2 +- .../withings/lib/withings.serverMock.test.js | 2 +- server/utils/constants.js | 18 ------ server/utils/coreErrors.js | 8 --- 19 files changed, 151 insertions(+), 60 deletions(-) create mode 100644 server/services/withings/lib/oauth2-client/utils/constants.js create mode 100644 server/services/withings/lib/oauth2-client/utils/coreErrors.js diff --git a/front/src/routes/integration/all/withings/settings-page/oauth2/actions.js b/front/src/routes/integration/all/withings/settings-page/oauth2/actions.js index be2561fd88..649084c9a0 100755 --- a/front/src/routes/integration/all/withings/settings-page/oauth2/actions.js +++ b/front/src/routes/integration/all/withings/settings-page/oauth2/actions.js @@ -1,5 +1,5 @@ import { RequestStatus } from '../../../../../../utils/consts'; -import { OAUTH2 } from '../../../../../../../../server/utils/constants'; +import { OAUTH2 } from '../../../../../../../../server/services/withings/lib/oauth2-client/utils/constants'; const actions = store => ({ updateClientId(state, e) { diff --git a/server/lib/device/device.saveHistoricalState.js b/server/lib/device/device.saveHistoricalState.js index 66c4f9f0e1..bcb4a1fa6a 100644 --- a/server/lib/device/device.saveHistoricalState.js +++ b/server/lib/device/device.saveHistoricalState.js @@ -22,7 +22,7 @@ async function saveHistoricalState(deviceFeature, historicalState, createdAt) { if (Number.isNaN(historicalState)) { throw new BadParameters(`device.saveHistoricalState of NaN value on ${deviceFeature.selector}`); } - // get current feture to update last value if needed + // get current feature to update last value if needed const previousDeviceFeature = this.stateManager.get('deviceFeature', deviceFeature.selector); const historicalStateObject = { @@ -35,11 +35,11 @@ async function saveHistoricalState(deviceFeature, historicalState, createdAt) { const historicalStateAfterFeatureLastValue = new Date(historicalStateObject.created_at) > new Date(previousDeviceFeature.last_value_changed); - const featureLastValueChageIsValidDate = + const featureLastValueChangeIsValidDate = previousDeviceFeature.last_value_changed instanceof Date && !Number.isNaN(previousDeviceFeature.last_value_changed.getTime()); - if (historicalStateAfterFeatureLastValue || !featureLastValueChageIsValidDate) { + if (historicalStateAfterFeatureLastValue || !featureLastValueChangeIsValidDate) { await db.DeviceFeature.update( { last_value: historicalStateObject.value, diff --git a/server/services/withings/api/withings.controller.js b/server/services/withings/api/withings.controller.js index 9d23b31086..657b3902e0 100755 --- a/server/services/withings/api/withings.controller.js +++ b/server/services/withings/api/withings.controller.js @@ -35,17 +35,18 @@ module.exports = function WithingsController(gladys, withingsHandler) { * @apiGroup OAuth2 */ async function buildAuthorizationUri(req, res) { + let authorizationUriResult; if (req.body && req.body.service_id && req.body.integration_name && req.headers.referer) { - const authorizationUriResult = await withingsHandler.oauth2Client.buildAuthorizationUri( + authorizationUriResult = await withingsHandler.oauth2Client.buildAuthorizationUri( req.body.service_id, req.user.id, req.body.integration_name, req.headers.referer, ); - res.json({ - authorizationUri: authorizationUriResult, - }); } + res.json({ + authorizationUri: authorizationUriResult, + }); } /** @@ -55,17 +56,18 @@ module.exports = function WithingsController(gladys, withingsHandler) { * @apiGroup OAuth2 */ async function getAccessTokenUri(req, res) { + let authResult; if (req.body && req.body.service_id && req.body.authorization_code && req.headers.referer) { - const authResult = await withingsHandler.oauth2Client.getAccessToken( + authResult = await withingsHandler.oauth2Client.getAccessToken( req.body.service_id, req.user.id, req.body.authorization_code, req.headers.referer, ); - res.json({ - result: authResult, - }); } + res.json({ + result: authResult, + }); } /** @@ -75,13 +77,13 @@ module.exports = function WithingsController(gladys, withingsHandler) { * @apiGroup oauth2 */ async function getCurrentConfig(req, res) { + let resultClientId; if (req.query && req.query.service_id) { - const resultClientId = await withingsHandler.oauth2Client.getCurrentConfig(req.query.service_id, req.user.id); - - res.json({ - client_id: resultClientId, - }); + resultClientId = await withingsHandler.oauth2Client.getCurrentConfig(req.query.service_id, req.user.id); } + res.json({ + client_id: resultClientId, + }); } return { diff --git a/server/services/withings/lib/oauth2-client/oauth2.buildAuthorizationUri.js b/server/services/withings/lib/oauth2-client/oauth2.buildAuthorizationUri.js index 6a73965600..96a64724bd 100755 --- a/server/services/withings/lib/oauth2-client/oauth2.buildAuthorizationUri.js +++ b/server/services/withings/lib/oauth2-client/oauth2.buildAuthorizationUri.js @@ -1,5 +1,5 @@ const { AuthorizationCode } = require('simple-oauth2'); -const { OAUTH2 } = require('../../../../utils/constants'); +const { OAUTH2 } = require('./utils/constants.js'); /** * @description Build a authorization uri of current oauth2 integration. diff --git a/server/services/withings/lib/oauth2-client/oauth2.deleteClient.js b/server/services/withings/lib/oauth2-client/oauth2.deleteClient.js index 37d489a510..bdc654a9b1 100755 --- a/server/services/withings/lib/oauth2-client/oauth2.deleteClient.js +++ b/server/services/withings/lib/oauth2-client/oauth2.deleteClient.js @@ -1,4 +1,4 @@ -const { OAUTH2 } = require('../../../../utils/constants'); +const { OAUTH2 } = require('./utils/constants.js'); /** * @description Delete client_id and secrei_id of current oauth2 integration. diff --git a/server/services/withings/lib/oauth2-client/oauth2.executeQuery.js b/server/services/withings/lib/oauth2-client/oauth2.executeQuery.js index 5d6e75e070..fa5fd5e438 100644 --- a/server/services/withings/lib/oauth2-client/oauth2.executeQuery.js +++ b/server/services/withings/lib/oauth2-client/oauth2.executeQuery.js @@ -2,7 +2,7 @@ const queryString = require('query-string'); const { default: axios } = require('axios'); const { ClientCredentials } = require('simple-oauth2'); const logger = require('../../../../utils/logger'); -const { OAUTH2 } = require('../../../../utils/constants'); +const { OAUTH2 } = require('./utils/constants.js'); /** * @description Refresh Oauth2 token in case of it expired . diff --git a/server/services/withings/lib/oauth2-client/oauth2.getAccessToken.js b/server/services/withings/lib/oauth2-client/oauth2.getAccessToken.js index ddc0212751..31b0d7cff2 100755 --- a/server/services/withings/lib/oauth2-client/oauth2.getAccessToken.js +++ b/server/services/withings/lib/oauth2-client/oauth2.getAccessToken.js @@ -1,7 +1,7 @@ const { AuthorizationCode } = require('simple-oauth2'); const logger = require('../../../../utils/logger'); -const { OAUTH2 } = require('../../../../utils/constants'); -const { BadOauth2ClientResponse } = require('../../../../utils/coreErrors'); +const { OAUTH2 } = require('./utils/constants.js'); +const { BadOauth2ClientResponse } = require('./utils/coreErrors'); /** * @description Get new AccessToken with client_id and secrei_id of current oauth2 integration. diff --git a/server/services/withings/lib/oauth2-client/oauth2.getCurrentConfig.js b/server/services/withings/lib/oauth2-client/oauth2.getCurrentConfig.js index fc1de16f65..939db6e0ce 100755 --- a/server/services/withings/lib/oauth2-client/oauth2.getCurrentConfig.js +++ b/server/services/withings/lib/oauth2-client/oauth2.getCurrentConfig.js @@ -1,4 +1,4 @@ -const { OAUTH2 } = require('../../../../utils/constants'); +const { OAUTH2 } = require('./utils/constants.js'); /** * @description Return the current integration config. diff --git a/server/services/withings/lib/oauth2-client/utils/constants.js b/server/services/withings/lib/oauth2-client/utils/constants.js new file mode 100644 index 0000000000..199df379ac --- /dev/null +++ b/server/services/withings/lib/oauth2-client/utils/constants.js @@ -0,0 +1,17 @@ +const OAUTH2 = { + VARIABLE: { + CLIENT_ID: 'OAUTH2_CLIENT_ID', + CLIENT_SECRET: 'OAUTH2_CLIENT_SECRET', + ACCESS_TOKEN: 'OAUTH2_ACCESS_TOKEN', + TOKEN_HOST: 'OAUTH2_TOKEN_HOST', + TOKEN_PATH: 'OAUTH2_TOKEN_PATH', + AUTHORIZE_HOST: 'OAUTH2_AUTHORIZE_HOST', + AUTHORIZE_PATH: 'OAUTH2_AUTHORIZE_PATH', + ADDITIONAL_ACCESS_TOKEN_REQUEST_ACTION_PARAM: 'OAUTH2_ADDITIONAL_ACCESS_TOKEN_REQUEST_ACTION_PARAM', + INTEGRATION_SCOPE: 'OAUTH2_INTEGRATION_SCOPE', + GRANT_TYPE: 'OAUTH2_GRANT_TYPE', + REDIRECT_URI_SUFFIX: 'OAUTH2_REDIRECT_URI_SUFFIX', + }, +}; + +module.exports.OAUTH2 = OAUTH2; diff --git a/server/services/withings/lib/oauth2-client/utils/coreErrors.js b/server/services/withings/lib/oauth2-client/utils/coreErrors.js new file mode 100644 index 0000000000..48da0b6ccf --- /dev/null +++ b/server/services/withings/lib/oauth2-client/utils/coreErrors.js @@ -0,0 +1,10 @@ +class BadOauth2ClientResponse extends Error { + constructor(message) { + super(); + this.message = message; + } +} + +module.exports = { + BadOauth2ClientResponse, +}; diff --git a/server/services/withings/lib/withings.init.js b/server/services/withings/lib/withings.init.js index dc63e7a29e..d3d4872bee 100755 --- a/server/services/withings/lib/withings.init.js +++ b/server/services/withings/lib/withings.init.js @@ -1,4 +1,4 @@ -const { OAUTH2 } = require('../../../utils/constants.js'); +const { OAUTH2 } = require('./oauth2-client/utils/constants.js'); /** * @description Check if withings oauth2 configuration is in catabase and save it if necessary. diff --git a/server/services/withings/lib/withings.poll.js b/server/services/withings/lib/withings.poll.js index 34d0d9e37d..5c49363405 100755 --- a/server/services/withings/lib/withings.poll.js +++ b/server/services/withings/lib/withings.poll.js @@ -1,7 +1,7 @@ const Promise = require('bluebird'); const { DEVICE_FEATURE_TYPES } = require('../../../utils/constants'); const logger = require('../../../utils/logger'); -const { OAUTH2 } = require('../../../utils/constants.js'); +const { OAUTH2 } = require('./oauth2-client/utils/constants.js'); /** * @description Poll value of a withings device. diff --git a/server/test/lib/device/device.saveHistoricalState.test.js b/server/test/lib/device/device.saveHistoricalState.test.js index 077251e6fc..dfa33786b0 100644 --- a/server/test/lib/device/device.saveHistoricalState.test.js +++ b/server/test/lib/device/device.saveHistoricalState.test.js @@ -48,6 +48,44 @@ describe('Device saveHistoricalState', () => { return assert.equal(deviceFeature.last_value_changed, updateDate); }); + it('should save historical sate on feature without state', async () => { + const testFeature = { + id: '5smd05fc-1736-4b76-99ca-5812329sm036', + name: 'Test feature test', + selector: 'test-feature', + external_id: 'feature:test', + category: 'feature', + type: 'weight', + unit: null, + read_only: false, + has_feedback: false, + min: 0, + max: 0, + device_id: 'fdfmb47f-4d25-4381-8923-2633b23192sm', + created_at: '2019-02-12 07:49:07.556 +00:00', + updated_at: '2019-02-12 07:49:07.556 +00:00', + }; + + const stateManager = new StateManager(event); + stateManager.setState('device', 'test-device', { + id: 'fdfmb47f-4d25-4381-8923-2633b23192sm', + name: 'test', + features: [testFeature], + }); + stateManager.setState('deviceFeature', 'test-feature', testFeature); + + const device = new Device(event, {}, stateManager); + const testDevice = await device.getBySelector('test-device'); + + const deviceFeature = testDevice.features[0]; + const updateDate = new Date().toISOString(); + const historicalState = 20; + + await device.saveHistoricalState(deviceFeature, historicalState, updateDate); + + return assert.equal(deviceFeature.last_value_changed, updateDate); + }); + it('should not save NaN as state', async () => { const stateManager = new StateManager(event); const device = new Device(event, {}, stateManager); diff --git a/server/test/services/withings/api/oauth2/oauth2.controller.test.js b/server/test/services/withings/api/oauth2/oauth2.controller.test.js index ab139b493a..0192e4ce2f 100755 --- a/server/test/services/withings/api/oauth2/oauth2.controller.test.js +++ b/server/test/services/withings/api/oauth2/oauth2.controller.test.js @@ -1,5 +1,6 @@ -// const { expect } = require('chai'); -const { fake, assert } = require('sinon'); +const sinon = require('sinon'); + +const { fake, assert } = sinon; const WithingsController = require('../../../../../services/withings/api/withings.controller'); @@ -53,8 +54,32 @@ describe('POST /api/v1/service/withings/oauth2/client/authorization-uri', () => }); }); +describe('POST /api/v1/service/withings/oauth2/client/authorization-uri', () => { + it('should get undefined authorization uri', async () => { + sinon.reset(); + const req = { + headers: { + referer: 'fake-referer', + }, + user: { + id: '0cd30aef-9c4e-4a23-88e3-3547971296e5', + }, + body: {}, + }; + + const res = { json: fake.returns(null) }; + + await controller['post /api/v1/service/withings/oauth2/client/authorization-uri'].controller(req, res); + + assert.notCalled(withingsHandler.oauth2Client.buildAuthorizationUri); + assert.calledOnce(res.json); + assert.calledWith(res.json, { authorizationUri: undefined }); + }); +}); + describe('POST /api/v1/service/withings/oauth2/client/access-token', () => { it('should get token access uri', async () => { + sinon.reset(); const req = { headers: { referer: 'fake-referer', @@ -81,18 +106,20 @@ describe('POST /api/v1/service/withings/oauth2/client/access-token', () => { // failled call describe('POST /api/v1/service/withings/oauth2/client/access-token', () => { - it('should get 500 HTTP error on token access uri', async () => { + it('should get undefined result on token access uri', async () => { + sinon.reset(); const req = { integration_name: 'test', service_id: 'a810b8db-6d04-4697-bed3-c4b72c996279', - authorization_code: 'fake-code', }; const res = { json: fake.returns(null) }; await controller['post /api/v1/service/withings/oauth2/client/access-token'].controller(req, res); - assert.notCalled(res.json); + assert.notCalled(withingsHandler.oauth2Client.getAccessToken); + assert.calledOnce(res.json); + assert.calledWith(res.json, { result: undefined }); }); }); @@ -119,3 +146,26 @@ describe('GET /api/v1/service/withings/oauth2/client', () => { assert.calledWith(res.json, { client_id: null }); }); }); + +describe('GET /api/v1/service/withings/oauth2/client', () => { + it('should get undefined client param', async () => { + sinon.reset(); + const req = { + headers: { + referer: 'fake-referer', + }, + user: { + id: '0cd30aef-9c4e-4a23-88e3-3547971296e5', + }, + query: {}, + }; + + const res = { json: fake.returns(null) }; + + await controller['get /api/v1/service/withings/oauth2/client'].controller(req, res); + + assert.notCalled(withingsHandler.oauth2Client.getCurrentConfig); + assert.calledOnce(res.json); + assert.calledWith(res.json, { client_id: undefined }); + }); +}); diff --git a/server/test/services/withings/lib/oauth2-client/oauth2manager.test.js b/server/test/services/withings/lib/oauth2-client/oauth2manager.test.js index d1bd8ab9b7..e38c22617c 100755 --- a/server/test/services/withings/lib/oauth2-client/oauth2manager.test.js +++ b/server/test/services/withings/lib/oauth2-client/oauth2manager.test.js @@ -4,8 +4,8 @@ const { fake } = require('sinon'); const OAuth2Manager = require('../../../../../services/withings/lib/oauth2-client'); const logger = require('../../../../../utils/logger'); -const { OAUTH2 } = require('../../../../../utils/constants'); -const { BadOauth2ClientResponse } = require('../../../../../utils/coreErrors'); +const { OAUTH2 } = require('../../../../../services/withings/lib/oauth2-client/utils/constants.js'); +const { BadOauth2ClientResponse } = require('../../../../../services/withings/lib/oauth2-client/utils/coreErrors'); const server = new OAuth2Server(); diff --git a/server/test/services/withings/lib/withings.poll.test.js b/server/test/services/withings/lib/withings.poll.test.js index aee30b3d7e..8376d6b12c 100644 --- a/server/test/services/withings/lib/withings.poll.test.js +++ b/server/test/services/withings/lib/withings.poll.test.js @@ -4,7 +4,7 @@ const sinon = require('sinon'); const serverHttpWithingsMock = require('./withings.serverMock.test'); const WithingsHandler = require('../../../../services/withings/lib'); const { DEVICE_FEATURE_TYPES } = require('../../../../utils/constants'); -const { OAUTH2 } = require('../../../../utils/constants.js'); +const { OAUTH2 } = require('../../../../services/withings/lib/oauth2-client/utils/constants.js'); const { assert, fake } = sinon; diff --git a/server/test/services/withings/lib/withings.serverMock.test.js b/server/test/services/withings/lib/withings.serverMock.test.js index 3180680b8f..15e912ed6d 100644 --- a/server/test/services/withings/lib/withings.serverMock.test.js +++ b/server/test/services/withings/lib/withings.serverMock.test.js @@ -1,5 +1,5 @@ const ServerMock = require('mock-http-server'); -const { OAUTH2 } = require('../../../../utils/constants.js'); +const { OAUTH2 } = require('../../../../services/withings/lib/oauth2-client/utils/constants.js'); /** * diff --git a/server/utils/constants.js b/server/utils/constants.js index 8662078d91..280af8e1b3 100644 --- a/server/utils/constants.js +++ b/server/utils/constants.js @@ -768,22 +768,6 @@ const ERROR_MESSAGES = { NO_CONNECTED_TO_THE_INTERNET: 'NO_CONNECTED_TO_THE_INTERNET', }; -const OAUTH2 = { - VARIABLE: { - CLIENT_ID: 'OAUTH2_CLIENT_ID', - CLIENT_SECRET: 'OAUTH2_CLIENT_SECRET', - ACCESS_TOKEN: 'OAUTH2_ACCESS_TOKEN', - TOKEN_HOST: 'OAUTH2_TOKEN_HOST', - TOKEN_PATH: 'OAUTH2_TOKEN_PATH', - AUTHORIZE_HOST: 'OAUTH2_AUTHORIZE_HOST', - AUTHORIZE_PATH: 'OAUTH2_AUTHORIZE_PATH', - ADDITIONAL_ACCESS_TOKEN_REQUEST_ACTION_PARAM: 'OAUTH2_ADDITIONAL_ACCESS_TOKEN_REQUEST_ACTION_PARAM', - INTEGRATION_SCOPE: 'OAUTH2_INTEGRATION_SCOPE', - GRANT_TYPE: 'OAUTH2_GRANT_TYPE', - REDIRECT_URI_SUFFIX: 'OAUTH2_REDIRECT_URI_SUFFIX', - }, -}; - const DEVICE_FEATURE_STATE_AGGREGATE_TYPES = { MONTHLY: 'monthly', DAILY: 'daily', @@ -894,8 +878,6 @@ module.exports.DASHBOARD_BOX_TYPE_LIST = DASHBOARD_BOX_TYPE_LIST; module.exports.ERROR_MESSAGES = ERROR_MESSAGES; -module.exports.OAUTH2 = OAUTH2; - module.exports.WEATHER_UNITS = WEATHER_UNITS; module.exports.DEVICE_FEATURE_STATE_AGGREGATE_TYPES = DEVICE_FEATURE_STATE_AGGREGATE_TYPES; diff --git a/server/utils/coreErrors.js b/server/utils/coreErrors.js index 7b3595033c..30204d144d 100644 --- a/server/utils/coreErrors.js +++ b/server/utils/coreErrors.js @@ -47,13 +47,6 @@ class AbortScene extends Error { } } -class BadOauth2ClientResponse extends Error { - constructor(message) { - super(); - this.message = message; - } -} - module.exports = { PasswordNotMatchingError, NotFoundError, @@ -62,5 +55,4 @@ module.exports = { NoValuesFoundError, PlatformNotCompatible, AbortScene, - BadOauth2ClientResponse, }; From 0965eda3de7d137613968d4846cbe9bab8b4764b Mon Sep 17 00:00:00 2001 From: euguuu Date: Sun, 11 Sep 2022 16:44:02 +0200 Subject: [PATCH 071/164] fix chmod on package files --- front/package-lock.json | 0 front/package.json | 0 2 files changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 front/package-lock.json mode change 100755 => 100644 front/package.json diff --git a/front/package-lock.json b/front/package-lock.json old mode 100755 new mode 100644 diff --git a/front/package.json b/front/package.json old mode 100755 new mode 100644 From 8bea21a35280dbd62318c28cbea224149f5b77ea Mon Sep 17 00:00:00 2001 From: euguuu Date: Mon, 12 Sep 2022 21:08:24 +0200 Subject: [PATCH 072/164] fix for review --- .../withings/api/withings.controller.js | 33 ++++++++++--------- .../api/oauth2/oauth2.controller.test.js | 33 ++++++++++--------- 2 files changed, 35 insertions(+), 31 deletions(-) diff --git a/server/services/withings/api/withings.controller.js b/server/services/withings/api/withings.controller.js index 657b3902e0..5a001145a3 100755 --- a/server/services/withings/api/withings.controller.js +++ b/server/services/withings/api/withings.controller.js @@ -35,18 +35,19 @@ module.exports = function WithingsController(gladys, withingsHandler) { * @apiGroup OAuth2 */ async function buildAuthorizationUri(req, res) { - let authorizationUriResult; if (req.body && req.body.service_id && req.body.integration_name && req.headers.referer) { - authorizationUriResult = await withingsHandler.oauth2Client.buildAuthorizationUri( + const authorizationUriResult = await withingsHandler.oauth2Client.buildAuthorizationUri( req.body.service_id, req.user.id, req.body.integration_name, req.headers.referer, ); + res.json({ + authorizationUri: authorizationUriResult, + }); + } else { + res.status(400); } - res.json({ - authorizationUri: authorizationUriResult, - }); } /** @@ -56,18 +57,19 @@ module.exports = function WithingsController(gladys, withingsHandler) { * @apiGroup OAuth2 */ async function getAccessTokenUri(req, res) { - let authResult; if (req.body && req.body.service_id && req.body.authorization_code && req.headers.referer) { - authResult = await withingsHandler.oauth2Client.getAccessToken( + const authResult = await withingsHandler.oauth2Client.getAccessToken( req.body.service_id, req.user.id, req.body.authorization_code, req.headers.referer, ); + res.json({ + result: authResult, + }); + } else { + res.status(400); } - res.json({ - result: authResult, - }); } /** @@ -77,13 +79,14 @@ module.exports = function WithingsController(gladys, withingsHandler) { * @apiGroup oauth2 */ async function getCurrentConfig(req, res) { - let resultClientId; if (req.query && req.query.service_id) { - resultClientId = await withingsHandler.oauth2Client.getCurrentConfig(req.query.service_id, req.user.id); + const resultClientId = await withingsHandler.oauth2Client.getCurrentConfig(req.query.service_id, req.user.id); + res.json({ + client_id: resultClientId, + }); + } else { + res.status(400); } - res.json({ - client_id: resultClientId, - }); } return { diff --git a/server/test/services/withings/api/oauth2/oauth2.controller.test.js b/server/test/services/withings/api/oauth2/oauth2.controller.test.js index 0192e4ce2f..5ba03c8844 100755 --- a/server/test/services/withings/api/oauth2/oauth2.controller.test.js +++ b/server/test/services/withings/api/oauth2/oauth2.controller.test.js @@ -55,7 +55,7 @@ describe('POST /api/v1/service/withings/oauth2/client/authorization-uri', () => }); describe('POST /api/v1/service/withings/oauth2/client/authorization-uri', () => { - it('should get undefined authorization uri', async () => { + it('should get error authorization uri', async () => { sinon.reset(); const req = { headers: { @@ -67,13 +67,13 @@ describe('POST /api/v1/service/withings/oauth2/client/authorization-uri', () => body: {}, }; - const res = { json: fake.returns(null) }; + const res = { json: fake.returns(null), status: fake.returns(null) }; await controller['post /api/v1/service/withings/oauth2/client/authorization-uri'].controller(req, res); - assert.notCalled(withingsHandler.oauth2Client.buildAuthorizationUri); - assert.calledOnce(res.json); - assert.calledWith(res.json, { authorizationUri: undefined }); + assert.notCalled(withingsHandler.oauth2Client.getAccessToken); + assert.calledOnce(res.status); + assert.calledWith(res.status, 400); }); }); @@ -106,20 +106,22 @@ describe('POST /api/v1/service/withings/oauth2/client/access-token', () => { // failled call describe('POST /api/v1/service/withings/oauth2/client/access-token', () => { - it('should get undefined result on token access uri', async () => { + it('should get error result on token access uri', async () => { sinon.reset(); const req = { integration_name: 'test', service_id: 'a810b8db-6d04-4697-bed3-c4b72c996279', }; - const res = { json: fake.returns(null) }; - + const res = { + json: fake.returns(null), + status: fake.returns(null), + }; await controller['post /api/v1/service/withings/oauth2/client/access-token'].controller(req, res); assert.notCalled(withingsHandler.oauth2Client.getAccessToken); - assert.calledOnce(res.json); - assert.calledWith(res.json, { result: undefined }); + assert.calledOnce(res.status); + assert.calledWith(res.status, 400); }); }); @@ -148,7 +150,7 @@ describe('GET /api/v1/service/withings/oauth2/client', () => { }); describe('GET /api/v1/service/withings/oauth2/client', () => { - it('should get undefined client param', async () => { + it('should get error client param', async () => { sinon.reset(); const req = { headers: { @@ -160,12 +162,11 @@ describe('GET /api/v1/service/withings/oauth2/client', () => { query: {}, }; - const res = { json: fake.returns(null) }; - + const res = { json: fake.returns(null), status: fake.returns(null) }; await controller['get /api/v1/service/withings/oauth2/client'].controller(req, res); - assert.notCalled(withingsHandler.oauth2Client.getCurrentConfig); - assert.calledOnce(res.json); - assert.calledWith(res.json, { client_id: undefined }); + assert.notCalled(withingsHandler.oauth2Client.getAccessToken); + assert.calledOnce(res.status); + assert.calledWith(res.status, 400); }); }); From 9d46d4e1be7226a2911ccd3f90fb0d266d0ab1dd Mon Sep 17 00:00:00 2001 From: euguuu Date: Sun, 10 Apr 2022 15:22:44 +0200 Subject: [PATCH 073/164] Create docker-image.yml --- .github/workflows/docker-image.yml | 92 ++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 .github/workflows/docker-image.yml diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml new file mode 100644 index 0000000000..c025ebdd04 --- /dev/null +++ b/.github/workflows/docker-image.yml @@ -0,0 +1,92 @@ +name: Docker Image CI + + +on: + workflow_dispatch: + inputs: + tag: + description: 'Docker Tag to build' + required: true + default: 'dev' + platforms: + description: 'Docker platform to build' + required: true + default: 'linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64/v8' + +jobs: + build-front: + name: Front build + runs-on: ubuntu-20.04 + steps: + - name: ⬇️ Checkout code + uses: actions/checkout@v2 + - name: 💽 Setup nodejs + uses: actions/setup-node@v2 + with: + node-version: '14' + - name: 📇 Use npm cache + uses: actions/cache@v2 + with: + path: ~/.npm + key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-node- + - name: 📦 Install NPM front packages + working-directory: ./front + run: | + npm ci + - name: 🏗️ Build front + working-directory: ./front + run: | + npm run build + - name: ↗️ Upload build artifact + uses: actions/upload-artifact@v2 + with: + name: static + path: front/build + docker: + needs: build-front + name: Docker magic ! + runs-on: ubuntu-20.04 + env: + DOCKERHUB_USER: ${{secrets.DOCKERHUB_USER}} + DOCKERHUB_PASSWORD: ${{secrets.DOCKERHUB_PASSWORD}} + DOCKERHUB_REPO: ${{secrets.DOCKERHUB_REPO}} + steps: + - name: ⬇️ Checkout code + uses: actions/checkout@v2 + - name: 🐳 Docker meta + id: docker_meta + uses: docker/metadata-action@v3 + with: + images: ${{ secrets.DOCKERHUB_REPO }} + labels: | + org.opencontainers.image.title=Gladys Assistant Preprod Image + - name: 💽 Set up QEMU + uses: docker/setup-qemu-action@v1 + - name: 🐳 Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v1 + with: + version: latest + - name: ↙️ Download build artifact + uses: actions/download-artifact@v2 + with: + name: static + path: static + - name: 🔑 Login to DockerHub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKERHUB_USER }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} + - name: 🐳 Build and push + uses: docker/build-push-action@v2 + with: + context: . + file: ./docker/Dockerfile.buildx + platforms: ${{ github.event.inputs.platforms }} + push: true + pull: true + tags: ${{ secrets.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }} + cache-from: type=registry,ref=${{ secrets.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }} + cache-to: type=inline From 88ab5af3329dc186f73e99a2f8a5dbb9f66965c5 Mon Sep 17 00:00:00 2001 From: euguuu Date: Sun, 10 Apr 2022 15:23:26 +0200 Subject: [PATCH 074/164] Delete docker-image.yml --- .github/workflows/docker-image.yml | 92 ------------------------------ 1 file changed, 92 deletions(-) delete mode 100644 .github/workflows/docker-image.yml diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml deleted file mode 100644 index c025ebdd04..0000000000 --- a/.github/workflows/docker-image.yml +++ /dev/null @@ -1,92 +0,0 @@ -name: Docker Image CI - - -on: - workflow_dispatch: - inputs: - tag: - description: 'Docker Tag to build' - required: true - default: 'dev' - platforms: - description: 'Docker platform to build' - required: true - default: 'linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64/v8' - -jobs: - build-front: - name: Front build - runs-on: ubuntu-20.04 - steps: - - name: ⬇️ Checkout code - uses: actions/checkout@v2 - - name: 💽 Setup nodejs - uses: actions/setup-node@v2 - with: - node-version: '14' - - name: 📇 Use npm cache - uses: actions/cache@v2 - with: - path: ~/.npm - key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} - restore-keys: | - ${{ runner.os }}-node- - - name: 📦 Install NPM front packages - working-directory: ./front - run: | - npm ci - - name: 🏗️ Build front - working-directory: ./front - run: | - npm run build - - name: ↗️ Upload build artifact - uses: actions/upload-artifact@v2 - with: - name: static - path: front/build - docker: - needs: build-front - name: Docker magic ! - runs-on: ubuntu-20.04 - env: - DOCKERHUB_USER: ${{secrets.DOCKERHUB_USER}} - DOCKERHUB_PASSWORD: ${{secrets.DOCKERHUB_PASSWORD}} - DOCKERHUB_REPO: ${{secrets.DOCKERHUB_REPO}} - steps: - - name: ⬇️ Checkout code - uses: actions/checkout@v2 - - name: 🐳 Docker meta - id: docker_meta - uses: docker/metadata-action@v3 - with: - images: ${{ secrets.DOCKERHUB_REPO }} - labels: | - org.opencontainers.image.title=Gladys Assistant Preprod Image - - name: 💽 Set up QEMU - uses: docker/setup-qemu-action@v1 - - name: 🐳 Set up Docker Buildx - id: buildx - uses: docker/setup-buildx-action@v1 - with: - version: latest - - name: ↙️ Download build artifact - uses: actions/download-artifact@v2 - with: - name: static - path: static - - name: 🔑 Login to DockerHub - uses: docker/login-action@v1 - with: - username: ${{ secrets.DOCKERHUB_USER }} - password: ${{ secrets.DOCKERHUB_PASSWORD }} - - name: 🐳 Build and push - uses: docker/build-push-action@v2 - with: - context: . - file: ./docker/Dockerfile.buildx - platforms: ${{ github.event.inputs.platforms }} - push: true - pull: true - tags: ${{ secrets.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }} - cache-from: type=registry,ref=${{ secrets.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }} - cache-to: type=inline From 2cc85b2c9eb1d7023c7c5071323b5731ebbde9a5 Mon Sep 17 00:00:00 2001 From: euguuu Date: Thu, 29 Sep 2022 22:26:40 +0200 Subject: [PATCH 075/164] fix test --- .../lib/device/device.destroyByServiceId.test.js | 4 +++- .../lib/device/device.saveHistoricalState.test.js | 12 +++++++++--- server/test/lib/device/device.setParam.test.js | 6 +++++- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/server/test/lib/device/device.destroyByServiceId.test.js b/server/test/lib/device/device.destroyByServiceId.test.js index 7b3c432289..0ac42e2e0b 100644 --- a/server/test/lib/device/device.destroyByServiceId.test.js +++ b/server/test/lib/device/device.destroyByServiceId.test.js @@ -5,9 +5,11 @@ const { assert } = require('chai'); const Device = require('../../../lib/device'); const StateManager = require('../../../lib/state'); const ServiceManager = require('../../../lib/service'); +const Job = require('../../../lib/job'); const db = require('../../../models'); const event = new EventEmitter(); +const job = new Job(event); const serviceName = 'fake-service'; describe('Device', () => { @@ -42,7 +44,7 @@ describe('Device', () => { it('should destroy device', async () => { const serviceManager = new ServiceManager({}, stateManager); - const device = new Device(event, {}, stateManager, serviceManager); + const device = new Device(event, {}, stateManager, serviceManager, {}, {}, job); await device.create({ name: 'test-device-destroyByServiceId', external_id: 'test-device-new-destroyByServiceId', diff --git a/server/test/lib/device/device.saveHistoricalState.test.js b/server/test/lib/device/device.saveHistoricalState.test.js index dfa33786b0..2f35f78323 100644 --- a/server/test/lib/device/device.saveHistoricalState.test.js +++ b/server/test/lib/device/device.saveHistoricalState.test.js @@ -2,9 +2,12 @@ const EventEmitter = require('events'); const { assert, expect } = require('chai'); const Device = require('../../../lib/device'); const StateManager = require('../../../lib/state'); +const ServiceManager = require('../../../lib/service'); +const Job = require('../../../lib/job'); const { BadParameters } = require('../../../utils/coreErrors'); const event = new EventEmitter(); +const job = new Job(event); describe('Device saveHistoricalState', () => { it('should save historical sate (new state)', async () => { @@ -36,7 +39,8 @@ describe('Device saveHistoricalState', () => { }); stateManager.setState('deviceFeature', 'test-feature', testFeature); - const device = new Device(event, {}, stateManager); + const serviceManager = new ServiceManager({}, stateManager); + const device = new Device(event, {}, stateManager, serviceManager, {}, {}, job); const testDevice = await device.getBySelector('test-device'); const deviceFeature = testDevice.features[0]; @@ -74,7 +78,8 @@ describe('Device saveHistoricalState', () => { }); stateManager.setState('deviceFeature', 'test-feature', testFeature); - const device = new Device(event, {}, stateManager); + const serviceManager = new ServiceManager({}, stateManager); + const device = new Device(event, {}, stateManager, serviceManager, {}, {}, job); const testDevice = await device.getBySelector('test-device'); const deviceFeature = testDevice.features[0]; @@ -88,7 +93,8 @@ describe('Device saveHistoricalState', () => { it('should not save NaN as state', async () => { const stateManager = new StateManager(event); - const device = new Device(event, {}, stateManager); + const serviceManager = new ServiceManager({}, stateManager); + const device = new Device(event, {}, stateManager, serviceManager, {}, {}, job); const nanValue = parseInt('NaN value', 10); diff --git a/server/test/lib/device/device.setParam.test.js b/server/test/lib/device/device.setParam.test.js index ab007a2389..9fc728405a 100644 --- a/server/test/lib/device/device.setParam.test.js +++ b/server/test/lib/device/device.setParam.test.js @@ -2,14 +2,18 @@ const EventEmitter = require('events'); const { assert } = require('chai'); const Device = require('../../../lib/device'); const StateManager = require('../../../lib/state'); +const ServiceManager = require('../../../lib/service'); +const Job = require('../../../lib/job'); const event = new EventEmitter(); +const job = new Job(event); describe('Device', () => { it('save test param', async () => { const stateManager = new StateManager(event); - const device = new Device(event, {}, stateManager); + const serviceManager = new ServiceManager({}, stateManager); + const device = new Device(event, {}, stateManager, serviceManager, {}, {}, job); let testDevice = await device.get({ search: 'test' }); await device.setParam(testDevice[0], 'testParamName', 'testParamValue'); await device.setParam(testDevice[0], 'testParamName2', 'testParamValue2'); From 39ed1824774f99417c36a68a3eec7b159692cd18 Mon Sep 17 00:00:00 2001 From: Alexandre Trovato <1839717+atrovato@users.noreply.github.com> Date: Fri, 30 Sep 2022 13:34:11 +0200 Subject: [PATCH 076/164] Reword leak sensor values (#1608) Fixes #1603 --- front/src/config/i18n/en.json | 7 +++++++ front/src/config/i18n/fr.json | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/front/src/config/i18n/en.json b/front/src/config/i18n/en.json index f29899bbd5..49d1ca31f8 100644 --- a/front/src/config/i18n/en.json +++ b/front/src/config/i18n/en.json @@ -1883,6 +1883,13 @@ "zero": "Healthy", "one": "CO detected" } + }, + "leak-sensor": { + "binary": { + "other": "No value received", + "zero": "No", + "one": "Yes" + } } } }, diff --git a/front/src/config/i18n/fr.json b/front/src/config/i18n/fr.json index 6b8297ee82..fbedbc2215 100644 --- a/front/src/config/i18n/fr.json +++ b/front/src/config/i18n/fr.json @@ -1883,6 +1883,13 @@ "zero": "Sain", "one": "CO détecté" } + }, + "leak-sensor": { + "binary": { + "other": "Aucune valeur reçue", + "zero": "Non", + "one": "Oui" + } } } }, From b7b97d2b9ca1247317946310689529840eb67d43 Mon Sep 17 00:00:00 2001 From: Alexandre Trovato <1839717+atrovato@users.noreply.github.com> Date: Fri, 30 Sep 2022 13:35:01 +0200 Subject: [PATCH 077/164] Add Broadlink cover devices (#1607) --- front/src/config/i18n/en.json | 14 ++++++++++++++ front/src/config/i18n/fr.json | 14 ++++++++++++++ .../all/broadlink/remote-page/features.js | 18 ++++++++++++++++++ 3 files changed, 46 insertions(+) diff --git a/front/src/config/i18n/en.json b/front/src/config/i18n/en.json index 49d1ca31f8..e40d91abb7 100644 --- a/front/src/config/i18n/en.json +++ b/front/src/config/i18n/en.json @@ -799,6 +799,13 @@ "learnAllModeLabel": "Next learn in {{timeLeft}} secondes...", "quitLearnModeLabel": "Stop learning features", "features": { + "curtain": { + "state": { + "none": "Stop", + "one": "Open", + "other": "Close" + } + }, "light": { "binary": { "none": "Off", @@ -829,6 +836,13 @@ "one": "On" } }, + "shutter": { + "state": { + "none": "Stop", + "one": "Open", + "other": "Close" + } + }, "television": { "binary": { "none": "Off", diff --git a/front/src/config/i18n/fr.json b/front/src/config/i18n/fr.json index fbedbc2215..3d1a10230e 100644 --- a/front/src/config/i18n/fr.json +++ b/front/src/config/i18n/fr.json @@ -926,6 +926,13 @@ "learnAllModeLabel": "Prochain bouton dans {{timeLeft}} secondes...", "quitLearnModeLabel": "Arrêter le mode apprentissage", "features": { + "curtain": { + "state": { + "none": "Arrêter", + "one": "Ouvrir", + "other": "Fermer" + } + }, "light": { "binary": { "none": "Eteindre", @@ -956,6 +963,13 @@ "one": "Allumer" } }, + "shutter": { + "state": { + "none": "Arrêter", + "one": "Ouvrir", + "other": "Fermer" + } + }, "television": { "binary": { "none": "Eteindre", diff --git a/front/src/routes/integration/all/broadlink/remote-page/features.js b/front/src/routes/integration/all/broadlink/remote-page/features.js index 6504f2fbb4..a8ca555337 100644 --- a/front/src/routes/integration/all/broadlink/remote-page/features.js +++ b/front/src/routes/integration/all/broadlink/remote-page/features.js @@ -1,6 +1,15 @@ import { DEVICE_FEATURE_CATEGORIES, DEVICE_FEATURE_TYPES } from '../../../../../../../server/utils/constants'; export const MANAGED_FEATURES = { + [DEVICE_FEATURE_CATEGORIES.CURTAIN]: { + [DEVICE_FEATURE_TYPES.CURTAIN.STATE]: { + feature: { + min: -1, + max: 1 + }, + values: [-1, 0, 1] + } + }, [DEVICE_FEATURE_CATEGORIES.LIGHT]: { [DEVICE_FEATURE_TYPES.LIGHT.BINARY]: { feature: { @@ -49,6 +58,15 @@ export const MANAGED_FEATURES = { values: [0, 1] } }, + [DEVICE_FEATURE_CATEGORIES.SHUTTER]: { + [DEVICE_FEATURE_TYPES.SHUTTER.STATE]: { + feature: { + min: -1, + max: 1 + }, + values: [-1, 0, 1] + } + }, [DEVICE_FEATURE_CATEGORIES.TELEVISION]: { [DEVICE_FEATURE_TYPES.TELEVISION.BINARY]: { feature: { From 911b4c30ee9267ede18865fd1b7d10662ce08eff Mon Sep 17 00:00:00 2001 From: Alexandre Trovato <1839717+atrovato@users.noreply.github.com> Date: Mon, 3 Oct 2022 05:50:15 +0200 Subject: [PATCH 078/164] Fix Broadlink labels (#1606) --- front/src/config/i18n/fr.json | 8 ++-- .../remote-page/RemoteFeatureEditionPanel.jsx | 47 +++++++++++-------- 2 files changed, 31 insertions(+), 24 deletions(-) diff --git a/front/src/config/i18n/fr.json b/front/src/config/i18n/fr.json index 3d1a10230e..5274a0e120 100644 --- a/front/src/config/i18n/fr.json +++ b/front/src/config/i18n/fr.json @@ -913,10 +913,10 @@ "learnFailed": "Impossible de passer en mode apprentissage.", "selectFeatureLabel": "Choisissez une fonctionnalité de la liste ou cliquez sur le bouton suivant pour entrer dans le mode apprentissage. Le mode apprentissage vous permet d'enregistrer toutes les commandes une par une, de manière automatisée.", "selectedFeatureLabel": "Fonctionnalité sélectionnée", - "selectActionLabel": "La fonctionnalité {{feature}} is sélectionnée. Sélectionnez une action dans la liste ci-dessous pour activer la capture.", - "selectedFeatureInfoLabel": "La fonctionnalité {{feature}} is sélectionnée.", - "unselectedActionInfoLabel": "La fonctionnalité {{feature}} is sélectionnée, merci de sélectionner une action pour activer la capture.", - "selectedActionInfoLabel": "La fonctionnalité {{feature}} is sélectionnée, avec l'action {{action}}.", + "selectActionLabel": "La fonctionnalité {{feature}} est sélectionnée. Sélectionnez une action dans la liste ci-dessous pour activer la capture.", + "selectedFeatureInfoLabel": "La fonctionnalité {{feature}} est sélectionnée.", + "unselectedActionInfoLabel": "La fonctionnalité {{feature}} est sélectionnée, merci de sélectionner une action pour activer la capture.", + "selectedActionInfoLabel": "La fonctionnalité {{feature}} est sélectionnée, avec l'action {{action}}.", "testError": "Une erreur est survenue lors du test de la fonctionnalité, vérifiez votre matériel.", "peripheralSelectLabel": "{{name}} ({{address}})", "testLabel": "Tester", diff --git a/front/src/routes/integration/all/broadlink/remote-page/RemoteFeatureEditionPanel.jsx b/front/src/routes/integration/all/broadlink/remote-page/RemoteFeatureEditionPanel.jsx index 510ec0d7c4..4f3e18a150 100644 --- a/front/src/routes/integration/all/broadlink/remote-page/RemoteFeatureEditionPanel.jsx +++ b/front/src/routes/integration/all/broadlink/remote-page/RemoteFeatureEditionPanel.jsx @@ -1,5 +1,5 @@ import { Component } from 'preact'; -import { MarkupText, Text } from 'preact-i18n'; +import { MarkupText, Text, translate } from 'preact-i18n'; import { WEBSOCKET_MESSAGE_TYPES } from '../../../../../../../server/utils/constants'; @@ -8,6 +8,29 @@ import { ACTIONS } from '../../../../../../../server/services/broadlink/lib/util import get from 'get-value'; import { MANAGED_FEATURES } from './features'; +const renderSelectedAction = (intl, category, selectedFeature, selectedValue) => { + const action = translate( + `integration.broadlink.setup.features.${category}.${selectedFeature}`, + intl && intl.scope, + intl && intl.dictionary, + { selectedValue }, + selectedValue, + `${selectedValue}` + ); + + return ( +
+ , + action + }} + /> +
+ ); +}; + class RemoteFeatureEditionPanel extends Component { cancelSelection = () => { if (this.props.learning) { @@ -216,25 +239,9 @@ class RemoteFeatureEditionPanel extends Component { />
)} - {hasActions && hasSelectedValue && ( -
- , - action: ( - - {`${selectedValue}`} - - ) - }} - /> -
- )} + {hasActions && + hasSelectedValue && + renderSelectedAction(props.intl, category, selectedFeature, selectedValue)} {hasActions && !hasSelectedValue && (
Date: Mon, 3 Oct 2022 05:52:12 +0200 Subject: [PATCH 079/164] Handle Zigbee2mqtt cover devices (#1577) --- .../components/device/UpdateDeviceFeature.jsx | 3 +- .../all/zigbee2mqtt/edit-page/index.js | 6 + .../services/zigbee2mqtt/exposes/enumType.js | 73 ++++++----- .../zigbee2mqtt/exposes/numericType.js | 9 ++ ...numType.test.js => actionEnumType.test.js} | 3 +- .../zigbee2mqtt/exposes/coverEnumType.test.js | 47 ++++++++ .../lib/findMatchingExpose.test.js | 6 +- .../lib/payloads/single_mqtt_device.json | 14 +++ .../zigbee2mqtt/lib/readValue.test.js | 5 + .../zigbee2mqtt/utils/convertDevice.test.js | 1 + .../utils/feature/buildFeature.test.js | 16 +-- .../zigbee2mqtt/utils/payloads/CCT5015.json | 114 ++++++++++++++++++ .../zigbee2mqtt/utils/payloads/index.js | 3 + .../utils/realZigbee2mqttDevices.test.js | 35 ++++++ 14 files changed, 289 insertions(+), 46 deletions(-) rename server/test/services/zigbee2mqtt/exposes/{enumType.test.js => actionEnumType.test.js} (95%) create mode 100644 server/test/services/zigbee2mqtt/exposes/coverEnumType.test.js create mode 100644 server/test/services/zigbee2mqtt/utils/payloads/CCT5015.json create mode 100644 server/test/services/zigbee2mqtt/utils/payloads/index.js create mode 100644 server/test/services/zigbee2mqtt/utils/realZigbee2mqttDevices.test.js diff --git a/front/src/components/device/UpdateDeviceFeature.jsx b/front/src/components/device/UpdateDeviceFeature.jsx index 8076bc5120..40f949ac99 100644 --- a/front/src/components/device/UpdateDeviceFeature.jsx +++ b/front/src/components/device/UpdateDeviceFeature.jsx @@ -9,7 +9,8 @@ import { DeviceFeatureCategoriesIcon } from '../../utils/consts'; import get from 'get-value'; const DEVICE_FEATURE_COMPATIBLE_CATEGORY = { - [DEVICE_FEATURE_TYPES.SWITCH.BINARY]: [DEVICE_FEATURE_CATEGORIES.LIGHT, DEVICE_FEATURE_CATEGORIES.SWITCH] + [DEVICE_FEATURE_TYPES.SWITCH.BINARY]: [DEVICE_FEATURE_CATEGORIES.LIGHT, DEVICE_FEATURE_CATEGORIES.SWITCH], + [DEVICE_FEATURE_TYPES.SHUTTER.STATE]: [DEVICE_FEATURE_CATEGORIES.SHUTTER, DEVICE_FEATURE_CATEGORIES.CURTAIN] }; class UpdateDeviceFeature extends Component { diff --git a/front/src/routes/integration/all/zigbee2mqtt/edit-page/index.js b/front/src/routes/integration/all/zigbee2mqtt/edit-page/index.js index bf4e1fdb84..62ae4a7df7 100644 --- a/front/src/routes/integration/all/zigbee2mqtt/edit-page/index.js +++ b/front/src/routes/integration/all/zigbee2mqtt/edit-page/index.js @@ -3,16 +3,22 @@ import { connect } from 'unistore/preact'; // import actions from '../actions'; import Zigbee2mqttPage from '../Zigbee2mqttPage.js'; import UpdateDevice from '../../../../../components/device'; +import { DEVICE_FEATURE_CATEGORIES } from '../../../../../../../server/utils/constants.js'; const ZIGBEE2MQTT_PAGE_PATH = '/dashboard/integration/device/zigbee2mqtt'; @connect('user,session,httpClient,currentIntegration,houses', {}) class EditZigbee2mqttDevice extends Component { + canEditCategory = (device, feature) => { + return feature.category === DEVICE_FEATURE_CATEGORIES.SHUTTER; + }; + render(props, {}) { return ( { + const writeExposeMapping = WRITE_VALUE_MAPPING[exposeName] || {}; + writeExposeMapping[gladysValue] = z2mValue; + WRITE_VALUE_MAPPING[exposeName] = writeExposeMapping; + + const readExposeMapping = READ_VALUE_MAPPING[exposeName] || {}; + readExposeMapping[z2mValue] = gladysValue; + READ_VALUE_MAPPING[exposeName] = readExposeMapping; +}; + +addMapping('action', BUTTON_STATUS.CLICK, 'single'); +addMapping('action', BUTTON_STATUS.DOUBLE_CLICK, 'double'); +addMapping('action', BUTTON_STATUS.HOLD_CLICK, 'hold'); +addMapping('action', BUTTON_STATUS.LONG_CLICK, 'long'); +addMapping('state', COVER_STATE.OPEN, 'OPEN'); +addMapping('state', COVER_STATE.CLOSE, 'CLOSE'); +addMapping('state', COVER_STATE.STOP, 'STOP'); module.exports = { type: 'enum', writeValue: (expose, value) => { - let relatedValue; - - // Mapping is only for button click - switch (value) { - case BUTTON_STATUS.CLICK: - relatedValue = 'single'; - break; - case BUTTON_STATUS.DOUBLE_CLICK: - relatedValue = 'double'; - break; - case BUTTON_STATUS.HOLD_CLICK: - relatedValue = 'hold'; - break; - case BUTTON_STATUS.LONG_CLICK: - relatedValue = 'long'; - break; - default: - relatedValue = undefined; - } + const relatedValue = (WRITE_VALUE_MAPPING[expose.name] || {})[value]; if (relatedValue && expose.values.includes(relatedValue)) { return relatedValue; @@ -30,19 +38,7 @@ module.exports = { return undefined; }, readValue: (expose, value) => { - // Mapping is only for button click - switch (value) { - case 'single': - return BUTTON_STATUS.CLICK; - case 'double': - return BUTTON_STATUS.DOUBLE_CLICK; - case 'hold': - return BUTTON_STATUS.HOLD_CLICK; - case 'long': - return BUTTON_STATUS.LONG_CLICK; - default: - return undefined; - } + return (READ_VALUE_MAPPING[expose.name] || {})[value]; }, feature: { min: 0, @@ -55,5 +51,16 @@ module.exports = { type: DEVICE_FEATURE_TYPES.BUTTON.CLICK, }, }, + state: { + types: { + cover: { + category: DEVICE_FEATURE_CATEGORIES.SHUTTER, + type: DEVICE_FEATURE_TYPES.SHUTTER.STATE, + min: -1, + max: 1, + forceOverride: true, + }, + }, + }, }, }; diff --git a/server/services/zigbee2mqtt/exposes/numericType.js b/server/services/zigbee2mqtt/exposes/numericType.js index 58ed739f0d..9611aab2a9 100644 --- a/server/services/zigbee2mqtt/exposes/numericType.js +++ b/server/services/zigbee2mqtt/exposes/numericType.js @@ -152,6 +152,15 @@ module.exports = { forceOverride: true, }, }, + position: { + types: { + cover: { + category: DEVICE_FEATURE_CATEGORIES.SHUTTER, + type: DEVICE_FEATURE_TYPES.SHUTTER.POSITION, + unit: DEVICE_FEATURE_UNITS.PERCENT, + }, + }, + }, power: { feature: { category: DEVICE_FEATURE_CATEGORIES.SWITCH, diff --git a/server/test/services/zigbee2mqtt/exposes/enumType.test.js b/server/test/services/zigbee2mqtt/exposes/actionEnumType.test.js similarity index 95% rename from server/test/services/zigbee2mqtt/exposes/enumType.test.js rename to server/test/services/zigbee2mqtt/exposes/actionEnumType.test.js index e2ef588fd0..4f6d5e0b38 100644 --- a/server/test/services/zigbee2mqtt/exposes/enumType.test.js +++ b/server/test/services/zigbee2mqtt/exposes/actionEnumType.test.js @@ -3,8 +3,9 @@ const { assert } = require('chai'); const enumType = require('../../../../services/zigbee2mqtt/exposes/enumType'); const { BUTTON_STATUS } = require('../../../../utils/constants'); -describe('zigbee2mqtt enumType', () => { +describe('zigbee2mqtt action enumType', () => { const expose = { + name: 'action', values: ['single', 'long', 'short', 'double', 'triple', 'hold'], }; diff --git a/server/test/services/zigbee2mqtt/exposes/coverEnumType.test.js b/server/test/services/zigbee2mqtt/exposes/coverEnumType.test.js new file mode 100644 index 0000000000..7b2be5de16 --- /dev/null +++ b/server/test/services/zigbee2mqtt/exposes/coverEnumType.test.js @@ -0,0 +1,47 @@ +const { assert } = require('chai'); + +const enumType = require('../../../../services/zigbee2mqtt/exposes/enumType'); +const { COVER_STATE } = require('../../../../utils/constants'); + +describe('zigbee2mqtt cover enumType', () => { + const expose = { + name: 'state', + values: ['OPEN', 'CLOSE', 'STOP'], + }; + + [ + { enumValue: 'OPEN', intValue: COVER_STATE.OPEN }, + { enumValue: 'CLOSE', intValue: COVER_STATE.CLOSE }, + { enumValue: 'STOP', intValue: COVER_STATE.STOP }, + ].forEach((mapping) => { + const { enumValue, intValue } = mapping; + + it(`should write ${enumValue} value as ${intValue} value`, () => { + const result = enumType.writeValue(expose, intValue); + assert.equal(result, enumValue); + }); + + it(`should read ${intValue} value as ${enumValue}`, () => { + const result = enumType.readValue(expose, enumValue); + assert.equal(result, intValue); + }); + }); + + it('should write undefined value on missing enum', () => { + const missingEnumExpose = { + values: ['OPEN', 'CLOSE'], + }; + const result = enumType.writeValue(missingEnumExpose, COVER_STATE.STOP); + assert.equal(result, undefined); + }); + + it('should write undefined value', () => { + const result = enumType.writeValue(expose, 7); + assert.equal(result, undefined); + }); + + it('should read enum value', () => { + const result = enumType.readValue(expose, 'unknown'); + assert.equal(result, undefined); + }); +}); diff --git a/server/test/services/zigbee2mqtt/lib/findMatchingExpose.test.js b/server/test/services/zigbee2mqtt/lib/findMatchingExpose.test.js index d161c7bdae..0fade3a8e4 100644 --- a/server/test/services/zigbee2mqtt/lib/findMatchingExpose.test.js +++ b/server/test/services/zigbee2mqtt/lib/findMatchingExpose.test.js @@ -15,17 +15,17 @@ describe('zigbee2mqtt findMatchingExpose', () => { zigbee2MqttService.device.discoveredDevices[discoveredDevice.friendly_name] = discoveredDevice; }); - it('no device discovered', () => { + it('no device discovered on unknown device', () => { const result = zigbee2MqttService.device.findMatchingExpose('unknown', 'property'); assert.equal(result, undefined); }); - it('no expose discovered', () => { + it('no expose discovered on unknown property', () => { const result = zigbee2MqttService.device.findMatchingExpose('0x00158d00045b2740', 'property'); assert.equal(result, undefined); }); - it('no expose discovered', () => { + it('expose discovered', () => { const expected = { type: 'binary', name: 'state', diff --git a/server/test/services/zigbee2mqtt/lib/payloads/single_mqtt_device.json b/server/test/services/zigbee2mqtt/lib/payloads/single_mqtt_device.json index 506d34c3c3..93fd85362a 100644 --- a/server/test/services/zigbee2mqtt/lib/payloads/single_mqtt_device.json +++ b/server/test/services/zigbee2mqtt/lib/payloads/single_mqtt_device.json @@ -17,6 +17,20 @@ "value_off": "OFF" } ] + }, + { + "features": [ + { + "access": 7, + "description": "Position of this cover", + "name": "position", + "property": "position", + "type": "numeric", + "value_max": 100, + "value_min": 0 + } + ], + "type": "cover" } ], "model": "WSDCGQ11LM", diff --git a/server/test/services/zigbee2mqtt/lib/readValue.test.js b/server/test/services/zigbee2mqtt/lib/readValue.test.js index 962ba94a81..1e44b9a39a 100644 --- a/server/test/services/zigbee2mqtt/lib/readValue.test.js +++ b/server/test/services/zigbee2mqtt/lib/readValue.test.js @@ -47,4 +47,9 @@ describe('zigbee2mqtt readValue', () => { const result = zigbee2MqttService.device.readValue('0x00158d00045b2740', 'alarm', false); assert.deepEqual(result, 0); }); + + it('should return binary OPEN on parent type', () => { + const result = zigbee2MqttService.device.readValue('0x00158d00045b2740', 'alarm', false); + assert.deepEqual(result, 0); + }); }); diff --git a/server/test/services/zigbee2mqtt/utils/convertDevice.test.js b/server/test/services/zigbee2mqtt/utils/convertDevice.test.js index 16bb001914..a9fc98a583 100644 --- a/server/test/services/zigbee2mqtt/utils/convertDevice.test.js +++ b/server/test/services/zigbee2mqtt/utils/convertDevice.test.js @@ -30,6 +30,7 @@ describe('zigbee2mqtt convertDevice', () => { type: 'enum', name: 'action', property: 'action', + values: ['value1'], }, ], model: 'WXKG11LM', diff --git a/server/test/services/zigbee2mqtt/utils/feature/buildFeature.test.js b/server/test/services/zigbee2mqtt/utils/feature/buildFeature.test.js index 19841c7d90..4b6bb015a5 100644 --- a/server/test/services/zigbee2mqtt/utils/feature/buildFeature.test.js +++ b/server/test/services/zigbee2mqtt/utils/feature/buildFeature.test.js @@ -202,23 +202,23 @@ describe('zigbee2mqtt buildFeature', () => { it(`override max by values`, () => { const expose = { - type: 'binary', - name: 'state', - property: 'property', + type: 'enum', + name: 'action', + property: 'action', values: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], // length 10 }; const result = buildFeature('deviceName', expose, 'switch'); const expectedResult = { - category: 'switch', - type: 'binary', + category: 'button', + type: 'click', min: 0, max: 10, read_only: true, has_feedback: false, - name: 'Property', - external_id: 'zigbee2mqtt:deviceName:switch:binary:property', - selector: 'zigbee2mqtt-devicename-switch-binary-property', + name: 'Action', + external_id: 'zigbee2mqtt:deviceName:button:click:action', + selector: 'zigbee2mqtt-devicename-button-click-action', unit: null, }; diff --git a/server/test/services/zigbee2mqtt/utils/payloads/CCT5015.json b/server/test/services/zigbee2mqtt/utils/payloads/CCT5015.json new file mode 100644 index 0000000000..1925b4e6fe --- /dev/null +++ b/server/test/services/zigbee2mqtt/utils/payloads/CCT5015.json @@ -0,0 +1,114 @@ +{ + "name": "CCT5015", + "mqttDevice": { + "definition": { + "model": "CCT5015", + "exposes": [ + { + "features": [ + { + "access": 3, + "name": "state", + "property": "state", + "type": "enum", + "values": ["OPEN", "CLOSE", "STOP"] + }, + { + "access": 7, + "description": "Position of this cover", + "name": "position", + "property": "position", + "type": "numeric", + "value_max": 100, + "value_min": 0 + } + ], + "type": "cover" + }, + { + "access": 3, + "description": "Duration of lift", + "name": "lift_duration", + "property": "lift_duration", + "type": "numeric", + "unit": "seconds", + "value_max": 300, + "value_min": 0 + }, + { + "access": 1, + "description": "Link quality (signal strength)", + "name": "linkquality", + "property": "linkquality", + "type": "numeric", + "unit": "lqi", + "value_max": 255, + "value_min": 0 + } + ] + }, + "friendly_name": "CCT5015 device" + }, + "gladysDevice": { + "service_id": "a4c859f0-32d2-46b7-8f5a-3285960f498a", + "external_id": "zigbee2mqtt:CCT5015 device", + "features": [ + { + "external_id": "zigbee2mqtt:CCT5015 device:shutter:state:state", + "selector": "zigbee2mqtt-cct5015-device-shutter-state-state", + "name": "State", + "category": "shutter", + "type": "state", + "min": -1, + "max": 1, + "unit": null, + "read_only": false, + "has_feedback": true + }, + { + "external_id": "zigbee2mqtt:CCT5015 device:shutter:position:position", + "selector": "zigbee2mqtt-cct5015-device-shutter-position-position", + "name": "Position", + "category": "shutter", + "type": "position", + "min": 0, + "max": 100, + "unit": "percent", + "read_only": false, + "has_feedback": true + }, + { + "category": "signal", + "external_id": "zigbee2mqtt:CCT5015 device:signal:integer:linkquality", + "has_feedback": false, + "max": 5, + "min": 0, + "name": "Linkquality", + "read_only": true, + "selector": "zigbee2mqtt-cct5015-device-signal-integer-linkquality", + "type": "integer", + "unit": null + } + ], + "name": "CCT5015 device", + "model": "CCT5015", + "should_poll": false + }, + "values": [ + { + "internal": -1, + "external": "CLOSE", + "property": "state" + }, + { + "internal": 1, + "external": "OPEN", + "property": "state" + }, + { + "internal": 0, + "external": "STOP", + "property": "state" + } + ] +} diff --git a/server/test/services/zigbee2mqtt/utils/payloads/index.js b/server/test/services/zigbee2mqtt/utils/payloads/index.js new file mode 100644 index 0000000000..3b47830021 --- /dev/null +++ b/server/test/services/zigbee2mqtt/utils/payloads/index.js @@ -0,0 +1,3 @@ +const CCT5015 = require('./CCT5015.json'); + +module.exports = [CCT5015]; diff --git a/server/test/services/zigbee2mqtt/utils/realZigbee2mqttDevices.test.js b/server/test/services/zigbee2mqtt/utils/realZigbee2mqttDevices.test.js new file mode 100644 index 0000000000..83e528aabf --- /dev/null +++ b/server/test/services/zigbee2mqtt/utils/realZigbee2mqttDevices.test.js @@ -0,0 +1,35 @@ +const { expect } = require('chai'); +const Zigbee2mqttManager = require('../../../../services/zigbee2mqtt/lib'); + +const { convertDevice } = require('../../../../services/zigbee2mqtt/utils/convertDevice'); +const payloads = require('./payloads'); + +const serviceId = 'a4c859f0-32d2-46b7-8f5a-3285960f498a'; + +describe('Decoding real devices', () => { + payloads.forEach((payload) => { + const { name, mqttDevice, gladysDevice, values } = payload; + + let service; + beforeEach(() => { + service = new Zigbee2mqttManager(null, null, null); + service.discoveredDevices = { + [name]: mqttDevice, + }; + }); + + it(`[${name}] check Gladys device`, async () => { + const device = await convertDevice(mqttDevice, serviceId); + + expect(device).to.deep.eq(gladysDevice); + }); + + values.forEach(({ internal, external, property }) => { + it(`[${name}] read value ${external}`, () => { + const result = service.readValue(name, property, external); + + expect(result).to.deep.eq(internal); + }); + }); + }); +}); From e9b4c13be95e8141282434054386b9308c94d343 Mon Sep 17 00:00:00 2001 From: Alexandre Trovato <1839717+atrovato@users.noreply.github.com> Date: Mon, 3 Oct 2022 05:56:30 +0200 Subject: [PATCH 080/164] Tasmota: Add more temp devices (#1570) * Add BL09XX temp devices * Add ESP32 temp devices * Add DS18x20 temp device * Generic temp/humidity discover --- .../lib/features/device_temperature.js | 27 +++ .../services/tasmota/lib/features/humidity.js | 2 +- server/services/tasmota/lib/features/index.js | 2 + .../tasmota/lib/features/temperature.js | 6 +- .../tasmota/lib/device-creation/BL09XX.json | 46 +++++ .../tasmota/lib/device-creation/DS18B20.json | 45 +++++ .../tasmota/lib/device-creation/ESP32.json | 44 +++++ ...reation-device_temperature_DS18B20.test.js | 178 ++++++++++++++++++ ...eCreation-device_temperature_ESP32.test.js | 143 ++++++++++++++ ....deviceCreation-temperature_BL09XX.test.js | 143 ++++++++++++++ 10 files changed, 632 insertions(+), 4 deletions(-) create mode 100644 server/services/tasmota/lib/features/device_temperature.js create mode 100644 server/test/services/tasmota/lib/device-creation/BL09XX.json create mode 100644 server/test/services/tasmota/lib/device-creation/DS18B20.json create mode 100644 server/test/services/tasmota/lib/device-creation/ESP32.json create mode 100644 server/test/services/tasmota/lib/mqtt/handle-message/device-creation/tasmota.mqtt.handleMessage.deviceCreation-device_temperature_DS18B20.test.js create mode 100644 server/test/services/tasmota/lib/mqtt/handle-message/device-creation/tasmota.mqtt.handleMessage.deviceCreation-device_temperature_ESP32.test.js create mode 100644 server/test/services/tasmota/lib/mqtt/handle-message/device-creation/tasmota.mqtt.handleMessage.deviceCreation-temperature_BL09XX.test.js diff --git a/server/services/tasmota/lib/features/device_temperature.js b/server/services/tasmota/lib/features/device_temperature.js new file mode 100644 index 0000000000..372d60f213 --- /dev/null +++ b/server/services/tasmota/lib/features/device_temperature.js @@ -0,0 +1,27 @@ +const { + DEVICE_FEATURE_CATEGORIES, + DEVICE_FEATURE_TYPES, + DEVICE_FEATURE_UNITS, +} = require('../../../../utils/constants'); + +module.exports = { + // Tasmota matcher + keyMatcher: /^StatusSNS\.ESP32\.Temperature$/, + // Gladys feature + generateFeature: () => { + return { + category: DEVICE_FEATURE_CATEGORIES.DEVICE_TEMPERATURE_SENSOR, + type: DEVICE_FEATURE_TYPES.SENSOR.DECIMAL, + name: 'Device temperature', + read_only: true, + has_feedback: false, + min: -100, + max: 200, + unit: DEVICE_FEATURE_UNITS.CELSIUS, + }; + }, + generateExternalId: (key, fullKey) => { + const parts = fullKey.split('.').slice(1, -1); + return `${parts.join(':')}:DeviceTemperature`; + }, +}; diff --git a/server/services/tasmota/lib/features/humidity.js b/server/services/tasmota/lib/features/humidity.js index 721db080bf..07a03fd2cf 100644 --- a/server/services/tasmota/lib/features/humidity.js +++ b/server/services/tasmota/lib/features/humidity.js @@ -6,7 +6,7 @@ const { module.exports = { // Tasmota matcher - keyMatcher: /^StatusSNS\.(DHT11|AM2301)\.Humidity$/, + keyMatcher: /^StatusSNS\.[^.]+\.Humidity$/, // Gladys feature generateFeature: () => { return { diff --git a/server/services/tasmota/lib/features/index.js b/server/services/tasmota/lib/features/index.js index 72a96780f8..524bb318e4 100644 --- a/server/services/tasmota/lib/features/index.js +++ b/server/services/tasmota/lib/features/index.js @@ -18,6 +18,7 @@ const colorTemperature = require('./colorTemperature'); const counter = require('./counter'); const humidity = require('./humidity'); const temperature = require('./temperature'); +const deviceTemperature = require('./device_temperature'); const FEATURE_TEMPLATES = [ power, @@ -33,6 +34,7 @@ const FEATURE_TEMPLATES = [ counter, humidity, temperature, + deviceTemperature, ]; const generateValue = (featureTemplate, value) => { diff --git a/server/services/tasmota/lib/features/temperature.js b/server/services/tasmota/lib/features/temperature.js index 76857ac1b6..facf17b256 100644 --- a/server/services/tasmota/lib/features/temperature.js +++ b/server/services/tasmota/lib/features/temperature.js @@ -6,7 +6,7 @@ const { module.exports = { // Tasmota matcher - keyMatcher: /^StatusSNS\.(DHT11|AM2301)\.Temperature$/, + keyMatcher: /^StatusSNS\.((ENERGY\.BL09XX)|([^(ESP32)][^.]+))\.Temperature$/, // Gladys feature generateFeature: () => { return { @@ -21,7 +21,7 @@ module.exports = { }; }, generateExternalId: (key, fullKey) => { - const parts = fullKey.split('.'); - return `${parts[1]}:Temperature`; + const parts = fullKey.split('.').slice(1, -1); + return `${parts.join(':')}:Temperature`; }, }; diff --git a/server/test/services/tasmota/lib/device-creation/BL09XX.json b/server/test/services/tasmota/lib/device-creation/BL09XX.json new file mode 100644 index 0000000000..c59fba9f97 --- /dev/null +++ b/server/test/services/tasmota/lib/device-creation/BL09XX.json @@ -0,0 +1,46 @@ +{ + "STATUS": { + "Status": { + "ButtonRetain": 0, + "ButtonTopic": "0", + "FriendlyName": ["Tasmota"], + "LedMask": "FFFF", + "LedState": 1, + "Module": 18, + "Power": 0, + "PowerOnState": 1, + "PowerRetain": 0, + "SaveData": 1, + "SaveState": 1, + "SensorRetain": 0, + "SwitchMode": [0, 0, 0, 0, 0, 0, 0, 0], + "SwitchRetain": 0, + "SwitchTopic": "0", + "Topic": "tasmota" + } + }, + "STATUS11": { + "StatusSTS": { + "MqttCount": 1, + "Sleep": 50, + "SleepMode": "Dynamic", + "Wifi": { + "AP": 1, + "BSSId": "EC:BE:DD:85:1F:E0", + "Channel": 1, + "LinkCount": 1, + "SSId": "ALEX-NETWORK" + } + } + }, + "STATUS8": { + "StatusSNS": { + "ENERGY": { + "BL09XX": { + "Temperature": 23 + } + }, + "TempUnit": "C" + } + } +} diff --git a/server/test/services/tasmota/lib/device-creation/DS18B20.json b/server/test/services/tasmota/lib/device-creation/DS18B20.json new file mode 100644 index 0000000000..13c4b9c700 --- /dev/null +++ b/server/test/services/tasmota/lib/device-creation/DS18B20.json @@ -0,0 +1,45 @@ +{ + "STATUS": { + "Status": { + "ButtonRetain": 0, + "ButtonTopic": "0", + "FriendlyName": ["Tasmota"], + "LedMask": "FFFF", + "LedState": 1, + "Module": 18, + "Power": 0, + "PowerOnState": 1, + "PowerRetain": 0, + "SaveData": 1, + "SaveState": 1, + "SensorRetain": 0, + "SwitchMode": [0, 0, 0, 0, 0, 0, 0, 0], + "SwitchRetain": 0, + "SwitchTopic": "0", + "Topic": "tasmota" + } + }, + "STATUS11": { + "StatusSTS": { + "MqttCount": 1, + "Sleep": 50, + "SleepMode": "Dynamic", + "Wifi": { + "AP": 1, + "BSSId": "EC:BE:DD:85:1F:E0", + "Channel": 1, + "LinkCount": 1, + "SSId": "ALEX-NETWORK" + } + } + }, + "STATUS8": { + "StatusSNS": { + "Time": "2021-01-02T09:09:44", + "DS18B20-1": { "Id": "00000566CC39", "Temperature": 13.3 }, + "DS18B20-2": { "Id": "0000059352D4", "Temperature": 1.2 }, + "DS18B20-3": { "Id": "000005937C90", "Temperature": 22.5 }, + "TempUnit": "C" + } + } +} diff --git a/server/test/services/tasmota/lib/device-creation/ESP32.json b/server/test/services/tasmota/lib/device-creation/ESP32.json new file mode 100644 index 0000000000..83fd274919 --- /dev/null +++ b/server/test/services/tasmota/lib/device-creation/ESP32.json @@ -0,0 +1,44 @@ +{ + "STATUS": { + "Status": { + "ButtonRetain": 0, + "ButtonTopic": "0", + "FriendlyName": ["Tasmota"], + "LedMask": "FFFF", + "LedState": 1, + "Module": 18, + "Power": 0, + "PowerOnState": 1, + "PowerRetain": 0, + "SaveData": 1, + "SaveState": 1, + "SensorRetain": 0, + "SwitchMode": [0, 0, 0, 0, 0, 0, 0, 0], + "SwitchRetain": 0, + "SwitchTopic": "0", + "Topic": "tasmota" + } + }, + "STATUS11": { + "StatusSTS": { + "MqttCount": 1, + "Sleep": 50, + "SleepMode": "Dynamic", + "Wifi": { + "AP": 1, + "BSSId": "EC:BE:DD:85:1F:E0", + "Channel": 1, + "LinkCount": 1, + "SSId": "ALEX-NETWORK" + } + } + }, + "STATUS8": { + "StatusSNS": { + "ESP32": { + "Temperature": 23 + }, + "TempUnit": "C" + } + } +} diff --git a/server/test/services/tasmota/lib/mqtt/handle-message/device-creation/tasmota.mqtt.handleMessage.deviceCreation-device_temperature_DS18B20.test.js b/server/test/services/tasmota/lib/mqtt/handle-message/device-creation/tasmota.mqtt.handleMessage.deviceCreation-device_temperature_DS18B20.test.js new file mode 100644 index 0000000000..59f8a10655 --- /dev/null +++ b/server/test/services/tasmota/lib/mqtt/handle-message/device-creation/tasmota.mqtt.handleMessage.deviceCreation-device_temperature_DS18B20.test.js @@ -0,0 +1,178 @@ +const sinon = require('sinon'); +const { expect } = require('chai'); + +const { fake, assert } = sinon; +const TasmotaHandler = require('../../../../../../../services/tasmota/lib'); +const { + DEVICE_FEATURE_CATEGORIES, + DEVICE_FEATURE_TYPES, + DEVICE_FEATURE_UNITS, + EVENTS, + WEBSOCKET_MESSAGE_TYPES, +} = require('../../../../../../../utils/constants'); + +const messages = require('../../../device-creation/DS18B20.json'); + +const mqttService = { + device: { + publish: fake.returns(null), + }, +}; +const gladys = { + event: { + emit: fake.returns(null), + }, + stateManager: { + get: fake.returns(null), + }, +}; +const serviceId = 'service-uuid-random'; + +describe('Tasmota - MQTT - create device with DS18B20 temperature feature', () => { + const tasmota = new TasmotaHandler(gladys, serviceId); + const tasmotaHandler = tasmota.protocols.mqtt; + tasmotaHandler.mqttService = mqttService; + + beforeEach(() => { + sinon.reset(); + }); + + it('decode STATUS message', () => { + tasmotaHandler.handleMessage('stat/tasmota-device-topic/STATUS', JSON.stringify(messages.STATUS)); + + expect(tasmotaHandler.discoveredDevices).to.deep.eq({}); + expect(tasmotaHandler.pendingDevices).to.deep.eq({ + 'tasmota-device-topic': { + name: 'Tasmota', + params: [ + { + name: 'protocol', + value: 'mqtt', + }, + ], + model: 18, + external_id: 'tasmota:tasmota-device-topic', + selector: 'tasmota-tasmota-device-topic', + service_id: serviceId, + should_poll: false, + features: [], + }, + }); + + assert.notCalled(gladys.event.emit); + assert.notCalled(gladys.stateManager.get); + assert.calledOnceWithExactly(mqttService.device.publish, 'cmnd/tasmota-device-topic/STATUS', '11'); + }); + + it('decode STATUS11 message', () => { + tasmotaHandler.handleMessage('stat/tasmota-device-topic/STATUS11', JSON.stringify(messages.STATUS11)); + + expect(tasmotaHandler.discoveredDevices).to.deep.eq({}); + expect(tasmotaHandler.pendingDevices).to.deep.eq({ + 'tasmota-device-topic': { + name: 'Tasmota', + params: [ + { + name: 'protocol', + value: 'mqtt', + }, + ], + model: 18, + external_id: 'tasmota:tasmota-device-topic', + selector: 'tasmota-tasmota-device-topic', + service_id: serviceId, + should_poll: false, + features: [], + }, + }); + + assert.notCalled(gladys.event.emit); + assert.notCalled(gladys.stateManager.get); + assert.calledOnceWithExactly(mqttService.device.publish, 'cmnd/tasmota-device-topic/STATUS', '8'); + }); + + it('decode STATUS8 message', () => { + tasmotaHandler.handleMessage('stat/tasmota-device-topic/STATUS8', JSON.stringify(messages.STATUS8)); + + const expectedDevice = { + name: 'Tasmota', + params: [ + { + name: 'protocol', + value: 'mqtt', + }, + ], + model: 18, + external_id: 'tasmota:tasmota-device-topic', + selector: 'tasmota-tasmota-device-topic', + service_id: serviceId, + should_poll: false, + features: [ + { + category: DEVICE_FEATURE_CATEGORIES.TEMPERATURE_SENSOR, + type: DEVICE_FEATURE_TYPES.SENSOR.DECIMAL, + unit: DEVICE_FEATURE_UNITS.CELSIUS, + external_id: 'tasmota:tasmota-device-topic:DS18B20-1:Temperature', + selector: 'tasmota-tasmota-device-topic-ds18b20-1-temperature', + name: 'Temperature', + read_only: true, + has_feedback: false, + min: -100, + max: 200, + last_value: 13.3, + }, + { + category: DEVICE_FEATURE_CATEGORIES.TEMPERATURE_SENSOR, + type: DEVICE_FEATURE_TYPES.SENSOR.DECIMAL, + unit: DEVICE_FEATURE_UNITS.CELSIUS, + external_id: 'tasmota:tasmota-device-topic:DS18B20-2:Temperature', + selector: 'tasmota-tasmota-device-topic-ds18b20-2-temperature', + name: 'Temperature', + read_only: true, + has_feedback: false, + min: -100, + max: 200, + last_value: 1.2, + }, + { + category: DEVICE_FEATURE_CATEGORIES.TEMPERATURE_SENSOR, + type: DEVICE_FEATURE_TYPES.SENSOR.DECIMAL, + unit: DEVICE_FEATURE_UNITS.CELSIUS, + external_id: 'tasmota:tasmota-device-topic:DS18B20-3:Temperature', + selector: 'tasmota-tasmota-device-topic-ds18b20-3-temperature', + name: 'Temperature', + read_only: true, + has_feedback: false, + min: -100, + max: 200, + last_value: 22.5, + }, + ], + }; + expect(tasmotaHandler.discoveredDevices).to.deep.eq({ + 'tasmota-device-topic': expectedDevice, + }); + expect(tasmotaHandler.pendingDevices).to.deep.eq({}); + + assert.notCalled(mqttService.device.publish); + assert.calledOnceWithExactly(gladys.stateManager.get, 'deviceByExternalId', 'tasmota:tasmota-device-topic'); + + assert.callCount(gladys.event.emit, 4); + assert.calledWithExactly(gladys.event.emit, EVENTS.DEVICE.NEW_STATE, { + device_feature_external_id: 'tasmota:tasmota-device-topic:DS18B20-1:Temperature', + state: 13.3, + }); + assert.calledWithExactly(gladys.event.emit, EVENTS.DEVICE.NEW_STATE, { + device_feature_external_id: 'tasmota:tasmota-device-topic:DS18B20-2:Temperature', + state: 1.2, + }); + assert.calledWithExactly(gladys.event.emit, EVENTS.DEVICE.NEW_STATE, { + device_feature_external_id: 'tasmota:tasmota-device-topic:DS18B20-3:Temperature', + state: 22.5, + }); + assert.calledWithExactly(gladys.event.emit, EVENTS.WEBSOCKET.SEND_ALL, { + type: WEBSOCKET_MESSAGE_TYPES.TASMOTA.NEW_MQTT_DEVICE, + payload: expectedDevice, + }); + }); +}); diff --git a/server/test/services/tasmota/lib/mqtt/handle-message/device-creation/tasmota.mqtt.handleMessage.deviceCreation-device_temperature_ESP32.test.js b/server/test/services/tasmota/lib/mqtt/handle-message/device-creation/tasmota.mqtt.handleMessage.deviceCreation-device_temperature_ESP32.test.js new file mode 100644 index 0000000000..76399219cf --- /dev/null +++ b/server/test/services/tasmota/lib/mqtt/handle-message/device-creation/tasmota.mqtt.handleMessage.deviceCreation-device_temperature_ESP32.test.js @@ -0,0 +1,143 @@ +const sinon = require('sinon'); +const { expect } = require('chai'); + +const { fake, assert } = sinon; +const TasmotaHandler = require('../../../../../../../services/tasmota/lib'); +const { + DEVICE_FEATURE_CATEGORIES, + DEVICE_FEATURE_TYPES, + DEVICE_FEATURE_UNITS, + EVENTS, + WEBSOCKET_MESSAGE_TYPES, +} = require('../../../../../../../utils/constants'); + +const messages = require('../../../device-creation/ESP32.json'); + +const mqttService = { + device: { + publish: fake.returns(null), + }, +}; +const gladys = { + event: { + emit: fake.returns(null), + }, + stateManager: { + get: fake.returns(null), + }, +}; +const serviceId = 'service-uuid-random'; + +describe('Tasmota - MQTT - create device with ESP32 temperature feature', () => { + const tasmota = new TasmotaHandler(gladys, serviceId); + const tasmotaHandler = tasmota.protocols.mqtt; + tasmotaHandler.mqttService = mqttService; + + beforeEach(() => { + sinon.reset(); + }); + + it('decode STATUS message', () => { + tasmotaHandler.handleMessage('stat/tasmota-device-topic/STATUS', JSON.stringify(messages.STATUS)); + + expect(tasmotaHandler.discoveredDevices).to.deep.eq({}); + expect(tasmotaHandler.pendingDevices).to.deep.eq({ + 'tasmota-device-topic': { + name: 'Tasmota', + params: [ + { + name: 'protocol', + value: 'mqtt', + }, + ], + model: 18, + external_id: 'tasmota:tasmota-device-topic', + selector: 'tasmota-tasmota-device-topic', + service_id: serviceId, + should_poll: false, + features: [], + }, + }); + + assert.notCalled(gladys.event.emit); + assert.notCalled(gladys.stateManager.get); + assert.calledWith(mqttService.device.publish, 'cmnd/tasmota-device-topic/STATUS', '11'); + }); + + it('decode STATUS11 message', () => { + tasmotaHandler.handleMessage('stat/tasmota-device-topic/STATUS11', JSON.stringify(messages.STATUS11)); + + expect(tasmotaHandler.discoveredDevices).to.deep.eq({}); + expect(tasmotaHandler.pendingDevices).to.deep.eq({ + 'tasmota-device-topic': { + name: 'Tasmota', + params: [ + { + name: 'protocol', + value: 'mqtt', + }, + ], + model: 18, + external_id: 'tasmota:tasmota-device-topic', + selector: 'tasmota-tasmota-device-topic', + service_id: serviceId, + should_poll: false, + features: [], + }, + }); + + assert.notCalled(gladys.event.emit); + assert.notCalled(gladys.stateManager.get); + assert.calledWith(mqttService.device.publish, 'cmnd/tasmota-device-topic/STATUS', '8'); + }); + + it('decode STATUS8 message', () => { + tasmotaHandler.handleMessage('stat/tasmota-device-topic/STATUS8', JSON.stringify(messages.STATUS8)); + + const expectedDevice = { + name: 'Tasmota', + params: [ + { + name: 'protocol', + value: 'mqtt', + }, + ], + model: 18, + external_id: 'tasmota:tasmota-device-topic', + selector: 'tasmota-tasmota-device-topic', + service_id: serviceId, + should_poll: false, + features: [ + { + category: DEVICE_FEATURE_CATEGORIES.DEVICE_TEMPERATURE_SENSOR, + type: DEVICE_FEATURE_TYPES.SENSOR.DECIMAL, + unit: DEVICE_FEATURE_UNITS.CELSIUS, + external_id: 'tasmota:tasmota-device-topic:ESP32:DeviceTemperature', + selector: 'tasmota-tasmota-device-topic-esp32-devicetemperature', + name: 'Device temperature', + read_only: true, + has_feedback: false, + min: -100, + max: 200, + last_value: 23, + }, + ], + }; + expect(tasmotaHandler.discoveredDevices).to.deep.eq({ + 'tasmota-device-topic': expectedDevice, + }); + expect(tasmotaHandler.pendingDevices).to.deep.eq({}); + + assert.notCalled(mqttService.device.publish); + assert.calledWith(gladys.stateManager.get, 'deviceByExternalId', 'tasmota:tasmota-device-topic'); + + assert.calledWith(gladys.event.emit, EVENTS.DEVICE.NEW_STATE, { + device_feature_external_id: 'tasmota:tasmota-device-topic:ESP32:DeviceTemperature', + state: 23, + }); + assert.calledWith(gladys.event.emit, EVENTS.WEBSOCKET.SEND_ALL, { + type: WEBSOCKET_MESSAGE_TYPES.TASMOTA.NEW_MQTT_DEVICE, + payload: expectedDevice, + }); + }); +}); diff --git a/server/test/services/tasmota/lib/mqtt/handle-message/device-creation/tasmota.mqtt.handleMessage.deviceCreation-temperature_BL09XX.test.js b/server/test/services/tasmota/lib/mqtt/handle-message/device-creation/tasmota.mqtt.handleMessage.deviceCreation-temperature_BL09XX.test.js new file mode 100644 index 0000000000..5d74515dfc --- /dev/null +++ b/server/test/services/tasmota/lib/mqtt/handle-message/device-creation/tasmota.mqtt.handleMessage.deviceCreation-temperature_BL09XX.test.js @@ -0,0 +1,143 @@ +const sinon = require('sinon'); +const { expect } = require('chai'); + +const { fake, assert } = sinon; +const TasmotaHandler = require('../../../../../../../services/tasmota/lib'); +const { + DEVICE_FEATURE_CATEGORIES, + DEVICE_FEATURE_TYPES, + DEVICE_FEATURE_UNITS, + EVENTS, + WEBSOCKET_MESSAGE_TYPES, +} = require('../../../../../../../utils/constants'); + +const messages = require('../../../device-creation/BL09XX.json'); + +const mqttService = { + device: { + publish: fake.returns(null), + }, +}; +const gladys = { + event: { + emit: fake.returns(null), + }, + stateManager: { + get: fake.returns(null), + }, +}; +const serviceId = 'service-uuid-random'; + +describe('Tasmota - MQTT - create device with BL09XX temperature feature', () => { + const tasmota = new TasmotaHandler(gladys, serviceId); + const tasmotaHandler = tasmota.protocols.mqtt; + tasmotaHandler.mqttService = mqttService; + + beforeEach(() => { + sinon.reset(); + }); + + it('decode STATUS message', () => { + tasmotaHandler.handleMessage('stat/tasmota-device-topic/STATUS', JSON.stringify(messages.STATUS)); + + expect(tasmotaHandler.discoveredDevices).to.deep.eq({}); + expect(tasmotaHandler.pendingDevices).to.deep.eq({ + 'tasmota-device-topic': { + name: 'Tasmota', + params: [ + { + name: 'protocol', + value: 'mqtt', + }, + ], + model: 18, + external_id: 'tasmota:tasmota-device-topic', + selector: 'tasmota-tasmota-device-topic', + service_id: serviceId, + should_poll: false, + features: [], + }, + }); + + assert.notCalled(gladys.event.emit); + assert.notCalled(gladys.stateManager.get); + assert.calledWith(mqttService.device.publish, 'cmnd/tasmota-device-topic/STATUS', '11'); + }); + + it('decode STATUS11 message', () => { + tasmotaHandler.handleMessage('stat/tasmota-device-topic/STATUS11', JSON.stringify(messages.STATUS11)); + + expect(tasmotaHandler.discoveredDevices).to.deep.eq({}); + expect(tasmotaHandler.pendingDevices).to.deep.eq({ + 'tasmota-device-topic': { + name: 'Tasmota', + params: [ + { + name: 'protocol', + value: 'mqtt', + }, + ], + model: 18, + external_id: 'tasmota:tasmota-device-topic', + selector: 'tasmota-tasmota-device-topic', + service_id: serviceId, + should_poll: false, + features: [], + }, + }); + + assert.notCalled(gladys.event.emit); + assert.notCalled(gladys.stateManager.get); + assert.calledWith(mqttService.device.publish, 'cmnd/tasmota-device-topic/STATUS', '8'); + }); + + it('decode STATUS8 message', () => { + tasmotaHandler.handleMessage('stat/tasmota-device-topic/STATUS8', JSON.stringify(messages.STATUS8)); + + const expectedDevice = { + name: 'Tasmota', + params: [ + { + name: 'protocol', + value: 'mqtt', + }, + ], + model: 18, + external_id: 'tasmota:tasmota-device-topic', + selector: 'tasmota-tasmota-device-topic', + service_id: serviceId, + should_poll: false, + features: [ + { + category: DEVICE_FEATURE_CATEGORIES.TEMPERATURE_SENSOR, + type: DEVICE_FEATURE_TYPES.SENSOR.DECIMAL, + unit: DEVICE_FEATURE_UNITS.CELSIUS, + external_id: 'tasmota:tasmota-device-topic:ENERGY:BL09XX:Temperature', + selector: 'tasmota-tasmota-device-topic-energy-bl09xx-temperature', + name: 'Temperature', + read_only: true, + has_feedback: false, + min: -100, + max: 200, + last_value: 23, + }, + ], + }; + expect(tasmotaHandler.discoveredDevices).to.deep.eq({ + 'tasmota-device-topic': expectedDevice, + }); + expect(tasmotaHandler.pendingDevices).to.deep.eq({}); + + assert.notCalled(mqttService.device.publish); + assert.calledWith(gladys.stateManager.get, 'deviceByExternalId', 'tasmota:tasmota-device-topic'); + + assert.calledWith(gladys.event.emit, EVENTS.DEVICE.NEW_STATE, { + device_feature_external_id: 'tasmota:tasmota-device-topic:ENERGY:BL09XX:Temperature', + state: 23, + }); + assert.calledWith(gladys.event.emit, EVENTS.WEBSOCKET.SEND_ALL, { + type: WEBSOCKET_MESSAGE_TYPES.TASMOTA.NEW_MQTT_DEVICE, + payload: expectedDevice, + }); + }); +}); From e13fb1ac96a389e33de602bede9fa0b08c57e636 Mon Sep 17 00:00:00 2001 From: Pierre-Gilles Leymarie Date: Mon, 3 Oct 2022 11:05:33 +0700 Subject: [PATCH 081/164] Scene: Fix #1605, improve HTTP request response parser to handle null & array (#1612) * Scene: Fix HTTP request response parser to handle array * Fix continue only if action + add tests * Remove star on header --- .../scene/edit-scene/actions/HttpRequest.jsx | 22 +++- server/lib/scene/scene.actions.js | 6 +- .../scene.action.continueOnlyIf.test.js | 124 ++++++++++++++++++ .../actions/scene.action.sendMessage.test.js | 77 +++++++++++ .../lib/scene/scene.executeActions.test.js | 106 +-------------- 5 files changed, 222 insertions(+), 113 deletions(-) create mode 100644 server/test/lib/scene/actions/scene.action.continueOnlyIf.test.js create mode 100644 server/test/lib/scene/actions/scene.action.sendMessage.test.js diff --git a/front/src/routes/scene/edit-scene/actions/HttpRequest.jsx b/front/src/routes/scene/edit-scene/actions/HttpRequest.jsx index 053ecfd984..579c43d43a 100644 --- a/front/src/routes/scene/edit-scene/actions/HttpRequest.jsx +++ b/front/src/routes/scene/edit-scene/actions/HttpRequest.jsx @@ -13,13 +13,26 @@ const helpTextStyle = { marginBottom: '.375rem' }; +function isNumeric(str) { + if (typeof str != 'string') return false; // we only process strings! + return ( + !isNaN(str) && !isNaN(parseFloat(str)) // use type coercion to parse the _entirety_ of the string (`parseFloat` alone does not do this)... + ); // ...and ensure strings of whitespace fail +} + const getAllPropertiesObject = (obj, path = '', results = []) => { Object.keys(obj).forEach(key => { const value = obj[key]; - if (typeof value === 'object') { + const shouldContinueParsingTree = typeof value === 'object' && value !== null && value !== undefined; + const keyIsNumber = isNumeric(key); + if (shouldContinueParsingTree && !keyIsNumber) { getAllPropertiesObject(value, `${path}${key}.`, results); - } else { - results.push(path + key); + } else if (shouldContinueParsingTree && keyIsNumber) { + getAllPropertiesObject(value, `${path}[${key}].`, results); + } else if (!keyIsNumber) { + results.push(`${path}${key}`); + } else if (keyIsNumber) { + results.push(`${path}[${key}]`); } }); return results; @@ -240,9 +253,6 @@ class HttpRequestAction extends Component {
{props.action.headers && props.action.headers.map((header, index) => ( diff --git a/server/lib/scene/scene.actions.js b/server/lib/scene/scene.actions.js index f7a0e41291..6cd0982da8 100644 --- a/server/lib/scene/scene.actions.js +++ b/server/lib/scene/scene.actions.js @@ -139,12 +139,14 @@ const actionsFunc = { [ACTIONS.CONDITION.ONLY_CONTINUE_IF]: async (self, action, scope) => { let oneConditionVerified = false; action.conditions.forEach((condition) => { - const conditionVerified = compare(condition.operator, get(scope, condition.variable), condition.value); + // removing brackets + const variableWithoutBrackets = condition.variable.replace(/\[|\]/g, ''); + const conditionVerified = compare(condition.operator, get(scope, variableWithoutBrackets), condition.value); if (conditionVerified) { oneConditionVerified = true; } else { logger.debug( - `Condition not verified. Condition: "${get(scope, condition.variable)} ${condition.operator} ${ + `Condition not verified. Condition: "${get(scope, variableWithoutBrackets)} ${condition.operator} ${ condition.value }"`, ); diff --git a/server/test/lib/scene/actions/scene.action.continueOnlyIf.test.js b/server/test/lib/scene/actions/scene.action.continueOnlyIf.test.js new file mode 100644 index 0000000000..8559da1d8b --- /dev/null +++ b/server/test/lib/scene/actions/scene.action.continueOnlyIf.test.js @@ -0,0 +1,124 @@ +const { fake } = require('sinon'); +const EventEmitter = require('events'); +const chaiAssert = require('chai').assert; + +const { ACTIONS } = require('../../../../utils/constants'); +const { AbortScene } = require('../../../../utils/coreErrors'); +const { executeActions } = require('../../../../lib/scene/scene.executeActions'); + +const StateManager = require('../../../../lib/state'); + +const event = new EventEmitter(); + +describe('scene.continue-only-if', () => { + it('should abort scene, condition is not verified', async () => { + const stateManager = new StateManager(event); + stateManager.setState('deviceFeature', 'my-device-feature', { + category: 'light', + type: 'binary', + last_value: 15, + }); + const device = { + setValue: fake.resolves(null), + }; + const scope = {}; + const promise = executeActions( + { stateManager, event, device }, + [ + [ + { + type: ACTIONS.DEVICE.GET_VALUE, + device_feature: 'my-device-feature', + }, + ], + [ + { + type: ACTIONS.CONDITION.ONLY_CONTINUE_IF, + conditions: [ + { + variable: '0.0.last_value', + operator: '=', + value: 20, + }, + ], + }, + ], + ], + scope, + ); + return chaiAssert.isRejected(promise, AbortScene); + }); + it('should finish scene, condition is verified', async () => { + const stateManager = new StateManager(event); + stateManager.setState('deviceFeature', 'my-device-feature', { + category: 'light', + type: 'binary', + last_value: 15, + }); + const device = { + setValue: fake.resolves(null), + }; + const scope = {}; + await executeActions( + { stateManager, event, device }, + [ + [ + { + type: ACTIONS.DEVICE.GET_VALUE, + device_feature: 'my-device-feature', + }, + ], + [ + { + type: ACTIONS.CONDITION.ONLY_CONTINUE_IF, + conditions: [ + { + variable: '0.0.last_value', + operator: '=', + value: 15, + }, + ], + }, + ], + ], + scope, + ); + }); + it('should finish scene, condition is verified', async () => { + const stateManager = new StateManager(event); + const http = { + request: fake.resolves({ result: [18], error: null }), + }; + const device = { + setValue: fake.resolves(null), + }; + const scope = {}; + await executeActions( + { stateManager, event, device, http }, + [ + [ + { + type: ACTIONS.HTTP.REQUEST, + method: 'post', + url: 'http://test.test', + body: '{"toto":"toto"}', + headers: [], + }, + ], + [ + { + type: ACTIONS.CONDITION.ONLY_CONTINUE_IF, + conditions: [ + { + variable: '0.0.result.[0]', + operator: '=', + value: 18, + }, + ], + }, + ], + ], + scope, + ); + }); +}); diff --git a/server/test/lib/scene/actions/scene.action.sendMessage.test.js b/server/test/lib/scene/actions/scene.action.sendMessage.test.js new file mode 100644 index 0000000000..6bf7379097 --- /dev/null +++ b/server/test/lib/scene/actions/scene.action.sendMessage.test.js @@ -0,0 +1,77 @@ +const { fake, assert } = require('sinon'); +const EventEmitter = require('events'); + +const { ACTIONS } = require('../../../../utils/constants'); +const { executeActions } = require('../../../../lib/scene/scene.executeActions'); + +const StateManager = require('../../../../lib/state'); + +const event = new EventEmitter(); + +describe('scene.send-message', () => { + it('should send message with value injected', async () => { + const stateManager = new StateManager(event); + stateManager.setState('deviceFeature', 'my-device-feature', { + category: 'light', + type: 'binary', + last_value: 15, + }); + const message = { + sendToUser: fake.resolves(null), + }; + const scope = {}; + await executeActions( + { stateManager, event, message }, + [ + [ + { + type: ACTIONS.DEVICE.GET_VALUE, + device_feature: 'my-device-feature', + }, + ], + [ + { + type: ACTIONS.MESSAGE.SEND, + user: 'pepper', + text: 'Temperature in the living room is {{0.0.last_value}} °C.', + }, + ], + ], + scope, + ); + assert.calledWith(message.sendToUser, 'pepper', 'Temperature in the living room is 15 °C.'); + }); + it('should send message with value injected', async () => { + const stateManager = new StateManager(event); + const http = { + request: fake.resolves({ result: [15], error: null }), + }; + const message = { + sendToUser: fake.resolves(null), + }; + const scope = {}; + await executeActions( + { stateManager, event, message, http }, + [ + [ + { + type: ACTIONS.HTTP.REQUEST, + method: 'post', + url: 'http://test.test', + body: '{"toto":"toto"}', + headers: [], + }, + ], + [ + { + type: ACTIONS.MESSAGE.SEND, + user: 'pepper', + text: 'Temperature in the living room is {{0.0.result.[0]}} °C.', + }, + ], + ], + scope, + ); + assert.calledWith(message.sendToUser, 'pepper', 'Temperature in the living room is 15 °C.'); + }); +}); diff --git a/server/test/lib/scene/scene.executeActions.test.js b/server/test/lib/scene/scene.executeActions.test.js index c2a3cb9ed9..9257cb45d9 100644 --- a/server/test/lib/scene/scene.executeActions.test.js +++ b/server/test/lib/scene/scene.executeActions.test.js @@ -350,43 +350,7 @@ describe('scene.executeActions', () => { ); assert.calledWith(house.userLeft, 'my-house', 'john'); }); - it('should abort scene, condition is not verified', async () => { - const stateManager = new StateManager(event); - stateManager.setState('deviceFeature', 'my-device-feature', { - category: 'light', - type: 'binary', - last_value: 15, - }); - const device = { - setValue: fake.resolves(null), - }; - const scope = {}; - const promise = executeActions( - { stateManager, event, device }, - [ - [ - { - type: ACTIONS.DEVICE.GET_VALUE, - device_feature: 'my-device-feature', - }, - ], - [ - { - type: ACTIONS.CONDITION.ONLY_CONTINUE_IF, - conditions: [ - { - variable: '0.0.last_value', - operator: '=', - value: 20, - }, - ], - }, - ], - ], - scope, - ); - return chaiAssert.isRejected(promise, AbortScene); - }); + it('should abort scene, house empty is not verified', async () => { const stateManager = new StateManager(event); const house = { @@ -465,74 +429,6 @@ describe('scene.executeActions', () => { scope, ); }); - it('should finish scene, condition is verified', async () => { - const stateManager = new StateManager(event); - stateManager.setState('deviceFeature', 'my-device-feature', { - category: 'light', - type: 'binary', - last_value: 15, - }); - const device = { - setValue: fake.resolves(null), - }; - const scope = {}; - await executeActions( - { stateManager, event, device }, - [ - [ - { - type: ACTIONS.DEVICE.GET_VALUE, - device_feature: 'my-device-feature', - }, - ], - [ - { - type: ACTIONS.CONDITION.ONLY_CONTINUE_IF, - conditions: [ - { - variable: '0.0.last_value', - operator: '=', - value: 15, - }, - ], - }, - ], - ], - scope, - ); - }); - it('should send message with value injected', async () => { - const stateManager = new StateManager(event); - stateManager.setState('deviceFeature', 'my-device-feature', { - category: 'light', - type: 'binary', - last_value: 15, - }); - const message = { - sendToUser: fake.resolves(null), - }; - const scope = {}; - await executeActions( - { stateManager, event, message }, - [ - [ - { - type: ACTIONS.DEVICE.GET_VALUE, - device_feature: 'my-device-feature', - }, - ], - [ - { - type: ACTIONS.MESSAGE.SEND, - user: 'pepper', - text: 'Temperature in the living room is {{0.0.last_value}} °C.', - }, - ], - ], - scope, - ); - assert.calledWith(message.sendToUser, 'pepper', 'Temperature in the living room is 15 °C.'); - }); it('should execute action scene.start', async () => { const stateManager = new StateManager(event); From 69bc5fc99a6c3de643a00c9a46d5898424f5d003 Mon Sep 17 00:00:00 2001 From: Vincent KULAK Date: Tue, 4 Oct 2022 10:14:03 +0200 Subject: [PATCH 082/164] Add new data, datarate, precipitation category and units (#1601) --- front/src/config/i18n/en.json | 48 ++++++++++++++++++++++++++++-- front/src/config/i18n/fr.json | 48 ++++++++++++++++++++++++++++-- front/src/utils/consts.js | 6 ++++ server/utils/constants.js | 56 +++++++++++++++++++++++++++++++++-- 4 files changed, 152 insertions(+), 6 deletions(-) diff --git a/front/src/config/i18n/en.json b/front/src/config/i18n/en.json index e40d91abb7..055a45eece 100644 --- a/front/src/config/i18n/en.json +++ b/front/src/config/i18n/en.json @@ -1798,6 +1798,7 @@ "meter-per-second": "Meter per second (m/s)", "kilometer-per-hour": "Kilometer per hour (km/h)", "millimeter-per-hour": "Millimeter per hour (mm/h)", + "millimeter-per-day": "Millimeter per day (mm/d)", "uv-index": "UV Index", "microseconds": "Microseconds (μs)", "milliseconds": "Milliseconds (ms)", @@ -1807,7 +1808,24 @@ "days": "Days (d)", "weeks": "Weeks (w)", "months": "Months (m)", - "years": "Years (y)" + "years": "Years (y)", + "bit": "Bit", + "kilobit": "Kilobit", + "megabit": "Megabit", + "gigabit": "Gigabit", + "byte": "Byte (B)", + "kilobyte": "Kilobyte (kB)", + "megabyte": "Megabyte (MB)", + "gigabyte": "Gigabyte (GB)", + "terabyte": "Terabyte (TB)", + "bits-per-second": "Bits per second (bit/s)", + "kilobits-per-second": "Kilobits per second (kbit/s)", + "megabits-per-second": "Megabits per second (Mbit/s)", + "gigabits-per-second": "Gigabits per second (Gbit/s)", + "bytes-per-second": "Bytes per second (B/s)", + "kilobytes-per-second": "kilobytes per second (kB/s)", + "megabytes-per-second": "Megabytes per second (MB/s)", + "gigabytes-per-second": "Gigabytes per second (GB/s)" }, "deviceFeatureUnitShort": { "celsius": "°C", @@ -1853,6 +1871,7 @@ "meter-per-second": "m/s", "kilometer-per-hour": "km/h", "millimeter-per-hour": "mm/h", + "millimeter-per-day": "mm/d", "uv-index": "UV Index", "microseconds": "μs", "milliseconds": "ms", @@ -1862,7 +1881,24 @@ "days": "d", "weeks": "w", "months": "m", - "years": "y" + "years": "y", + "bit": "bit", + "kilobit": "kbit", + "megabit": "Mbit", + "gigabit": "Gbit", + "byte": "B", + "kilobyte": "kB", + "megabyte": "MB", + "gigabyte": "GB", + "terabyte": "TB", + "bits-per-second": "bit/s", + "kilobits-per-second": "kbit/s", + "megabits-per-second": "Mbit/s", + "gigabits-per-second": "Gbit/s", + "bytes-per-second": "B/s", + "kilobytes-per-second": "kB/s", + "megabytes-per-second": "MB/s", + "gigabytes-per-second": "GB/s" }, "deviceFeatureAction": { "category": { @@ -2131,6 +2167,14 @@ "state": "Curtain state", "position": "curtain position" }, + "data": { + "shortCategoryName": "Data", + "size": "Size" + }, + "datarate": { + "shortCategoryName": "Datarate", + "rate": "Rate" + }, "unknown": { "shortCategoryName": "Unknown", "unknown": "Unknown" diff --git a/front/src/config/i18n/fr.json b/front/src/config/i18n/fr.json index 5274a0e120..787bb0d81b 100644 --- a/front/src/config/i18n/fr.json +++ b/front/src/config/i18n/fr.json @@ -1798,6 +1798,7 @@ "meter-per-second": "Mètre par seconde (m/s)", "kilometer-per-hour": "Kilomètre par heure (km/h)", "millimeter-per-hour": "Millimètre par heure (mm/h)", + "millimeter-per-day": "Millimètre par jour (mm/j)", "uv-index": "Indice UV", "microseconds": "Microsecondes (μs)", "milliseconds": "Millisecondes (ms)", @@ -1807,7 +1808,24 @@ "days": "Jours (j)", "weeks": "Semaines (sem)", "months": "Mois (m)", - "years": "Années (an)" + "years": "Années (an)", + "bit": "Bit", + "kilobit": "Kilobit", + "megabit": "Megabit", + "gigabit": "Gigabit", + "byte": "Octet (o)", + "kilobyte": "Kilooctet (Ko)", + "megabyte": "Megaoctet (Mo)", + "gigabyte": "Gigaoctet (Go)", + "terabyte": "Teraoctet (To)", + "bits-per-second": "Bits par seconde (bit/s)", + "kilobits-per-second": "Kilobits par seconde (kbit/s)", + "megabits-per-second": "Megabits par seconde (Mbit/s)", + "gigabits-per-second": "Gigabits par seconde (Gbit/s)", + "bytes-per-second": "Octets par seconde (o/s)", + "kilobytes-per-second": "Kilooctets par seconde (Ko/s)", + "megabytes-per-second": "Megaoctets par seconde (Mo/s)", + "gigabytes-per-second": "Gigaoctets par seconde (Go/s)" }, "deviceFeatureUnitShort": { "celsius": "°C", @@ -1853,6 +1871,7 @@ "meter-per-second": "m/s", "kilometer-per-hour": "km/h", "millimeter-per-hour": "mm/h", + "millimeter-per-day": "mm/j", "uv-index": "Indice UV", "microseconds": "μs", "milliseconds": "ms", @@ -1862,7 +1881,24 @@ "days": "j", "weeks": "sem", "months": "m", - "years": "an" + "years": "an", + "bit": "bit", + "kilobit": "kbit", + "megabit": "Mbit", + "gigabit": "Gbit", + "byte": "o", + "kilobyte": "Ko", + "megabyte": "Mo", + "gigabyte": "Go", + "terabyte": "To", + "bits-per-second": "bit/s", + "kilobits-per-second": "kbit/s", + "megabits-per-second": "Mbit/s", + "gigabits-per-second": "Gbit/s", + "bytes-per-second": "o/s", + "kilobytes-per-second": "Ko/s", + "megabytes-per-second": "Mo/s", + "gigabytes-per-second": "Go/s" }, "deviceFeatureAction": { "category": { @@ -2131,6 +2167,14 @@ "state": "Etat du rideau", "position": "Position du rideau" }, + "data": { + "shortCategoryName": "Donnée", + "size": "Taille" + }, + "datarate": { + "shortCategoryName": "Débit de données", + "rate": "Débit" + }, "unknown": { "shortCategoryName": "Inconnu", "unknown": "Inconnu" diff --git a/front/src/utils/consts.js b/front/src/utils/consts.js index aa03da0d0c..3632a679aa 100644 --- a/front/src/utils/consts.js +++ b/front/src/utils/consts.js @@ -280,6 +280,12 @@ export const DeviceFeatureCategoriesIcon = { [DEVICE_FEATURE_CATEGORIES.VOC_SENSOR]: { [DEVICE_FEATURE_TYPES.VOC_SENSOR.DECIMAL]: 'bar-chart-2' }, + [DEVICE_FEATURE_CATEGORIES.DATA]: { + [DEVICE_FEATURE_TYPES.DATA.SIZE]: 'hard-drive' + }, + [DEVICE_FEATURE_CATEGORIES.DATARATE]: { + [DEVICE_FEATURE_TYPES.DATARATE.RATE]: 'activity' + }, [DEVICE_FEATURE_CATEGORIES.UNKNOWN]: { [DEVICE_FEATURE_TYPES.UNKNOWN.UNKNOWN]: 'help-circle' } diff --git a/server/utils/constants.js b/server/utils/constants.js index 677553a46c..ef7491f5d2 100644 --- a/server/utils/constants.js +++ b/server/utils/constants.js @@ -344,6 +344,8 @@ const DEVICE_FEATURE_CATEGORIES = { VOC_SENSOR: 'voc-sensor', SHUTTER: 'shutter', CURTAIN: 'curtain', + DATA: 'data', + DATARATE: 'datarate', UNKNOWN: 'unknown', }; @@ -493,6 +495,12 @@ const DEVICE_FEATURE_TYPES = { STATE: 'state', POSITION: 'position', }, + DATA: { + SIZE: 'size', + }, + DATARATE: { + RATE: 'rate', + }, UNKNOWN: { UNKNOWN: 'unknown', }, @@ -555,7 +563,8 @@ const DEVICE_FEATURE_UNITS = { KILOMETER_PER_HOUR: 'kilometer-per-hour', // Precipitation units MILLIMETER_PER_HOUR: 'millimeter-per-hour', - // UV Units + MILLIMETER_PER_DAY: 'millimeter-per-day', + // UV units UV_INDEX: 'uv-index', // Duration units MICROSECONDS: 'microseconds', @@ -567,6 +576,25 @@ const DEVICE_FEATURE_UNITS = { WEEKS: 'weeks', MONTHS: 'months', YEARS: 'years', + // Data units + BIT: 'bit', + KILOBIT: 'kilobit', + MEGABIT: 'megabit', + GIGABIT: 'gigabit', + BYTE: 'byte', + KILOBYTE: 'kilobyte', + MEGABYTE: 'megabyte', + GIGABYTE: 'gigabyte', + TERABYTE: 'terabyte', + // Data rate units + BITS_PER_SECOND: 'bits-per-second', + KILOBITS_PER_SECOND: 'kilobits-per-second', + MEGABITS_PER_SECOND: 'megabits-per-second', + GIGABITS_PER_SECOND: 'gigabits-per-second', + BYTES_PER_SECOND: 'bytes-per-second', + KILOBYTES_PER_SECOND: 'kilobytes-per-second', + MEGABYTES_PER_SECOND: 'megabytes-per-second', + GIGABYTES_PER_SECOND: 'gigabytes-per-second', }; const WEATHER_UNITS = { @@ -639,7 +667,10 @@ const DEVICE_FEATURE_UNITS_BY_CATEGORY = { DEVICE_FEATURE_UNITS.METER_PER_SECOND, DEVICE_FEATURE_UNITS.KILOMETER_PER_HOUR, ], - [DEVICE_FEATURE_CATEGORIES.PRECIPITATION_SENSOR]: [DEVICE_FEATURE_UNITS.MILLIMETER_PER_HOUR], + [DEVICE_FEATURE_CATEGORIES.PRECIPITATION_SENSOR]: [ + DEVICE_FEATURE_UNITS.MILLIMETER_PER_HOUR, + DEVICE_FEATURE_UNITS.MILLIMETER_PER_DAY, + ], [DEVICE_FEATURE_CATEGORIES.UV_SENSOR]: [DEVICE_FEATURE_UNITS.UV_INDEX], [DEVICE_FEATURE_CATEGORIES.DURATION]: [ DEVICE_FEATURE_UNITS.MICROSECONDS, @@ -653,6 +684,27 @@ const DEVICE_FEATURE_UNITS_BY_CATEGORY = { DEVICE_FEATURE_UNITS.YEARS, ], [DEVICE_FEATURE_CATEGORIES.VOC_SENSOR]: [DEVICE_FEATURE_UNITS.PPB], + [DEVICE_FEATURE_CATEGORIES.DATA]: [ + DEVICE_FEATURE_UNITS.BIT, + DEVICE_FEATURE_UNITS.KILOBIT, + DEVICE_FEATURE_UNITS.MEGABIT, + DEVICE_FEATURE_UNITS.GIGABIT, + DEVICE_FEATURE_UNITS.BYTE, + DEVICE_FEATURE_UNITS.KILOBYTE, + DEVICE_FEATURE_UNITS.MEGABYTE, + DEVICE_FEATURE_UNITS.GIGABYTE, + DEVICE_FEATURE_UNITS.TERABYTE, + ], + [DEVICE_FEATURE_CATEGORIES.DATARATE]: [ + DEVICE_FEATURE_UNITS.BITS_PER_SECOND, + DEVICE_FEATURE_UNITS.KILOBITS_PER_SECOND, + DEVICE_FEATURE_UNITS.MEGABITS_PER_SECOND, + DEVICE_FEATURE_UNITS.GIGABITS_PER_SECOND, + DEVICE_FEATURE_UNITS.BYTES_PER_SECOND, + DEVICE_FEATURE_UNITS.KILOBYTES_PER_SECOND, + DEVICE_FEATURE_UNITS.MEGABYTES_PER_SECOND, + DEVICE_FEATURE_UNITS.GIGABYTES_PER_SECOND, + ], }; const ACTIONS_STATUS = { From 25b95295007e0f0f5164a0a457d63ee2466d70b9 Mon Sep 17 00:00:00 2001 From: Pierre-Gilles Leymarie Date: Tue, 4 Oct 2022 15:14:43 +0700 Subject: [PATCH 083/164] 4.11.0 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6dbecb42ed..b509b8dcc7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "gladys", - "version": "4.10.2", + "version": "4.11.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 8a7c6a52e3..62190fe737 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "gladys", - "version": "4.10.2", + "version": "4.11.0", "description": "A privacy-first, open-source home assistant", "main": "index.js", "engines": { From 95985882a913f3adb1c0896b9a80ab523a65bf98 Mon Sep 17 00:00:00 2001 From: Pierre-Gilles Leymarie Date: Tue, 4 Oct 2022 15:15:19 +0700 Subject: [PATCH 084/164] Update CHANGELOG --- CHANGELOG.md | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 567a654f22..361484d6b0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,56 @@ All notable changes to this project will be documented in this file. Dates are d Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). +#### [v4.11.0](https://github.com/GladysAssistant/Gladys/compare/v4.10.2...v4.11.0) + +> 4 October 2022 + +- Add new data, datarate, precipitation category and units [`#1601`](https://github.com/GladysAssistant/Gladys/pull/1601) +- Scene: Fix #1605, improve HTTP request response parser to handle null & array [`#1612`](https://github.com/GladysAssistant/Gladys/pull/1612) +- Tasmota: Add more temp devices [`#1570`](https://github.com/GladysAssistant/Gladys/pull/1570) +- Handle Zigbee2mqtt cover devices [`#1577`](https://github.com/GladysAssistant/Gladys/pull/1577) +- Fix Broadlink labels [`#1606`](https://github.com/GladysAssistant/Gladys/pull/1606) +- Add Broadlink cover devices [`#1607`](https://github.com/GladysAssistant/Gladys/pull/1607) +- Reword leak sensor values [`#1608`](https://github.com/GladysAssistant/Gladys/pull/1608) +- Scene: Fix #1605, improve HTTP request response parser to handle null & array (#1612) [`#1605`](https://github.com/GladysAssistant/Gladys/issues/1605) +- Reword leak sensor values (#1608) [`#1603`](https://github.com/GladysAssistant/Gladys/issues/1603) + +#### [v4.10.2](https://github.com/GladysAssistant/Gladys/compare/v4.10.1...v4.10.2) + +> 29 September 2022 + +- Add manual button to VACUUM database [`#1611`](https://github.com/GladysAssistant/Gladys/pull/1611) +- Clean device feature states in small chunk to prevent Gladys from being stuck [`#1610`](https://github.com/GladysAssistant/Gladys/pull/1610) + +#### [v4.10.1](https://github.com/GladysAssistant/Gladys/compare/v4.10.0...v4.10.1) + +> 15 September 2022 + +- Add ability to display shutters on dashboard [`#1602`](https://github.com/GladysAssistant/Gladys/pull/1602) + +#### [v4.10.0](https://github.com/GladysAssistant/Gladys/compare/v4.9.2...v4.10.0) + +> 15 September 2022 + +- Add index on device feature states tables to improve dashboard performance [`#1600`](https://github.com/GladysAssistant/Gladys/pull/1600) +- Zigbee2mqtt: Add LQI [`#1343`](https://github.com/GladysAssistant/Gladys/pull/1343) +- Add option to keep states history or not for any device feature [`#1599`](https://github.com/GladysAssistant/Gladys/pull/1599) +- Add Broadlink integration [`#1516`](https://github.com/GladysAssistant/Gladys/pull/1516) +- Caldav: Sync Webcals calendars [`#1537`](https://github.com/GladysAssistant/Gladys/pull/1537) +- Don't display relative time in the future on background jobs screen [`#1595`](https://github.com/GladysAssistant/Gladys/pull/1595) +- Caldav: Sync deleted events [`#1549`](https://github.com/GladysAssistant/Gladys/pull/1549) +- Tasmota: Manage array values [`#1571`](https://github.com/GladysAssistant/Gladys/pull/1571) +- Add new shutter/curtain type of device [`#1576`](https://github.com/GladysAssistant/Gladys/pull/1576) +- Fix #1490: Dashboard charts now display a lighter loader on live data [`#1580`](https://github.com/GladysAssistant/Gladys/pull/1580) +- Brain: Improve french camera questions [`#1586`](https://github.com/GladysAssistant/Gladys/pull/1586) +- Add 1 decimal to temperature in room dashboard box [`#1594`](https://github.com/GladysAssistant/Gladys/pull/1594) +- Change door opening sensor icon to a lock [`#1589`](https://github.com/GladysAssistant/Gladys/pull/1589) +- Fix Google Home/Alexa links [`#1582`](https://github.com/GladysAssistant/Gladys/pull/1582) +- Zigbee2mqtt: Add support for VOC Sensors [`#1556`](https://github.com/GladysAssistant/Gladys/pull/1556) +- Add missing integrations + add open-zwave deprecated warning [`#1579`](https://github.com/GladysAssistant/Gladys/pull/1579) +- Fix #1490: Dashboard charts now display a lighter loader on live data (#1580) [`#1490`](https://github.com/GladysAssistant/Gladys/issues/1490) +- Update CHANGELOG [`f262ea1`](https://github.com/GladysAssistant/Gladys/commit/f262ea1cc3f7882ce3983b3ecf849c376bbfa9a1) + #### [v4.9.2](https://github.com/GladysAssistant/Gladys/compare/v4.9.1...v4.9.2) > 28 July 2022 From 58e258b98d8ff9d013ba28508668c7608bac5892 Mon Sep 17 00:00:00 2001 From: euguuu Date: Sun, 10 Apr 2022 15:22:44 +0200 Subject: [PATCH 085/164] Create docker-image.yml --- .github/workflows/docker-image.yml | 92 ++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 .github/workflows/docker-image.yml diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml new file mode 100644 index 0000000000..c025ebdd04 --- /dev/null +++ b/.github/workflows/docker-image.yml @@ -0,0 +1,92 @@ +name: Docker Image CI + + +on: + workflow_dispatch: + inputs: + tag: + description: 'Docker Tag to build' + required: true + default: 'dev' + platforms: + description: 'Docker platform to build' + required: true + default: 'linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64/v8' + +jobs: + build-front: + name: Front build + runs-on: ubuntu-20.04 + steps: + - name: ⬇️ Checkout code + uses: actions/checkout@v2 + - name: 💽 Setup nodejs + uses: actions/setup-node@v2 + with: + node-version: '14' + - name: 📇 Use npm cache + uses: actions/cache@v2 + with: + path: ~/.npm + key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-node- + - name: 📦 Install NPM front packages + working-directory: ./front + run: | + npm ci + - name: 🏗️ Build front + working-directory: ./front + run: | + npm run build + - name: ↗️ Upload build artifact + uses: actions/upload-artifact@v2 + with: + name: static + path: front/build + docker: + needs: build-front + name: Docker magic ! + runs-on: ubuntu-20.04 + env: + DOCKERHUB_USER: ${{secrets.DOCKERHUB_USER}} + DOCKERHUB_PASSWORD: ${{secrets.DOCKERHUB_PASSWORD}} + DOCKERHUB_REPO: ${{secrets.DOCKERHUB_REPO}} + steps: + - name: ⬇️ Checkout code + uses: actions/checkout@v2 + - name: 🐳 Docker meta + id: docker_meta + uses: docker/metadata-action@v3 + with: + images: ${{ secrets.DOCKERHUB_REPO }} + labels: | + org.opencontainers.image.title=Gladys Assistant Preprod Image + - name: 💽 Set up QEMU + uses: docker/setup-qemu-action@v1 + - name: 🐳 Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v1 + with: + version: latest + - name: ↙️ Download build artifact + uses: actions/download-artifact@v2 + with: + name: static + path: static + - name: 🔑 Login to DockerHub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKERHUB_USER }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} + - name: 🐳 Build and push + uses: docker/build-push-action@v2 + with: + context: . + file: ./docker/Dockerfile.buildx + platforms: ${{ github.event.inputs.platforms }} + push: true + pull: true + tags: ${{ secrets.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }} + cache-from: type=registry,ref=${{ secrets.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }} + cache-to: type=inline From effae95d7ab178108e4f6414ffc9aee7254843f1 Mon Sep 17 00:00:00 2001 From: euguuu Date: Sun, 10 Apr 2022 15:23:26 +0200 Subject: [PATCH 086/164] Delete docker-image.yml --- .github/workflows/docker-image.yml | 92 ------------------------------ 1 file changed, 92 deletions(-) delete mode 100644 .github/workflows/docker-image.yml diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml deleted file mode 100644 index c025ebdd04..0000000000 --- a/.github/workflows/docker-image.yml +++ /dev/null @@ -1,92 +0,0 @@ -name: Docker Image CI - - -on: - workflow_dispatch: - inputs: - tag: - description: 'Docker Tag to build' - required: true - default: 'dev' - platforms: - description: 'Docker platform to build' - required: true - default: 'linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64/v8' - -jobs: - build-front: - name: Front build - runs-on: ubuntu-20.04 - steps: - - name: ⬇️ Checkout code - uses: actions/checkout@v2 - - name: 💽 Setup nodejs - uses: actions/setup-node@v2 - with: - node-version: '14' - - name: 📇 Use npm cache - uses: actions/cache@v2 - with: - path: ~/.npm - key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} - restore-keys: | - ${{ runner.os }}-node- - - name: 📦 Install NPM front packages - working-directory: ./front - run: | - npm ci - - name: 🏗️ Build front - working-directory: ./front - run: | - npm run build - - name: ↗️ Upload build artifact - uses: actions/upload-artifact@v2 - with: - name: static - path: front/build - docker: - needs: build-front - name: Docker magic ! - runs-on: ubuntu-20.04 - env: - DOCKERHUB_USER: ${{secrets.DOCKERHUB_USER}} - DOCKERHUB_PASSWORD: ${{secrets.DOCKERHUB_PASSWORD}} - DOCKERHUB_REPO: ${{secrets.DOCKERHUB_REPO}} - steps: - - name: ⬇️ Checkout code - uses: actions/checkout@v2 - - name: 🐳 Docker meta - id: docker_meta - uses: docker/metadata-action@v3 - with: - images: ${{ secrets.DOCKERHUB_REPO }} - labels: | - org.opencontainers.image.title=Gladys Assistant Preprod Image - - name: 💽 Set up QEMU - uses: docker/setup-qemu-action@v1 - - name: 🐳 Set up Docker Buildx - id: buildx - uses: docker/setup-buildx-action@v1 - with: - version: latest - - name: ↙️ Download build artifact - uses: actions/download-artifact@v2 - with: - name: static - path: static - - name: 🔑 Login to DockerHub - uses: docker/login-action@v1 - with: - username: ${{ secrets.DOCKERHUB_USER }} - password: ${{ secrets.DOCKERHUB_PASSWORD }} - - name: 🐳 Build and push - uses: docker/build-push-action@v2 - with: - context: . - file: ./docker/Dockerfile.buildx - platforms: ${{ github.event.inputs.platforms }} - push: true - pull: true - tags: ${{ secrets.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }} - cache-from: type=registry,ref=${{ secrets.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }} - cache-to: type=inline From a275a09518d0800d45efddb30f94fd6d5389ff18 Mon Sep 17 00:00:00 2001 From: euguuu Date: Tue, 4 Oct 2022 21:59:30 +0200 Subject: [PATCH 087/164] fix for review --- .../sensor-value/SensorDeviceFeature.jsx | 5 +---- .../components/device/UpdateDeviceFeature.jsx | 2 +- server/lib/device/device.destroyByServiceId.js | 9 ++++----- server/lib/device/device.saveHistoricalState.js | 2 +- .../services/withings/api/withings.controller.js | 8 +++++--- .../lib/utils/withings.getAndSaveBatteryLevel.js | 2 +- .../api/oauth2/oauth2.controller.test.js | 16 ++++++---------- .../services/withings/lib/withings.poll.test.js | 7 ++++--- 8 files changed, 23 insertions(+), 28 deletions(-) diff --git a/front/src/components/boxs/device-in-room/device-features/sensor-value/SensorDeviceFeature.jsx b/front/src/components/boxs/device-in-room/device-features/sensor-value/SensorDeviceFeature.jsx index 61af4a5a84..f0da2af927 100644 --- a/front/src/components/boxs/device-in-room/device-features/sensor-value/SensorDeviceFeature.jsx +++ b/front/src/components/boxs/device-in-room/device-features/sensor-value/SensorDeviceFeature.jsx @@ -1,4 +1,3 @@ -import { Text } from 'preact-i18n'; import { createElement } from 'preact'; import get from 'get-value'; @@ -46,9 +45,7 @@ const SensorDeviceType = ({ children, ...props }) => { )}`} /> - - {props.deviceFeature.name} - + {props.deviceFeature.name} {createElement(elementType, props)} ); diff --git a/front/src/components/device/UpdateDeviceFeature.jsx b/front/src/components/device/UpdateDeviceFeature.jsx index 40f949ac99..1a796aa04f 100644 --- a/front/src/components/device/UpdateDeviceFeature.jsx +++ b/front/src/components/device/UpdateDeviceFeature.jsx @@ -50,7 +50,7 @@ class UpdateDeviceFeature extends Component { {feature.name}} + value={feature.name} onInput={this.updateName} class="form-control" placeholder={} diff --git a/server/lib/device/device.destroyByServiceId.js b/server/lib/device/device.destroyByServiceId.js index 84e844db64..cc0220e431 100755 --- a/server/lib/device/device.destroyByServiceId.js +++ b/server/lib/device/device.destroyByServiceId.js @@ -14,11 +14,10 @@ async function destroyByServiceId(serviceId) { }, }); - if (devices && devices.length > 0) { - await Promise.each(devices, async (device) => { - await device.destroy(device.selector); - }); - } + await Promise.each(devices, async (device) => { + await device.destroy(); + }); + return null; } diff --git a/server/lib/device/device.saveHistoricalState.js b/server/lib/device/device.saveHistoricalState.js index bcb4a1fa6a..14e6f2e158 100644 --- a/server/lib/device/device.saveHistoricalState.js +++ b/server/lib/device/device.saveHistoricalState.js @@ -5,7 +5,7 @@ const { BadParameters } = require('../../utils/coreErrors'); /** * @description Save historical device feature state in DB. * @param {Object} deviceFeature - A DeviceFeature object. - * @param {Object} historicalState - The historical feature state value (numeric) of the deviceFeature to save. + * @param {number} historicalState - The historical feature state value (numeric) of the deviceFeature to save. * @param {Object} createdAt - Date of state. * @example * saveHistoricalState({ diff --git a/server/services/withings/api/withings.controller.js b/server/services/withings/api/withings.controller.js index 5a001145a3..c684df1898 100755 --- a/server/services/withings/api/withings.controller.js +++ b/server/services/withings/api/withings.controller.js @@ -1,4 +1,6 @@ const asyncMiddleware = require('../../../api/middlewares/asyncMiddleware'); +const { ERROR_MESSAGES } = require('../../../utils/constants'); +const { Error400 } = require('../../../utils/httpErrors'); module.exports = function WithingsController(gladys, withingsHandler) { /** @@ -46,7 +48,7 @@ module.exports = function WithingsController(gladys, withingsHandler) { authorizationUri: authorizationUriResult, }); } else { - res.status(400); + throw new Error400(ERROR_MESSAGES.MISSING_MANDATORY_PARAMETER); } } @@ -68,7 +70,7 @@ module.exports = function WithingsController(gladys, withingsHandler) { result: authResult, }); } else { - res.status(400); + throw new Error400(ERROR_MESSAGES.MISSING_MANDATORY_PARAMETER); } } @@ -85,7 +87,7 @@ module.exports = function WithingsController(gladys, withingsHandler) { client_id: resultClientId, }); } else { - res.status(400); + throw new Error400(ERROR_MESSAGES.MISSING_MANDATORY_PARAMETER); } } diff --git a/server/services/withings/lib/utils/withings.getAndSaveBatteryLevel.js b/server/services/withings/lib/utils/withings.getAndSaveBatteryLevel.js index 52e791de6e..8449aadf0c 100644 --- a/server/services/withings/lib/utils/withings.getAndSaveBatteryLevel.js +++ b/server/services/withings/lib/utils/withings.getAndSaveBatteryLevel.js @@ -31,7 +31,7 @@ async function getAndSaveBatteryLevel(featureBattery, withingsDeviceId, userId) featureBattery.last_value = currentBatValue; featureBattery.last_value_string = currentBatValueString; - await this.gladys.device.saveHistoricalState(featureBattery, currentBatValue, currentDate); + await this.gladys.device.saveState(featureBattery, currentBatValue); } }); } diff --git a/server/test/services/withings/api/oauth2/oauth2.controller.test.js b/server/test/services/withings/api/oauth2/oauth2.controller.test.js index 5ba03c8844..f8de5b1211 100755 --- a/server/test/services/withings/api/oauth2/oauth2.controller.test.js +++ b/server/test/services/withings/api/oauth2/oauth2.controller.test.js @@ -54,6 +54,7 @@ describe('POST /api/v1/service/withings/oauth2/client/authorization-uri', () => }); }); +// failled call describe('POST /api/v1/service/withings/oauth2/client/authorization-uri', () => { it('should get error authorization uri', async () => { sinon.reset(); @@ -72,8 +73,7 @@ describe('POST /api/v1/service/withings/oauth2/client/authorization-uri', () => await controller['post /api/v1/service/withings/oauth2/client/authorization-uri'].controller(req, res); assert.notCalled(withingsHandler.oauth2Client.getAccessToken); - assert.calledOnce(res.status); - assert.calledWith(res.status, 400); + assert.notCalled(res.json); }); }); @@ -118,10 +118,8 @@ describe('POST /api/v1/service/withings/oauth2/client/access-token', () => { status: fake.returns(null), }; await controller['post /api/v1/service/withings/oauth2/client/access-token'].controller(req, res); - assert.notCalled(withingsHandler.oauth2Client.getAccessToken); - assert.calledOnce(res.status); - assert.calledWith(res.status, 400); + assert.notCalled(res.json); }); }); @@ -140,18 +138,18 @@ describe('GET /api/v1/service/withings/oauth2/client', () => { }; const res = { json: fake.returns(null) }; - await controller['get /api/v1/service/withings/oauth2/client'].controller(req, res); - assert.calledOnce(withingsHandler.oauth2Client.getCurrentConfig); assert.calledOnce(res.json); assert.calledWith(res.json, { client_id: null }); }); }); +// failled call describe('GET /api/v1/service/withings/oauth2/client', () => { it('should get error client param', async () => { sinon.reset(); + const req = { headers: { referer: 'fake-referer', @@ -164,9 +162,7 @@ describe('GET /api/v1/service/withings/oauth2/client', () => { const res = { json: fake.returns(null), status: fake.returns(null) }; await controller['get /api/v1/service/withings/oauth2/client'].controller(req, res); - assert.notCalled(withingsHandler.oauth2Client.getAccessToken); - assert.calledOnce(res.status); - assert.calledWith(res.status, 400); + assert.notCalled(res.json); }); }); diff --git a/server/test/services/withings/lib/withings.poll.test.js b/server/test/services/withings/lib/withings.poll.test.js index 8376d6b12c..df90e9bdfa 100644 --- a/server/test/services/withings/lib/withings.poll.test.js +++ b/server/test/services/withings/lib/withings.poll.test.js @@ -33,6 +33,7 @@ const gladys = { device: { create: fake.resolves(null), destroyByServiceId: fake.resolves(null), + saveState: fake.resolves(null), saveHistoricalState: fake.resolves(null), }, user: { @@ -44,7 +45,6 @@ const gladys = { describe('WithingsHandler poll', () => { const withingsHandler = new WithingsHandler(gladys, '55f177d7-bc35-4560-a1f0-4c58b9e9f2c4'); withingsHandler.withingsUrl = `http://${serverHost}:${httpServerPort}`; - withingsHandler.integrationName = 'test'; before((done) => { server.start(done); @@ -189,8 +189,9 @@ describe('WithingsHandler poll', () => { features: deviceToPoll.features, }; - // 18 feature - 1 feature unknown = 17 state to save - assert.callCount(gladys.device.saveHistoricalState, 17); + assert.callCount(gladys.device.saveState, 1); + // 17 feature - 1 feature unknown = 16 state to save + assert.callCount(gladys.device.saveHistoricalState, 16); assert.calledWith(gladys.device.saveHistoricalState, deviceToPoll.features[0]); const deviceToPoll2 = { From bd852035a6f6830d3db57e75b3f323cf006a75e7 Mon Sep 17 00:00:00 2001 From: euguuu Date: Fri, 7 Oct 2022 17:35:41 +0200 Subject: [PATCH 088/164] fix for review --- server/services/withings/index.js | 1 - server/services/withings/lib/index.js | 2 - .../withings/lib/oauth2-client/index.js | 9 ++++ .../oauth2.buildAuthorizationUri.js | 17 +++---- .../lib/oauth2-client/oauth2.executeQuery.js | 45 ++++++++++++------- .../oauth2-client/oauth2.getAccessToken.js | 30 ++++--------- .../lib/oauth2-client/utils/constants.js | 8 ---- server/services/withings/lib/withings.init.js | 38 ---------------- server/test/services/withings/index.test.js | 3 -- .../lib/oauth2-client/oauth2manager.test.js | 19 +++----- .../withings/lib/withings.init.test.js | 20 --------- .../withings/lib/withings.initDevices.test.js | 4 +- .../withings/lib/withings.poll.test.js | 6 ++- .../withings/lib/withings.serverMock.test.js | 20 +-------- 14 files changed, 66 insertions(+), 156 deletions(-) delete mode 100755 server/services/withings/lib/withings.init.js delete mode 100644 server/test/services/withings/lib/withings.init.test.js diff --git a/server/services/withings/index.js b/server/services/withings/index.js index 52067b9004..1282012d2a 100755 --- a/server/services/withings/index.js +++ b/server/services/withings/index.js @@ -13,7 +13,6 @@ module.exports = function WithingsService(gladys, serviceId) { */ async function start() { logger.log('starting Withings service'); - await withingsHandler.init(); } /** diff --git a/server/services/withings/lib/index.js b/server/services/withings/lib/index.js index 7ed591c789..a6b2e65590 100755 --- a/server/services/withings/lib/index.js +++ b/server/services/withings/lib/index.js @@ -1,6 +1,5 @@ const Oauth2Client = require('./oauth2-client'); // COMMANDS -const { init } = require('./withings.init'); const { initDevices } = require('./withings.initDevices'); const { deleteVar } = require('./withings.deleteVar'); const { deleteDevices } = require('./withings.deleteDevices'); @@ -28,7 +27,6 @@ const WithingsHandler = function WithingsHandler(gladys, serviceId) { }; // COMMANDS -WithingsHandler.prototype.init = init; WithingsHandler.prototype.initDevices = initDevices; WithingsHandler.prototype.deleteVar = deleteVar; WithingsHandler.prototype.deleteDevices = deleteDevices; diff --git a/server/services/withings/lib/oauth2-client/index.js b/server/services/withings/lib/oauth2-client/index.js index 9470628239..e413c6f669 100755 --- a/server/services/withings/lib/oauth2-client/index.js +++ b/server/services/withings/lib/oauth2-client/index.js @@ -7,6 +7,15 @@ const { buildRedirectUri } = require('./oauth2.buildRedirectUri'); const OAuth2Manager = function OAuth2Manager(variable) { this.variable = variable; + this.tokenHost = 'https://wbsapi.withings.net'; + this.tokenPath = '/v2/oauth2'; + this.authorizeHost = 'https://account.withings.com'; + this.authorizePath = '/oauth2_user/authorize2'; + this.additionalAccessTokenRequestActionParam = 'requesttoken'; + this.integrationScope = 'user.info,user.metrics,user.activity,user.sleepevents'; + this.grantType = 'authorization_code'; + this.redirectUriSuffix = 'dashboard/integration/health/withings/settings'; + this.additionalAccessTokenRequestAxtionParam = 'requesttoken'; }; OAuth2Manager.prototype.executeQuery = executeQuery; diff --git a/server/services/withings/lib/oauth2-client/oauth2.buildAuthorizationUri.js b/server/services/withings/lib/oauth2-client/oauth2.buildAuthorizationUri.js index 96a64724bd..e6527f8eca 100755 --- a/server/services/withings/lib/oauth2-client/oauth2.buildAuthorizationUri.js +++ b/server/services/withings/lib/oauth2-client/oauth2.buildAuthorizationUri.js @@ -18,13 +18,6 @@ const { OAUTH2 } = require('./utils/constants.js'); * ); */ async function buildAuthorizationUri(serviceId, userId, integrationName, referer) { - // Find provider configuration - const tokenHost = await this.variable.getValue(OAUTH2.VARIABLE.TOKEN_HOST, serviceId); - const authorizeHost = await this.variable.getValue(OAUTH2.VARIABLE.AUTHORIZE_HOST, serviceId); - const authorizePath = await this.variable.getValue(OAUTH2.VARIABLE.AUTHORIZE_PATH, serviceId); - const integrationScope = await this.variable.getValue(OAUTH2.VARIABLE.INTEGRATION_SCOPE, serviceId); - const redirectUriSuffix = await this.variable.getValue(OAUTH2.VARIABLE.REDIRECT_URI_SUFFIX, serviceId); - // Get variale client id and client secret const clientId = await this.variable.getValue(OAUTH2.VARIABLE.CLIENT_ID, serviceId, userId); const secret = await this.variable.getValue(OAUTH2.VARIABLE.CLIENT_SECRET, serviceId, userId); @@ -36,16 +29,16 @@ async function buildAuthorizationUri(serviceId, userId, integrationName, referer secret, }, auth: { - tokenHost, - authorizeHost, - authorizePath, + tokenHost: this.tokenHost, + authorizeHost: this.authorizeHost, + authorizePath: this.authorizePath, }, }; const client = new AuthorizationCode(credentials); const authorizationUriResult = await client.authorizeURL({ - redirect_uri: this.buildRedirectUri(referer, redirectUriSuffix), - scope: integrationScope, + redirect_uri: this.buildRedirectUri(referer, this.redirectUriSuffix), + scope: this.integrationScope, state: `gladys_state_${integrationName}`, }); diff --git a/server/services/withings/lib/oauth2-client/oauth2.executeQuery.js b/server/services/withings/lib/oauth2-client/oauth2.executeQuery.js index fa5fd5e438..94d1bace4d 100644 --- a/server/services/withings/lib/oauth2-client/oauth2.executeQuery.js +++ b/server/services/withings/lib/oauth2-client/oauth2.executeQuery.js @@ -5,30 +5,37 @@ const logger = require('../../../../utils/logger'); const { OAUTH2 } = require('./utils/constants.js'); /** + * * @description Refresh Oauth2 token in case of it expired . * @param {Object} variable - Gladys variable manager. * @param {string} serviceId - Gladys service id call method. * @param {string} userId - Gladys userId of current session. + * @param {string} tokenHost - Token host url. + * @param {string} tokenPath - Token path. + * @param {string} authorizeHost - Authorize host url. + * @param {string} authorizePath - Authorize path. + * @param {string} additionalAccessTokenRequestActionParam - Additional action parameter. * @returns {Object} Response of oauth2 refresh token query . * @example * oauth2.refreshTokenAccess('7fdsf4s68r4gfr68f4r63csd7f6f4c3r85', - * {...}, '78v4f3df83g74v1fsd8375f63gvrf5c'); + * {...}, '78v4f3df83g74v1fsd8375f63gvrf5c', + * 'http://localhost:9292', '/token', 'http://localhost:9292', '/authorize2'); */ -async function refreshTokenAccess(variable, serviceId, userId) { +async function refreshTokenAccess( + variable, + serviceId, + userId, + tokenHost, + tokenPath, + authorizeHost, + authorizePath, + additionalAccessTokenRequestActionParam, +) { const clientId = await variable.getValue(OAUTH2.VARIABLE.CLIENT_ID, serviceId, userId); const secret = await variable.getValue(OAUTH2.VARIABLE.CLIENT_SECRET, serviceId, userId); const accessToken = JSON.parse(await variable.getValue(OAUTH2.VARIABLE.ACCESS_TOKEN, serviceId, userId)); logger.trace('accessToken: ', accessToken); - // Find provider configuration - const tokenHost = await variable.getValue(OAUTH2.VARIABLE.TOKEN_HOST, serviceId); - const tokenPath = await variable.getValue(OAUTH2.VARIABLE.TOKEN_PATH, serviceId); - const authorizeHost = await variable.getValue(OAUTH2.VARIABLE.AUTHORIZE_HOST, serviceId); - const authorizePath = await variable.getValue(OAUTH2.VARIABLE.AUTHORIZE_PATH, serviceId); - const additionalAccessTokenRequestActionParam = await variable.getValue( - OAUTH2.VARIABLE.ADDITIONAL_ACCESS_TOKEN_REQUEST_ACTION_PARAM, - serviceId, - ); // Init credentials based on integration name const credentials = { @@ -60,10 +67,8 @@ async function refreshTokenAccess(variable, serviceId, userId) { client_secret: secret, grant_type: 'refresh_token', refresh_token: authResult.token.refresh_token, + action: additionalAccessTokenRequestActionParam, }; - if (additionalAccessTokenRequestActionParam) { - refreshParams.action = additionalAccessTokenRequestActionParam; - } authResult = await authResult.refresh(refreshParams); @@ -105,7 +110,17 @@ async function refreshTokenAccess(variable, serviceId, userId) { */ async function executeQuery(serviceId, userId, queryType, queryUrl, queryParams) { // Refresh token access if needed - const accessToken = await refreshTokenAccess(this.variable, serviceId, userId); + const accessToken = await refreshTokenAccess( + this.variable, + serviceId, + userId, + this.tokenHost, + this.tokenPath, + this.authorizeHost, + this.authorizePath, + this.additionalAccessTokenRequestActionParam, + ); + const headerConfig = { headers: { Authorization: `${accessToken.token.token_type} ${accessToken.token.access_token}`, diff --git a/server/services/withings/lib/oauth2-client/oauth2.getAccessToken.js b/server/services/withings/lib/oauth2-client/oauth2.getAccessToken.js index 31b0d7cff2..b3e5e11a60 100755 --- a/server/services/withings/lib/oauth2-client/oauth2.getAccessToken.js +++ b/server/services/withings/lib/oauth2-client/oauth2.getAccessToken.js @@ -20,18 +20,6 @@ const { BadOauth2ClientResponse } = require('./utils/coreErrors'); * ); */ async function getAccessToken(serviceId, userId, authorizationCode, referer) { - // Find provider configuration - const tokenHost = await this.variable.getValue(OAUTH2.VARIABLE.TOKEN_HOST, serviceId); - const tokenPath = await this.variable.getValue(OAUTH2.VARIABLE.TOKEN_PATH, serviceId); - const authorizeHost = await this.variable.getValue(OAUTH2.VARIABLE.AUTHORIZE_HOST, serviceId); - const authorizePath = await this.variable.getValue(OAUTH2.VARIABLE.AUTHORIZE_PATH, serviceId); - const grantType = await this.variable.getValue(OAUTH2.VARIABLE.GRANT_TYPE, serviceId); - const additionalAccessTokenRequestAxtionParam = await this.variable.getValue( - OAUTH2.VARIABLE.ADDITIONAL_ACCESS_TOKEN_REQUEST_ACTION_PARAM, - serviceId, - ); - const redirectUriSuffix = await this.variable.getValue(OAUTH2.VARIABLE.REDIRECT_URI_SUFFIX, serviceId); - const clientId = await this.variable.getValue(OAUTH2.VARIABLE.CLIENT_ID, serviceId, userId); const secret = await this.variable.getValue(OAUTH2.VARIABLE.CLIENT_SECRET, serviceId, userId); @@ -42,10 +30,10 @@ async function getAccessToken(serviceId, userId, authorizationCode, referer) { secret, }, auth: { - tokenHost, - tokenPath, - authorizeHost, - authorizePath, + tokenHost: this.tokenHost, + tokenPath: this.tokenPath, + authorizeHost: this.authorizeHost, + authorizePath: this.authorizePath, }, }; @@ -54,16 +42,16 @@ async function getAccessToken(serviceId, userId, authorizationCode, referer) { code: authorizationCode, client_id: clientId, client_secret: secret, - grant_type: grantType, - redirect_uri: this.buildRedirectUri(referer, redirectUriSuffix), + grant_type: this.grantType, + redirect_uri: this.buildRedirectUri(referer, this.redirectUriSuffix), + action: this.additionalAccessTokenRequestAxtionParam, }; - if (additionalAccessTokenRequestAxtionParam) { - tokenConfig.action = additionalAccessTokenRequestAxtionParam; - } try { + console.log(tokenConfig); const client = new AuthorizationCode(credentials); const authResult = await client.getToken(tokenConfig, { json: true }); + console.log(authResult); if (authResult.token) { if (authResult.token.status && authResult.token.status !== 0) { diff --git a/server/services/withings/lib/oauth2-client/utils/constants.js b/server/services/withings/lib/oauth2-client/utils/constants.js index 199df379ac..b08d859ef4 100644 --- a/server/services/withings/lib/oauth2-client/utils/constants.js +++ b/server/services/withings/lib/oauth2-client/utils/constants.js @@ -3,14 +3,6 @@ const OAUTH2 = { CLIENT_ID: 'OAUTH2_CLIENT_ID', CLIENT_SECRET: 'OAUTH2_CLIENT_SECRET', ACCESS_TOKEN: 'OAUTH2_ACCESS_TOKEN', - TOKEN_HOST: 'OAUTH2_TOKEN_HOST', - TOKEN_PATH: 'OAUTH2_TOKEN_PATH', - AUTHORIZE_HOST: 'OAUTH2_AUTHORIZE_HOST', - AUTHORIZE_PATH: 'OAUTH2_AUTHORIZE_PATH', - ADDITIONAL_ACCESS_TOKEN_REQUEST_ACTION_PARAM: 'OAUTH2_ADDITIONAL_ACCESS_TOKEN_REQUEST_ACTION_PARAM', - INTEGRATION_SCOPE: 'OAUTH2_INTEGRATION_SCOPE', - GRANT_TYPE: 'OAUTH2_GRANT_TYPE', - REDIRECT_URI_SUFFIX: 'OAUTH2_REDIRECT_URI_SUFFIX', }, }; diff --git a/server/services/withings/lib/withings.init.js b/server/services/withings/lib/withings.init.js deleted file mode 100755 index d3d4872bee..0000000000 --- a/server/services/withings/lib/withings.init.js +++ /dev/null @@ -1,38 +0,0 @@ -const { OAUTH2 } = require('./oauth2-client/utils/constants.js'); - -/** - * @description Check if withings oauth2 configuration is in catabase and save it if necessary. - * @example - * withings.init(); - */ -async function init() { - // check if variable necessary to oauth2 connection is in variable table - const tokenHost = await this.gladys.variable.getValue(OAUTH2.VARIABLE.TOKEN_HOST, this.serviceId); - if (!tokenHost) { - // Init variable in db - await this.gladys.variable.setValue(OAUTH2.VARIABLE.TOKEN_HOST, 'https://wbsapi.withings.net', this.serviceId); - await this.gladys.variable.setValue(OAUTH2.VARIABLE.TOKEN_PATH, '/v2/oauth2', this.serviceId); - await this.gladys.variable.setValue(OAUTH2.VARIABLE.AUTHORIZE_HOST, 'https://account.withings.com', this.serviceId); - await this.gladys.variable.setValue(OAUTH2.VARIABLE.AUTHORIZE_PATH, '/oauth2_user/authorize2', this.serviceId); - await this.gladys.variable.setValue( - OAUTH2.VARIABLE.ADDITIONAL_ACCESS_TOKEN_REQUEST_ACTION_PARAM, - 'requesttoken', - this.serviceId, - ); - await this.gladys.variable.setValue( - OAUTH2.VARIABLE.INTEGRATION_SCOPE, - 'user.info,user.metrics,user.activity,user.sleepevents', - this.serviceId, - ); - await this.gladys.variable.setValue(OAUTH2.VARIABLE.GRANT_TYPE, 'authorization_code', this.serviceId); - await this.gladys.variable.setValue( - OAUTH2.VARIABLE.REDIRECT_URI_SUFFIX, - 'dashboard/integration/health/withings/settings', - this.serviceId, - ); - } -} - -module.exports = { - init, -}; diff --git a/server/test/services/withings/index.test.js b/server/test/services/withings/index.test.js index 8b060614f8..28b7a17b8d 100755 --- a/server/test/services/withings/index.test.js +++ b/server/test/services/withings/index.test.js @@ -21,9 +21,6 @@ describe('withingsService', () => { expect(withingsService).to.have.property('controllers'); expect(withingsService).to.have.property('device'); - - assert.callCount(gladys.variable.getValue, 1); - assert.callCount(gladys.variable.setValue, 8); }); it('should stop service', async () => { diff --git a/server/test/services/withings/lib/oauth2-client/oauth2manager.test.js b/server/test/services/withings/lib/oauth2-client/oauth2manager.test.js index e38c22617c..93fe7b7360 100755 --- a/server/test/services/withings/lib/oauth2-client/oauth2manager.test.js +++ b/server/test/services/withings/lib/oauth2-client/oauth2manager.test.js @@ -20,20 +20,6 @@ const gladys = { switch (key) { case OAUTH2.VARIABLE.CLIENT_ID: return 'fake_client_id'; - case OAUTH2.VARIABLE.TOKEN_HOST: - return testUrl; - case OAUTH2.VARIABLE.TOKEN_PATH: - return '/token'; - case OAUTH2.VARIABLE.AUTHORIZE_HOST: - return testUrl; - case OAUTH2.VARIABLE.AUTHORIZE_PATH: - return '/authorize2'; - case OAUTH2.VARIABLE.INTEGRATION_SCOPE: - return 'user.info,user.metrics,user.activity,user.sleepevents'; - case OAUTH2.VARIABLE.GRANT_TYPE: - return 'authorization_code'; - case OAUTH2.VARIABLE.REDIRECT_URI_SUFFIX: - return '/dashboard/integration/health/test/settings'; case OAUTH2.VARIABLE.ACCESS_TOKEN: return ( '{"access_token":"b96a86b654acb01c2aeb4d5a39f10ff9c964f8e4","expires_in":10800,' + @@ -69,6 +55,11 @@ describe('oauth2manager test', () => { }); const manager = new OAuth2Manager(gladys.variable); + manager.tokenHost = testUrl; + manager.authorizeHost = testUrl; + manager.tokenPath = '/token'; + manager.authorizePath = '/authorize2'; + manager.redirectUriSuffix = '/dashboard/integration/health/test/settings'; it('oauth manager get buildAuthorizationUri test', async () => { const result = await manager.buildAuthorizationUri(testServiceId, 'fakeUserId', 'fake-code', 'fake-referer'); diff --git a/server/test/services/withings/lib/withings.init.test.js b/server/test/services/withings/lib/withings.init.test.js deleted file mode 100644 index 7981cccaaf..0000000000 --- a/server/test/services/withings/lib/withings.init.test.js +++ /dev/null @@ -1,20 +0,0 @@ -const sinon = require('sinon'); -const WithingsHandler = require('../../../../services/withings/lib'); - -const gladys = { - variable: { - getValue: sinon.fake.returns(null), - setValue: sinon.fake.returns(null), - }, -}; - -describe('WithingsHandler init', () => { - it('init withingsservice in Gladys', async () => { - const withingsHandler = new WithingsHandler(gladys, '55f177d7-bc35-4560-a1f0-4c58b9e9f2c4'); - - await withingsHandler.init(); - - sinon.assert.callCount(gladys.variable.getValue, 1); - sinon.assert.callCount(gladys.variable.setValue, 8); - }); -}); diff --git a/server/test/services/withings/lib/withings.initDevices.test.js b/server/test/services/withings/lib/withings.initDevices.test.js index 0aad153e73..a0c4948375 100644 --- a/server/test/services/withings/lib/withings.initDevices.test.js +++ b/server/test/services/withings/lib/withings.initDevices.test.js @@ -39,7 +39,7 @@ const gladys = { event: { emit: sinon.fake.returns(null) }, variable: { getValue: function returnValue(key, serviceId) { - return serverHttpWithingsMock.getVariable(key, serverHost, oauth2ServerPort); + return serverHttpWithingsMock.getVariable(key); }, setValue: sinon.fake.returns(null), destroy: sinon.fake.returns(null), @@ -65,6 +65,8 @@ describe('WithingsHandler initDevices', () => { it('init devices in Gladys', async () => { const withingsHandler = new WithingsHandler(gladys, '55f177d7-bc35-4560-a1f0-4c58b9e9f2c4'); withingsHandler.withingsUrl = `http://${serverHost}:${httpServerPort}`; + withingsHandler.oauth2Client.tokenHost = `http://${serverHost}:${oauth2ServerPort}`; + withingsHandler.oauth2Client.authorizeHost = `http://${serverHost}:${oauth2ServerPort}`; const result = await withingsHandler.initDevices('0cd30aef-9c4e-4a23-88e3-3547971296e5'); diff --git a/server/test/services/withings/lib/withings.poll.test.js b/server/test/services/withings/lib/withings.poll.test.js index df90e9bdfa..3d9d2554e3 100644 --- a/server/test/services/withings/lib/withings.poll.test.js +++ b/server/test/services/withings/lib/withings.poll.test.js @@ -25,7 +25,7 @@ const gladys = { if (key === OAUTH2.VARIABLE.CLIENT_ID) { countGetValueCallClientId += 1; } - return serverHttpWithingsMock.getVariable(key, serverHost, oauth2ServerPort); + return serverHttpWithingsMock.getVariable(key); }, setValue: fake.resolves(null), destroy: fake.returns(null), @@ -45,6 +45,8 @@ const gladys = { describe('WithingsHandler poll', () => { const withingsHandler = new WithingsHandler(gladys, '55f177d7-bc35-4560-a1f0-4c58b9e9f2c4'); withingsHandler.withingsUrl = `http://${serverHost}:${httpServerPort}`; + withingsHandler.oauth2Client.tokenHost = `http://${serverHost}:${oauth2ServerPort}`; + withingsHandler.oauth2Client.authorizeHost = `http://${serverHost}:${oauth2ServerPort}`; before((done) => { server.start(done); @@ -173,7 +175,7 @@ describe('WithingsHandler poll', () => { await withingsHandler.poll(deviceToPoll); - chai.assert.equal(countGetValueCall, 137); + chai.assert.equal(countGetValueCall, 52); chai.assert.equal(countGetValueCallClientId, 18); const deviceDef = { diff --git a/server/test/services/withings/lib/withings.serverMock.test.js b/server/test/services/withings/lib/withings.serverMock.test.js index 15e912ed6d..9e31bd9bf2 100644 --- a/server/test/services/withings/lib/withings.serverMock.test.js +++ b/server/test/services/withings/lib/withings.serverMock.test.js @@ -144,27 +144,11 @@ function getHttpServer(host, port, withHistoricalData) { * @description Return a HttpServer corresponding to withings server * * @param {string} key - Key of fariable to return. - * @param {string} host - Host of server (oauth2). - * @param {number} port - Port of server (oauth2). * @returns {string} Value of variable. * @example serverHttpWithingsMock.getHttgetVariablepServer(OAUTH2.VARIABLE.TOKEN_HOST, 'localhost', 9192 ); */ -function getVariable(key, host, port) { +function getVariable(key) { switch (key) { - case OAUTH2.VARIABLE.TOKEN_HOST: - return `http://${host}:${port}`; - case OAUTH2.VARIABLE.TOKEN_PATH: - return '/oauth2/token'; - case OAUTH2.VARIABLE.REDIRECT_URI_SUFFIX: - return 'ashboard/integration/health/test/settings'; - case OAUTH2.VARIABLE.AUTHORIZE_HOST: - return `http://${host}:${port}`; - case OAUTH2.VARIABLE.AUTHORIZE_PATH: - return '/oauth2_user/authorize2'; - case OAUTH2.VARIABLE.GRANT_TYPE: - return 'authorization_code'; - case OAUTH2.VARIABLE.INTEGRATION_SCOPE: - return 'user.info,user.metrics,user.activity,user.sleepevents'; case OAUTH2.VARIABLE.ACCESS_TOKEN: return ( '{' + @@ -177,8 +161,6 @@ function getVariable(key, host, port) { '"expires_at":"2020-11-13T20:46:50.042Z"' + '}' ); - case OAUTH2.VARIABLE.ADDITIONAL_ACCESS_TOKEN_REQUEST_ACTION_PARAM: - return 'requesttoken'; case OAUTH2.VARIABLE.CLIENT_ID: return 'fake_client_id'; default: From 13f8ba81b46bc5899b74a4a70cfcb548268efcd2 Mon Sep 17 00:00:00 2001 From: euguuu Date: Sun, 10 Apr 2022 15:22:44 +0200 Subject: [PATCH 089/164] Create docker-image.yml --- .github/workflows/docker-image.yml | 92 ++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 .github/workflows/docker-image.yml diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml new file mode 100644 index 0000000000..c025ebdd04 --- /dev/null +++ b/.github/workflows/docker-image.yml @@ -0,0 +1,92 @@ +name: Docker Image CI + + +on: + workflow_dispatch: + inputs: + tag: + description: 'Docker Tag to build' + required: true + default: 'dev' + platforms: + description: 'Docker platform to build' + required: true + default: 'linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64/v8' + +jobs: + build-front: + name: Front build + runs-on: ubuntu-20.04 + steps: + - name: ⬇️ Checkout code + uses: actions/checkout@v2 + - name: 💽 Setup nodejs + uses: actions/setup-node@v2 + with: + node-version: '14' + - name: 📇 Use npm cache + uses: actions/cache@v2 + with: + path: ~/.npm + key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-node- + - name: 📦 Install NPM front packages + working-directory: ./front + run: | + npm ci + - name: 🏗️ Build front + working-directory: ./front + run: | + npm run build + - name: ↗️ Upload build artifact + uses: actions/upload-artifact@v2 + with: + name: static + path: front/build + docker: + needs: build-front + name: Docker magic ! + runs-on: ubuntu-20.04 + env: + DOCKERHUB_USER: ${{secrets.DOCKERHUB_USER}} + DOCKERHUB_PASSWORD: ${{secrets.DOCKERHUB_PASSWORD}} + DOCKERHUB_REPO: ${{secrets.DOCKERHUB_REPO}} + steps: + - name: ⬇️ Checkout code + uses: actions/checkout@v2 + - name: 🐳 Docker meta + id: docker_meta + uses: docker/metadata-action@v3 + with: + images: ${{ secrets.DOCKERHUB_REPO }} + labels: | + org.opencontainers.image.title=Gladys Assistant Preprod Image + - name: 💽 Set up QEMU + uses: docker/setup-qemu-action@v1 + - name: 🐳 Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v1 + with: + version: latest + - name: ↙️ Download build artifact + uses: actions/download-artifact@v2 + with: + name: static + path: static + - name: 🔑 Login to DockerHub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKERHUB_USER }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} + - name: 🐳 Build and push + uses: docker/build-push-action@v2 + with: + context: . + file: ./docker/Dockerfile.buildx + platforms: ${{ github.event.inputs.platforms }} + push: true + pull: true + tags: ${{ secrets.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }} + cache-from: type=registry,ref=${{ secrets.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }} + cache-to: type=inline From d36240ca9de5aabe8275353d82db5d58ba1db20a Mon Sep 17 00:00:00 2001 From: euguuu Date: Sun, 10 Apr 2022 15:23:26 +0200 Subject: [PATCH 090/164] Delete docker-image.yml --- .github/workflows/docker-image.yml | 92 ------------------------------ 1 file changed, 92 deletions(-) delete mode 100644 .github/workflows/docker-image.yml diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml deleted file mode 100644 index c025ebdd04..0000000000 --- a/.github/workflows/docker-image.yml +++ /dev/null @@ -1,92 +0,0 @@ -name: Docker Image CI - - -on: - workflow_dispatch: - inputs: - tag: - description: 'Docker Tag to build' - required: true - default: 'dev' - platforms: - description: 'Docker platform to build' - required: true - default: 'linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64/v8' - -jobs: - build-front: - name: Front build - runs-on: ubuntu-20.04 - steps: - - name: ⬇️ Checkout code - uses: actions/checkout@v2 - - name: 💽 Setup nodejs - uses: actions/setup-node@v2 - with: - node-version: '14' - - name: 📇 Use npm cache - uses: actions/cache@v2 - with: - path: ~/.npm - key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} - restore-keys: | - ${{ runner.os }}-node- - - name: 📦 Install NPM front packages - working-directory: ./front - run: | - npm ci - - name: 🏗️ Build front - working-directory: ./front - run: | - npm run build - - name: ↗️ Upload build artifact - uses: actions/upload-artifact@v2 - with: - name: static - path: front/build - docker: - needs: build-front - name: Docker magic ! - runs-on: ubuntu-20.04 - env: - DOCKERHUB_USER: ${{secrets.DOCKERHUB_USER}} - DOCKERHUB_PASSWORD: ${{secrets.DOCKERHUB_PASSWORD}} - DOCKERHUB_REPO: ${{secrets.DOCKERHUB_REPO}} - steps: - - name: ⬇️ Checkout code - uses: actions/checkout@v2 - - name: 🐳 Docker meta - id: docker_meta - uses: docker/metadata-action@v3 - with: - images: ${{ secrets.DOCKERHUB_REPO }} - labels: | - org.opencontainers.image.title=Gladys Assistant Preprod Image - - name: 💽 Set up QEMU - uses: docker/setup-qemu-action@v1 - - name: 🐳 Set up Docker Buildx - id: buildx - uses: docker/setup-buildx-action@v1 - with: - version: latest - - name: ↙️ Download build artifact - uses: actions/download-artifact@v2 - with: - name: static - path: static - - name: 🔑 Login to DockerHub - uses: docker/login-action@v1 - with: - username: ${{ secrets.DOCKERHUB_USER }} - password: ${{ secrets.DOCKERHUB_PASSWORD }} - - name: 🐳 Build and push - uses: docker/build-push-action@v2 - with: - context: . - file: ./docker/Dockerfile.buildx - platforms: ${{ github.event.inputs.platforms }} - push: true - pull: true - tags: ${{ secrets.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }} - cache-from: type=registry,ref=${{ secrets.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }} - cache-to: type=inline From d6e4a539f4dd41c4255fe59fb83a0abc4dd9f479 Mon Sep 17 00:00:00 2001 From: euguuu Date: Sun, 10 Apr 2022 15:22:44 +0200 Subject: [PATCH 091/164] Create docker-image.yml --- .github/workflows/docker-image.yml | 92 ++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 .github/workflows/docker-image.yml diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml new file mode 100644 index 0000000000..c025ebdd04 --- /dev/null +++ b/.github/workflows/docker-image.yml @@ -0,0 +1,92 @@ +name: Docker Image CI + + +on: + workflow_dispatch: + inputs: + tag: + description: 'Docker Tag to build' + required: true + default: 'dev' + platforms: + description: 'Docker platform to build' + required: true + default: 'linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64/v8' + +jobs: + build-front: + name: Front build + runs-on: ubuntu-20.04 + steps: + - name: ⬇️ Checkout code + uses: actions/checkout@v2 + - name: 💽 Setup nodejs + uses: actions/setup-node@v2 + with: + node-version: '14' + - name: 📇 Use npm cache + uses: actions/cache@v2 + with: + path: ~/.npm + key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-node- + - name: 📦 Install NPM front packages + working-directory: ./front + run: | + npm ci + - name: 🏗️ Build front + working-directory: ./front + run: | + npm run build + - name: ↗️ Upload build artifact + uses: actions/upload-artifact@v2 + with: + name: static + path: front/build + docker: + needs: build-front + name: Docker magic ! + runs-on: ubuntu-20.04 + env: + DOCKERHUB_USER: ${{secrets.DOCKERHUB_USER}} + DOCKERHUB_PASSWORD: ${{secrets.DOCKERHUB_PASSWORD}} + DOCKERHUB_REPO: ${{secrets.DOCKERHUB_REPO}} + steps: + - name: ⬇️ Checkout code + uses: actions/checkout@v2 + - name: 🐳 Docker meta + id: docker_meta + uses: docker/metadata-action@v3 + with: + images: ${{ secrets.DOCKERHUB_REPO }} + labels: | + org.opencontainers.image.title=Gladys Assistant Preprod Image + - name: 💽 Set up QEMU + uses: docker/setup-qemu-action@v1 + - name: 🐳 Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v1 + with: + version: latest + - name: ↙️ Download build artifact + uses: actions/download-artifact@v2 + with: + name: static + path: static + - name: 🔑 Login to DockerHub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKERHUB_USER }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} + - name: 🐳 Build and push + uses: docker/build-push-action@v2 + with: + context: . + file: ./docker/Dockerfile.buildx + platforms: ${{ github.event.inputs.platforms }} + push: true + pull: true + tags: ${{ secrets.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }} + cache-from: type=registry,ref=${{ secrets.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }} + cache-to: type=inline From 21fcb51577243bcc066fd433cc768e5d9495c656 Mon Sep 17 00:00:00 2001 From: euguuu Date: Sun, 10 Apr 2022 15:23:26 +0200 Subject: [PATCH 092/164] Delete docker-image.yml --- .github/workflows/docker-image.yml | 92 ------------------------------ 1 file changed, 92 deletions(-) delete mode 100644 .github/workflows/docker-image.yml diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml deleted file mode 100644 index c025ebdd04..0000000000 --- a/.github/workflows/docker-image.yml +++ /dev/null @@ -1,92 +0,0 @@ -name: Docker Image CI - - -on: - workflow_dispatch: - inputs: - tag: - description: 'Docker Tag to build' - required: true - default: 'dev' - platforms: - description: 'Docker platform to build' - required: true - default: 'linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64/v8' - -jobs: - build-front: - name: Front build - runs-on: ubuntu-20.04 - steps: - - name: ⬇️ Checkout code - uses: actions/checkout@v2 - - name: 💽 Setup nodejs - uses: actions/setup-node@v2 - with: - node-version: '14' - - name: 📇 Use npm cache - uses: actions/cache@v2 - with: - path: ~/.npm - key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} - restore-keys: | - ${{ runner.os }}-node- - - name: 📦 Install NPM front packages - working-directory: ./front - run: | - npm ci - - name: 🏗️ Build front - working-directory: ./front - run: | - npm run build - - name: ↗️ Upload build artifact - uses: actions/upload-artifact@v2 - with: - name: static - path: front/build - docker: - needs: build-front - name: Docker magic ! - runs-on: ubuntu-20.04 - env: - DOCKERHUB_USER: ${{secrets.DOCKERHUB_USER}} - DOCKERHUB_PASSWORD: ${{secrets.DOCKERHUB_PASSWORD}} - DOCKERHUB_REPO: ${{secrets.DOCKERHUB_REPO}} - steps: - - name: ⬇️ Checkout code - uses: actions/checkout@v2 - - name: 🐳 Docker meta - id: docker_meta - uses: docker/metadata-action@v3 - with: - images: ${{ secrets.DOCKERHUB_REPO }} - labels: | - org.opencontainers.image.title=Gladys Assistant Preprod Image - - name: 💽 Set up QEMU - uses: docker/setup-qemu-action@v1 - - name: 🐳 Set up Docker Buildx - id: buildx - uses: docker/setup-buildx-action@v1 - with: - version: latest - - name: ↙️ Download build artifact - uses: actions/download-artifact@v2 - with: - name: static - path: static - - name: 🔑 Login to DockerHub - uses: docker/login-action@v1 - with: - username: ${{ secrets.DOCKERHUB_USER }} - password: ${{ secrets.DOCKERHUB_PASSWORD }} - - name: 🐳 Build and push - uses: docker/build-push-action@v2 - with: - context: . - file: ./docker/Dockerfile.buildx - platforms: ${{ github.event.inputs.platforms }} - push: true - pull: true - tags: ${{ secrets.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }} - cache-from: type=registry,ref=${{ secrets.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }} - cache-to: type=inline From 18f84195207ecebd05b21e97f30ec113d4d0526f Mon Sep 17 00:00:00 2001 From: euguuu Date: Sun, 16 Oct 2022 14:56:56 +0200 Subject: [PATCH 093/164] fix for review --- .../all/withings/settings-page/actions.js | 17 ++++- .../all/withings/settings-page/index.js | 5 +- .../settings-page/oauth2/OAuth2Config.jsx | 2 +- .../withings/settings-page/oauth2/actions.js | 4 +- server/lib/device/index.js | 2 - server/seeders/20190226025931-variable.js | 64 ------------------- .../withings/api/withings.controller.js | 18 +++++- .../withings/lib/oauth2-client/index.js | 1 - .../oauth2.buildAuthorizationUri.js | 8 ++- .../oauth2-client/oauth2.getAccessToken.js | 8 +-- .../withings/lib/withings.initDevices.js | 2 - .../api/oauth2/oauth2.controller.test.js | 2 + .../lib/oauth2-client/oauth2manager.test.js | 25 ++++++-- 13 files changed, 69 insertions(+), 89 deletions(-) diff --git a/front/src/routes/integration/all/withings/settings-page/actions.js b/front/src/routes/integration/all/withings/settings-page/actions.js index 408d96ca6c..10dab469f1 100755 --- a/front/src/routes/integration/all/withings/settings-page/actions.js +++ b/front/src/routes/integration/all/withings/settings-page/actions.js @@ -1,8 +1,10 @@ import { route } from 'preact-router'; import { RequestStatus } from '../../../../../utils/consts'; +export const REDIRECT_URI_SUFFIX = 'dashboard/integration/health/withings/settings'; + const actions = store => ({ - async initWithingsDevices(state) { + async initWithingsDevices(state, dictionary) { store.setState({ oauth2GetStatus: RequestStatus.Getting, withingsGetStatus: RequestStatus.Getting @@ -14,10 +16,11 @@ const actions = store => ({ await state.httpClient.post('/api/v1/service/withings/oauth2/client/access-token', { integrationName: 'withings', authorization_code: this.code, - service_id: state.currentIntegration.id + service_id: state.currentIntegration.id, + redirect_uri_suffix: REDIRECT_URI_SUFFIX }); - route('/dashboard/integration/health/withings/settings'); + route(REDIRECT_URI_SUFFIX); } const returnGetConfig = await state.httpClient.get('/api/v1/service/withings/oauth2/client', { @@ -30,6 +33,14 @@ const actions = store => ({ const result = await state.httpClient.post('/api/v1/service/withings/init_devices'); if (result) { withingsDevices = result.withingsDevices; + withingsDevices.forEach(device => { + device.features.forEach(feature => { + const featureName = dictionary.deviceFeatureCategory[feature.category][feature.type]; + if (featureName) { + feature.name = featureName; + } + }); + }); } } diff --git a/front/src/routes/integration/all/withings/settings-page/index.js b/front/src/routes/integration/all/withings/settings-page/index.js index 8ed81e151c..39c4f39e47 100755 --- a/front/src/routes/integration/all/withings/settings-page/index.js +++ b/front/src/routes/integration/all/withings/settings-page/index.js @@ -9,6 +9,7 @@ import WithingsPage from '../WithingsPage'; import OAuth2Config from './oauth2/OAuth2Config'; import { combineActions } from '../../../../../utils/combineActions'; import Device from '../device-page/Device'; +import withIntlAsProp from '../../../../../utils/withIntlAsProp'; @connect( 'user,session,clientIdInDb,withingsSaveStatus,oauth2GetStatus,oauth2ErrorMsg,houses,withingsClientId,withingsGetStatus,withingsImgMap,withingsDevices', @@ -17,7 +18,7 @@ import Device from '../device-page/Device'; class WithingsSettingsPage extends Component { async componentWillMount() { await this.props.getIntegrationByName('withings'); - await this.props.initWithingsDevices(); + await this.props.initWithingsDevices(this.props.intl.dictionary); await this.props.getCurrentConfig(); } @@ -59,4 +60,4 @@ class WithingsSettingsPage extends Component { } } -export default WithingsSettingsPage; +export default withIntlAsProp(WithingsSettingsPage); diff --git a/front/src/routes/integration/all/withings/settings-page/oauth2/OAuth2Config.jsx b/front/src/routes/integration/all/withings/settings-page/oauth2/OAuth2Config.jsx index feb1edef73..a8cb41741c 100755 --- a/front/src/routes/integration/all/withings/settings-page/oauth2/OAuth2Config.jsx +++ b/front/src/routes/integration/all/withings/settings-page/oauth2/OAuth2Config.jsx @@ -26,7 +26,7 @@ const OAuth2Config = ({ integrationImg, integrationName, children, ...props }) =
{props.oauth2ErrorMsg && (
- +
)}

diff --git a/front/src/routes/integration/all/withings/settings-page/oauth2/actions.js b/front/src/routes/integration/all/withings/settings-page/oauth2/actions.js index 649084c9a0..982e0fe02f 100755 --- a/front/src/routes/integration/all/withings/settings-page/oauth2/actions.js +++ b/front/src/routes/integration/all/withings/settings-page/oauth2/actions.js @@ -1,5 +1,6 @@ import { RequestStatus } from '../../../../../../utils/consts'; import { OAUTH2 } from '../../../../../../../../server/services/withings/lib/oauth2-client/utils/constants'; +import { REDIRECT_URI_SUFFIX } from '../actions'; const actions = store => ({ updateClientId(state, e) { @@ -71,7 +72,8 @@ const actions = store => ({ const returnValue = await state.httpClient.post('/api/v1/service/withings/oauth2/client/authorization-uri', { integration_name: state.currentIntegration.name, - service_id: state.currentIntegration.id + service_id: state.currentIntegration.id, + redirect_uri_suffix: REDIRECT_URI_SUFFIX }); if (returnValue.authorizationUri) { diff --git a/server/lib/device/index.js b/server/lib/device/index.js index 35f524f99a..9067f5a3b8 100644 --- a/server/lib/device/index.js +++ b/server/lib/device/index.js @@ -28,7 +28,6 @@ const { pollAll } = require('./device.pollAll'); const { saveState } = require('./device.saveState'); const { saveHistoricalState } = require('./device.saveHistoricalState'); const { saveStringState } = require('./device.saveStringState'); -const { saveHistoricalState } = require('./device.saveHistoricalState'); const { setParam } = require('./device.setParam'); const { setValue } = require('./device.setValue'); const { setupPoll } = require('./device.setupPoll'); @@ -104,7 +103,6 @@ DeviceManager.prototype.newStateEvent = newStateEvent; DeviceManager.prototype.saveState = saveState; DeviceManager.prototype.saveHistoricalState = saveHistoricalState; DeviceManager.prototype.saveStringState = saveStringState; -DeviceManager.prototype.saveHistoricalState = saveHistoricalState; DeviceManager.prototype.setParam = setParam; DeviceManager.prototype.setupPoll = setupPoll; DeviceManager.prototype.setValue = setValue; diff --git a/server/seeders/20190226025931-variable.js b/server/seeders/20190226025931-variable.js index 09b8135afc..1aa054fb33 100644 --- a/server/seeders/20190226025931-variable.js +++ b/server/seeders/20190226025931-variable.js @@ -55,70 +55,6 @@ module.exports = { created_at: '2019-02-12 07:49:07.556 +00:00', updated_at: '2019-02-12 07:49:07.556 +00:00', }, - { - id: '837seg11-1611-4695-b137-2d0182868f07', - name: 'OAUTH2_TOKEN_HOST', - service_id: 'a810b8db-6d04-4697-bed3-c4b72c996279', - value: 'http://localhost:9292', - created_at: '2019-02-12 07:49:07.556 +00:00', - updated_at: '2019-02-12 07:49:07.556 +00:00', - }, - { - id: '837seg11-8251-4695-b137-2d0182868f07', - name: 'OAUTH2_TOKEN_PATH', - service_id: 'a810b8db-6d04-4697-bed3-c4b72c996279', - value: '/token', - created_at: '2019-02-12 07:49:07.556 +00:00', - updated_at: '2019-02-12 07:49:07.556 +00:00', - }, - { - id: '837seg11-7551-4695-b137-2d0182868f07', - name: 'OAUTH2_AUTHORIZE_HOST', - service_id: 'a810b8db-6d04-4697-bed3-c4b72c996279', - value: 'http://localhost:9292', - created_at: '2019-02-12 07:49:07.556 +00:00', - updated_at: '2019-02-12 07:49:07.556 +00:00', - }, - { - id: '837seg11-1932-4695-b137-2d0182868f07', - name: 'OAUTH2_AUTHORIZE_PATH', - service_id: 'a810b8db-6d04-4697-bed3-c4b72c996279', - value: '/authorize2', - created_at: '2019-02-12 07:49:07.556 +00:00', - updated_at: '2019-02-12 07:49:07.556 +00:00', - }, - { - id: '837seg11-5951-4695-b137-2d0182868f07', - name: 'OAUTH2_INTEGRATION_SCOPE', - service_id: 'a810b8db-6d04-4697-bed3-c4b72c996279', - value: 'user.info,user.metrics,user.activity,user.sleepevents', - created_at: '2019-02-12 07:49:07.556 +00:00', - updated_at: '2019-02-12 07:49:07.556 +00:00', - }, - { - id: '837seg11-1631-4695-b137-2d0182868f07', - name: 'OAUTH2_GRANT_TYPE', - service_id: 'a810b8db-6d04-4697-bed3-c4b72c996279', - value: 'authorization_code', - created_at: '2019-02-12 07:49:07.556 +00:00', - updated_at: '2019-02-12 07:49:07.556 +00:00', - }, - { - id: '837seg11-1258-4695-b137-2d0182868f07', - name: 'OAUTH2_REDIRECT_URI_SUFFIX', - service_id: 'a810b8db-6d04-4697-bed3-c4b72c996279', - value: '/dashboard/integration/health/test/settings', - created_at: '2019-02-12 07:49:07.556 +00:00', - updated_at: '2019-02-12 07:49:07.556 +00:00', - }, - { - id: '837seg11-1932-4695-b137-2d0182868rt7', - name: 'ADDITIONAL_ACCESS_TOKEN_REQUEST_ACTION_PARAM', - service_id: 'a810b8db-6d04-4697-bed3-c4b72c996279', - value: 'requesttoken', - created_at: '2019-02-12 07:49:07.556 +00:00', - updated_at: '2019-02-12 07:49:07.556 +00:00', - }, ], {}, ), diff --git a/server/services/withings/api/withings.controller.js b/server/services/withings/api/withings.controller.js index c684df1898..f4a017421e 100755 --- a/server/services/withings/api/withings.controller.js +++ b/server/services/withings/api/withings.controller.js @@ -37,12 +37,19 @@ module.exports = function WithingsController(gladys, withingsHandler) { * @apiGroup OAuth2 */ async function buildAuthorizationUri(req, res) { - if (req.body && req.body.service_id && req.body.integration_name && req.headers.referer) { + if ( + req.body && + req.body.service_id && + req.body.integration_name && + req.headers.referer && + req.body.redirect_uri_suffix + ) { const authorizationUriResult = await withingsHandler.oauth2Client.buildAuthorizationUri( req.body.service_id, req.user.id, req.body.integration_name, req.headers.referer, + req.body.redirect_uri_suffix, ); res.json({ authorizationUri: authorizationUriResult, @@ -59,12 +66,19 @@ module.exports = function WithingsController(gladys, withingsHandler) { * @apiGroup OAuth2 */ async function getAccessTokenUri(req, res) { - if (req.body && req.body.service_id && req.body.authorization_code && req.headers.referer) { + if ( + req.body && + req.body.service_id && + req.body.authorization_code && + req.headers.referer && + req.body.redirect_uri_suffix + ) { const authResult = await withingsHandler.oauth2Client.getAccessToken( req.body.service_id, req.user.id, req.body.authorization_code, req.headers.referer, + req.body.redirect_uri_suffix, ); res.json({ result: authResult, diff --git a/server/services/withings/lib/oauth2-client/index.js b/server/services/withings/lib/oauth2-client/index.js index e413c6f669..935ab04635 100755 --- a/server/services/withings/lib/oauth2-client/index.js +++ b/server/services/withings/lib/oauth2-client/index.js @@ -14,7 +14,6 @@ const OAuth2Manager = function OAuth2Manager(variable) { this.additionalAccessTokenRequestActionParam = 'requesttoken'; this.integrationScope = 'user.info,user.metrics,user.activity,user.sleepevents'; this.grantType = 'authorization_code'; - this.redirectUriSuffix = 'dashboard/integration/health/withings/settings'; this.additionalAccessTokenRequestAxtionParam = 'requesttoken'; }; diff --git a/server/services/withings/lib/oauth2-client/oauth2.buildAuthorizationUri.js b/server/services/withings/lib/oauth2-client/oauth2.buildAuthorizationUri.js index e6527f8eca..87a3ff73e8 100755 --- a/server/services/withings/lib/oauth2-client/oauth2.buildAuthorizationUri.js +++ b/server/services/withings/lib/oauth2-client/oauth2.buildAuthorizationUri.js @@ -7,17 +7,19 @@ const { OAUTH2 } = require('./utils/constants.js'); * @param {string} userId - Gladys userId of current session. * @param {string} integrationName - Current integration name. * @param {string} referer - Gladys referer. + * @param {string} redirectUriSuffix - Integration redirect uri suffix. * @returns {Promise} Resolve with current integration service id. * @example * oauth2.buildAuthorizationUri( * userId: fd81vs687f0bf3414e0fe3facfba7be9455109409a' * serviceId: 'ffsdvs687f0bf3414e0fe3facfba7be945510fds09a' * integrationName: 'integrationName', - * referer: 'http://localhost:1444/' + * referer: 'http://localhost:1444/', + * redirectUriSuffix: 'dashboard/integration/health/withings/settings' * } * ); */ -async function buildAuthorizationUri(serviceId, userId, integrationName, referer) { +async function buildAuthorizationUri(serviceId, userId, integrationName, referer, redirectUriSuffix) { // Get variale client id and client secret const clientId = await this.variable.getValue(OAUTH2.VARIABLE.CLIENT_ID, serviceId, userId); const secret = await this.variable.getValue(OAUTH2.VARIABLE.CLIENT_SECRET, serviceId, userId); @@ -37,7 +39,7 @@ async function buildAuthorizationUri(serviceId, userId, integrationName, referer const client = new AuthorizationCode(credentials); const authorizationUriResult = await client.authorizeURL({ - redirect_uri: this.buildRedirectUri(referer, this.redirectUriSuffix), + redirect_uri: this.buildRedirectUri(referer, redirectUriSuffix), scope: this.integrationScope, state: `gladys_state_${integrationName}`, }); diff --git a/server/services/withings/lib/oauth2-client/oauth2.getAccessToken.js b/server/services/withings/lib/oauth2-client/oauth2.getAccessToken.js index b3e5e11a60..29dc4938aa 100755 --- a/server/services/withings/lib/oauth2-client/oauth2.getAccessToken.js +++ b/server/services/withings/lib/oauth2-client/oauth2.getAccessToken.js @@ -9,6 +9,7 @@ const { BadOauth2ClientResponse } = require('./utils/coreErrors'); * @param {string} userId - This userId of current session. * @param {string} authorizationCode - Authorization code for nex token. * @param {string} referer - Gladys referer. + * @param {string} redirectUriSuffix - Integration redirect uri suffix. * @returns {Promise} Resolve with current integration service id. * @example * oauth2.getAccessToken( @@ -16,10 +17,11 @@ const { BadOauth2ClientResponse } = require('./utils/coreErrors'); * serviceId: 'ffsdvs687f0bf3414e0fe3facfba7be945510fds09a' * authorizationCode: '25dbf26a066d947fca82a1f05ae5890f79a27687', * referer: 'http://localhost:1444/' + * redirectUriSuffix: 'dashboard/integration/health/withings/settings' * } * ); */ -async function getAccessToken(serviceId, userId, authorizationCode, referer) { +async function getAccessToken(serviceId, userId, authorizationCode, referer, redirectUriSuffix) { const clientId = await this.variable.getValue(OAUTH2.VARIABLE.CLIENT_ID, serviceId, userId); const secret = await this.variable.getValue(OAUTH2.VARIABLE.CLIENT_SECRET, serviceId, userId); @@ -43,15 +45,13 @@ async function getAccessToken(serviceId, userId, authorizationCode, referer) { client_id: clientId, client_secret: secret, grant_type: this.grantType, - redirect_uri: this.buildRedirectUri(referer, this.redirectUriSuffix), + redirect_uri: this.buildRedirectUri(referer, redirectUriSuffix), action: this.additionalAccessTokenRequestAxtionParam, }; try { - console.log(tokenConfig); const client = new AuthorizationCode(credentials); const authResult = await client.getToken(tokenConfig, { json: true }); - console.log(authResult); if (authResult.token) { if (authResult.token.status && authResult.token.status !== 0) { diff --git a/server/services/withings/lib/withings.initDevices.js b/server/services/withings/lib/withings.initDevices.js index 4705c153f0..78e75edffa 100755 --- a/server/services/withings/lib/withings.initDevices.js +++ b/server/services/withings/lib/withings.initDevices.js @@ -44,7 +44,6 @@ function buildNewDevice(withingsDevice, serviceId) { newFeatures.push({ id: uniqueBatFeatureId, - name: 'deviceFeatureCategory.battery.shortCategoryName', selector: `withings-battery-${uniqueId}`, device_id: uniqueId, external_id: uniqueId, @@ -192,7 +191,6 @@ function buildFeature(currentGroup, device, currentFeatures) { const uniqueId = uuid.v4(); tmpFeature = { id: uniqueId, - name: featureName, selector: `withings-${featureName}-${gladysDeviceId}`, device_id: gladysDeviceId, external_id: `withings-${featureName}:${gladysDeviceId}:${uniqueId}`, diff --git a/server/test/services/withings/api/oauth2/oauth2.controller.test.js b/server/test/services/withings/api/oauth2/oauth2.controller.test.js index f8de5b1211..1b045f8bc1 100755 --- a/server/test/services/withings/api/oauth2/oauth2.controller.test.js +++ b/server/test/services/withings/api/oauth2/oauth2.controller.test.js @@ -41,6 +41,7 @@ describe('POST /api/v1/service/withings/oauth2/client/authorization-uri', () => body: { integration_name: 'test', service_id: 'a810b8db-6d04-4697-bed3-c4b72c996279', + redirect_uri_suffix: 'dashboard/integration/health/withings/settings', }, }; @@ -91,6 +92,7 @@ describe('POST /api/v1/service/withings/oauth2/client/access-token', () => { integration_name: 'test', service_id: 'a810b8db-6d04-4697-bed3-c4b72c996279', authorization_code: 'fake-code', + redirect_uri_suffix: 'fake_redirect_uri', }, }; diff --git a/server/test/services/withings/lib/oauth2-client/oauth2manager.test.js b/server/test/services/withings/lib/oauth2-client/oauth2manager.test.js index 93fe7b7360..6243656af9 100755 --- a/server/test/services/withings/lib/oauth2-client/oauth2manager.test.js +++ b/server/test/services/withings/lib/oauth2-client/oauth2manager.test.js @@ -59,10 +59,15 @@ describe('oauth2manager test', () => { manager.authorizeHost = testUrl; manager.tokenPath = '/token'; manager.authorizePath = '/authorize2'; - manager.redirectUriSuffix = '/dashboard/integration/health/test/settings'; it('oauth manager get buildAuthorizationUri test', async () => { - const result = await manager.buildAuthorizationUri(testServiceId, 'fakeUserId', 'fake-code', 'fake-referer'); + const result = await manager.buildAuthorizationUri( + testServiceId, + 'fakeUserId', + 'fake-code', + 'fake-referer', + '/dashboard/integration/health/test/settings', + ); assert.isNotNull(result); assert.equal( @@ -72,7 +77,13 @@ describe('oauth2manager test', () => { }); it('oauth manager get getAccessToken test', async () => { - const result = await manager.getAccessToken(testServiceId, 'fakeUserId', 'fake-code', 'fake-referer'); + const result = await manager.getAccessToken( + testServiceId, + 'fakeUserId', + 'fake-code', + 'fake-referer', + '/dashboard/integration/health/test/settings', + ); assert.isNotNull(result.token); assert.isNotNull(result.token.access_token); @@ -86,7 +97,13 @@ describe('oauth2manager test', () => { tokenEndpointResponse.body.status = 2; }); try { - await manager.getAccessToken(testServiceId, 'fakeUserId', 'fake-code', 'fake-referer'); + await manager.getAccessToken( + testServiceId, + 'fakeUserId', + 'fake-code', + 'fake-referer', + '/dashboard/integration/health/test/settings', + ); assert.fail('No error BadOauth2ClientResponse happen'); } catch (e) { expect(e).be.instanceOf(BadOauth2ClientResponse); From 60d2df99c6b6b8d863bad0a997dc6da22eb4554b Mon Sep 17 00:00:00 2001 From: euguuu Date: Sun, 10 Apr 2022 15:22:44 +0200 Subject: [PATCH 094/164] Create docker-image.yml --- .github/workflows/docker-image.yml | 92 ++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 .github/workflows/docker-image.yml diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml new file mode 100644 index 0000000000..c025ebdd04 --- /dev/null +++ b/.github/workflows/docker-image.yml @@ -0,0 +1,92 @@ +name: Docker Image CI + + +on: + workflow_dispatch: + inputs: + tag: + description: 'Docker Tag to build' + required: true + default: 'dev' + platforms: + description: 'Docker platform to build' + required: true + default: 'linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64/v8' + +jobs: + build-front: + name: Front build + runs-on: ubuntu-20.04 + steps: + - name: ⬇️ Checkout code + uses: actions/checkout@v2 + - name: 💽 Setup nodejs + uses: actions/setup-node@v2 + with: + node-version: '14' + - name: 📇 Use npm cache + uses: actions/cache@v2 + with: + path: ~/.npm + key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-node- + - name: 📦 Install NPM front packages + working-directory: ./front + run: | + npm ci + - name: 🏗️ Build front + working-directory: ./front + run: | + npm run build + - name: ↗️ Upload build artifact + uses: actions/upload-artifact@v2 + with: + name: static + path: front/build + docker: + needs: build-front + name: Docker magic ! + runs-on: ubuntu-20.04 + env: + DOCKERHUB_USER: ${{secrets.DOCKERHUB_USER}} + DOCKERHUB_PASSWORD: ${{secrets.DOCKERHUB_PASSWORD}} + DOCKERHUB_REPO: ${{secrets.DOCKERHUB_REPO}} + steps: + - name: ⬇️ Checkout code + uses: actions/checkout@v2 + - name: 🐳 Docker meta + id: docker_meta + uses: docker/metadata-action@v3 + with: + images: ${{ secrets.DOCKERHUB_REPO }} + labels: | + org.opencontainers.image.title=Gladys Assistant Preprod Image + - name: 💽 Set up QEMU + uses: docker/setup-qemu-action@v1 + - name: 🐳 Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v1 + with: + version: latest + - name: ↙️ Download build artifact + uses: actions/download-artifact@v2 + with: + name: static + path: static + - name: 🔑 Login to DockerHub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKERHUB_USER }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} + - name: 🐳 Build and push + uses: docker/build-push-action@v2 + with: + context: . + file: ./docker/Dockerfile.buildx + platforms: ${{ github.event.inputs.platforms }} + push: true + pull: true + tags: ${{ secrets.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }} + cache-from: type=registry,ref=${{ secrets.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }} + cache-to: type=inline From e0287fa4a7d2b4fea6a38ee5e1554da444c8f345 Mon Sep 17 00:00:00 2001 From: euguuu Date: Sun, 10 Apr 2022 15:23:26 +0200 Subject: [PATCH 095/164] Delete docker-image.yml --- .github/workflows/docker-image.yml | 92 ------------------------------ 1 file changed, 92 deletions(-) delete mode 100644 .github/workflows/docker-image.yml diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml deleted file mode 100644 index c025ebdd04..0000000000 --- a/.github/workflows/docker-image.yml +++ /dev/null @@ -1,92 +0,0 @@ -name: Docker Image CI - - -on: - workflow_dispatch: - inputs: - tag: - description: 'Docker Tag to build' - required: true - default: 'dev' - platforms: - description: 'Docker platform to build' - required: true - default: 'linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64/v8' - -jobs: - build-front: - name: Front build - runs-on: ubuntu-20.04 - steps: - - name: ⬇️ Checkout code - uses: actions/checkout@v2 - - name: 💽 Setup nodejs - uses: actions/setup-node@v2 - with: - node-version: '14' - - name: 📇 Use npm cache - uses: actions/cache@v2 - with: - path: ~/.npm - key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} - restore-keys: | - ${{ runner.os }}-node- - - name: 📦 Install NPM front packages - working-directory: ./front - run: | - npm ci - - name: 🏗️ Build front - working-directory: ./front - run: | - npm run build - - name: ↗️ Upload build artifact - uses: actions/upload-artifact@v2 - with: - name: static - path: front/build - docker: - needs: build-front - name: Docker magic ! - runs-on: ubuntu-20.04 - env: - DOCKERHUB_USER: ${{secrets.DOCKERHUB_USER}} - DOCKERHUB_PASSWORD: ${{secrets.DOCKERHUB_PASSWORD}} - DOCKERHUB_REPO: ${{secrets.DOCKERHUB_REPO}} - steps: - - name: ⬇️ Checkout code - uses: actions/checkout@v2 - - name: 🐳 Docker meta - id: docker_meta - uses: docker/metadata-action@v3 - with: - images: ${{ secrets.DOCKERHUB_REPO }} - labels: | - org.opencontainers.image.title=Gladys Assistant Preprod Image - - name: 💽 Set up QEMU - uses: docker/setup-qemu-action@v1 - - name: 🐳 Set up Docker Buildx - id: buildx - uses: docker/setup-buildx-action@v1 - with: - version: latest - - name: ↙️ Download build artifact - uses: actions/download-artifact@v2 - with: - name: static - path: static - - name: 🔑 Login to DockerHub - uses: docker/login-action@v1 - with: - username: ${{ secrets.DOCKERHUB_USER }} - password: ${{ secrets.DOCKERHUB_PASSWORD }} - - name: 🐳 Build and push - uses: docker/build-push-action@v2 - with: - context: . - file: ./docker/Dockerfile.buildx - platforms: ${{ github.event.inputs.platforms }} - push: true - pull: true - tags: ${{ secrets.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }} - cache-from: type=registry,ref=${{ secrets.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }} - cache-to: type=inline From 6e3802fefc6972ef1c4923f9f81c037c34b3c545 Mon Sep 17 00:00:00 2001 From: euguuu Date: Sun, 16 Oct 2022 15:19:23 +0200 Subject: [PATCH 096/164] fix merge error --- server/package-lock.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/server/package-lock.json b/server/package-lock.json index 59a94b7e10..ac31802628 100644 --- a/server/package-lock.json +++ b/server/package-lock.json @@ -9244,6 +9244,12 @@ "integrity": "sha512-RFVofZYaG2TaVcxjnM0ejdVWf/59rFq1f57OGnjP3GT/bthzFw0GVr5rkP9PKbVlEuF/Y7bOVPLfiiYfxq/EWQ==", "dev": true }, + "random-bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", + "integrity": "sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ==", + "dev": true + }, "randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", From 698e34e5cfb079837a2a13a4a2b88c43ed6d130d Mon Sep 17 00:00:00 2001 From: euguuu Date: Sun, 10 Apr 2022 15:22:44 +0200 Subject: [PATCH 097/164] Create docker-image.yml --- .github/workflows/docker-image.yml | 92 ++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 .github/workflows/docker-image.yml diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml new file mode 100644 index 0000000000..c025ebdd04 --- /dev/null +++ b/.github/workflows/docker-image.yml @@ -0,0 +1,92 @@ +name: Docker Image CI + + +on: + workflow_dispatch: + inputs: + tag: + description: 'Docker Tag to build' + required: true + default: 'dev' + platforms: + description: 'Docker platform to build' + required: true + default: 'linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64/v8' + +jobs: + build-front: + name: Front build + runs-on: ubuntu-20.04 + steps: + - name: ⬇️ Checkout code + uses: actions/checkout@v2 + - name: 💽 Setup nodejs + uses: actions/setup-node@v2 + with: + node-version: '14' + - name: 📇 Use npm cache + uses: actions/cache@v2 + with: + path: ~/.npm + key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-node- + - name: 📦 Install NPM front packages + working-directory: ./front + run: | + npm ci + - name: 🏗️ Build front + working-directory: ./front + run: | + npm run build + - name: ↗️ Upload build artifact + uses: actions/upload-artifact@v2 + with: + name: static + path: front/build + docker: + needs: build-front + name: Docker magic ! + runs-on: ubuntu-20.04 + env: + DOCKERHUB_USER: ${{secrets.DOCKERHUB_USER}} + DOCKERHUB_PASSWORD: ${{secrets.DOCKERHUB_PASSWORD}} + DOCKERHUB_REPO: ${{secrets.DOCKERHUB_REPO}} + steps: + - name: ⬇️ Checkout code + uses: actions/checkout@v2 + - name: 🐳 Docker meta + id: docker_meta + uses: docker/metadata-action@v3 + with: + images: ${{ secrets.DOCKERHUB_REPO }} + labels: | + org.opencontainers.image.title=Gladys Assistant Preprod Image + - name: 💽 Set up QEMU + uses: docker/setup-qemu-action@v1 + - name: 🐳 Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v1 + with: + version: latest + - name: ↙️ Download build artifact + uses: actions/download-artifact@v2 + with: + name: static + path: static + - name: 🔑 Login to DockerHub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKERHUB_USER }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} + - name: 🐳 Build and push + uses: docker/build-push-action@v2 + with: + context: . + file: ./docker/Dockerfile.buildx + platforms: ${{ github.event.inputs.platforms }} + push: true + pull: true + tags: ${{ secrets.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }} + cache-from: type=registry,ref=${{ secrets.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }} + cache-to: type=inline From db341199dddfb0fb24ea5c785f8278e04b6676cc Mon Sep 17 00:00:00 2001 From: euguuu Date: Sun, 10 Apr 2022 15:23:26 +0200 Subject: [PATCH 098/164] Delete docker-image.yml --- .github/workflows/docker-image.yml | 92 ------------------------------ 1 file changed, 92 deletions(-) delete mode 100644 .github/workflows/docker-image.yml diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml deleted file mode 100644 index c025ebdd04..0000000000 --- a/.github/workflows/docker-image.yml +++ /dev/null @@ -1,92 +0,0 @@ -name: Docker Image CI - - -on: - workflow_dispatch: - inputs: - tag: - description: 'Docker Tag to build' - required: true - default: 'dev' - platforms: - description: 'Docker platform to build' - required: true - default: 'linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64/v8' - -jobs: - build-front: - name: Front build - runs-on: ubuntu-20.04 - steps: - - name: ⬇️ Checkout code - uses: actions/checkout@v2 - - name: 💽 Setup nodejs - uses: actions/setup-node@v2 - with: - node-version: '14' - - name: 📇 Use npm cache - uses: actions/cache@v2 - with: - path: ~/.npm - key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} - restore-keys: | - ${{ runner.os }}-node- - - name: 📦 Install NPM front packages - working-directory: ./front - run: | - npm ci - - name: 🏗️ Build front - working-directory: ./front - run: | - npm run build - - name: ↗️ Upload build artifact - uses: actions/upload-artifact@v2 - with: - name: static - path: front/build - docker: - needs: build-front - name: Docker magic ! - runs-on: ubuntu-20.04 - env: - DOCKERHUB_USER: ${{secrets.DOCKERHUB_USER}} - DOCKERHUB_PASSWORD: ${{secrets.DOCKERHUB_PASSWORD}} - DOCKERHUB_REPO: ${{secrets.DOCKERHUB_REPO}} - steps: - - name: ⬇️ Checkout code - uses: actions/checkout@v2 - - name: 🐳 Docker meta - id: docker_meta - uses: docker/metadata-action@v3 - with: - images: ${{ secrets.DOCKERHUB_REPO }} - labels: | - org.opencontainers.image.title=Gladys Assistant Preprod Image - - name: 💽 Set up QEMU - uses: docker/setup-qemu-action@v1 - - name: 🐳 Set up Docker Buildx - id: buildx - uses: docker/setup-buildx-action@v1 - with: - version: latest - - name: ↙️ Download build artifact - uses: actions/download-artifact@v2 - with: - name: static - path: static - - name: 🔑 Login to DockerHub - uses: docker/login-action@v1 - with: - username: ${{ secrets.DOCKERHUB_USER }} - password: ${{ secrets.DOCKERHUB_PASSWORD }} - - name: 🐳 Build and push - uses: docker/build-push-action@v2 - with: - context: . - file: ./docker/Dockerfile.buildx - platforms: ${{ github.event.inputs.platforms }} - push: true - pull: true - tags: ${{ secrets.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }} - cache-from: type=registry,ref=${{ secrets.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }} - cache-to: type=inline From 4b59c2c139c77b9cde7510dffa855c87fe67a65c Mon Sep 17 00:00:00 2001 From: euguuu Date: Mon, 17 Oct 2022 21:15:30 +0200 Subject: [PATCH 099/164] change label for review --- front/src/config/i18n/en.json | 2 +- front/src/config/i18n/fr.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/front/src/config/i18n/en.json b/front/src/config/i18n/en.json index 8cad84a1f8..ffd9faa652 100644 --- a/front/src/config/i18n/en.json +++ b/front/src/config/i18n/en.json @@ -1022,7 +1022,7 @@ "settings": { "oauth2": { "title": "Withings Settings", - "introduction": "To connect Withings account to Gladys, you first need to create a Withings user account in this link.

To connect Withings measures to Gladys, you need to create a Withings partner account in this link
(in callback url field put http://gladys.local/dashboard/integration/health/withings/settings, in environmnet field choose Dev, you can use Prod with gladys plus url and https protocol, refer to Documentation link for more details).
", + "introduction": "

Remember to do this configuration locally, not via Gladys Plus.
To connect Withings account to Gladys, you first need to create a Withings user account in this link.

To connect Withings measures to Gladys, you need to create a Withings partner account in this link

In \"REGISTERED URLS\" field put http://gladys.local/dashboard/integration/health/withings/settings, thinking of replacing http://gladys.local by the local URL you use to access Gladys.

In \"TARGET ENVIRONMENT\" field choose \"Development\".
", "instructionsToUse": "To use this integration, go to the dashboard and create a device box or chart.", "complete": "Your account is now linked to Gladys with those parameters:", "buttonConnect": "Connect now", diff --git a/front/src/config/i18n/fr.json b/front/src/config/i18n/fr.json index 0b03762ab0..8a566c6e6b 100644 --- a/front/src/config/i18n/fr.json +++ b/front/src/config/i18n/fr.json @@ -1022,7 +1022,7 @@ "settings": { "oauth2": { "title": "Withings Configuration", - "introduction": "Pour connecter le compte Withings à Gladys, vous devez d'abord créer un compte d'utilisateur Withings à ce lien.

Pour relier les mesures Withings à Gladys, vous devez créer un compte partenaire Withings à ce lien
(dans le champ url de callback mettre http://gladys.local/dashboard/integration/health/withings/settings, dans le champs environnement choisir Dev, vous pouvez utiliser Prod avec gladys plus url et le protocole https, voir le lien Documentation pour plus de détails).
", + "introduction": "
Pensez à faire cette configuration en local, pas via Gladys Plus.
Pour connecter le compte Withings à Gladys, vous devez d'abord créer un compte d'utilisateur Withings à ce lien.

Pour relier les mesures Withings à Gladys, vous devez créer un compte partenaire Withings à ce lien

Dans le champ \"REGISTERED URLS\" vous pouvez mettre http://gladys.local/dashboard/integration/health/withings/settings, en pensant à remplacer http://gladys.local par l'URL locale que vous utilisez pour accéder à Gladys.

Dans le champs \"TARGET ENVIRONMENT\", choisir \"Development\".
", "instructionsToUse": "Pour utiliser cette intégration, rendez-vous sur le tableau de bord et créez une box d'appareil ou de graphique.", "complete": "Votre compte est maintenant lié à Gladys avec ces paramètres :", "buttonConnect": "Connecter maintenant", From bbf9b2bae29c9350bdf540487567c264a8d75c3b Mon Sep 17 00:00:00 2001 From: euguuu Date: Sun, 10 Apr 2022 15:22:44 +0200 Subject: [PATCH 100/164] Create docker-image.yml --- .github/workflows/docker-image.yml | 92 ++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 .github/workflows/docker-image.yml diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml new file mode 100644 index 0000000000..c025ebdd04 --- /dev/null +++ b/.github/workflows/docker-image.yml @@ -0,0 +1,92 @@ +name: Docker Image CI + + +on: + workflow_dispatch: + inputs: + tag: + description: 'Docker Tag to build' + required: true + default: 'dev' + platforms: + description: 'Docker platform to build' + required: true + default: 'linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64/v8' + +jobs: + build-front: + name: Front build + runs-on: ubuntu-20.04 + steps: + - name: ⬇️ Checkout code + uses: actions/checkout@v2 + - name: 💽 Setup nodejs + uses: actions/setup-node@v2 + with: + node-version: '14' + - name: 📇 Use npm cache + uses: actions/cache@v2 + with: + path: ~/.npm + key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-node- + - name: 📦 Install NPM front packages + working-directory: ./front + run: | + npm ci + - name: 🏗️ Build front + working-directory: ./front + run: | + npm run build + - name: ↗️ Upload build artifact + uses: actions/upload-artifact@v2 + with: + name: static + path: front/build + docker: + needs: build-front + name: Docker magic ! + runs-on: ubuntu-20.04 + env: + DOCKERHUB_USER: ${{secrets.DOCKERHUB_USER}} + DOCKERHUB_PASSWORD: ${{secrets.DOCKERHUB_PASSWORD}} + DOCKERHUB_REPO: ${{secrets.DOCKERHUB_REPO}} + steps: + - name: ⬇️ Checkout code + uses: actions/checkout@v2 + - name: 🐳 Docker meta + id: docker_meta + uses: docker/metadata-action@v3 + with: + images: ${{ secrets.DOCKERHUB_REPO }} + labels: | + org.opencontainers.image.title=Gladys Assistant Preprod Image + - name: 💽 Set up QEMU + uses: docker/setup-qemu-action@v1 + - name: 🐳 Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v1 + with: + version: latest + - name: ↙️ Download build artifact + uses: actions/download-artifact@v2 + with: + name: static + path: static + - name: 🔑 Login to DockerHub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKERHUB_USER }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} + - name: 🐳 Build and push + uses: docker/build-push-action@v2 + with: + context: . + file: ./docker/Dockerfile.buildx + platforms: ${{ github.event.inputs.platforms }} + push: true + pull: true + tags: ${{ secrets.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }} + cache-from: type=registry,ref=${{ secrets.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }} + cache-to: type=inline From 81162b71c27abdef8657d63c6b26caf12612ae0f Mon Sep 17 00:00:00 2001 From: euguuu Date: Sun, 10 Apr 2022 15:23:26 +0200 Subject: [PATCH 101/164] Delete docker-image.yml --- .github/workflows/docker-image.yml | 92 ------------------------------ 1 file changed, 92 deletions(-) delete mode 100644 .github/workflows/docker-image.yml diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml deleted file mode 100644 index c025ebdd04..0000000000 --- a/.github/workflows/docker-image.yml +++ /dev/null @@ -1,92 +0,0 @@ -name: Docker Image CI - - -on: - workflow_dispatch: - inputs: - tag: - description: 'Docker Tag to build' - required: true - default: 'dev' - platforms: - description: 'Docker platform to build' - required: true - default: 'linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64/v8' - -jobs: - build-front: - name: Front build - runs-on: ubuntu-20.04 - steps: - - name: ⬇️ Checkout code - uses: actions/checkout@v2 - - name: 💽 Setup nodejs - uses: actions/setup-node@v2 - with: - node-version: '14' - - name: 📇 Use npm cache - uses: actions/cache@v2 - with: - path: ~/.npm - key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} - restore-keys: | - ${{ runner.os }}-node- - - name: 📦 Install NPM front packages - working-directory: ./front - run: | - npm ci - - name: 🏗️ Build front - working-directory: ./front - run: | - npm run build - - name: ↗️ Upload build artifact - uses: actions/upload-artifact@v2 - with: - name: static - path: front/build - docker: - needs: build-front - name: Docker magic ! - runs-on: ubuntu-20.04 - env: - DOCKERHUB_USER: ${{secrets.DOCKERHUB_USER}} - DOCKERHUB_PASSWORD: ${{secrets.DOCKERHUB_PASSWORD}} - DOCKERHUB_REPO: ${{secrets.DOCKERHUB_REPO}} - steps: - - name: ⬇️ Checkout code - uses: actions/checkout@v2 - - name: 🐳 Docker meta - id: docker_meta - uses: docker/metadata-action@v3 - with: - images: ${{ secrets.DOCKERHUB_REPO }} - labels: | - org.opencontainers.image.title=Gladys Assistant Preprod Image - - name: 💽 Set up QEMU - uses: docker/setup-qemu-action@v1 - - name: 🐳 Set up Docker Buildx - id: buildx - uses: docker/setup-buildx-action@v1 - with: - version: latest - - name: ↙️ Download build artifact - uses: actions/download-artifact@v2 - with: - name: static - path: static - - name: 🔑 Login to DockerHub - uses: docker/login-action@v1 - with: - username: ${{ secrets.DOCKERHUB_USER }} - password: ${{ secrets.DOCKERHUB_PASSWORD }} - - name: 🐳 Build and push - uses: docker/build-push-action@v2 - with: - context: . - file: ./docker/Dockerfile.buildx - platforms: ${{ github.event.inputs.platforms }} - push: true - pull: true - tags: ${{ secrets.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }} - cache-from: type=registry,ref=${{ secrets.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }} - cache-to: type=inline From 577d48a9653856dbaff931574f66fcbe43004003 Mon Sep 17 00:00:00 2001 From: euguuu Date: Sun, 10 Apr 2022 15:22:44 +0200 Subject: [PATCH 102/164] Create docker-image.yml --- .github/workflows/docker-image.yml | 92 ++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 .github/workflows/docker-image.yml diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml new file mode 100644 index 0000000000..c025ebdd04 --- /dev/null +++ b/.github/workflows/docker-image.yml @@ -0,0 +1,92 @@ +name: Docker Image CI + + +on: + workflow_dispatch: + inputs: + tag: + description: 'Docker Tag to build' + required: true + default: 'dev' + platforms: + description: 'Docker platform to build' + required: true + default: 'linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64/v8' + +jobs: + build-front: + name: Front build + runs-on: ubuntu-20.04 + steps: + - name: ⬇️ Checkout code + uses: actions/checkout@v2 + - name: 💽 Setup nodejs + uses: actions/setup-node@v2 + with: + node-version: '14' + - name: 📇 Use npm cache + uses: actions/cache@v2 + with: + path: ~/.npm + key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-node- + - name: 📦 Install NPM front packages + working-directory: ./front + run: | + npm ci + - name: 🏗️ Build front + working-directory: ./front + run: | + npm run build + - name: ↗️ Upload build artifact + uses: actions/upload-artifact@v2 + with: + name: static + path: front/build + docker: + needs: build-front + name: Docker magic ! + runs-on: ubuntu-20.04 + env: + DOCKERHUB_USER: ${{secrets.DOCKERHUB_USER}} + DOCKERHUB_PASSWORD: ${{secrets.DOCKERHUB_PASSWORD}} + DOCKERHUB_REPO: ${{secrets.DOCKERHUB_REPO}} + steps: + - name: ⬇️ Checkout code + uses: actions/checkout@v2 + - name: 🐳 Docker meta + id: docker_meta + uses: docker/metadata-action@v3 + with: + images: ${{ secrets.DOCKERHUB_REPO }} + labels: | + org.opencontainers.image.title=Gladys Assistant Preprod Image + - name: 💽 Set up QEMU + uses: docker/setup-qemu-action@v1 + - name: 🐳 Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v1 + with: + version: latest + - name: ↙️ Download build artifact + uses: actions/download-artifact@v2 + with: + name: static + path: static + - name: 🔑 Login to DockerHub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKERHUB_USER }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} + - name: 🐳 Build and push + uses: docker/build-push-action@v2 + with: + context: . + file: ./docker/Dockerfile.buildx + platforms: ${{ github.event.inputs.platforms }} + push: true + pull: true + tags: ${{ secrets.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }} + cache-from: type=registry,ref=${{ secrets.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }} + cache-to: type=inline From 91ab5f0a06c830f32f6f393f2313160bc5dd22dd Mon Sep 17 00:00:00 2001 From: euguuu Date: Sun, 10 Apr 2022 15:23:26 +0200 Subject: [PATCH 103/164] Delete docker-image.yml --- .github/workflows/docker-image.yml | 92 ------------------------------ 1 file changed, 92 deletions(-) delete mode 100644 .github/workflows/docker-image.yml diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml deleted file mode 100644 index c025ebdd04..0000000000 --- a/.github/workflows/docker-image.yml +++ /dev/null @@ -1,92 +0,0 @@ -name: Docker Image CI - - -on: - workflow_dispatch: - inputs: - tag: - description: 'Docker Tag to build' - required: true - default: 'dev' - platforms: - description: 'Docker platform to build' - required: true - default: 'linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64/v8' - -jobs: - build-front: - name: Front build - runs-on: ubuntu-20.04 - steps: - - name: ⬇️ Checkout code - uses: actions/checkout@v2 - - name: 💽 Setup nodejs - uses: actions/setup-node@v2 - with: - node-version: '14' - - name: 📇 Use npm cache - uses: actions/cache@v2 - with: - path: ~/.npm - key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} - restore-keys: | - ${{ runner.os }}-node- - - name: 📦 Install NPM front packages - working-directory: ./front - run: | - npm ci - - name: 🏗️ Build front - working-directory: ./front - run: | - npm run build - - name: ↗️ Upload build artifact - uses: actions/upload-artifact@v2 - with: - name: static - path: front/build - docker: - needs: build-front - name: Docker magic ! - runs-on: ubuntu-20.04 - env: - DOCKERHUB_USER: ${{secrets.DOCKERHUB_USER}} - DOCKERHUB_PASSWORD: ${{secrets.DOCKERHUB_PASSWORD}} - DOCKERHUB_REPO: ${{secrets.DOCKERHUB_REPO}} - steps: - - name: ⬇️ Checkout code - uses: actions/checkout@v2 - - name: 🐳 Docker meta - id: docker_meta - uses: docker/metadata-action@v3 - with: - images: ${{ secrets.DOCKERHUB_REPO }} - labels: | - org.opencontainers.image.title=Gladys Assistant Preprod Image - - name: 💽 Set up QEMU - uses: docker/setup-qemu-action@v1 - - name: 🐳 Set up Docker Buildx - id: buildx - uses: docker/setup-buildx-action@v1 - with: - version: latest - - name: ↙️ Download build artifact - uses: actions/download-artifact@v2 - with: - name: static - path: static - - name: 🔑 Login to DockerHub - uses: docker/login-action@v1 - with: - username: ${{ secrets.DOCKERHUB_USER }} - password: ${{ secrets.DOCKERHUB_PASSWORD }} - - name: 🐳 Build and push - uses: docker/build-push-action@v2 - with: - context: . - file: ./docker/Dockerfile.buildx - platforms: ${{ github.event.inputs.platforms }} - push: true - pull: true - tags: ${{ secrets.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }} - cache-from: type=registry,ref=${{ secrets.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }} - cache-to: type=inline From 5c309e5741b0f415c4b2d9724329874481fa53ec Mon Sep 17 00:00:00 2001 From: euguuu Date: Mon, 31 Oct 2022 17:19:06 +0100 Subject: [PATCH 104/164] change packae-lock --- front/package-lock.json | 732 ++++++++++++++++++++-------------------- 1 file changed, 366 insertions(+), 366 deletions(-) diff --git a/front/package-lock.json b/front/package-lock.json index 151ccfbcb3..2d8a3dfe58 100644 --- a/front/package-lock.json +++ b/front/package-lock.json @@ -3834,7 +3834,7 @@ "@types/warning": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.0.tgz", - "integrity": "sha1-DSUBJorY+ZYrdA04fEZU9fjiPlI=" + "integrity": "sha512-t/Tvs5qR47OLOr+4E9ckN8AmP2Tf16gWq+/qA4iUGS/OOyHVO8wv2vjJuX8SNOUTJyWb+2t7wJm6cXILFnOROA==" }, "@types/webpack": { "version": "4.41.32", @@ -4270,7 +4270,7 @@ "abab": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz", - "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=", + "integrity": "sha512-I+Wi+qiE2kUXyrRhNsWv6XsjUTBJjSoVSctKNBfLG5zG/Xe7Rjbxf13+vqYHNTwHaFU+FtSlVxOCTiMEVtPv0A==", "dev": true }, "accepts": { @@ -4309,7 +4309,7 @@ "acorn-globals": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz", - "integrity": "sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=", + "integrity": "sha512-uWttZCk96+7itPxK8xCzY86PnxKTMrReKDqrHzv42VQY0K30PUO8WY13WMOuI+cOdX4EIdzdvQ8k6jkuGRFMYw==", "dev": true, "requires": { "acorn": "^4.0.4" @@ -4318,7 +4318,7 @@ "acorn": { "version": "4.0.13", "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "integrity": "sha512-fu2ygVGuMmlzG8ZeRJ0bvR41nsAkxxhbyk8bZ1SS521Z7vmgJFTQQlfz/Mp/nJexGBz+v8sC9bM6+lNgskt4Ug==", "dev": true } } @@ -4338,7 +4338,7 @@ "after": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", - "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=" + "integrity": "sha512-QbJ0NTQ/I9DI3uSJA4cbexiwQeRAfjPScqIbSjUDd9TOrcg6pTkdgziesOqxBMBzit8vFCTwrP27t13vFOORRA==" }, "aggregate-error": { "version": "3.1.0", @@ -4406,7 +4406,7 @@ "alphanum-sort": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", - "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", + "integrity": "sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ==", "dev": true }, "ansi-align": { @@ -4800,7 +4800,7 @@ "append-transform": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", - "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", + "integrity": "sha512-Yisb7ew0ZEyDtRYQ+b+26o9KbiYPFxwcsxKzbssigzRRMJ9LpExPVUg6Fos7eP7yP3q7///tzze4nm4lTptPBw==", "dev": true, "requires": { "default-require-extensions": "^1.0.0" @@ -4845,7 +4845,7 @@ "arr-union": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", "dev": true }, "array-buffer-to-hex": { @@ -4856,7 +4856,7 @@ "array-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", + "integrity": "sha512-H3LU5RLiSsGXPhN+Nipar0iR0IofH+8r89G2y1tBKxQ/agagKyAjhkAFDRBfodP2caPrNKHpAWNIM/c9yeL7uA==", "dev": true }, "array-flatten": { @@ -5222,7 +5222,7 @@ "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", "dev": true }, "asn1": { @@ -5267,13 +5267,13 @@ "inherits": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "integrity": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==", "dev": true }, "util": { "version": "0.10.3", "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "integrity": "sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==", "dev": true, "requires": { "inherits": "2.0.1" @@ -5284,13 +5284,13 @@ "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", "dev": true }, "assign-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", "dev": true }, "ast-metadata-inferer": { @@ -5341,7 +5341,7 @@ "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "dev": true }, "at-least-node": { @@ -5381,7 +5381,7 @@ "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=", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", "dev": true }, "aws4": { @@ -5408,7 +5408,7 @@ "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "integrity": "sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==", "dev": true, "requires": { "chalk": "^1.1.3", @@ -5419,19 +5419,19 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", "dev": true }, "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", "dev": true }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", "dev": true, "requires": { "ansi-styles": "^2.2.1", @@ -5444,13 +5444,13 @@ "js-tokens": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "integrity": "sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==", "dev": true }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", "dev": true, "requires": { "ansi-regex": "^2.0.0" @@ -5553,7 +5553,7 @@ "jsesc": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "integrity": "sha512-Mke0DA0QjUWuJlhsE0ZPPhYiJkRap642SmI/4ztCFaUs6V2AiH1sfecc+57NgaryfAA2VR3v6O+CSjC1jZJKOA==", "dev": true } } @@ -5561,7 +5561,7 @@ "babel-helpers": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", - "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "integrity": "sha512-n7pFrqQm44TCYvrCDb0MqabAF+JUBq+ijBvNMUxpkLjJaAu32faIexewMumrH5KLLJ1HDyT0PTEqRyAe/GwwuQ==", "dev": true, "requires": { "babel-runtime": "^6.22.0", @@ -5593,7 +5593,7 @@ "babel-messages": { "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "integrity": "sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w==", "dev": true, "requires": { "babel-runtime": "^6.22.0" @@ -5623,7 +5623,7 @@ "find-up": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", "dev": true, "requires": { "locate-path": "^2.0.0" @@ -5632,7 +5632,7 @@ "locate-path": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", "dev": true, "requires": { "p-locate": "^2.0.0", @@ -5651,7 +5651,7 @@ "p-locate": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", "dev": true, "requires": { "p-limit": "^1.1.0" @@ -5766,7 +5766,7 @@ "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=", + "integrity": "sha512-C4Aq+GaAj83pRQ0EFgTvw5YO6T3Qz2KGrNRwIj9mSoNHVvdZY4KO2uA6HNtNXCw993iSZnckY1aLW8nOi8i4+w==", "dev": true }, "babel-plugin-transform-react-remove-prop-types": { @@ -5788,7 +5788,7 @@ "babel-register": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", - "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "integrity": "sha512-veliHlHX06wjaeY8xNITbveXSiI+ASFnOqvne/LaIJIqOWi2Ogmj91KOugEz/hoh/fwMhXNBJPCv8Xaz5CyM4A==", "dev": true, "requires": { "babel-core": "^6.26.0", @@ -5803,7 +5803,7 @@ "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=", + "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", "dev": true, "requires": { "core-js": "^2.4.0", @@ -5821,7 +5821,7 @@ "babel-template": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "integrity": "sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg==", "dev": true, "requires": { "babel-runtime": "^6.26.0", @@ -5842,7 +5842,7 @@ "babel-traverse": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "integrity": "sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA==", "dev": true, "requires": { "babel-code-frame": "^6.26.0", @@ -5882,7 +5882,7 @@ "babel-types": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "integrity": "sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g==", "dev": true, "requires": { "babel-runtime": "^6.26.0", @@ -5894,7 +5894,7 @@ "to-fast-properties": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "integrity": "sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og==", "dev": true } } @@ -5902,7 +5902,7 @@ "backo2": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" + "integrity": "sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA==" }, "balanced-match": { "version": "1.0.0", @@ -5928,7 +5928,7 @@ "define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", "dev": true, "requires": { "is-descriptor": "^1.0.0" @@ -5974,7 +5974,7 @@ "base64-arraybuffer": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz", - "integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI=" + "integrity": "sha512-a1eIFi4R9ySrbiMuyTGx5e92uRH5tQY6kArNcFaKBUleIoLjdjBg7Zxm3Mqm3Kmkf27HLR/1fnxX9q8GQ7Iavg==" }, "base64-js": { "version": "1.3.1", @@ -5984,13 +5984,13 @@ "batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", "dev": true }, "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", "dev": true, "requires": { "tweetnacl": "^0.14.3" @@ -6115,7 +6115,7 @@ "boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", "dev": true }, "boxen": { @@ -6264,7 +6264,7 @@ "brorand": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", "dev": true }, "browser-process-hrtime": { @@ -6285,7 +6285,7 @@ "resolve": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "integrity": "sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==", "dev": true } } @@ -6419,7 +6419,7 @@ "buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "dev": true }, "buffer-fill": { @@ -6435,19 +6435,19 @@ "buffer-xor": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", "dev": true }, "builtin-modules": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "integrity": "sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ==", "dev": true }, "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=", + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", "dev": true }, "builtins": { @@ -6459,7 +6459,7 @@ "bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", "dev": true }, "cacache": { @@ -6549,7 +6549,7 @@ "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", "dev": true }, "set-value": { @@ -6623,7 +6623,7 @@ "caller-callsite": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", - "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==", "dev": true, "requires": { "callsites": "^2.0.0" @@ -6632,7 +6632,7 @@ "caller-path": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==", "dev": true, "requires": { "caller-callsite": "^2.0.0" @@ -6641,13 +6641,13 @@ "callsites": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==", "dev": true }, "camel-case": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", - "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "integrity": "sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==", "dev": true, "requires": { "no-case": "^2.2.0", @@ -6680,7 +6680,7 @@ "capture-exit": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-1.2.0.tgz", - "integrity": "sha1-HF/MSJ/QqwDU8ax64QcuMXP7q28=", + "integrity": "sha512-IS4lTgp57lUcpXzyCaiUQcRZBxZAkzl+jNXrMUXZjdnr2yujpKUMG9OYeYL29i6fL66ihypvVJ/MeX0B+9pWOg==", "dev": true, "requires": { "rsvp": "^3.3.3" @@ -6689,7 +6689,7 @@ "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", "dev": true }, "chalk": { @@ -6723,7 +6723,7 @@ "check-more-types": { "version": "2.24.0", "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", - "integrity": "sha1-FCD/sQ/URNz8ebQ4kbv//TKoRgA=", + "integrity": "sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==", "dev": true }, "chokidar": { @@ -6873,7 +6873,7 @@ "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "dev": true, "requires": { "is-descriptor": "^0.1.0" @@ -7091,7 +7091,7 @@ "clone": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", "dev": true }, "clone-deep": { @@ -7141,13 +7141,13 @@ "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", "dev": true }, "collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", "dev": true, "requires": { "map-visit": "^1.0.0", @@ -7229,7 +7229,7 @@ "commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", "dev": true }, "compare-json": { @@ -7542,7 +7542,7 @@ "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, "concat-stream": { @@ -7560,7 +7560,7 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "dev": true }, "readable-stream": { @@ -7638,7 +7638,7 @@ "constants-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", "dev": true }, "content-disposition": { @@ -7698,7 +7698,7 @@ "cookie-signature": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", "dev": true }, "copy-concurrently": { @@ -7718,7 +7718,7 @@ "copy-descriptor": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", "dev": true }, "copy-webpack-plugin": { @@ -7819,7 +7819,7 @@ "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=", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", "dev": true }, "cosmiconfig": { @@ -8014,7 +8014,7 @@ "tr46": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", "dev": true, "requires": { "punycode": "^2.1.0" @@ -8087,7 +8087,7 @@ "cross-spawn": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", "dev": true, "requires": { "lru-cache": "^4.0.1", @@ -8158,7 +8158,7 @@ "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=", + "integrity": "sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q==", "dev": true }, "css-declaration-sorter": { @@ -8325,7 +8325,7 @@ "import-fresh": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", "dev": true, "requires": { "caller-path": "^2.0.0", @@ -8335,7 +8335,7 @@ "parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", "dev": true, "requires": { "error-ex": "^1.3.1", @@ -8431,13 +8431,13 @@ "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=", + "integrity": "sha512-6RIcwmV3/cBMG8Aj5gucQRsJb4vv4I4rn6YjPbVWd5+Pn/fuG+YseGvXGk00XLkoZkaj31QOD7vMUpNPC4FIuw==", "dev": true }, "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=", + "integrity": "sha512-JPMZ1TSMRUPVIqEalIBNoBtAYbi8okvcFns4O0YIhcdGebeYZK7dMyHJiQ6GqNBA9kE0Hym4Aqym5rPdsV/4Cw==", "dev": true }, "cssnano-util-raw-cache": { @@ -8527,7 +8527,7 @@ "cssstyle": { "version": "0.2.37", "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz", - "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=", + "integrity": "sha512-FUpKc+1FNBsHUr9IsfSGCovr8VuGOiiuzlgCyppKBjJi2jYTOFLN3oiiNRMIvYqbFzF38mqKj4BgcevzU5/kIA==", "dev": true, "requires": { "cssom": "0.3.x" @@ -8541,7 +8541,7 @@ "cyclist": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", - "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", + "integrity": "sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A==", "dev": true }, "cypress": { @@ -8896,7 +8896,7 @@ "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", "dev": true, "requires": { "assert-plus": "^1.0.0" @@ -8922,7 +8922,7 @@ "tr46": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", "dev": true, "requires": { "punycode": "^2.1.0" @@ -8972,18 +8972,18 @@ "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==" }, "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=", + "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==", "dev": true }, "decompress-response": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", "dev": true, "requires": { "mimic-response": "^1.0.0" @@ -9134,7 +9134,7 @@ "default-require-extensions": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", - "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", + "integrity": "sha512-Dn2eAftOqXhNXs5f/Xjn7QTZ6kDYkx7u0EXQInN1oyYwsZysu11q7oTtaKcbzLxZRJiDHa8VmwpWmb4lY5FqgA==", "dev": true, "requires": { "strip-bom": "^2.0.0" @@ -9219,7 +9219,7 @@ "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true }, "depd": { @@ -9252,7 +9252,7 @@ "detect-indent": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "integrity": "sha512-BDKtmHlOzwI7iRuEkhzsnPoi5ypEhWAJB5RvHWe1kMr06js3uK5B3734i3ui5Yd+wOJV1cpE4JnivPD283GU/A==", "dev": true, "requires": { "repeating": "^2.0.0" @@ -9319,7 +9319,7 @@ "dns-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", "dev": true }, "dns-packet": { @@ -9465,7 +9465,7 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "dev": true }, "readable-stream": { @@ -9497,7 +9497,7 @@ "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", "dev": true, "requires": { "jsbn": "~0.1.0", @@ -9507,7 +9507,7 @@ "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", "dev": true } } @@ -9515,7 +9515,7 @@ "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", "dev": true }, "ejs": { @@ -9585,7 +9585,7 @@ "encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "dev": true }, "end-of-stream": { @@ -9648,7 +9648,7 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "dev": true }, "memory-fs": { @@ -9769,7 +9769,7 @@ "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", "dev": true }, "escape-string-regexp": { @@ -10950,7 +10950,7 @@ "etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "dev": true }, "eventemitter2": { @@ -11047,7 +11047,7 @@ "expand-range": { "version": "1.8.2", "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "integrity": "sha512-AFASGfIlnIbkKPQwX1yHaDjFvh/1gyKJODme52V6IORh69uEYgZp0o9C+qsIGNVEiuuhQU0CSSl++Rlegg1qvA==", "dev": true, "requires": { "fill-range": "^2.1.0" @@ -11147,7 +11147,7 @@ "extend-shallow": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", "dev": true, "requires": { "assign-symbols": "^1.0.0", @@ -11215,7 +11215,7 @@ "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", "dev": true }, "fast-deep-equal": { @@ -11315,7 +11315,7 @@ "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, "fastq": { @@ -11348,7 +11348,7 @@ "fd-slicer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", "dev": true, "requires": { "pend": "~1.2.0" @@ -11424,13 +11424,13 @@ "filename-regex": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "integrity": "sha512-BTCqyBaWBTsauvnHiE8i562+EdJj+oUpkqWp2R1iCoR8f6oo8STRu3of7WJJ0TqWtxN50a5YFpzYK4Jj9esYfQ==", "dev": true }, "fileset": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", - "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", + "integrity": "sha512-UxowFKnAFIwtmSxgKjWAVgjE3Fk7MQJT0ZIyl0NwIFZTrx4913rLaonGJ84V+x/2+w/pe4ULHRns+GZPs1TVuw==", "dev": true, "requires": { "glob": "^7.0.3", @@ -11558,7 +11558,7 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "dev": true }, "readable-stream": { @@ -11596,13 +11596,13 @@ "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", "dev": true }, "for-own": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "integrity": "sha512-SKmowqGTJoPzLO1T0BBJpkfp3EMacCMOuH40hOUbrbzElVktk4DioXVM99QkLCyKoiuOmyjgcWMpVz2xjE7LZw==", "dev": true, "requires": { "for-in": "^1.0.1" @@ -11611,7 +11611,7 @@ "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", "dev": true }, "fork-ts-checker-webpack-plugin": { @@ -11662,7 +11662,7 @@ "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -11810,7 +11810,7 @@ "fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", "dev": true, "requires": { "extend-shallow": "^2.0.1", @@ -11822,7 +11822,7 @@ "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -11862,7 +11862,7 @@ "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", "dev": true, "requires": { "kind-of": "^3.0.2" @@ -11871,7 +11871,7 @@ "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, "requires": { "is-buffer": "^1.1.5" @@ -11934,7 +11934,7 @@ "fragment-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", "dev": true, "requires": { "map-cache": "^0.2.2" @@ -11943,13 +11943,13 @@ "fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "dev": true }, "from2": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", "dev": true, "requires": { "inherits": "^2.0.1", @@ -11959,7 +11959,7 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "dev": true }, "readable-stream": { @@ -12018,7 +12018,7 @@ "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=", + "integrity": "sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==", "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -12030,7 +12030,7 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "dev": true }, "readable-stream": { @@ -12062,7 +12062,7 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, "fsevents": { @@ -12891,7 +12891,7 @@ "getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", "dev": true, "requires": { "assert-plus": "^1.0.0" @@ -12900,7 +12900,7 @@ "gittar": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/gittar/-/gittar-0.1.1.tgz", - "integrity": "sha1-1pk+phYKhsi3895yKmH3O8meFLQ=", + "integrity": "sha512-p+XuqWJpW9ahUuNTptqeFjudFq31o6Jd+maMBarkMAR5U3K9c7zJB4sQ4BV8mIqrTOV29TtqikDhnZfCD4XNfQ==", "dev": true, "requires": { "mkdirp": "^0.5.1", @@ -13004,7 +13004,7 @@ "glob-base": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "integrity": "sha512-ab1S1g1EbO7YzauaJLkgLp7DZVAqj9M/dvKlTt8DkXA2tiOIcSMrlVI2J1RZyB5iJVccEscjGn+kpOG9788MHA==", "dev": true, "requires": { "glob-parent": "^2.0.0", @@ -13108,7 +13108,7 @@ "growly": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", - "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", + "integrity": "sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==", "dev": true }, "gud": { @@ -13154,7 +13154,7 @@ "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", "dev": true }, "har-validator": { @@ -13210,7 +13210,7 @@ "has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", "dev": true, "requires": { "ansi-regex": "^2.0.0" @@ -13219,7 +13219,7 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", "dev": true } } @@ -13284,7 +13284,7 @@ "has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", "dev": true, "requires": { "get-value": "^2.0.6", @@ -13295,7 +13295,7 @@ "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", "dev": true } } @@ -13303,7 +13303,7 @@ "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=", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", "dev": true, "requires": { "is-number": "^3.0.0", @@ -13319,7 +13319,7 @@ "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", "dev": true, "requires": { "kind-of": "^3.0.2" @@ -13328,7 +13328,7 @@ "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, "requires": { "is-buffer": "^1.1.5" @@ -13339,7 +13339,7 @@ "kind-of": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", "dev": true, "requires": { "is-buffer": "^1.1.5" @@ -13402,7 +13402,7 @@ "hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", "dev": true, "requires": { "hash.js": "^1.0.3", @@ -13421,7 +13421,7 @@ "home-or-tmp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", - "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "integrity": "sha512-ycURW7oUxE2sNiPVw1HVEFsW+ecOpJ5zaj7eC0RlwhibhRBod20muUN8qu/gzx956YrLolVvs1MTXwKgC2rVEg==", "dev": true, "requires": { "os-homedir": "^1.0.0", @@ -13437,7 +13437,7 @@ "hpack.js": { "version": "2.1.6", "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", "dev": true, "requires": { "inherits": "^2.0.1", @@ -13449,7 +13449,7 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "dev": true }, "readable-stream": { @@ -13481,13 +13481,13 @@ "hsl-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", - "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", + "integrity": "sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A==", "dev": true }, "hsla-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", - "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", + "integrity": "sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA==", "dev": true }, "html-encoding-sniffer": { @@ -13561,7 +13561,7 @@ "html-webpack-plugin": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz", - "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=", + "integrity": "sha512-Br4ifmjQojUP4EmHnRBoUIYcZ9J7M4bTMcm7u6xoIAIuq2Nte4TzXX0533owvkQKQD1WeMTTTyD4Ni4QKxS0Bg==", "dev": true, "requires": { "html-minifier": "^3.2.3", @@ -13582,13 +13582,13 @@ "emojis-list": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "integrity": "sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng==", "dev": true }, "loader-utils": { "version": "0.2.17", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", - "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "integrity": "sha512-tiv66G0SmiOx+pLWMtGEkfSEejxvb6N6uRrQjfWJIT79W9GMpgKeCAmm9aVBKtd4WEgntciI8CsGqjpDoCWJug==", "dev": true, "requires": { "big.js": "^3.1.3", @@ -13660,7 +13660,7 @@ "http-deceiver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", "dev": true }, "http-errors": { @@ -13786,7 +13786,7 @@ "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=", + "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", "dev": true }, "human-signals": { @@ -13819,7 +13819,7 @@ "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=", + "integrity": "sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==", "dev": true, "requires": { "harmony-reflect": "^1.4.6" @@ -13833,7 +13833,7 @@ "iferr": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "integrity": "sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==", "dev": true }, "ignore": { @@ -13868,13 +13868,13 @@ "import-lazy": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", + "integrity": "sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==", "dev": true }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true }, "indent-string": { @@ -13886,7 +13886,7 @@ "indexes-of": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "integrity": "sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==", "dev": true }, "indexof": { @@ -13903,7 +13903,7 @@ "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dev": true, "requires": { "once": "^1.3.0", @@ -13962,7 +13962,7 @@ "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=", + "integrity": "sha512-vOx7VprsKyllwjSkLV79NIhpyLfr3jAp7VaTCMXOJHu4m0Ew1CZ2fcjASwmV1jI3BWuWHB013M48eyeldk9gYg==", "dev": true }, "is-accessor-descriptor": { @@ -13982,7 +13982,7 @@ "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true }, "is-bigint": { @@ -14018,7 +14018,7 @@ "is-builtin-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "integrity": "sha512-C2wz7Juo5pUZTFQVer9c+9b4qw3I5T/CHQxQyhVu7BJel6C22FmsLIWsdseYyOw6xz9Pqy9eJWSkQ7+3iN1HVw==", "dev": true, "requires": { "builtin-modules": "^1.0.0" @@ -14042,7 +14042,7 @@ "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=", + "integrity": "sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA==", "dev": true, "requires": { "css-color-names": "^0.0.4", @@ -14098,7 +14098,7 @@ "is-directory": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==", "dev": true }, "is-docker": { @@ -14110,13 +14110,13 @@ "is-dotfile": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "integrity": "sha512-9YclgOGtN/f8zx0Pr4FQYMdibBiTaH3sn52vjYip4ZSf6C4/6RfTEZ+MR4GvKhCxdPh21Bg42/WL55f6KSnKpg==", "dev": true }, "is-equal-shallow": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "integrity": "sha512-0EygVC5qPvIyb+gSz7zdD5/AAoS6Qrx1e//6N4yv4oNm30kqvdmG66oZFWVlQHUWe5OjP08FuTw2IdT0EOTcYA==", "dev": true, "requires": { "is-primitive": "^2.0.0" @@ -14176,7 +14176,7 @@ "is-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", "dev": true }, "is-negative-zero": { @@ -14236,13 +14236,13 @@ "is-posix-bracket": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "integrity": "sha512-Yu68oeXJ7LeWNmZ3Zov/xg/oDBnBK2RNxwYY1ilNJX+tKKZqgPK+qOn/Gs9jEu66KDY9Netf5XLKNGzas/vPfQ==", "dev": true }, "is-primitive": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "integrity": "sha512-N3w1tFaRfk3UrPfqeRyD+GYDASU3W5VinKhlORy8EWVf/sIdDL9GAcew85XmktCfH+ngG7SRXEVDoO18WMdB/Q==", "dev": true }, "is-regex": { @@ -14256,7 +14256,7 @@ "is-regexp": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", - "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", + "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", "dev": true }, "is-resolvable": { @@ -14298,7 +14298,7 @@ "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", "dev": true }, "is-unicode-supported": { @@ -14310,7 +14310,7 @@ "is-utf8": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", "dev": true }, "is-weakref": { @@ -14331,7 +14331,7 @@ "is-wsl": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", "dev": true }, "is-yarn-global": { @@ -14343,18 +14343,18 @@ "isarray": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" + "integrity": "sha512-c2cu3UxbI+b6kR3fy0nRnAhodsvR9dx7U5+znCOzdj6IfP3upFURTr0Xl5BlQZNKZjEtxrmVyfSdeE3O57smoQ==" }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==" }, "isomorphic-fetch": { "version": "3.0.0", @@ -14387,7 +14387,7 @@ "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", "dev": true }, "istanbul-api": { @@ -14462,13 +14462,13 @@ "has-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", "dev": true }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", "dev": true, "requires": { "has-flag": "^1.0.0" @@ -15110,13 +15110,13 @@ "camelcase": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "integrity": "sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==", "dev": true }, "cliui": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==", "dev": true, "requires": { "string-width": "^1.0.1", @@ -15127,7 +15127,7 @@ "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", "dev": true, "requires": { "code-point-at": "^1.0.0", @@ -15140,7 +15140,7 @@ "find-up": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", "dev": true, "requires": { "locate-path": "^2.0.0" @@ -15164,7 +15164,7 @@ "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=", + "integrity": "sha512-3p6ZOGNbiX4CdvEd1VcE6yi78UrGNpjHO33noGwHCnT/o2fyllJDepsm8+mFFv/DvtwFHht5HIHSyOy5a+ChVQ==", "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -15176,7 +15176,7 @@ "locate-path": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", "dev": true, "requires": { "p-locate": "^2.0.0", @@ -15195,7 +15195,7 @@ "p-locate": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", "dev": true, "requires": { "p-limit": "^1.1.0" @@ -15210,7 +15210,7 @@ "path-type": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "integrity": "sha512-dUnb5dXUf+kzhC/W/F4e5/SkluXIFf5VUHolW1Eg1irn1hGWjPGdsRcvYJ1nD6lhk8Ir7VM0bHJKsYTx8Jx9OQ==", "dev": true, "requires": { "pify": "^2.0.0" @@ -15225,7 +15225,7 @@ "read-pkg": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "integrity": "sha512-eFIBOPW7FGjzBuk3hdXEuNSiTZS/xEMlH49HxMyzb0hyPfu4EhVjT2DH32K1hSSmVq4sebAWnZuuY5auISUTGA==", "dev": true, "requires": { "load-json-file": "^2.0.0", @@ -15236,7 +15236,7 @@ "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=", + "integrity": "sha512-1orxQfbWGUiTn9XsPlChs6rLie/AV9jwZTGmu2NZw/CUDJQchXJFYE0Fq5j7+n558T1JhDWLdhyd1Zj+wLY//w==", "dev": true, "requires": { "find-up": "^2.0.0", @@ -15274,7 +15274,7 @@ "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", "dev": true, "requires": { "ansi-regex": "^3.0.0" @@ -15285,7 +15285,7 @@ "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", "dev": true, "requires": { "ansi-regex": "^2.0.0" @@ -15294,13 +15294,13 @@ "strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true }, "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==", "dev": true, "requires": { "string-width": "^1.0.1", @@ -15310,7 +15310,7 @@ "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", "dev": true, "requires": { "code-point-at": "^1.0.0", @@ -15329,7 +15329,7 @@ "yargs": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-9.0.1.tgz", - "integrity": "sha1-UqzCP+7Kw0BCB47njAwAf1CF20w=", + "integrity": "sha512-XS0NJoM9Iz0azh1cdgfLF5VFK6BSWfrrqA0V2tIx3fV6aGrWCseVDwOkIBg746ev0hes59od5ZvQAfdET4H0pw==", "dev": true, "requires": { "camelcase": "^4.1.0", @@ -15350,7 +15350,7 @@ "yargs-parser": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", - "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "integrity": "sha512-WhzC+xgstid9MbVUktco/bf+KJG+Uu6vMX0LN1sLJvwmbCQVxb4D8LzogobonKycNasCZLdOzTAk1SK7+K7swg==", "dev": true, "requires": { "camelcase": "^4.1.0" @@ -15458,7 +15458,7 @@ "jsdom": { "version": "9.12.0", "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-9.12.0.tgz", - "integrity": "sha1-6MVG//ywbADUgzyoRBD+1/igl9Q=", + "integrity": "sha512-Qw4oqNxo4LyzkSqVIyCnEltTc4xV3g1GBaI88AvYTesWzmWHUSoMNmhBjUBa+6ldXIBJS9xoeLNJPfUAykTyxw==", "dev": true, "requires": { "abab": "^1.0.3", @@ -15485,7 +15485,7 @@ "acorn": { "version": "4.0.13", "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "integrity": "sha512-fu2ygVGuMmlzG8ZeRJ0bvR41nsAkxxhbyk8bZ1SS521Z7vmgJFTQQlfz/Mp/nJexGBz+v8sC9bM6+lNgskt4Ug==", "dev": true } } @@ -15499,7 +15499,7 @@ "json-buffer": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", + "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", "dev": true }, "json-parse-better-errors": { @@ -15529,7 +15529,7 @@ "json-stable-stringify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "integrity": "sha512-i/J297TW6xyj7sDFa7AmBPkQvLIxWr2kKPWI26tXydnZrzVAocNqn5DMNT1Mzk0vit1V5UkRM7C1KdVNp7Lmcg==", "dev": true, "requires": { "jsonify": "~0.0.0" @@ -15538,13 +15538,13 @@ "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=", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, "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=", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", "dev": true }, "json5": { @@ -15683,7 +15683,7 @@ "lazy-ass": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", - "integrity": "sha1-eZllXoZGwX8In90YfRUNMyTVRRM=", + "integrity": "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==", "dev": true }, "lcid": { @@ -15703,7 +15703,7 @@ "leven": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", - "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=", + "integrity": "sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA==", "dev": true }, "levn": { @@ -15833,7 +15833,7 @@ "load-json-file": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==", "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -16004,7 +16004,7 @@ "lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", "dev": true }, "lodash.foreach": { @@ -16063,7 +16063,7 @@ "lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", "dev": true }, "lodash.merge": { @@ -16081,13 +16081,13 @@ "lodash.once": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", "dev": true }, "lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", "dev": true }, "lodash.support": { @@ -16102,7 +16102,7 @@ "lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", "dev": true }, "log-symbols": { @@ -16330,7 +16330,7 @@ "lower-case": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", + "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==", "dev": true }, "lowercase-keys": { @@ -16396,13 +16396,13 @@ "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", "dev": true }, "map-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", "dev": true, "requires": { "object-visit": "^1.0.0" @@ -16434,7 +16434,7 @@ "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "dev": true }, "mem": { @@ -16463,7 +16463,7 @@ "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=", + "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==", "dev": true, "requires": { "errno": "^0.1.3", @@ -16473,7 +16473,7 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "dev": true }, "readable-stream": { @@ -16511,7 +16511,7 @@ "merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", "dev": true }, "merge-stream": { @@ -16529,7 +16529,7 @@ "methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", "dev": true }, "microevent.ts": { @@ -16643,7 +16643,7 @@ "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=", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", "dev": true }, "minimatch": { @@ -16774,7 +16774,7 @@ "move-concurrently": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", - "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "integrity": "sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==", "dev": true, "requires": { "aproba": "^1.1.1", @@ -16870,7 +16870,7 @@ "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, "negotiator": { @@ -16912,13 +16912,13 @@ "webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", "dev": true }, "whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dev": true, "requires": { "tr46": "~0.0.3", @@ -16936,7 +16936,7 @@ "node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", "dev": true }, "node-libs-browser": { @@ -16984,13 +16984,13 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "dev": true }, "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", "dev": true }, "readable-stream": { @@ -17064,7 +17064,7 @@ "normalize-range": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", "dev": true }, "normalize-url": { @@ -17094,7 +17094,7 @@ "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", "dev": true }, "nwmatcher": { @@ -17118,12 +17118,12 @@ "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" }, "object-copy": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", "dev": true, "requires": { "copy-descriptor": "^0.1.0", @@ -17134,7 +17134,7 @@ "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "dev": true, "requires": { "is-descriptor": "^0.1.0" @@ -17155,7 +17155,7 @@ "object-visit": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", "dev": true, "requires": { "isobject": "^3.0.0" @@ -17609,7 +17609,7 @@ "object.omit": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "integrity": "sha512-UiAM5mhmIuKLsOvrL+B0U2d1hXHF3bFYWIuH1LMpuV2EJEHG1Ntz06PgLEHjm6VFd87NpH8rastvPoyv6UW2fA==", "dev": true, "requires": { "for-own": "^0.1.4", @@ -17619,7 +17619,7 @@ "object.pick": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", "dev": true, "requires": { "isobject": "^3.0.1" @@ -17741,7 +17741,7 @@ "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, "requires": { "wrappy": "1" @@ -18329,13 +18329,13 @@ "os-browserify": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", "dev": true }, "os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", "dev": true }, "os-locale": { @@ -18352,13 +18352,13 @@ "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", "dev": true }, "ospath": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz", - "integrity": "sha1-EnZjl3Sj+O8lcvf+QoDg6kVQwHs=", + "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==", "dev": true }, "p-cancelable": { @@ -18370,13 +18370,13 @@ "p-defer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "integrity": "sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==", "dev": true }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", "dev": true }, "p-limit": { @@ -18481,7 +18481,7 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "dev": true }, "readable-stream": { @@ -18513,7 +18513,7 @@ "param-case": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", - "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "integrity": "sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==", "dev": true, "requires": { "no-case": "^2.2.0" @@ -18552,7 +18552,7 @@ "parse-glob": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "integrity": "sha512-FC5TeK0AwXzq3tUBFtH74naWkPQCEWs4K+xMxWZBlKDWu0bVHXGZa+KKqxKidd7xwhdZ19ZNuF2uO1M/r196HA==", "dev": true, "requires": { "glob-base": "^0.3.0", @@ -18573,7 +18573,7 @@ "parse5": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz", - "integrity": "sha1-m387DeMr543CQBsXVzzK8Pb1nZQ=", + "integrity": "sha512-w2jx/0tJzvgKwZa58sj2vAYq/S/K1QJfIB3cWYea/Iu1scFPDQQ3IQiVZTHWtRBwAjv2Yd7S/xeZf3XqLDb3bA==", "dev": true }, "parseqs": { @@ -18595,7 +18595,7 @@ "pascalcase": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", "dev": true }, "path-browserify": { @@ -18607,7 +18607,7 @@ "path-dirname": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", "dev": true, "optional": true }, @@ -18619,13 +18619,13 @@ "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=", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true }, "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", "dev": true }, "path-parse": { @@ -18637,7 +18637,7 @@ "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=", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", "dev": true }, "path-type": { @@ -18675,19 +18675,19 @@ "pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", "dev": true }, "per-env": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/per-env/-/per-env-1.0.2.tgz", - "integrity": "sha1-dOXxosQBtyzv5/2HKz8/a3nAS7E=", + "integrity": "sha512-ShJSJb8a1YVRJnN6Acdbj4xayfUjpj3nLTcfsjZ+bYCGWceUiRDZb5H3sijcc4hVzLlZiRK/H/NaXGMxyEULpA==", "dev": true }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", "dev": true }, "picocolors": { @@ -18711,13 +18711,13 @@ "pinkie": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", "dev": true }, "pinkie-promise": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", "dev": true, "requires": { "pinkie": "^2.0.0" @@ -18805,7 +18805,7 @@ "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=", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", "dev": true }, "postcss": { @@ -20146,13 +20146,13 @@ "prepend-http": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", "dev": true }, "preserve": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "integrity": "sha512-s/46sYeylUfHNjI+sA/78FAHlmIuKqI9wNnzEOGehAlUUYeObv5C2mOinXBjyUyWmJ2SfcS2/ydApH4hTF4WXQ==", "dev": true }, "prettier": { @@ -20212,7 +20212,7 @@ "process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", "dev": true }, "process-nextick-args": { @@ -20291,7 +20291,7 @@ "promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", "dev": true }, "promise-polyfill": { @@ -20349,19 +20349,19 @@ "proxy-from-env": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", - "integrity": "sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4=", + "integrity": "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==", "dev": true }, "prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", "dev": true }, "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", "dev": true }, "psl": { @@ -20443,7 +20443,7 @@ "q": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", "dev": true }, "qrcode": { @@ -20475,7 +20475,7 @@ "querystring-es3": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", "dev": true }, "queue-microtask": { @@ -20817,7 +20817,7 @@ "read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==", "dev": true, "requires": { "load-json-file": "^1.0.0", @@ -20828,7 +20828,7 @@ "read-pkg-up": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==", "dev": true, "requires": { "find-up": "^1.0.0", @@ -20838,7 +20838,7 @@ "find-up": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", "dev": true, "requires": { "path-exists": "^2.0.0", @@ -20848,7 +20848,7 @@ "path-exists": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", "dev": true, "requires": { "pinkie-promise": "^2.0.0" @@ -21013,13 +21013,13 @@ "relateurl": { "version": "0.2.7", "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", "dev": true }, "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=", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", "dev": true }, "renderkid": { @@ -21038,7 +21038,7 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", "dev": true }, "css-select": { @@ -21106,7 +21106,7 @@ "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", "dev": true, "requires": { "ansi-regex": "^2.0.0" @@ -21123,13 +21123,13 @@ "repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", "dev": true }, "repeating": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "integrity": "sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==", "dev": true, "requires": { "is-finite": "^1.0.0" @@ -21184,7 +21184,7 @@ "request-progress": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", - "integrity": "sha1-TKdUCBx/7GP1BeT6qCWqBs1mnb4=", + "integrity": "sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==", "dev": true, "requires": { "throttleit": "^1.0.0" @@ -21221,7 +21221,7 @@ "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" }, "require-from-string": { "version": "2.0.2", @@ -21237,7 +21237,7 @@ "requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", "dev": true }, "resolve": { @@ -21258,13 +21258,13 @@ "resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", "dev": true }, "responselike": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", "dev": true, "requires": { "lowercase-keys": "^1.0.0" @@ -21307,13 +21307,13 @@ "rgb-regex": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", - "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", + "integrity": "sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w==", "dev": true }, "rgba-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", - "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", + "integrity": "sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg==", "dev": true }, "rimraf": { @@ -21394,7 +21394,7 @@ "run-queue": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", - "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "integrity": "sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==", "dev": true, "requires": { "aproba": "^1.1.1" @@ -21427,7 +21427,7 @@ "safe-regex": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", "dev": true, "requires": { "ret": "~0.1.10" @@ -21442,7 +21442,7 @@ "sane": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/sane/-/sane-2.5.2.tgz", - "integrity": "sha1-tNwYYcIbQn6SlQej51HiosuKs/o=", + "integrity": "sha512-OuZwD1QJ2R9Dbnhd7Ur8zzD8l+oADp9npyxK63Q9nZ4AjhB2QwDQcQlD8iuUsGm5AZZqtEuCaJvK1rxGRxyQ1Q==", "dev": true, "requires": { "anymatch": "^2.0.0", @@ -21489,7 +21489,7 @@ "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -21637,7 +21637,7 @@ "fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", "dev": true, "requires": { "extend-shallow": "^2.0.1", @@ -21649,7 +21649,7 @@ "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -21695,7 +21695,7 @@ "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", "dev": true, "requires": { "kind-of": "^3.0.2" @@ -21704,7 +21704,7 @@ "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, "requires": { "is-buffer": "^1.1.5" @@ -21790,7 +21790,7 @@ "select-hose": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", "dev": true }, "selfsigned": { @@ -21858,7 +21858,7 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true } } @@ -21895,7 +21895,7 @@ "serve-index": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", "dev": true, "requires": { "accepts": "~1.3.4", @@ -21919,13 +21919,13 @@ "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "dev": true }, "http-errors": { "version": "1.6.3", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", "dev": true, "requires": { "depd": "~1.1.2", @@ -21937,7 +21937,7 @@ "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", "dev": true }, "setprototypeof": { @@ -21949,7 +21949,7 @@ "statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", "dev": true } } @@ -21969,12 +21969,12 @@ "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" }, "setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", "dev": true }, "setprototypeof": { @@ -22013,7 +22013,7 @@ "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", "dev": true, "requires": { "shebang-regex": "^1.0.0" @@ -22022,7 +22022,7 @@ "shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", "dev": true }, "shellwords": { @@ -22059,7 +22059,7 @@ "simple-swizzle": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", "dev": true, "requires": { "is-arrayish": "^0.3.1" @@ -22148,7 +22148,7 @@ "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "dev": true, "requires": { "is-descriptor": "^0.1.0" @@ -22157,7 +22157,7 @@ "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -22179,7 +22179,7 @@ "define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", "dev": true, "requires": { "is-descriptor": "^1.0.0" @@ -22301,7 +22301,7 @@ "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "dev": true }, "source-map-js": { @@ -22455,7 +22455,7 @@ "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, "sshpk": { @@ -22501,13 +22501,13 @@ "stack-trace": { "version": "0.0.10", "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", "dev": true }, "static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", "dev": true, "requires": { "define-property": "^0.2.5", @@ -22517,7 +22517,7 @@ "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "dev": true, "requires": { "is-descriptor": "^0.1.0" @@ -22534,7 +22534,7 @@ "stealthy-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==", "dev": true }, "stream-browserify": { @@ -22550,7 +22550,7 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "dev": true }, "readable-stream": { @@ -22605,7 +22605,7 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "dev": true }, "readable-stream": { @@ -22643,7 +22643,7 @@ "string-length": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", - "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", + "integrity": "sha512-Qka42GGrS8Mm3SZ+7cH8UXiIWI867/b/Z/feQSpQx/rbfB8UGknGEZVaUQMOUVj+soY6NpWAxily63HI1OckVQ==", "dev": true, "requires": { "astral-regex": "^1.0.0", @@ -22659,7 +22659,7 @@ "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", "dev": true, "requires": { "ansi-regex": "^3.0.0" @@ -23091,7 +23091,7 @@ "is-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", "dev": true } } @@ -23107,7 +23107,7 @@ "strip-bom": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", "dev": true, "requires": { "is-utf8": "^0.2.0" @@ -23122,7 +23122,7 @@ "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", "dev": true }, "strip-final-newline": { @@ -23252,7 +23252,7 @@ "svg.easing.js": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/svg.easing.js/-/svg.easing.js-2.0.0.tgz", - "integrity": "sha1-iqmUawqOJ4V6XEChDrpAkeVpHxI=", + "integrity": "sha512-//ctPdJMGy22YoYGV+3HEfHbm6/69LJUTAqI2/5qBvaNHZ9uUFVC82B0Pl299HzgH13rKrBgi4+XyXXyVWWthA==", "requires": { "svg.js": ">=2.3.x" } @@ -23260,7 +23260,7 @@ "svg.filter.js": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/svg.filter.js/-/svg.filter.js-2.0.2.tgz", - "integrity": "sha1-kQCOFROJ3ZIwd5/L5uLJo2LRwgM=", + "integrity": "sha512-xkGBwU+dKBzqg5PtilaTb0EYPqPfJ9Q6saVldX+5vCRy31P6TlRCP3U9NxH3HEufkKkpNgdTLBJnmhDHeTqAkw==", "requires": { "svg.js": "^2.2.5" } @@ -23534,25 +23534,25 @@ "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, "throat": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", - "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=", + "integrity": "sha512-wCVxLDcFxw7ujDxaeJC6nfl2XfHJNYs8yUYJnvMgtPEFlttP9tHSfRUv2vBe6C4hkVFPWoP1P6ZccbYjmSEkKA==", "dev": true }, "throttleit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", - "integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=", + "integrity": "sha512-rkTVqu6IjfQ/6+uNuuc3sZek4CEYxTJom3IktzgdSxcZqdARuebbA/f4QmAxMQIxqq9ZLEUkSYqvuk1I6VKq4g==", "dev": true }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", "dev": true }, "through2": { @@ -23568,7 +23568,7 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "dev": true }, "readable-stream": { @@ -23615,7 +23615,7 @@ "timsort": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", - "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", + "integrity": "sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==", "dev": true }, "tiny-invariant": { @@ -23638,19 +23638,19 @@ "to-arraybuffer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==", "dev": true }, "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "dev": true }, "to-object-path": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", "dev": true, "requires": { "kind-of": "^3.0.2" @@ -23704,7 +23704,7 @@ "toposort": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz", - "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=", + "integrity": "sha512-FclLrw8b9bMWf4QlCJuHBEVhSRsqDj6u3nIjAzPeJvgl//1hBlffdlk0MALceL14+koWEdU4ofRAXofbODxQzg==", "dev": true }, "totalist": { @@ -23726,13 +23726,13 @@ "tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", "dev": true }, "trim-right": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "integrity": "sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw==", "dev": true }, "ts-pnp": { @@ -23767,13 +23767,13 @@ "tty-browserify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "integrity": "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==", "dev": true }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", "dev": true, "requires": { "safe-buffer": "^5.0.1" @@ -23782,7 +23782,7 @@ "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", "dev": true }, "type-check": { @@ -23824,7 +23824,7 @@ "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", "dev": true }, "typedarray-to-buffer": { @@ -23951,7 +23951,7 @@ "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", "dev": true }, "set-value": { @@ -23971,13 +23971,13 @@ "uniq": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "integrity": "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==", "dev": true }, "uniqs": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", - "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", + "integrity": "sha512-mZdDpf3vBV5Efh29kMw5tXoup/buMgxLzOt/XKFKcVmi+15ManNQWr6HfZ2aiZTYlYixbdNJ0KFmIZIv52tHSQ==", "dev": true }, "unique-filename": { @@ -24021,19 +24021,19 @@ "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "dev": true }, "unquote": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", + "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==", "dev": true }, "unset-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", "dev": true, "requires": { "has-value": "^0.3.1", @@ -24043,13 +24043,13 @@ "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", "dev": true }, "has-value": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", "dev": true, "requires": { "get-value": "^2.0.3", @@ -24060,7 +24060,7 @@ "isobject": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", "dev": true, "requires": { "isarray": "1.0.0" @@ -24071,13 +24071,13 @@ "has-values": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", "dev": true }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "dev": true } } @@ -24209,7 +24209,7 @@ "upper-case": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", + "integrity": "sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==", "dev": true }, "uri-js": { @@ -24224,13 +24224,13 @@ "urix": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", "dev": true }, "url": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", "dev": true, "requires": { "punycode": "1.3.2", @@ -24240,13 +24240,13 @@ "punycode": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==", "dev": true }, "querystring": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", "dev": true } } @@ -24293,7 +24293,7 @@ "url-parse-lax": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", "dev": true, "requires": { "prepend-http": "^2.0.0" @@ -24308,7 +24308,7 @@ "useragent-parser-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/useragent-parser-js/-/useragent-parser-js-1.0.3.tgz", - "integrity": "sha1-N6l7MbA+N5ySibl5eQPGzncruv0=" + "integrity": "sha512-gmU2LvhU8GfqUY2A1gihk5FzshqtbPYbgUNqFPwdzWlerF5XG4js0HmPgLXNvgQRIwmXM5sN3HzuWlhYdGhriQ==" }, "util": { "version": "0.11.1", @@ -24322,7 +24322,7 @@ "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", "dev": true } } @@ -24330,7 +24330,7 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, "util.promisify": { @@ -24429,13 +24429,13 @@ "utila": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", "dev": true }, "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", "dev": true }, "uuid": { @@ -24471,7 +24471,7 @@ "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "dev": true }, "vendors": { @@ -24483,7 +24483,7 @@ "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", "dev": true, "requires": { "assert-plus": "^1.0.0", @@ -24563,7 +24563,7 @@ "watch": { "version": "0.18.0", "resolved": "https://registry.npmjs.org/watch/-/watch-0.18.0.tgz", - "integrity": "sha1-KAlUdsbffJDJYxOJkMClQj60uYY=", + "integrity": "sha512-oUcoHFG3UF2pBlHcMORAojsN09BfqSfWYWlR3eSSjUFR7eBEx53WT2HX/vZeVTTIVCGShcazb+t6IcBRCNXqvA==", "dev": true, "requires": { "exec-sh": "^0.2.0", @@ -24804,7 +24804,7 @@ "fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", "dev": true, "optional": true, "requires": { @@ -24817,7 +24817,7 @@ "glob-parent": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", "dev": true, "optional": true, "requires": { @@ -24828,7 +24828,7 @@ "is-glob": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", "dev": true, "optional": true, "requires": { @@ -24859,7 +24859,7 @@ "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=", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", "dev": true, "optional": true, "requires": { @@ -24926,7 +24926,7 @@ "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", "dev": true, "optional": true, "requires": { @@ -24936,7 +24936,7 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "dev": true, "optional": true }, @@ -25051,7 +25051,7 @@ "wcwidth": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", "dev": true, "requires": { "defaults": "^1.0.3" @@ -25127,7 +25127,7 @@ "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -25314,7 +25314,7 @@ "fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", "dev": true, "requires": { "extend-shallow": "^2.0.1", @@ -25326,7 +25326,7 @@ "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -25377,7 +25377,7 @@ "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", "dev": true, "requires": { "kind-of": "^3.0.2" @@ -25386,7 +25386,7 @@ "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, "requires": { "is-buffer": "^1.1.5" @@ -25933,7 +25933,7 @@ "whatwg-url": { "version": "4.8.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-4.8.0.tgz", - "integrity": "sha1-0pgaqRSMHgCkHFphMRZqtGg7vMA=", + "integrity": "sha512-nUvUPuenPFtPfy/X+dAYh/TfRbTBlnXTM5iIfLseJFkkQewmpG9pGR6i87E9qL+lZaJzv+99kkQWoGOtLfkZQQ==", "dev": true, "requires": { "tr46": "~0.0.3", @@ -25943,7 +25943,7 @@ "webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", "dev": true } } @@ -25990,7 +25990,7 @@ "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==" }, "widest-line": { "version": "3.1.0", @@ -26387,7 +26387,7 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, "write-file-atomic": { @@ -26415,7 +26415,7 @@ "xml-name-validator": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz", - "integrity": "sha1-TYuPHszTQZqjYgYb7O9RXh5VljU=", + "integrity": "sha512-jRKe/iQYMyVJpzPH+3HL97Lgu5HrCfii+qSo+TfjKHtOnvbnvdVfMYrn9Q34YV81M2e5sviJlI6Ko9y+nByzvA==", "dev": true }, "xmlchars": { @@ -26481,7 +26481,7 @@ "yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", "dev": true, "requires": { "buffer-crc32": "~0.2.3", From 9f373e556da60661242f4aa2f660c13fe94b1748 Mon Sep 17 00:00:00 2001 From: euguuu Date: Mon, 31 Oct 2022 17:21:26 +0100 Subject: [PATCH 105/164] change package-lock --- front/package-lock.json | 726 ++++++++++++++++++++-------------------- 1 file changed, 363 insertions(+), 363 deletions(-) diff --git a/front/package-lock.json b/front/package-lock.json index 2d8a3dfe58..d376a92873 100644 --- a/front/package-lock.json +++ b/front/package-lock.json @@ -3834,7 +3834,7 @@ "@types/warning": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.0.tgz", - "integrity": "sha512-t/Tvs5qR47OLOr+4E9ckN8AmP2Tf16gWq+/qA4iUGS/OOyHVO8wv2vjJuX8SNOUTJyWb+2t7wJm6cXILFnOROA==" + "integrity": "sha1-DSUBJorY+ZYrdA04fEZU9fjiPlI=" }, "@types/webpack": { "version": "4.41.32", @@ -4270,7 +4270,7 @@ "abab": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz", - "integrity": "sha512-I+Wi+qiE2kUXyrRhNsWv6XsjUTBJjSoVSctKNBfLG5zG/Xe7Rjbxf13+vqYHNTwHaFU+FtSlVxOCTiMEVtPv0A==", + "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=", "dev": true }, "accepts": { @@ -4309,7 +4309,7 @@ "acorn-globals": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz", - "integrity": "sha512-uWttZCk96+7itPxK8xCzY86PnxKTMrReKDqrHzv42VQY0K30PUO8WY13WMOuI+cOdX4EIdzdvQ8k6jkuGRFMYw==", + "integrity": "sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=", "dev": true, "requires": { "acorn": "^4.0.4" @@ -4318,7 +4318,7 @@ "acorn": { "version": "4.0.13", "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha512-fu2ygVGuMmlzG8ZeRJ0bvR41nsAkxxhbyk8bZ1SS521Z7vmgJFTQQlfz/Mp/nJexGBz+v8sC9bM6+lNgskt4Ug==", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", "dev": true } } @@ -4406,7 +4406,7 @@ "alphanum-sort": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", - "integrity": "sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ==", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", "dev": true }, "ansi-align": { @@ -4800,7 +4800,7 @@ "append-transform": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", - "integrity": "sha512-Yisb7ew0ZEyDtRYQ+b+26o9KbiYPFxwcsxKzbssigzRRMJ9LpExPVUg6Fos7eP7yP3q7///tzze4nm4lTptPBw==", + "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", "dev": true, "requires": { "default-require-extensions": "^1.0.0" @@ -4845,7 +4845,7 @@ "arr-union": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", "dev": true }, "array-buffer-to-hex": { @@ -4856,7 +4856,7 @@ "array-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha512-H3LU5RLiSsGXPhN+Nipar0iR0IofH+8r89G2y1tBKxQ/agagKyAjhkAFDRBfodP2caPrNKHpAWNIM/c9yeL7uA==", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", "dev": true }, "array-flatten": { @@ -5222,7 +5222,7 @@ "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", "dev": true }, "asn1": { @@ -5267,13 +5267,13 @@ "inherits": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", "dev": true }, "util": { "version": "0.10.3", "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", "dev": true, "requires": { "inherits": "2.0.1" @@ -5284,13 +5284,13 @@ "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true }, "assign-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", "dev": true }, "ast-metadata-inferer": { @@ -5341,7 +5341,7 @@ "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, "at-least-node": { @@ -5381,7 +5381,7 @@ "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", "dev": true }, "aws4": { @@ -5408,7 +5408,7 @@ "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", "dev": true, "requires": { "chalk": "^1.1.3", @@ -5419,19 +5419,19 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", "dev": true }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { "ansi-styles": "^2.2.1", @@ -5444,13 +5444,13 @@ "js-tokens": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", "dev": true }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { "ansi-regex": "^2.0.0" @@ -5553,7 +5553,7 @@ "jsesc": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha512-Mke0DA0QjUWuJlhsE0ZPPhYiJkRap642SmI/4ztCFaUs6V2AiH1sfecc+57NgaryfAA2VR3v6O+CSjC1jZJKOA==", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", "dev": true } } @@ -5561,7 +5561,7 @@ "babel-helpers": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", - "integrity": "sha512-n7pFrqQm44TCYvrCDb0MqabAF+JUBq+ijBvNMUxpkLjJaAu32faIexewMumrH5KLLJ1HDyT0PTEqRyAe/GwwuQ==", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", "dev": true, "requires": { "babel-runtime": "^6.22.0", @@ -5593,7 +5593,7 @@ "babel-messages": { "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w==", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", "dev": true, "requires": { "babel-runtime": "^6.22.0" @@ -5623,7 +5623,7 @@ "find-up": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "requires": { "locate-path": "^2.0.0" @@ -5632,7 +5632,7 @@ "locate-path": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "dev": true, "requires": { "p-locate": "^2.0.0", @@ -5651,7 +5651,7 @@ "p-locate": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "dev": true, "requires": { "p-limit": "^1.1.0" @@ -5766,7 +5766,7 @@ "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": "sha512-C4Aq+GaAj83pRQ0EFgTvw5YO6T3Qz2KGrNRwIj9mSoNHVvdZY4KO2uA6HNtNXCw993iSZnckY1aLW8nOi8i4+w==", + "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", "dev": true }, "babel-plugin-transform-react-remove-prop-types": { @@ -5788,7 +5788,7 @@ "babel-register": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", - "integrity": "sha512-veliHlHX06wjaeY8xNITbveXSiI+ASFnOqvne/LaIJIqOWi2Ogmj91KOugEz/hoh/fwMhXNBJPCv8Xaz5CyM4A==", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", "dev": true, "requires": { "babel-core": "^6.26.0", @@ -5803,7 +5803,7 @@ "babel-runtime": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "dev": true, "requires": { "core-js": "^2.4.0", @@ -5821,7 +5821,7 @@ "babel-template": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg==", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", "dev": true, "requires": { "babel-runtime": "^6.26.0", @@ -5842,7 +5842,7 @@ "babel-traverse": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA==", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", "dev": true, "requires": { "babel-code-frame": "^6.26.0", @@ -5882,7 +5882,7 @@ "babel-types": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g==", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", "dev": true, "requires": { "babel-runtime": "^6.26.0", @@ -5894,7 +5894,7 @@ "to-fast-properties": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og==", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", "dev": true } } @@ -5928,7 +5928,7 @@ "define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { "is-descriptor": "^1.0.0" @@ -5984,13 +5984,13 @@ "batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", "dev": true }, "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", "dev": true, "requires": { "tweetnacl": "^0.14.3" @@ -6115,7 +6115,7 @@ "boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", "dev": true }, "boxen": { @@ -6264,7 +6264,7 @@ "brorand": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", "dev": true }, "browser-process-hrtime": { @@ -6285,7 +6285,7 @@ "resolve": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", "dev": true } } @@ -6419,7 +6419,7 @@ "buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", "dev": true }, "buffer-fill": { @@ -6435,19 +6435,19 @@ "buffer-xor": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", "dev": true }, "builtin-modules": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ==", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", "dev": true }, "builtin-status-codes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", "dev": true }, "builtins": { @@ -6459,7 +6459,7 @@ "bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", "dev": true }, "cacache": { @@ -6549,7 +6549,7 @@ "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", "dev": true }, "set-value": { @@ -6623,7 +6623,7 @@ "caller-callsite": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", - "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", "dev": true, "requires": { "callsites": "^2.0.0" @@ -6632,7 +6632,7 @@ "caller-path": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", "dev": true, "requires": { "caller-callsite": "^2.0.0" @@ -6641,13 +6641,13 @@ "callsites": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", "dev": true }, "camel-case": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", - "integrity": "sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==", + "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", "dev": true, "requires": { "no-case": "^2.2.0", @@ -6680,7 +6680,7 @@ "capture-exit": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-1.2.0.tgz", - "integrity": "sha512-IS4lTgp57lUcpXzyCaiUQcRZBxZAkzl+jNXrMUXZjdnr2yujpKUMG9OYeYL29i6fL66ihypvVJ/MeX0B+9pWOg==", + "integrity": "sha1-HF/MSJ/QqwDU8ax64QcuMXP7q28=", "dev": true, "requires": { "rsvp": "^3.3.3" @@ -6689,7 +6689,7 @@ "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", "dev": true }, "chalk": { @@ -6723,7 +6723,7 @@ "check-more-types": { "version": "2.24.0", "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", - "integrity": "sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==", + "integrity": "sha1-FCD/sQ/URNz8ebQ4kbv//TKoRgA=", "dev": true }, "chokidar": { @@ -6873,7 +6873,7 @@ "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { "is-descriptor": "^0.1.0" @@ -7091,7 +7091,7 @@ "clone": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", "dev": true }, "clone-deep": { @@ -7141,13 +7141,13 @@ "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true }, "collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", "dev": true, "requires": { "map-visit": "^1.0.0", @@ -7229,7 +7229,7 @@ "commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", "dev": true }, "compare-json": { @@ -7542,7 +7542,7 @@ "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, "concat-stream": { @@ -7560,7 +7560,7 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, "readable-stream": { @@ -7638,7 +7638,7 @@ "constants-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", "dev": true }, "content-disposition": { @@ -7698,7 +7698,7 @@ "cookie-signature": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", "dev": true }, "copy-concurrently": { @@ -7718,7 +7718,7 @@ "copy-descriptor": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", "dev": true }, "copy-webpack-plugin": { @@ -7819,7 +7819,7 @@ "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, "cosmiconfig": { @@ -8014,7 +8014,7 @@ "tr46": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", "dev": true, "requires": { "punycode": "^2.1.0" @@ -8087,7 +8087,7 @@ "cross-spawn": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "dev": true, "requires": { "lru-cache": "^4.0.1", @@ -8158,7 +8158,7 @@ "css-color-names": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", - "integrity": "sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q==", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", "dev": true }, "css-declaration-sorter": { @@ -8325,7 +8325,7 @@ "import-fresh": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", "dev": true, "requires": { "caller-path": "^2.0.0", @@ -8335,7 +8335,7 @@ "parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", "dev": true, "requires": { "error-ex": "^1.3.1", @@ -8431,13 +8431,13 @@ "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": "sha512-6RIcwmV3/cBMG8Aj5gucQRsJb4vv4I4rn6YjPbVWd5+Pn/fuG+YseGvXGk00XLkoZkaj31QOD7vMUpNPC4FIuw==", + "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", "dev": true }, "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": "sha512-JPMZ1TSMRUPVIqEalIBNoBtAYbi8okvcFns4O0YIhcdGebeYZK7dMyHJiQ6GqNBA9kE0Hym4Aqym5rPdsV/4Cw==", + "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", "dev": true }, "cssnano-util-raw-cache": { @@ -8527,7 +8527,7 @@ "cssstyle": { "version": "0.2.37", "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz", - "integrity": "sha512-FUpKc+1FNBsHUr9IsfSGCovr8VuGOiiuzlgCyppKBjJi2jYTOFLN3oiiNRMIvYqbFzF38mqKj4BgcevzU5/kIA==", + "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=", "dev": true, "requires": { "cssom": "0.3.x" @@ -8541,7 +8541,7 @@ "cyclist": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", - "integrity": "sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A==", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", "dev": true }, "cypress": { @@ -8896,7 +8896,7 @@ "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "dev": true, "requires": { "assert-plus": "^1.0.0" @@ -8922,7 +8922,7 @@ "tr46": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", "dev": true, "requires": { "punycode": "^2.1.0" @@ -8972,18 +8972,18 @@ "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==" + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" }, "decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", "dev": true }, "decompress-response": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", "dev": true, "requires": { "mimic-response": "^1.0.0" @@ -9134,7 +9134,7 @@ "default-require-extensions": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", - "integrity": "sha512-Dn2eAftOqXhNXs5f/Xjn7QTZ6kDYkx7u0EXQInN1oyYwsZysu11q7oTtaKcbzLxZRJiDHa8VmwpWmb4lY5FqgA==", + "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", "dev": true, "requires": { "strip-bom": "^2.0.0" @@ -9219,7 +9219,7 @@ "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", "dev": true }, "depd": { @@ -9252,7 +9252,7 @@ "detect-indent": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha512-BDKtmHlOzwI7iRuEkhzsnPoi5ypEhWAJB5RvHWe1kMr06js3uK5B3734i3ui5Yd+wOJV1cpE4JnivPD283GU/A==", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", "dev": true, "requires": { "repeating": "^2.0.0" @@ -9319,7 +9319,7 @@ "dns-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", "dev": true }, "dns-packet": { @@ -9465,7 +9465,7 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, "readable-stream": { @@ -9497,7 +9497,7 @@ "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", "dev": true, "requires": { "jsbn": "~0.1.0", @@ -9507,7 +9507,7 @@ "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", "dev": true } } @@ -9515,7 +9515,7 @@ "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", "dev": true }, "ejs": { @@ -9585,7 +9585,7 @@ "encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", "dev": true }, "end-of-stream": { @@ -9648,7 +9648,7 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, "memory-fs": { @@ -9769,7 +9769,7 @@ "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", "dev": true }, "escape-string-regexp": { @@ -10950,7 +10950,7 @@ "etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", "dev": true }, "eventemitter2": { @@ -11047,7 +11047,7 @@ "expand-range": { "version": "1.8.2", "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha512-AFASGfIlnIbkKPQwX1yHaDjFvh/1gyKJODme52V6IORh69uEYgZp0o9C+qsIGNVEiuuhQU0CSSl++Rlegg1qvA==", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "dev": true, "requires": { "fill-range": "^2.1.0" @@ -11147,7 +11147,7 @@ "extend-shallow": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "dev": true, "requires": { "assign-symbols": "^1.0.0", @@ -11215,7 +11215,7 @@ "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", "dev": true }, "fast-deep-equal": { @@ -11315,7 +11315,7 @@ "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, "fastq": { @@ -11348,7 +11348,7 @@ "fd-slicer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", "dev": true, "requires": { "pend": "~1.2.0" @@ -11424,13 +11424,13 @@ "filename-regex": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha512-BTCqyBaWBTsauvnHiE8i562+EdJj+oUpkqWp2R1iCoR8f6oo8STRu3of7WJJ0TqWtxN50a5YFpzYK4Jj9esYfQ==", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", "dev": true }, "fileset": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", - "integrity": "sha512-UxowFKnAFIwtmSxgKjWAVgjE3Fk7MQJT0ZIyl0NwIFZTrx4913rLaonGJ84V+x/2+w/pe4ULHRns+GZPs1TVuw==", + "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", "dev": true, "requires": { "glob": "^7.0.3", @@ -11558,7 +11558,7 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, "readable-stream": { @@ -11596,13 +11596,13 @@ "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", "dev": true }, "for-own": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha512-SKmowqGTJoPzLO1T0BBJpkfp3EMacCMOuH40hOUbrbzElVktk4DioXVM99QkLCyKoiuOmyjgcWMpVz2xjE7LZw==", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "dev": true, "requires": { "for-in": "^1.0.1" @@ -11611,7 +11611,7 @@ "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", "dev": true }, "fork-ts-checker-webpack-plugin": { @@ -11662,7 +11662,7 @@ "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -11810,7 +11810,7 @@ "fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, "requires": { "extend-shallow": "^2.0.1", @@ -11822,7 +11822,7 @@ "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -11862,7 +11862,7 @@ "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { "kind-of": "^3.0.2" @@ -11871,7 +11871,7 @@ "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "^1.1.5" @@ -11934,7 +11934,7 @@ "fragment-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", "dev": true, "requires": { "map-cache": "^0.2.2" @@ -11943,13 +11943,13 @@ "fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", "dev": true }, "from2": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", "dev": true, "requires": { "inherits": "^2.0.1", @@ -11959,7 +11959,7 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, "readable-stream": { @@ -12018,7 +12018,7 @@ "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": "sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -12030,7 +12030,7 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, "readable-stream": { @@ -12062,7 +12062,7 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, "fsevents": { @@ -12891,7 +12891,7 @@ "getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "dev": true, "requires": { "assert-plus": "^1.0.0" @@ -12900,7 +12900,7 @@ "gittar": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/gittar/-/gittar-0.1.1.tgz", - "integrity": "sha512-p+XuqWJpW9ahUuNTptqeFjudFq31o6Jd+maMBarkMAR5U3K9c7zJB4sQ4BV8mIqrTOV29TtqikDhnZfCD4XNfQ==", + "integrity": "sha1-1pk+phYKhsi3895yKmH3O8meFLQ=", "dev": true, "requires": { "mkdirp": "^0.5.1", @@ -13004,7 +13004,7 @@ "glob-base": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha512-ab1S1g1EbO7YzauaJLkgLp7DZVAqj9M/dvKlTt8DkXA2tiOIcSMrlVI2J1RZyB5iJVccEscjGn+kpOG9788MHA==", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", "dev": true, "requires": { "glob-parent": "^2.0.0", @@ -13108,7 +13108,7 @@ "growly": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", - "integrity": "sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", "dev": true }, "gud": { @@ -13154,7 +13154,7 @@ "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", "dev": true }, "har-validator": { @@ -13210,7 +13210,7 @@ "has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "dev": true, "requires": { "ansi-regex": "^2.0.0" @@ -13219,7 +13219,7 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true } } @@ -13284,7 +13284,7 @@ "has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", "dev": true, "requires": { "get-value": "^2.0.6", @@ -13295,7 +13295,7 @@ "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", "dev": true } } @@ -13303,7 +13303,7 @@ "has-values": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", "dev": true, "requires": { "is-number": "^3.0.0", @@ -13319,7 +13319,7 @@ "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { "kind-of": "^3.0.2" @@ -13328,7 +13328,7 @@ "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "^1.1.5" @@ -13339,7 +13339,7 @@ "kind-of": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { "is-buffer": "^1.1.5" @@ -13402,7 +13402,7 @@ "hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", "dev": true, "requires": { "hash.js": "^1.0.3", @@ -13421,7 +13421,7 @@ "home-or-tmp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", - "integrity": "sha512-ycURW7oUxE2sNiPVw1HVEFsW+ecOpJ5zaj7eC0RlwhibhRBod20muUN8qu/gzx956YrLolVvs1MTXwKgC2rVEg==", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", "dev": true, "requires": { "os-homedir": "^1.0.0", @@ -13437,7 +13437,7 @@ "hpack.js": { "version": "2.1.6", "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", "dev": true, "requires": { "inherits": "^2.0.1", @@ -13449,7 +13449,7 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, "readable-stream": { @@ -13481,13 +13481,13 @@ "hsl-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", - "integrity": "sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A==", + "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", "dev": true }, "hsla-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", - "integrity": "sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA==", + "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", "dev": true }, "html-encoding-sniffer": { @@ -13561,7 +13561,7 @@ "html-webpack-plugin": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz", - "integrity": "sha512-Br4ifmjQojUP4EmHnRBoUIYcZ9J7M4bTMcm7u6xoIAIuq2Nte4TzXX0533owvkQKQD1WeMTTTyD4Ni4QKxS0Bg==", + "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=", "dev": true, "requires": { "html-minifier": "^3.2.3", @@ -13582,13 +13582,13 @@ "emojis-list": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng==", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", "dev": true }, "loader-utils": { "version": "0.2.17", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", - "integrity": "sha512-tiv66G0SmiOx+pLWMtGEkfSEejxvb6N6uRrQjfWJIT79W9GMpgKeCAmm9aVBKtd4WEgntciI8CsGqjpDoCWJug==", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", "dev": true, "requires": { "big.js": "^3.1.3", @@ -13660,7 +13660,7 @@ "http-deceiver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", "dev": true }, "http-errors": { @@ -13786,7 +13786,7 @@ "https-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", "dev": true }, "human-signals": { @@ -13819,7 +13819,7 @@ "identity-obj-proxy": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", - "integrity": "sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==", + "integrity": "sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ=", "dev": true, "requires": { "harmony-reflect": "^1.4.6" @@ -13833,7 +13833,7 @@ "iferr": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", "dev": true }, "ignore": { @@ -13868,13 +13868,13 @@ "import-lazy": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", "dev": true }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, "indent-string": { @@ -13886,7 +13886,7 @@ "indexes-of": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", "dev": true }, "indexof": { @@ -13903,7 +13903,7 @@ "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { "once": "^1.3.0", @@ -13962,7 +13962,7 @@ "is-absolute-url": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", - "integrity": "sha512-vOx7VprsKyllwjSkLV79NIhpyLfr3jAp7VaTCMXOJHu4m0Ew1CZ2fcjASwmV1jI3BWuWHB013M48eyeldk9gYg==", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", "dev": true }, "is-accessor-descriptor": { @@ -13982,7 +13982,7 @@ "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, "is-bigint": { @@ -14018,7 +14018,7 @@ "is-builtin-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha512-C2wz7Juo5pUZTFQVer9c+9b4qw3I5T/CHQxQyhVu7BJel6C22FmsLIWsdseYyOw6xz9Pqy9eJWSkQ7+3iN1HVw==", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", "dev": true, "requires": { "builtin-modules": "^1.0.0" @@ -14042,7 +14042,7 @@ "is-color-stop": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", - "integrity": "sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA==", + "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", "dev": true, "requires": { "css-color-names": "^0.0.4", @@ -14098,7 +14098,7 @@ "is-directory": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", "dev": true }, "is-docker": { @@ -14110,13 +14110,13 @@ "is-dotfile": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha512-9YclgOGtN/f8zx0Pr4FQYMdibBiTaH3sn52vjYip4ZSf6C4/6RfTEZ+MR4GvKhCxdPh21Bg42/WL55f6KSnKpg==", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", "dev": true }, "is-equal-shallow": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha512-0EygVC5qPvIyb+gSz7zdD5/AAoS6Qrx1e//6N4yv4oNm30kqvdmG66oZFWVlQHUWe5OjP08FuTw2IdT0EOTcYA==", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", "dev": true, "requires": { "is-primitive": "^2.0.0" @@ -14176,7 +14176,7 @@ "is-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", "dev": true }, "is-negative-zero": { @@ -14236,13 +14236,13 @@ "is-posix-bracket": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha512-Yu68oeXJ7LeWNmZ3Zov/xg/oDBnBK2RNxwYY1ilNJX+tKKZqgPK+qOn/Gs9jEu66KDY9Netf5XLKNGzas/vPfQ==", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", "dev": true }, "is-primitive": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha512-N3w1tFaRfk3UrPfqeRyD+GYDASU3W5VinKhlORy8EWVf/sIdDL9GAcew85XmktCfH+ngG7SRXEVDoO18WMdB/Q==", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", "dev": true }, "is-regex": { @@ -14256,7 +14256,7 @@ "is-regexp": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", - "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", + "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", "dev": true }, "is-resolvable": { @@ -14298,7 +14298,7 @@ "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, "is-unicode-supported": { @@ -14310,7 +14310,7 @@ "is-utf8": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", "dev": true }, "is-weakref": { @@ -14331,7 +14331,7 @@ "is-wsl": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", "dev": true }, "is-yarn-global": { @@ -14343,18 +14343,18 @@ "isarray": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha512-c2cu3UxbI+b6kR3fy0nRnAhodsvR9dx7U5+znCOzdj6IfP3upFURTr0Xl5BlQZNKZjEtxrmVyfSdeE3O57smoQ==" + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==" + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" }, "isomorphic-fetch": { "version": "3.0.0", @@ -14387,7 +14387,7 @@ "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", "dev": true }, "istanbul-api": { @@ -14462,13 +14462,13 @@ "has-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { "has-flag": "^1.0.0" @@ -15110,13 +15110,13 @@ "camelcase": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", "dev": true }, "cliui": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", "dev": true, "requires": { "string-width": "^1.0.1", @@ -15127,7 +15127,7 @@ "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { "code-point-at": "^1.0.0", @@ -15140,7 +15140,7 @@ "find-up": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "requires": { "locate-path": "^2.0.0" @@ -15164,7 +15164,7 @@ "load-json-file": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha512-3p6ZOGNbiX4CdvEd1VcE6yi78UrGNpjHO33noGwHCnT/o2fyllJDepsm8+mFFv/DvtwFHht5HIHSyOy5a+ChVQ==", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -15176,7 +15176,7 @@ "locate-path": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "dev": true, "requires": { "p-locate": "^2.0.0", @@ -15195,7 +15195,7 @@ "p-locate": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "dev": true, "requires": { "p-limit": "^1.1.0" @@ -15210,7 +15210,7 @@ "path-type": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha512-dUnb5dXUf+kzhC/W/F4e5/SkluXIFf5VUHolW1Eg1irn1hGWjPGdsRcvYJ1nD6lhk8Ir7VM0bHJKsYTx8Jx9OQ==", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", "dev": true, "requires": { "pify": "^2.0.0" @@ -15225,7 +15225,7 @@ "read-pkg": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha512-eFIBOPW7FGjzBuk3hdXEuNSiTZS/xEMlH49HxMyzb0hyPfu4EhVjT2DH32K1hSSmVq4sebAWnZuuY5auISUTGA==", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", "dev": true, "requires": { "load-json-file": "^2.0.0", @@ -15236,7 +15236,7 @@ "read-pkg-up": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha512-1orxQfbWGUiTn9XsPlChs6rLie/AV9jwZTGmu2NZw/CUDJQchXJFYE0Fq5j7+n558T1JhDWLdhyd1Zj+wLY//w==", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", "dev": true, "requires": { "find-up": "^2.0.0", @@ -15274,7 +15274,7 @@ "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { "ansi-regex": "^3.0.0" @@ -15285,7 +15285,7 @@ "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { "ansi-regex": "^2.0.0" @@ -15294,13 +15294,13 @@ "strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", "dev": true }, "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "dev": true, "requires": { "string-width": "^1.0.1", @@ -15310,7 +15310,7 @@ "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { "code-point-at": "^1.0.0", @@ -15329,7 +15329,7 @@ "yargs": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-9.0.1.tgz", - "integrity": "sha512-XS0NJoM9Iz0azh1cdgfLF5VFK6BSWfrrqA0V2tIx3fV6aGrWCseVDwOkIBg746ev0hes59od5ZvQAfdET4H0pw==", + "integrity": "sha1-UqzCP+7Kw0BCB47njAwAf1CF20w=", "dev": true, "requires": { "camelcase": "^4.1.0", @@ -15350,7 +15350,7 @@ "yargs-parser": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", - "integrity": "sha512-WhzC+xgstid9MbVUktco/bf+KJG+Uu6vMX0LN1sLJvwmbCQVxb4D8LzogobonKycNasCZLdOzTAk1SK7+K7swg==", + "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", "dev": true, "requires": { "camelcase": "^4.1.0" @@ -15458,7 +15458,7 @@ "jsdom": { "version": "9.12.0", "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-9.12.0.tgz", - "integrity": "sha512-Qw4oqNxo4LyzkSqVIyCnEltTc4xV3g1GBaI88AvYTesWzmWHUSoMNmhBjUBa+6ldXIBJS9xoeLNJPfUAykTyxw==", + "integrity": "sha1-6MVG//ywbADUgzyoRBD+1/igl9Q=", "dev": true, "requires": { "abab": "^1.0.3", @@ -15485,7 +15485,7 @@ "acorn": { "version": "4.0.13", "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha512-fu2ygVGuMmlzG8ZeRJ0bvR41nsAkxxhbyk8bZ1SS521Z7vmgJFTQQlfz/Mp/nJexGBz+v8sC9bM6+lNgskt4Ug==", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", "dev": true } } @@ -15499,7 +15499,7 @@ "json-buffer": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", "dev": true }, "json-parse-better-errors": { @@ -15529,7 +15529,7 @@ "json-stable-stringify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha512-i/J297TW6xyj7sDFa7AmBPkQvLIxWr2kKPWI26tXydnZrzVAocNqn5DMNT1Mzk0vit1V5UkRM7C1KdVNp7Lmcg==", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", "dev": true, "requires": { "jsonify": "~0.0.0" @@ -15538,13 +15538,13 @@ "json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", "dev": true }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", "dev": true }, "json5": { @@ -15683,7 +15683,7 @@ "lazy-ass": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", - "integrity": "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==", + "integrity": "sha1-eZllXoZGwX8In90YfRUNMyTVRRM=", "dev": true }, "lcid": { @@ -15703,7 +15703,7 @@ "leven": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", - "integrity": "sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA==", + "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=", "dev": true }, "levn": { @@ -15833,7 +15833,7 @@ "load-json-file": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -16004,7 +16004,7 @@ "lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", "dev": true }, "lodash.foreach": { @@ -16063,7 +16063,7 @@ "lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", "dev": true }, "lodash.merge": { @@ -16081,13 +16081,13 @@ "lodash.once": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=", "dev": true }, "lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", "dev": true }, "lodash.support": { @@ -16102,7 +16102,7 @@ "lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", "dev": true }, "log-symbols": { @@ -16330,7 +16330,7 @@ "lower-case": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", "dev": true }, "lowercase-keys": { @@ -16396,13 +16396,13 @@ "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", "dev": true }, "map-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", "dev": true, "requires": { "object-visit": "^1.0.0" @@ -16434,7 +16434,7 @@ "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", "dev": true }, "mem": { @@ -16463,7 +16463,7 @@ "memory-fs": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", "dev": true, "requires": { "errno": "^0.1.3", @@ -16473,7 +16473,7 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, "readable-stream": { @@ -16511,7 +16511,7 @@ "merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", "dev": true }, "merge-stream": { @@ -16529,7 +16529,7 @@ "methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", "dev": true }, "microevent.ts": { @@ -16643,7 +16643,7 @@ "minimalistic-crypto-utils": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", "dev": true }, "minimatch": { @@ -16774,7 +16774,7 @@ "move-concurrently": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", - "integrity": "sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", "dev": true, "requires": { "aproba": "^1.1.1", @@ -16870,7 +16870,7 @@ "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, "negotiator": { @@ -16912,13 +16912,13 @@ "webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", "dev": true }, "whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", "dev": true, "requires": { "tr46": "~0.0.3", @@ -16936,7 +16936,7 @@ "node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", "dev": true }, "node-libs-browser": { @@ -16984,13 +16984,13 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", "dev": true }, "readable-stream": { @@ -17064,7 +17064,7 @@ "normalize-range": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", "dev": true }, "normalize-url": { @@ -17094,7 +17094,7 @@ "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, "nwmatcher": { @@ -17118,12 +17118,12 @@ "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, "object-copy": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", "dev": true, "requires": { "copy-descriptor": "^0.1.0", @@ -17134,7 +17134,7 @@ "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { "is-descriptor": "^0.1.0" @@ -17155,7 +17155,7 @@ "object-visit": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", "dev": true, "requires": { "isobject": "^3.0.0" @@ -17609,7 +17609,7 @@ "object.omit": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha512-UiAM5mhmIuKLsOvrL+B0U2d1hXHF3bFYWIuH1LMpuV2EJEHG1Ntz06PgLEHjm6VFd87NpH8rastvPoyv6UW2fA==", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", "dev": true, "requires": { "for-own": "^0.1.4", @@ -17619,7 +17619,7 @@ "object.pick": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", "dev": true, "requires": { "isobject": "^3.0.1" @@ -17741,7 +17741,7 @@ "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { "wrappy": "1" @@ -18329,13 +18329,13 @@ "os-browserify": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", "dev": true }, "os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true }, "os-locale": { @@ -18352,13 +18352,13 @@ "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, "ospath": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz", - "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==", + "integrity": "sha1-EnZjl3Sj+O8lcvf+QoDg6kVQwHs=", "dev": true }, "p-cancelable": { @@ -18370,13 +18370,13 @@ "p-defer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", "dev": true }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", "dev": true }, "p-limit": { @@ -18481,7 +18481,7 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, "readable-stream": { @@ -18513,7 +18513,7 @@ "param-case": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", - "integrity": "sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==", + "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", "dev": true, "requires": { "no-case": "^2.2.0" @@ -18552,7 +18552,7 @@ "parse-glob": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha512-FC5TeK0AwXzq3tUBFtH74naWkPQCEWs4K+xMxWZBlKDWu0bVHXGZa+KKqxKidd7xwhdZ19ZNuF2uO1M/r196HA==", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", "dev": true, "requires": { "glob-base": "^0.3.0", @@ -18573,7 +18573,7 @@ "parse5": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz", - "integrity": "sha512-w2jx/0tJzvgKwZa58sj2vAYq/S/K1QJfIB3cWYea/Iu1scFPDQQ3IQiVZTHWtRBwAjv2Yd7S/xeZf3XqLDb3bA==", + "integrity": "sha1-m387DeMr543CQBsXVzzK8Pb1nZQ=", "dev": true }, "parseqs": { @@ -18595,7 +18595,7 @@ "pascalcase": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", "dev": true }, "path-browserify": { @@ -18607,7 +18607,7 @@ "path-dirname": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", "dev": true, "optional": true }, @@ -18619,13 +18619,13 @@ "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", "dev": true }, "path-parse": { @@ -18637,7 +18637,7 @@ "path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", "dev": true }, "path-type": { @@ -18675,19 +18675,19 @@ "pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", "dev": true }, "per-env": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/per-env/-/per-env-1.0.2.tgz", - "integrity": "sha512-ShJSJb8a1YVRJnN6Acdbj4xayfUjpj3nLTcfsjZ+bYCGWceUiRDZb5H3sijcc4hVzLlZiRK/H/NaXGMxyEULpA==", + "integrity": "sha1-dOXxosQBtyzv5/2HKz8/a3nAS7E=", "dev": true }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", "dev": true }, "picocolors": { @@ -18711,13 +18711,13 @@ "pinkie": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", "dev": true }, "pinkie-promise": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "dev": true, "requires": { "pinkie": "^2.0.0" @@ -18805,7 +18805,7 @@ "posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", "dev": true }, "postcss": { @@ -20146,13 +20146,13 @@ "prepend-http": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", "dev": true }, "preserve": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha512-s/46sYeylUfHNjI+sA/78FAHlmIuKqI9wNnzEOGehAlUUYeObv5C2mOinXBjyUyWmJ2SfcS2/ydApH4hTF4WXQ==", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", "dev": true }, "prettier": { @@ -20212,7 +20212,7 @@ "process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", "dev": true }, "process-nextick-args": { @@ -20291,7 +20291,7 @@ "promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", "dev": true }, "promise-polyfill": { @@ -20349,19 +20349,19 @@ "proxy-from-env": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", - "integrity": "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==", + "integrity": "sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4=", "dev": true }, "prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", "dev": true }, "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", "dev": true }, "psl": { @@ -20443,7 +20443,7 @@ "q": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", "dev": true }, "qrcode": { @@ -20475,7 +20475,7 @@ "querystring-es3": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", "dev": true }, "queue-microtask": { @@ -20817,7 +20817,7 @@ "read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", "dev": true, "requires": { "load-json-file": "^1.0.0", @@ -20828,7 +20828,7 @@ "read-pkg-up": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", "dev": true, "requires": { "find-up": "^1.0.0", @@ -20838,7 +20838,7 @@ "find-up": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { "path-exists": "^2.0.0", @@ -20848,7 +20848,7 @@ "path-exists": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "dev": true, "requires": { "pinkie-promise": "^2.0.0" @@ -21013,13 +21013,13 @@ "relateurl": { "version": "0.2.7", "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", "dev": true }, "remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", "dev": true }, "renderkid": { @@ -21038,7 +21038,7 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, "css-select": { @@ -21106,7 +21106,7 @@ "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { "ansi-regex": "^2.0.0" @@ -21123,13 +21123,13 @@ "repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", "dev": true }, "repeating": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", "dev": true, "requires": { "is-finite": "^1.0.0" @@ -21184,7 +21184,7 @@ "request-progress": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", - "integrity": "sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==", + "integrity": "sha1-TKdUCBx/7GP1BeT6qCWqBs1mnb4=", "dev": true, "requires": { "throttleit": "^1.0.0" @@ -21221,7 +21221,7 @@ "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" }, "require-from-string": { "version": "2.0.2", @@ -21237,7 +21237,7 @@ "requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", "dev": true }, "resolve": { @@ -21258,13 +21258,13 @@ "resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", "dev": true }, "responselike": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", "dev": true, "requires": { "lowercase-keys": "^1.0.0" @@ -21307,13 +21307,13 @@ "rgb-regex": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", - "integrity": "sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w==", + "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", "dev": true }, "rgba-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", - "integrity": "sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg==", + "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", "dev": true }, "rimraf": { @@ -21394,7 +21394,7 @@ "run-queue": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", - "integrity": "sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", "dev": true, "requires": { "aproba": "^1.1.1" @@ -21427,7 +21427,7 @@ "safe-regex": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "dev": true, "requires": { "ret": "~0.1.10" @@ -21442,7 +21442,7 @@ "sane": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/sane/-/sane-2.5.2.tgz", - "integrity": "sha512-OuZwD1QJ2R9Dbnhd7Ur8zzD8l+oADp9npyxK63Q9nZ4AjhB2QwDQcQlD8iuUsGm5AZZqtEuCaJvK1rxGRxyQ1Q==", + "integrity": "sha1-tNwYYcIbQn6SlQej51HiosuKs/o=", "dev": true, "requires": { "anymatch": "^2.0.0", @@ -21489,7 +21489,7 @@ "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -21637,7 +21637,7 @@ "fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, "requires": { "extend-shallow": "^2.0.1", @@ -21649,7 +21649,7 @@ "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -21695,7 +21695,7 @@ "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { "kind-of": "^3.0.2" @@ -21704,7 +21704,7 @@ "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "^1.1.5" @@ -21790,7 +21790,7 @@ "select-hose": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", "dev": true }, "selfsigned": { @@ -21858,7 +21858,7 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true } } @@ -21895,7 +21895,7 @@ "serve-index": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", "dev": true, "requires": { "accepts": "~1.3.4", @@ -21919,13 +21919,13 @@ "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", "dev": true }, "http-errors": { "version": "1.6.3", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", "dev": true, "requires": { "depd": "~1.1.2", @@ -21937,7 +21937,7 @@ "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, "setprototypeof": { @@ -21949,7 +21949,7 @@ "statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", "dev": true } } @@ -21969,12 +21969,12 @@ "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, "setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", "dev": true }, "setprototypeof": { @@ -22013,7 +22013,7 @@ "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "dev": true, "requires": { "shebang-regex": "^1.0.0" @@ -22022,7 +22022,7 @@ "shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, "shellwords": { @@ -22059,7 +22059,7 @@ "simple-swizzle": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", "dev": true, "requires": { "is-arrayish": "^0.3.1" @@ -22148,7 +22148,7 @@ "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { "is-descriptor": "^0.1.0" @@ -22157,7 +22157,7 @@ "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -22179,7 +22179,7 @@ "define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { "is-descriptor": "^1.0.0" @@ -22301,7 +22301,7 @@ "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, "source-map-js": { @@ -22455,7 +22455,7 @@ "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, "sshpk": { @@ -22501,13 +22501,13 @@ "stack-trace": { "version": "0.0.10", "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", "dev": true }, "static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", "dev": true, "requires": { "define-property": "^0.2.5", @@ -22517,7 +22517,7 @@ "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { "is-descriptor": "^0.1.0" @@ -22534,7 +22534,7 @@ "stealthy-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", "dev": true }, "stream-browserify": { @@ -22550,7 +22550,7 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, "readable-stream": { @@ -22605,7 +22605,7 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, "readable-stream": { @@ -22643,7 +22643,7 @@ "string-length": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", - "integrity": "sha512-Qka42GGrS8Mm3SZ+7cH8UXiIWI867/b/Z/feQSpQx/rbfB8UGknGEZVaUQMOUVj+soY6NpWAxily63HI1OckVQ==", + "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", "dev": true, "requires": { "astral-regex": "^1.0.0", @@ -22659,7 +22659,7 @@ "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { "ansi-regex": "^3.0.0" @@ -23091,7 +23091,7 @@ "is-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", "dev": true } } @@ -23107,7 +23107,7 @@ "strip-bom": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "dev": true, "requires": { "is-utf8": "^0.2.0" @@ -23122,7 +23122,7 @@ "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", "dev": true }, "strip-final-newline": { @@ -23252,7 +23252,7 @@ "svg.easing.js": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/svg.easing.js/-/svg.easing.js-2.0.0.tgz", - "integrity": "sha512-//ctPdJMGy22YoYGV+3HEfHbm6/69LJUTAqI2/5qBvaNHZ9uUFVC82B0Pl299HzgH13rKrBgi4+XyXXyVWWthA==", + "integrity": "sha1-iqmUawqOJ4V6XEChDrpAkeVpHxI=", "requires": { "svg.js": ">=2.3.x" } @@ -23260,7 +23260,7 @@ "svg.filter.js": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/svg.filter.js/-/svg.filter.js-2.0.2.tgz", - "integrity": "sha512-xkGBwU+dKBzqg5PtilaTb0EYPqPfJ9Q6saVldX+5vCRy31P6TlRCP3U9NxH3HEufkKkpNgdTLBJnmhDHeTqAkw==", + "integrity": "sha1-kQCOFROJ3ZIwd5/L5uLJo2LRwgM=", "requires": { "svg.js": "^2.2.5" } @@ -23534,25 +23534,25 @@ "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, "throat": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", - "integrity": "sha512-wCVxLDcFxw7ujDxaeJC6nfl2XfHJNYs8yUYJnvMgtPEFlttP9tHSfRUv2vBe6C4hkVFPWoP1P6ZccbYjmSEkKA==", + "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=", "dev": true }, "throttleit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", - "integrity": "sha512-rkTVqu6IjfQ/6+uNuuc3sZek4CEYxTJom3IktzgdSxcZqdARuebbA/f4QmAxMQIxqq9ZLEUkSYqvuk1I6VKq4g==", + "integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=", "dev": true }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, "through2": { @@ -23568,7 +23568,7 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, "readable-stream": { @@ -23615,7 +23615,7 @@ "timsort": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", - "integrity": "sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "dev": true }, "tiny-invariant": { @@ -23638,19 +23638,19 @@ "to-arraybuffer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", "dev": true }, "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", "dev": true }, "to-object-path": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", "dev": true, "requires": { "kind-of": "^3.0.2" @@ -23704,7 +23704,7 @@ "toposort": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz", - "integrity": "sha512-FclLrw8b9bMWf4QlCJuHBEVhSRsqDj6u3nIjAzPeJvgl//1hBlffdlk0MALceL14+koWEdU4ofRAXofbODxQzg==", + "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=", "dev": true }, "totalist": { @@ -23726,13 +23726,13 @@ "tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", "dev": true }, "trim-right": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw==", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", "dev": true }, "ts-pnp": { @@ -23767,13 +23767,13 @@ "tty-browserify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", "dev": true }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "dev": true, "requires": { "safe-buffer": "^5.0.1" @@ -23782,7 +23782,7 @@ "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", "dev": true }, "type-check": { @@ -23824,7 +23824,7 @@ "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", "dev": true }, "typedarray-to-buffer": { @@ -23951,7 +23951,7 @@ "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", "dev": true }, "set-value": { @@ -23971,13 +23971,13 @@ "uniq": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", "dev": true }, "uniqs": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", - "integrity": "sha512-mZdDpf3vBV5Efh29kMw5tXoup/buMgxLzOt/XKFKcVmi+15ManNQWr6HfZ2aiZTYlYixbdNJ0KFmIZIv52tHSQ==", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", "dev": true }, "unique-filename": { @@ -24021,19 +24021,19 @@ "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", "dev": true }, "unquote": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", "dev": true }, "unset-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", "dev": true, "requires": { "has-value": "^0.3.1", @@ -24043,13 +24043,13 @@ "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", "dev": true }, "has-value": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", "dev": true, "requires": { "get-value": "^2.0.3", @@ -24060,7 +24060,7 @@ "isobject": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", "dev": true, "requires": { "isarray": "1.0.0" @@ -24071,13 +24071,13 @@ "has-values": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", "dev": true }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true } } @@ -24209,7 +24209,7 @@ "upper-case": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", "dev": true }, "uri-js": { @@ -24224,13 +24224,13 @@ "urix": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", "dev": true }, "url": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", "dev": true, "requires": { "punycode": "1.3.2", @@ -24240,13 +24240,13 @@ "punycode": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", "dev": true }, "querystring": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", "dev": true } } @@ -24293,7 +24293,7 @@ "url-parse-lax": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", "dev": true, "requires": { "prepend-http": "^2.0.0" @@ -24308,7 +24308,7 @@ "useragent-parser-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/useragent-parser-js/-/useragent-parser-js-1.0.3.tgz", - "integrity": "sha512-gmU2LvhU8GfqUY2A1gihk5FzshqtbPYbgUNqFPwdzWlerF5XG4js0HmPgLXNvgQRIwmXM5sN3HzuWlhYdGhriQ==" + "integrity": "sha1-N6l7MbA+N5ySibl5eQPGzncruv0=" }, "util": { "version": "0.11.1", @@ -24322,7 +24322,7 @@ "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true } } @@ -24330,7 +24330,7 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, "util.promisify": { @@ -24429,13 +24429,13 @@ "utila": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", "dev": true }, "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", "dev": true }, "uuid": { @@ -24471,7 +24471,7 @@ "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", "dev": true }, "vendors": { @@ -24483,7 +24483,7 @@ "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "dev": true, "requires": { "assert-plus": "^1.0.0", @@ -24563,7 +24563,7 @@ "watch": { "version": "0.18.0", "resolved": "https://registry.npmjs.org/watch/-/watch-0.18.0.tgz", - "integrity": "sha512-oUcoHFG3UF2pBlHcMORAojsN09BfqSfWYWlR3eSSjUFR7eBEx53WT2HX/vZeVTTIVCGShcazb+t6IcBRCNXqvA==", + "integrity": "sha1-KAlUdsbffJDJYxOJkMClQj60uYY=", "dev": true, "requires": { "exec-sh": "^0.2.0", @@ -24804,7 +24804,7 @@ "fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, "optional": true, "requires": { @@ -24817,7 +24817,7 @@ "glob-parent": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", "dev": true, "optional": true, "requires": { @@ -24828,7 +24828,7 @@ "is-glob": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", "dev": true, "optional": true, "requires": { @@ -24859,7 +24859,7 @@ "is-binary-path": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", "dev": true, "optional": true, "requires": { @@ -24926,7 +24926,7 @@ "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "optional": true, "requires": { @@ -24936,7 +24936,7 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true, "optional": true }, @@ -25051,7 +25051,7 @@ "wcwidth": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", "dev": true, "requires": { "defaults": "^1.0.3" @@ -25127,7 +25127,7 @@ "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -25314,7 +25314,7 @@ "fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, "requires": { "extend-shallow": "^2.0.1", @@ -25326,7 +25326,7 @@ "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -25377,7 +25377,7 @@ "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { "kind-of": "^3.0.2" @@ -25386,7 +25386,7 @@ "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "^1.1.5" @@ -25933,7 +25933,7 @@ "whatwg-url": { "version": "4.8.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-4.8.0.tgz", - "integrity": "sha512-nUvUPuenPFtPfy/X+dAYh/TfRbTBlnXTM5iIfLseJFkkQewmpG9pGR6i87E9qL+lZaJzv+99kkQWoGOtLfkZQQ==", + "integrity": "sha1-0pgaqRSMHgCkHFphMRZqtGg7vMA=", "dev": true, "requires": { "tr46": "~0.0.3", @@ -25943,7 +25943,7 @@ "webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", "dev": true } } @@ -25990,7 +25990,7 @@ "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==" + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" }, "widest-line": { "version": "3.1.0", @@ -26387,7 +26387,7 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, "write-file-atomic": { @@ -26415,7 +26415,7 @@ "xml-name-validator": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz", - "integrity": "sha512-jRKe/iQYMyVJpzPH+3HL97Lgu5HrCfii+qSo+TfjKHtOnvbnvdVfMYrn9Q34YV81M2e5sviJlI6Ko9y+nByzvA==", + "integrity": "sha1-TYuPHszTQZqjYgYb7O9RXh5VljU=", "dev": true }, "xmlchars": { @@ -26481,7 +26481,7 @@ "yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", "dev": true, "requires": { "buffer-crc32": "~0.2.3", From 8e6c774e04a8f22bda317e4f5544a1fbf695d4a2 Mon Sep 17 00:00:00 2001 From: euguuu Date: Mon, 31 Oct 2022 17:30:31 +0100 Subject: [PATCH 106/164] change packag-lock --- server/package-lock.json | 939 ++++++++++++++------------------------- 1 file changed, 323 insertions(+), 616 deletions(-) diff --git a/server/package-lock.json b/server/package-lock.json index ac31802628..c6cf6da716 100644 --- a/server/package-lock.json +++ b/server/package-lock.json @@ -2123,7 +2123,7 @@ "after": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", - "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=" + "integrity": "sha512-QbJ0NTQ/I9DI3uSJA4cbexiwQeRAfjPScqIbSjUDd9TOrcg6pTkdgziesOqxBMBzit8vFCTwrP27t13vFOORRA==" }, "agent-base": { "version": "6.0.2", @@ -2907,10 +2907,19 @@ "follow-redirects": "^1.14.0" } }, + "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" + } + }, "backo2": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" + "integrity": "sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA==" }, "balanced-match": { "version": "1.0.0", @@ -2920,22 +2929,13 @@ "base64-arraybuffer": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz", - "integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI=" + "integrity": "sha512-a1eIFi4R9ySrbiMuyTGx5e92uRH5tQY6kArNcFaKBUleIoLjdjBg7Zxm3Mqm3Kmkf27HLR/1fnxX9q8GQ7Iavg==" }, "base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" }, - "basic-auth": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", - "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", - "dev": true, - "requires": { - "safe-buffer": "5.1.2" - } - }, "bcrypt": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.0.1.tgz", @@ -3516,11 +3516,6 @@ "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", "dev": true }, - "colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" - }, "colorspace": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", @@ -3639,29 +3634,6 @@ "integrity": "sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw==", "dev": true }, - "connect": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", - "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", - "dev": true, - "requires": { - "debug": "2.6.9", - "finalhandler": "1.1.2", - "parseurl": "~1.3.3", - "utils-merge": "1.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, "console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", @@ -3702,21 +3674,16 @@ "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==", "dev": true }, + "core-js": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", + "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==" + }, "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=" }, - "cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dev": true, - "requires": { - "object-assign": "^4", - "vary": "^1" - } - }, "cpu-features": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/cpu-features/-/cpu-features-0.0.4.tgz", @@ -3813,6 +3780,11 @@ "assert-plus": "^1.0.0" } }, + "dateformat": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==" + }, "dayjs": { "version": "1.10.4", "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.10.4.tgz", @@ -4252,6 +4224,12 @@ "es6-symbol": "^3.1.1" } }, + "es6-object-assign": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz", + "integrity": "sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw=", + "dev": true + }, "es6-symbol": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", @@ -5283,12 +5261,6 @@ "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", "optional": true }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, "fast-json-stable-stringify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", @@ -5448,9 +5420,9 @@ "dev": true }, "follow-redirects": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", - "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==" + "version": "1.14.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", + "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==" }, "forever-agent": { "version": "0.6.1", @@ -5619,16 +5591,6 @@ "pump": "^3.0.0" } }, - "get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - } - }, "get-value": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/get-value/-/get-value-3.0.1.tgz", @@ -5826,23 +5788,6 @@ "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", "dev": true }, - "has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, - "requires": { - "has-symbols": "^1.0.2" - }, - "dependencies": { - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true - } - } - }, "has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", @@ -6014,14 +5959,6 @@ "requires": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - } } }, "import-lazy": { @@ -6081,17 +6018,6 @@ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, - "internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - } - }, "interpret": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", @@ -6279,15 +6205,6 @@ "has": "^1.0.1" } }, - "is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2" - } - }, "is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", @@ -6314,15 +6231,6 @@ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, - "is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2" - } - }, "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -6484,12 +6392,6 @@ "topo": "3.x.x" } }, - "jose": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/jose/-/jose-4.6.1.tgz", - "integrity": "sha512-EFnufEivlIB6j7+JwaenYQzdUDs/McajDr9WnhT6EI0WxbexnfuZimpWX1GnobF6OnQsUFmWFXUXdWyZHWdQow==", - "dev": true - }, "joycon": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", @@ -6960,12 +6862,6 @@ "resolved": "https://registry.npmjs.org/lodash.trimend/-/lodash.trimend-4.5.1.tgz", "integrity": "sha1-EoBENyhrmMrYmWt5QU4RMAEUCC8=" }, - "lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", - "dev": true - }, "log-symbols": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", @@ -7068,7 +6964,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, "requires": { "yallist": "^4.0.0" }, @@ -7076,8 +6971,7 @@ "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" } } }, @@ -7501,15 +7395,6 @@ "picomatch": "^2.2.1" } }, - "serialize-javascript": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", - "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, "string-width": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", @@ -7554,48 +7439,6 @@ "isexe": "^2.0.0" } }, - "wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "dev": true, - "requires": { - "string-width": "^1.0.2 || 2" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", - "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", - "dev": true - }, - "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=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, "wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -7651,18 +7494,6 @@ "type-is": "^1.6.15" } }, - "mock-http-server": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/mock-http-server/-/mock-http-server-1.4.5.tgz", - "integrity": "sha512-7WZx7RJmMQEvTxJTOJt9U6+gLFl0JFaPHLSsAngfLaOgr3UH+ci7PW8049quyXwZGI4mh3W8oAch6w406ccyRQ==", - "dev": true, - "requires": { - "body-parser": "^1.18.1", - "connect": "^3.4.0", - "multiparty": "^4.1.2", - "underscore": "^1.8.3" - } - }, "mock-req": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/mock-req/-/mock-req-0.2.0.tgz", @@ -7693,44 +7524,6 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, - "multiparty": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/multiparty/-/multiparty-4.2.2.tgz", - "integrity": "sha512-NtZLjlvsjcoGrzojtwQwn/Tm90aWJ6XXtPppYF4WmOk/6ncdwMMKggFY2NlRRN9yiCEIVxpOfPWahVEG2HAG8Q==", - "dev": true, - "requires": { - "http-errors": "~1.8.0", - "safe-buffer": "5.2.1", - "uid-safe": "2.1.5" - }, - "dependencies": { - "http-errors": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.0.tgz", - "integrity": "sha512-4I8r0C5JDhT5VkvI47QktDW75rNlGVsUf/8hzjCC/wkWI/jdTRmBb9aI7erSG82r1bjKY3F6k28WnsVxB1C73A==", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - } - } - }, "nan": { "version": "2.13.2", "resolved": "https://registry.npmjs.org/nan/-/nan-2.13.2.tgz", @@ -8634,12 +8427,6 @@ "typedarray-to-buffer": "^3.1.5" } }, - "y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, "yargs": { "version": "15.4.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", @@ -8677,28 +8464,6 @@ "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", "optional": true }, - "oauth2-mock-server": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/oauth2-mock-server/-/oauth2-mock-server-4.1.1.tgz", - "integrity": "sha512-fvlQ9VkYVS8gddnxTEiZ4YBrSzuxHWbHdNI247+YAW3Au9IV2wbi1LIsh9LkV8GO5W9kDdYZqGQEF+AvLTXg9A==", - "dev": true, - "requires": { - "basic-auth": "^2.0.1", - "cors": "^2.8.5", - "express": "^4.17.1", - "jose": "^4.3.6", - "lodash.isplainobject": "^4.0.6", - "uuid": "^8.3.2" - }, - "dependencies": { - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true - } - } - }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -9231,9 +8996,9 @@ "dev": true }, "queue": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", - "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.1.tgz", + "integrity": "sha512-AJBQabRCCNr9ANq8v77RJEv73DPbn55cdTb+Giq4X0AVnNVZvMHlYp7XlQiN+1npCZj1DuSmaA2hYVUUDgxFDg==", "requires": { "inherits": "~2.0.3" } @@ -9244,12 +9009,6 @@ "integrity": "sha512-RFVofZYaG2TaVcxjnM0ejdVWf/59rFq1f57OGnjP3GT/bthzFw0GVr5rkP9PKbVlEuF/Y7bOVPLfiiYfxq/EWQ==", "dev": true }, - "random-bytes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", - "integrity": "sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ==", - "dev": true - }, "randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -9291,6 +9050,13 @@ "ini": "~1.3.0", "minimist": "^1.2.0", "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + } } }, "read-pkg": { @@ -9315,9 +9081,9 @@ } }, "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==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -9345,18 +9111,23 @@ } }, "rechoir": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", - "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", "dev": true, "requires": { - "resolve": "^1.9.0" + "resolve": "^1.1.6" } }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + }, "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", "dev": true }, "registry-auth-token": { @@ -9426,9 +9197,9 @@ } }, "qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", "optional": true } } @@ -9472,23 +9243,12 @@ } }, "resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", + "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", + "dev": true, "requires": { - "is-core-module": "^2.8.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "dependencies": { - "is-core-module": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", - "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", - "requires": { - "has": "^1.0.3" - } - } + "path-parse": "^1.0.6" } }, "resolve-cwd": { @@ -9498,12 +9258,20 @@ "dev": true, "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==", + "dev": true + } } }, "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, "responselike": { @@ -9666,11 +9434,6 @@ "ms": "2.1.2" } }, - "lru-cache": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.8.1.tgz", - "integrity": "sha512-E1v547OCgJvbvevfjgK9sNKIVXO96NnsTsFPBlg4ZxjhsJSODoH9lk8Bm0OxvHNm6Vm5Yqkl/1fErDxhYL8Skg==" - }, "moment": { "version": "2.29.2", "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.2.tgz", @@ -9690,11 +9453,11 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "requires": { - "lru-cache": "^7.4.0" + "lru-cache": "^6.0.0" } }, "uuid": { @@ -9718,6 +9481,11 @@ "yargs": "^16.2.0" }, "dependencies": { + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, "fs-extra": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", @@ -9729,6 +9497,14 @@ "universalify": "^2.0.0" } }, + "is-core-module": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", + "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "requires": { + "has": "^1.0.3" + } + }, "jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", @@ -9738,6 +9514,24 @@ "universalify": "^2.0.0" } }, + "resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "requires": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "umzug": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/umzug/-/umzug-2.3.0.tgz", + "integrity": "sha512-Z274K+e8goZK8QJxmbRPhl89HPO1K+ORFtm6rySPhFKfKc5GHhqdzD0SGhSWHkzoXasqJuItdhorSvY7/Cgflw==", + "requires": { + "bluebird": "^3.7.2" + } + }, "universalify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", @@ -9751,9 +9545,9 @@ "integrity": "sha512-G9c0qlIWQSK29pR/5U2JF5dDQeqqHRragoyahj/Nx4KOOQ3CPPfzxnfqFPCSB7x5UgjOgnZ61nSxz+fjDpRlJg==" }, "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", + "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", "dev": true, "requires": { "randombytes": "^2.1.0" @@ -9812,9 +9606,9 @@ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" }, "shell-quote": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", - "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", + "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==", "dev": true }, "shelljs": { @@ -9826,44 +9620,23 @@ "glob": "^7.0.0", "interpret": "^1.0.0", "rechoir": "^0.6.2" - }, - "dependencies": { - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dev": true, - "requires": { - "resolve": "^1.1.6" - } - } } }, "shx": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/shx/-/shx-0.3.4.tgz", - "integrity": "sha512-N6A9MLVqjxZYcVn8hLmtneQWIJtp8IKzMP4eMnx+nqkvXoqinUPCbUFLp2UcWTEIUONhlk0ewxr/jaVGlc+J+g==", - "dev": true, - "requires": { - "minimist": "^1.2.3", - "shelljs": "^0.8.5" - } - }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/shx/-/shx-0.3.2.tgz", + "integrity": "sha512-aS0mWtW3T2sHAenrSrip2XGv39O9dXIFUqxAEWHEOS1ePtGIBavdPJY1kE2IHl14V/4iCbUiNDPGdyYTtmhSoA==", "dev": true, "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "es6-object-assign": "^1.0.3", + "minimist": "^1.2.0", + "shelljs": "^0.8.1" }, "dependencies": { - "object-inspect": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", - "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", "dev": true } } @@ -9874,9 +9647,9 @@ "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=" }, "signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" }, "simple-swizzle": { "version": "0.2.2", @@ -9996,9 +9769,9 @@ } }, "sorted-array-functions": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/sorted-array-functions/-/sorted-array-functions-1.3.0.tgz", - "integrity": "sha512-2sqgzeFlid6N4Z2fUQ1cvFmTOLRi/sEDzSQ0OKYchqgoPmQBVyM3959qYx3fpS6Esef80KjmpgPeEr028dP3OA==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/sorted-array-functions/-/sorted-array-functions-1.2.0.tgz", + "integrity": "sha512-sWpjPhIZJtqO77GN+LD8dDsDKcWZ9GCOJNqKzi1tvtjGIzwfoyuRH8S0psunmc6Z5P+qfDqztSbwYR5X/e1UTg==" }, "source-list-map": { "version": "2.0.1", @@ -10022,9 +9795,9 @@ } }, "spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", "dev": true, "requires": { "spdx-expression-parse": "^3.0.0", @@ -10032,15 +9805,15 @@ } }, "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==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", "dev": true }, "spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", "dev": true, "requires": { "spdx-exceptions": "^2.1.0", @@ -10048,9 +9821,9 @@ } }, "spdx-license-ids": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", - "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", "dev": true }, "split-ca": { @@ -10126,9 +9899,9 @@ } }, "sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", "optional": true, "requires": { "asn1": "~0.2.3", @@ -10172,110 +9945,14 @@ } }, "string.prototype.padend": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.3.tgz", - "integrity": "sha512-jNIIeokznm8SD/TZISQsZKYu7RJyheFNt84DUPrh482GC8RVp2MKqm2O5oBRdGxbDQoXrhhWtPIWQOiy20svUg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.0.0.tgz", + "integrity": "sha1-86rvfBcZ8XDF6rHDK/eA2W4h8vA=", "dev": true, "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - }, - "dependencies": { - "es-abstract": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.2.tgz", - "integrity": "sha512-gfSBJoZdlL2xRiOCy0g8gLMryhoe1TlimjzU99L/31Z8QEGIhVQI+EWwt5lT+AuU9SnorVupXFqqOGqGfsyO6w==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.1", - "is-string": "^1.0.7", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^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==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true - }, - "is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", - "dev": true - }, - "is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "dev": true - }, - "is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "object-inspect": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", - "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", - "dev": true - }, - "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==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - } - } + "define-properties": "^1.1.2", + "es-abstract": "^1.4.3", + "function-bind": "^1.0.2" } }, "string.prototype.trimend": { @@ -10289,25 +9966,23 @@ } }, "string.prototype.trimleft": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.3.tgz", - "integrity": "sha512-699Ibssmj/awVzvdNk4g83/Iu8U9vDohzmA/ly2BrQWGhamuY4Tlvs5XKmKliDt3ky6SKbE1bzPhASKCFlx9Sg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz", + "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==", "dev": true, "requires": { - "call-bind": "^1.0.0", "define-properties": "^1.1.3", - "string.prototype.trimstart": "^1.0.3" + "function-bind": "^1.1.1" } }, "string.prototype.trimright": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.3.tgz", - "integrity": "sha512-hoOq56oRFnnfDuXNy2lGHiwT77MehHv9d0zGfRZ8QdC+4zjrkFB9vd5i/zYTd/ymFBd4YxtbdgHt3U6ksGeuBw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz", + "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==", "dev": true, "requires": { - "call-bind": "^1.0.0", "define-properties": "^1.1.3", - "string.prototype.trimend": "^1.0.3" + "function-bind": "^1.1.1" } }, "string.prototype.trimstart": { @@ -10360,9 +10035,9 @@ "dev": true }, "suncalc": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/suncalc/-/suncalc-1.9.0.tgz", - "integrity": "sha512-vMJ8Byp1uIPoj+wb9c1AdK4jpkSKVAywgHX0lqY7zt6+EWRRC3Z+0Ucfjy/0yxTVO1hwwchZe4uoFNqrIC24+A==" + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/suncalc/-/suncalc-1.8.0.tgz", + "integrity": "sha1-HZiYEJVjB4dQ9JlKlZ5lTYdqy/U=" }, "superagent": { "version": "3.8.3", @@ -10407,22 +10082,21 @@ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" }, "table": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.0.tgz", - "integrity": "sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==", + "version": "6.0.7", + "resolved": "https://registry.npmjs.org/table/-/table-6.0.7.tgz", + "integrity": "sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==", "dev": true, "requires": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", + "ajv": "^7.0.2", + "lodash": "^4.17.20", "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" + "string-width": "^4.2.0" }, "dependencies": { "ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.2.3.tgz", + "integrity": "sha512-idv5WZvKVXDqKralOImQgPM9v6WOdLNa0IY3B3doOjw/YxRGT8I+allIJ6kd7Uaj+SF1xZUSU+nPM5aDNBVtnw==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -10432,9 +10106,15 @@ } }, "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, "is-fullwidth-code-point": { @@ -10449,24 +10129,30 @@ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "strip-ansi": "^6.0.0" } }, "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "ansi-regex": "^5.0.1" + "ansi-regex": "^5.0.0" } } } @@ -10484,29 +10170,17 @@ "dev": true }, "tar": { - "version": "4.4.19", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz", - "integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==", - "requires": { - "chownr": "^1.1.4", - "fs-minipass": "^1.2.7", - "minipass": "^2.9.0", - "minizlib": "^1.3.3", - "mkdirp": "^0.5.5", - "safe-buffer": "^5.2.1", - "yallist": "^3.1.1" - }, - "dependencies": { - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, - "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==" - } + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", + "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" } }, "tar-fs": { @@ -10593,6 +10267,17 @@ "serialize-javascript": "^6.0.0", "source-map": "^0.6.1", "terser": "^5.7.2" + }, + "dependencies": { + "serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + } } }, "text-hex": { @@ -10701,20 +10386,20 @@ "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" }, "tracer": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/tracer/-/tracer-1.1.5.tgz", - "integrity": "sha512-I7/AwGm/gf3KU7DcltmSmKJbytQj3q4hg+JKadtIKocfvBY4olY4SV8rAoMRvAD60gPlggEJ1QoSlb2dQtWHNw==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/tracer/-/tracer-1.1.4.tgz", + "integrity": "sha512-43Ws4c/V6VK9i2MLjmeYVtXZ+YUHU/qFXznJqYgI8F5nNrIQ4v9ImBAk+JjfPHS4StlpmaHzgR5qpBydbD9TkA==", "requires": { "colors": "1.4.0", - "dateformat": "4.5.1", + "dateformat": "3.0.3", "mkdirp": "^1.0.4", "tinytim": "0.1.1" }, "dependencies": { - "dateformat": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.5.1.tgz", - "integrity": "sha512-OD0TZ+B7yP7ZgpJf5K2DIbj3FZvFvxgFUuaqA/V5zTjAtAAXZ1E8bktHxmAGs4x5b7PflqA9LeQ84Og7wYtF7Q==" + "colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" }, "mkdirp": { "version": "1.0.4", @@ -10730,21 +10415,29 @@ "dev": true }, "tsconfig-paths": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", - "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", + "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", "dev": true, "requires": { "@types/json5": "^0.0.29", "json5": "^1.0.1", - "minimist": "^1.2.6", + "minimist": "^1.2.0", "strip-bom": "^3.0.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + } } }, "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" }, "tunnel-agent": { "version": "0.6.0", @@ -10810,33 +10503,18 @@ "dev": true }, "uglify-js": { - "version": "3.15.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.4.tgz", - "integrity": "sha512-vMOPGDuvXecPs34V74qDKk4iJ/SN4vL3Ow/23ixafENYvtrNvtbcgUeugTcUGRGsOF/5fU8/NYSL5Hyb3l1OJA==", + "version": "3.13.2", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.13.2.tgz", + "integrity": "sha512-SbMu4D2Vo95LMC/MetNaso1194M1htEA+JrqE9Hk+G2DhI+itfS9TRu9ZKeCahLDNa/J3n4MqUJ/fOHMzQpRWw==", "optional": true }, - "uid-safe": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", - "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==", - "dev": true, - "requires": { - "random-bytes": "~1.0.0" - } - }, "umzug": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/umzug/-/umzug-2.3.0.tgz", - "integrity": "sha512-Z274K+e8goZK8QJxmbRPhl89HPO1K+ORFtm6rySPhFKfKc5GHhqdzD0SGhSWHkzoXasqJuItdhorSvY7/Cgflw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/umzug/-/umzug-2.2.0.tgz", + "integrity": "sha512-xZLW76ax70pND9bx3wqwb8zqkFGzZIK8dIHD9WdNy/CrNfjWcwQgQkGCuUqcuwEBvUm+g07z+qWvY+pxDmMEEw==", "requires": { - "bluebird": "^3.7.2" - }, - "dependencies": { - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" - } + "babel-runtime": "^6.23.0", + "bluebird": "^3.5.3" } }, "unbox-primitive": { @@ -10852,18 +10530,32 @@ }, "dependencies": { "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", "dev": true } } }, "undefsafe": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", - "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", - "dev": true + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.3.tgz", + "integrity": "sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A==", + "dev": true, + "requires": { + "debug": "^2.2.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } }, "underscore": { "version": "1.13.2", @@ -10963,9 +10655,9 @@ } }, "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", "requires": { "punycode": "^2.1.0" } @@ -11000,9 +10692,9 @@ "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" }, "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", + "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==" }, "v8-compile-cache": { "version": "2.3.0", @@ -11052,9 +10744,9 @@ } }, "webcrypto-core": { - "version": "0.1.27", - "resolved": "https://registry.npmjs.org/webcrypto-core/-/webcrypto-core-0.1.27.tgz", - "integrity": "sha512-r0MSFxvqaIjoqIKerm80P9+7n1dWBG88PYnshJk57J4uZuXlqNX8yQixrEIe3CGqrJ7xwfGM2SQGR4AlJYr02g==", + "version": "0.1.26", + "resolved": "https://registry.npmjs.org/webcrypto-core/-/webcrypto-core-0.1.26.tgz", + "integrity": "sha512-BZVgJZkkHyuz8loKvsaOKiBDXDpmMZf5xG4QAOlSeYdXlFUl9c1FRrVnAXcOdb4fTHMG+TRu81odJwwSfKnWTA==", "requires": { "tslib": "^1.7.1" } @@ -11065,9 +10757,9 @@ "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" }, "webpack": { - "version": "5.72.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.72.0.tgz", - "integrity": "sha512-qmSmbspI0Qo5ld49htys8GY9XhS9CGqFoHTsOVAnjBdg0Zn79y135R+k4IR4rKK6+eKaabMhJwiVB7xw0SJu5w==", + "version": "5.71.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.71.0.tgz", + "integrity": "sha512-g4dFT7CFG8LY0iU5G8nBL6VlkT21Z7dcYDpJAEJV5Q1WLb9UwnFbrem1k7K52ILqEmomN7pnzWFxxE6SlDY56A==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.3", @@ -11162,6 +10854,15 @@ "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", "dev": true + }, + "rechoir": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "dev": true, + "requires": { + "resolve": "^1.9.0" + } } } }, @@ -11216,18 +10917,18 @@ }, "dependencies": { "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", "dev": true }, "is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", "dev": true, "requires": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.1" } } } @@ -11239,11 +10940,11 @@ "dev": true }, "wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", "requires": { - "string-width": "^1.0.2 || 2 || 3 || 4" + "string-width": "^1.0.2 || 2" } }, "widest-line": { @@ -11256,9 +10957,9 @@ }, "dependencies": { "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true }, "is-fullwidth-code-point": { @@ -11268,23 +10969,23 @@ "dev": true }, "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "strip-ansi": "^6.0.0" } }, "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "ansi-regex": "^5.0.1" + "ansi-regex": "^5.0.0" } } } @@ -11495,9 +11196,10 @@ "integrity": "sha512-3XfeQE/wNkvrIktn2Kf0869fC0BN6UpydVasGIeSm2B1Llihf7/0UfZM+eCkOw3P7bP4+qPgqhm7ZoxuJtFU0Q==" }, "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", + "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==", + "dev": true }, "yallist": { "version": "3.1.1", @@ -11545,6 +11247,11 @@ "requires": { "ansi-regex": "^5.0.1" } + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" } } }, From 00eea1157d9c5ec69657c1fc8b3572da00a5d30b Mon Sep 17 00:00:00 2001 From: euguuu Date: Mon, 31 Oct 2022 17:40:51 +0100 Subject: [PATCH 107/164] change package-lock --- server/package-lock.json | 446 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 445 insertions(+), 1 deletion(-) diff --git a/server/package-lock.json b/server/package-lock.json index c6cf6da716..b94b47fff2 100644 --- a/server/package-lock.json +++ b/server/package-lock.json @@ -2929,13 +2929,22 @@ "base64-arraybuffer": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz", - "integrity": "sha512-a1eIFi4R9ySrbiMuyTGx5e92uRH5tQY6kArNcFaKBUleIoLjdjBg7Zxm3Mqm3Kmkf27HLR/1fnxX9q8GQ7Iavg==" + "integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI=" }, "base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" }, + "basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, "bcrypt": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.0.1.tgz", @@ -3634,6 +3643,29 @@ "integrity": "sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw==", "dev": true }, + "connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, "console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", @@ -3684,6 +3716,16 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, "cpu-features": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/cpu-features/-/cpu-features-0.0.4.tgz", @@ -6392,6 +6434,12 @@ "topo": "3.x.x" } }, + "jose": { + "version": "4.10.4", + "resolved": "https://registry.npmjs.org/jose/-/jose-4.10.4.tgz", + "integrity": "sha512-eBH77Xs9Yc/oTDvukhAEDVMijhekPuNktXJL4tUlB22jqKP1k48v5nmsUmc8feoJPsxB3HsfEt2LbVSoz+1mng==", + "dev": true + }, "joycon": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", @@ -7494,6 +7542,18 @@ "type-is": "^1.6.15" } }, + "mock-http-server": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/mock-http-server/-/mock-http-server-1.4.5.tgz", + "integrity": "sha512-7WZx7RJmMQEvTxJTOJt9U6+gLFl0JFaPHLSsAngfLaOgr3UH+ci7PW8049quyXwZGI4mh3W8oAch6w406ccyRQ==", + "dev": true, + "requires": { + "body-parser": "^1.18.1", + "connect": "^3.4.0", + "multiparty": "^4.1.2", + "underscore": "^1.8.3" + } + }, "mock-req": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/mock-req/-/mock-req-0.2.0.tgz", @@ -7524,6 +7584,50 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, + "multiparty": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/multiparty/-/multiparty-4.2.3.tgz", + "integrity": "sha512-Ak6EUJZuhGS8hJ3c2fY6UW5MbkGUPMBEGd13djUzoY/BHqV/gTuFWtC6IuVA7A2+v3yjBS6c4or50xhzTQZImQ==", + "dev": true, + "requires": { + "http-errors": "~1.8.1", + "safe-buffer": "5.2.1", + "uid-safe": "2.1.5" + }, + "dependencies": { + "http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true + } + } + }, "nan": { "version": "2.13.2", "resolved": "https://registry.npmjs.org/nan/-/nan-2.13.2.tgz", @@ -8464,6 +8568,312 @@ "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", "optional": true }, + "oauth2-mock-server": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/oauth2-mock-server/-/oauth2-mock-server-4.3.2.tgz", + "integrity": "sha512-aCcG6S12hk6QK0nqsqx8kI6wfQkheDx51RIgq8a5o7DPwZuSJawj1UOz8xaRRg/xbv7E4k9iqwQhqLLkb1DJ8A==", + "dev": true, + "requires": { + "basic-auth": "^2.0.1", + "body-parser": "^1.20.0", + "cors": "^2.8.5", + "express": "^4.18.1", + "jose": "^4.8.1", + "lodash.isplainobject": "^4.0.6", + "uuid": "^8.3.2" + }, + "dependencies": { + "accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + } + }, + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true + }, + "content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "requires": { + "safe-buffer": "5.2.1" + } + }, + "cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, + "destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true + }, + "express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dev": true, + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + } + }, + "finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + } + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "requires": { + "mime-db": "1.52.0" + } + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true + }, + "on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + } + }, + "qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + }, + "raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "dependencies": { + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + } + } + }, + "serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + } + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + } + } + }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -9009,6 +9419,12 @@ "integrity": "sha512-RFVofZYaG2TaVcxjnM0ejdVWf/59rFq1f57OGnjP3GT/bthzFw0GVr5rkP9PKbVlEuF/Y7bOVPLfiiYfxq/EWQ==", "dev": true }, + "random-bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", + "integrity": "sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ==", + "dev": true + }, "randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -9641,6 +10057,25 @@ } } }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "dependencies": { + "object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "dev": true + } + } + }, "sigmund": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", @@ -10508,6 +10943,15 @@ "integrity": "sha512-SbMu4D2Vo95LMC/MetNaso1194M1htEA+JrqE9Hk+G2DhI+itfS9TRu9ZKeCahLDNa/J3n4MqUJ/fOHMzQpRWw==", "optional": true }, + "uid-safe": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", + "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==", + "dev": true, + "requires": { + "random-bytes": "~1.0.0" + } + }, "umzug": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/umzug/-/umzug-2.2.0.tgz", From f417d8152eac6dee2e1510cbeef165e16219f54b Mon Sep 17 00:00:00 2001 From: euguuu Date: Mon, 31 Oct 2022 19:45:14 +0100 Subject: [PATCH 108/164] fix for review --- front/src/config/i18n/en.json | 2 +- front/src/config/i18n/fr.json | 4 +-- .../lib/utils/withings.matchDeviceInDB.js | 10 +------ .../withings/lib/withings.initDevices.js | 28 ++++++------------- .../withings/lib/withings.initDevices.test.js | 21 +++----------- 5 files changed, 16 insertions(+), 49 deletions(-) diff --git a/front/src/config/i18n/en.json b/front/src/config/i18n/en.json index a869c2788d..ec27f84092 100644 --- a/front/src/config/i18n/en.json +++ b/front/src/config/i18n/en.json @@ -1031,7 +1031,7 @@ "settings": { "oauth2": { "title": "Withings Settings", - "introduction": "
Remember to do this configuration locally, not via Gladys Plus.
To connect Withings account to Gladys, you first need to create a Withings user account in this link.

To connect Withings measures to Gladys, you need to create a Withings partner account in this link

In \"REGISTERED URLS\" field put http://gladys.local/dashboard/integration/health/withings/settings, thinking of replacing http://gladys.local by the local URL you use to access Gladys.

In \"TARGET ENVIRONMENT\" field choose \"Development\".
", + "introduction": "
Remember to do this configuration locally, not via Gladys Plus.
To connect Withings account to Gladys, you first need to create a Withings user account in this link.

To connect Withings measures to Gladys, you need to create a Withings partner account in this link

In \"REGISTERED URLS\" field put http://gladys.local/dashboard/integration/health/withings/settings, thinking of replacing http://gladys.local by the local URL you use to access Gladys.

In \"TARGET ENVIRONMENT\" field choose \"Production\".
", "instructionsToUse": "To use this integration, go to the dashboard and create a device box or chart.", "complete": "Your account is now linked to Gladys with those parameters:", "buttonConnect": "Connect now", diff --git a/front/src/config/i18n/fr.json b/front/src/config/i18n/fr.json index 495e515f86..dd85ea8500 100644 --- a/front/src/config/i18n/fr.json +++ b/front/src/config/i18n/fr.json @@ -1031,7 +1031,7 @@ "settings": { "oauth2": { "title": "Withings Configuration", - "introduction": "
Pensez à faire cette configuration en local, pas via Gladys Plus.
Pour connecter le compte Withings à Gladys, vous devez d'abord créer un compte d'utilisateur Withings à ce lien.

Pour relier les mesures Withings à Gladys, vous devez créer un compte partenaire Withings à ce lien

Dans le champ \"REGISTERED URLS\" vous pouvez mettre http://gladys.local/dashboard/integration/health/withings/settings, en pensant à remplacer http://gladys.local par l'URL locale que vous utilisez pour accéder à Gladys.

Dans le champs \"TARGET ENVIRONMENT\", choisir \"Development\".
", + "introduction": "
Pensez à faire cette configuration en local, pas via Gladys Plus.
Pour connecter le compte Withings à Gladys, vous devez d'abord créer un compte d'utilisateur Withings à ce lien.

Pour relier les mesures Withings à Gladys, vous devez créer un compte partenaire Withings à ce lien

Dans le champ \"REGISTERED URLS\" vous pouvez mettre http://gladys.local/dashboard/integration/health/withings/settings, en pensant à remplacer http://gladys.local par l'URL locale que vous utilisez pour accéder à Gladys.

Dans le champ \"TARGET ENVIRONMENT\", choisir \"Production\".
", "instructionsToUse": "Pour utiliser cette intégration, rendez-vous sur le tableau de bord et créez une box d'appareil ou de graphique.", "complete": "Votre compte est maintenant lié à Gladys avec ces paramètres :", "buttonConnect": "Connecter maintenant", @@ -1041,7 +1041,7 @@ "clientId": "Client id du compte", "secret": "Client secret du compte", "instructions": "À cette étape, veuillez remplir les champs client id et client secret ci-dessous et cliquez sur le bouton de connexion.", - "delete": "Pour supprimer vos configurations de compte cliquer sur le bouton 'Déconneter' (toutes les données associées seront supprimées).", + "delete": "Pour supprimer vos configurations de compte cliquer sur le bouton 'Déconnecter' (toutes les données associées seront supprimées).", "unconnectButton": "Déconnecter" }, "menu": "Découverte", diff --git a/server/services/withings/lib/utils/withings.matchDeviceInDB.js b/server/services/withings/lib/utils/withings.matchDeviceInDB.js index 496bb51424..4f2b02e072 100644 --- a/server/services/withings/lib/utils/withings.matchDeviceInDB.js +++ b/server/services/withings/lib/utils/withings.matchDeviceInDB.js @@ -1,5 +1,3 @@ -const withingsDeviceIdName = 'WITHINGS_DEVICE_ID'; - /** * @description Returns the gladys device match with withings device. * @@ -13,14 +11,8 @@ async function matchDeviceInDB(withingsDevice) { // get device in db to know device already connected const devicesInDB = await this.gladys.device.get({ service: 'withings' }); if (devicesInDB) { - const currentDeviceParam = withingsDevice.params.filter((element) => element.name === withingsDeviceIdName); - if (currentDeviceParam && currentDeviceParam.length > 0) { - const currentWithingsDeviceId = currentDeviceParam[0].value; - matchDevice = devicesInDB.find((element) => - element.params.find((param) => param.name === withingsDeviceIdName && param.value === currentWithingsDeviceId), - ); - } + element.external_id === withingsDevice.external_id); } return matchDevice; } diff --git a/server/services/withings/lib/withings.initDevices.js b/server/services/withings/lib/withings.initDevices.js index 78e75edffa..80b12ee6ec 100755 --- a/server/services/withings/lib/withings.initDevices.js +++ b/server/services/withings/lib/withings.initDevices.js @@ -9,8 +9,6 @@ const { DEVICE_FEATURE_UNITS, } = require('../../../utils/constants'); -const withingsDeviceIdName = 'WITHINGS_DEVICE_ID'; - /** * @description Build a new gladys device from withings device. * @@ -24,14 +22,6 @@ function buildNewDevice(withingsDevice, serviceId) { // Build unique id for the device const uniqueId = uuid.v4(); - // Build params for all device - const newParams = [ - { - name: withingsDeviceIdName, - value: withingsDevice.deviceid, - }, - ]; - // Build features const newFeatures = []; // Feature allow in each device = battery @@ -44,9 +34,9 @@ function buildNewDevice(withingsDevice, serviceId) { newFeatures.push({ id: uniqueBatFeatureId, - selector: `withings-battery-${uniqueId}`, + selector: `withings-${withingsDevice.model}-battery`, device_id: uniqueId, - external_id: uniqueId, + external_id: `withings:${withingsDevice.model}:${DEVICE_FEATURE_CATEGORIES.BATTERY}:${DEVICE_FEATURE_TYPES.SENSOR.INTEGER}`, category: DEVICE_FEATURE_CATEGORIES.BATTERY, type: DEVICE_FEATURE_TYPES.SENSOR.INTEGER, read_only: true, @@ -72,8 +62,8 @@ function buildNewDevice(withingsDevice, serviceId) { const newDevice = { id: uniqueId, - external_id: uniqueId, - selector: `withings-${withingsDevice.model}-${uniqueId}`, + external_id: withingsDevice.deviceid, + selector: `withings-${withingsDevice.model}`, name: `Withings - ${withingsDevice.model}`, model: withingsDevice.model, room_id: null, @@ -81,7 +71,6 @@ function buildNewDevice(withingsDevice, serviceId) { should_poll: true, poll_frequency: DEVICE_POLL_FREQUENCIES.EVERY_DAY, features: newFeatures, - params: newParams, }; return newDevice; @@ -178,8 +167,7 @@ function buildFeature(currentGroup, device, currentFeatures) { featureType = DEVICE_FEATURE_TYPES.HEALTH.UNKNOWN; featureUnit = ''; break; - } - const featureName = `deviceFeatureCategory.${DEVICE_FEATURE_CATEGORIES.HEALTH}.${featureType}`; + } // Search existing feature let tmpFeature = features.find((feat) => feat.type === featureType); @@ -191,9 +179,9 @@ function buildFeature(currentGroup, device, currentFeatures) { const uniqueId = uuid.v4(); tmpFeature = { id: uniqueId, - selector: `withings-${featureName}-${gladysDeviceId}`, - device_id: gladysDeviceId, - external_id: `withings-${featureName}:${gladysDeviceId}:${uniqueId}`, + selector: `${device.selector}-${featureType}`, + device_id: gladysDeviceId, + external_id: `withings:${device.model}:${DEVICE_FEATURE_CATEGORIES.HEALTH}:${featureType}`, category: DEVICE_FEATURE_CATEGORIES.HEALTH, type: featureType, read_only: true, diff --git a/server/test/services/withings/lib/withings.initDevices.test.js b/server/test/services/withings/lib/withings.initDevices.test.js index a0c4948375..5228369260 100644 --- a/server/test/services/withings/lib/withings.initDevices.test.js +++ b/server/test/services/withings/lib/withings.initDevices.test.js @@ -82,28 +82,15 @@ describe('WithingsHandler initDevices', () => { const featureCreated = firstResult.features; await assert.equal(featureCreated.length, 18); - - let paramCreated = firstResult.params; - await assert.equal(paramCreated.length, 1); - await assert.equal(paramCreated[0].name, 'WITHINGS_DEVICE_ID'); - await assert.equal(paramCreated[0].value, 'withingsDevideId'); + await assert.equal(firstResult.external_id, 'withingsDevideId'); await assert.equal(secondResult.name, 'Withings - string'); - paramCreated = secondResult.params; - await assert.equal(paramCreated.length, 1); - await assert.equal(paramCreated[0].name, 'WITHINGS_DEVICE_ID'); - await assert.equal(paramCreated[0].value, 'withingsDevideId2'); + await assert.equal(secondResult.external_id, 'withingsDevideId2'); await assert.equal(thirdResult.name, 'Withings - string'); - paramCreated = thirdResult.params; - await assert.equal(paramCreated.length, 1); - await assert.equal(paramCreated[0].name, 'WITHINGS_DEVICE_ID'); - await assert.equal(paramCreated[0].value, 'withingsDevideId3'); + await assert.equal(thirdResult.external_id, 'withingsDevideId3'); await assert.equal(fourResult.name, 'Withings - string'); - paramCreated = fourResult.params; - await assert.equal(paramCreated.length, 1); - await assert.equal(paramCreated[0].name, 'WITHINGS_DEVICE_ID'); - await assert.equal(paramCreated[0].value, 'withingsDevideId4'); + await assert.equal(fourResult.external_id, 'withingsDevideId4'); }); }); From 096b800aa1ea7185a68c85d53e420accbe202c91 Mon Sep 17 00:00:00 2001 From: euguuu Date: Mon, 31 Oct 2022 20:15:59 +0100 Subject: [PATCH 109/164] fix prettier --- .../services/withings/lib/utils/withings.matchDeviceInDB.js | 3 +-- server/services/withings/lib/withings.initDevices.js | 4 ++-- .../test/services/withings/lib/withings.initDevices.test.js | 4 ++-- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/server/services/withings/lib/utils/withings.matchDeviceInDB.js b/server/services/withings/lib/utils/withings.matchDeviceInDB.js index 4f2b02e072..64b2959be4 100644 --- a/server/services/withings/lib/utils/withings.matchDeviceInDB.js +++ b/server/services/withings/lib/utils/withings.matchDeviceInDB.js @@ -11,8 +11,7 @@ async function matchDeviceInDB(withingsDevice) { // get device in db to know device already connected const devicesInDB = await this.gladys.device.get({ service: 'withings' }); if (devicesInDB) { - matchDevice = devicesInDB.find((element) => - element.external_id === withingsDevice.external_id); + matchDevice = devicesInDB.find((element) => element.external_id === withingsDevice.external_id); } return matchDevice; } diff --git a/server/services/withings/lib/withings.initDevices.js b/server/services/withings/lib/withings.initDevices.js index 80b12ee6ec..34dbc4f510 100755 --- a/server/services/withings/lib/withings.initDevices.js +++ b/server/services/withings/lib/withings.initDevices.js @@ -167,7 +167,7 @@ function buildFeature(currentGroup, device, currentFeatures) { featureType = DEVICE_FEATURE_TYPES.HEALTH.UNKNOWN; featureUnit = ''; break; - } + } // Search existing feature let tmpFeature = features.find((feat) => feat.type === featureType); @@ -180,7 +180,7 @@ function buildFeature(currentGroup, device, currentFeatures) { tmpFeature = { id: uniqueId, selector: `${device.selector}-${featureType}`, - device_id: gladysDeviceId, + device_id: gladysDeviceId, external_id: `withings:${device.model}:${DEVICE_FEATURE_CATEGORIES.HEALTH}:${featureType}`, category: DEVICE_FEATURE_CATEGORIES.HEALTH, type: featureType, diff --git a/server/test/services/withings/lib/withings.initDevices.test.js b/server/test/services/withings/lib/withings.initDevices.test.js index 5228369260..ec8f2a6aa6 100644 --- a/server/test/services/withings/lib/withings.initDevices.test.js +++ b/server/test/services/withings/lib/withings.initDevices.test.js @@ -88,9 +88,9 @@ describe('WithingsHandler initDevices', () => { await assert.equal(secondResult.external_id, 'withingsDevideId2'); await assert.equal(thirdResult.name, 'Withings - string'); - await assert.equal(thirdResult.external_id, 'withingsDevideId3'); + await assert.equal(thirdResult.external_id, 'withingsDevideId3'); await assert.equal(fourResult.name, 'Withings - string'); - await assert.equal(fourResult.external_id, 'withingsDevideId4'); + await assert.equal(fourResult.external_id, 'withingsDevideId4'); }); }); From 1b045814079975a80ac3ec017c9d5cb35016bc28 Mon Sep 17 00:00:00 2001 From: euguuu Date: Sun, 10 Apr 2022 15:22:44 +0200 Subject: [PATCH 110/164] Create docker-image.yml --- .github/workflows/docker-image.yml | 92 ++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 .github/workflows/docker-image.yml diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml new file mode 100644 index 0000000000..c025ebdd04 --- /dev/null +++ b/.github/workflows/docker-image.yml @@ -0,0 +1,92 @@ +name: Docker Image CI + + +on: + workflow_dispatch: + inputs: + tag: + description: 'Docker Tag to build' + required: true + default: 'dev' + platforms: + description: 'Docker platform to build' + required: true + default: 'linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64/v8' + +jobs: + build-front: + name: Front build + runs-on: ubuntu-20.04 + steps: + - name: ⬇️ Checkout code + uses: actions/checkout@v2 + - name: 💽 Setup nodejs + uses: actions/setup-node@v2 + with: + node-version: '14' + - name: 📇 Use npm cache + uses: actions/cache@v2 + with: + path: ~/.npm + key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-node- + - name: 📦 Install NPM front packages + working-directory: ./front + run: | + npm ci + - name: 🏗️ Build front + working-directory: ./front + run: | + npm run build + - name: ↗️ Upload build artifact + uses: actions/upload-artifact@v2 + with: + name: static + path: front/build + docker: + needs: build-front + name: Docker magic ! + runs-on: ubuntu-20.04 + env: + DOCKERHUB_USER: ${{secrets.DOCKERHUB_USER}} + DOCKERHUB_PASSWORD: ${{secrets.DOCKERHUB_PASSWORD}} + DOCKERHUB_REPO: ${{secrets.DOCKERHUB_REPO}} + steps: + - name: ⬇️ Checkout code + uses: actions/checkout@v2 + - name: 🐳 Docker meta + id: docker_meta + uses: docker/metadata-action@v3 + with: + images: ${{ secrets.DOCKERHUB_REPO }} + labels: | + org.opencontainers.image.title=Gladys Assistant Preprod Image + - name: 💽 Set up QEMU + uses: docker/setup-qemu-action@v1 + - name: 🐳 Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v1 + with: + version: latest + - name: ↙️ Download build artifact + uses: actions/download-artifact@v2 + with: + name: static + path: static + - name: 🔑 Login to DockerHub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKERHUB_USER }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} + - name: 🐳 Build and push + uses: docker/build-push-action@v2 + with: + context: . + file: ./docker/Dockerfile.buildx + platforms: ${{ github.event.inputs.platforms }} + push: true + pull: true + tags: ${{ secrets.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }} + cache-from: type=registry,ref=${{ secrets.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }} + cache-to: type=inline From 664a4107cc612c89be3312ad1f455096965b8c99 Mon Sep 17 00:00:00 2001 From: euguuu Date: Sun, 10 Apr 2022 15:23:26 +0200 Subject: [PATCH 111/164] Delete docker-image.yml --- .github/workflows/docker-image.yml | 92 ------------------------------ 1 file changed, 92 deletions(-) delete mode 100644 .github/workflows/docker-image.yml diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml deleted file mode 100644 index c025ebdd04..0000000000 --- a/.github/workflows/docker-image.yml +++ /dev/null @@ -1,92 +0,0 @@ -name: Docker Image CI - - -on: - workflow_dispatch: - inputs: - tag: - description: 'Docker Tag to build' - required: true - default: 'dev' - platforms: - description: 'Docker platform to build' - required: true - default: 'linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64/v8' - -jobs: - build-front: - name: Front build - runs-on: ubuntu-20.04 - steps: - - name: ⬇️ Checkout code - uses: actions/checkout@v2 - - name: 💽 Setup nodejs - uses: actions/setup-node@v2 - with: - node-version: '14' - - name: 📇 Use npm cache - uses: actions/cache@v2 - with: - path: ~/.npm - key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} - restore-keys: | - ${{ runner.os }}-node- - - name: 📦 Install NPM front packages - working-directory: ./front - run: | - npm ci - - name: 🏗️ Build front - working-directory: ./front - run: | - npm run build - - name: ↗️ Upload build artifact - uses: actions/upload-artifact@v2 - with: - name: static - path: front/build - docker: - needs: build-front - name: Docker magic ! - runs-on: ubuntu-20.04 - env: - DOCKERHUB_USER: ${{secrets.DOCKERHUB_USER}} - DOCKERHUB_PASSWORD: ${{secrets.DOCKERHUB_PASSWORD}} - DOCKERHUB_REPO: ${{secrets.DOCKERHUB_REPO}} - steps: - - name: ⬇️ Checkout code - uses: actions/checkout@v2 - - name: 🐳 Docker meta - id: docker_meta - uses: docker/metadata-action@v3 - with: - images: ${{ secrets.DOCKERHUB_REPO }} - labels: | - org.opencontainers.image.title=Gladys Assistant Preprod Image - - name: 💽 Set up QEMU - uses: docker/setup-qemu-action@v1 - - name: 🐳 Set up Docker Buildx - id: buildx - uses: docker/setup-buildx-action@v1 - with: - version: latest - - name: ↙️ Download build artifact - uses: actions/download-artifact@v2 - with: - name: static - path: static - - name: 🔑 Login to DockerHub - uses: docker/login-action@v1 - with: - username: ${{ secrets.DOCKERHUB_USER }} - password: ${{ secrets.DOCKERHUB_PASSWORD }} - - name: 🐳 Build and push - uses: docker/build-push-action@v2 - with: - context: . - file: ./docker/Dockerfile.buildx - platforms: ${{ github.event.inputs.platforms }} - push: true - pull: true - tags: ${{ secrets.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }} - cache-from: type=registry,ref=${{ secrets.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }} - cache-to: type=inline From 2bb7150fec947c0fca328dbb8eb9c2f9142e0c09 Mon Sep 17 00:00:00 2001 From: euguuu Date: Sun, 6 Nov 2022 18:13:24 +0100 Subject: [PATCH 112/164] fix cypres s test --- .../withings/settings/WithingsSettingsWithoutConfig.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/front/cypress/integration/routes/integration/withings/settings/WithingsSettingsWithoutConfig.js b/front/cypress/integration/routes/integration/withings/settings/WithingsSettingsWithoutConfig.js index 96ee2f9e05..1bf92b9353 100644 --- a/front/cypress/integration/routes/integration/withings/settings/WithingsSettingsWithoutConfig.js +++ b/front/cypress/integration/routes/integration/withings/settings/WithingsSettingsWithoutConfig.js @@ -35,7 +35,7 @@ describe('Withings settings page', () => { { body: [] } - ); + ).as('initDevices'); cy.intercept( { method: 'POST', @@ -100,6 +100,8 @@ describe('Withings settings page', () => { // Check redirected to settings page cy.location('pathname').should('eq', '/dashboard/integration/health/withings/settings'); + cy.wait('@initDevices'); + cy.get('.alert-info').i18n('integration.withings.settings.oauth2.complete'); cy.get('.alert-info').i18n('integration.withings.settings.oauth2.clientId'); From 80b9273abf652632b696f469537bab47d44d8326 Mon Sep 17 00:00:00 2001 From: euguuu Date: Sun, 6 Nov 2022 18:40:49 +0100 Subject: [PATCH 113/164] add log --- .../routes/integration/all/withings/settings-page/actions.js | 4 ++++ server/services/withings/lib/withings.initDevices.js | 3 +++ 2 files changed, 7 insertions(+) diff --git a/front/src/routes/integration/all/withings/settings-page/actions.js b/front/src/routes/integration/all/withings/settings-page/actions.js index 10dab469f1..11af10ea47 100755 --- a/front/src/routes/integration/all/withings/settings-page/actions.js +++ b/front/src/routes/integration/all/withings/settings-page/actions.js @@ -31,11 +31,15 @@ const actions = store => ({ let withingsDevices; if (returnGetConfig.client_id) { const result = await state.httpClient.post('/api/v1/service/withings/init_devices'); + console.log(result); if (result) { withingsDevices = result.withingsDevices; + console.log('withingsDevices: ', withingsDevices); withingsDevices.forEach(device => { + console.log('Device: ', device.name); device.features.forEach(feature => { const featureName = dictionary.deviceFeatureCategory[feature.category][feature.type]; + console.log('Feature: ', feature, featureName); if (featureName) { feature.name = featureName; } diff --git a/server/services/withings/lib/withings.initDevices.js b/server/services/withings/lib/withings.initDevices.js index 34dbc4f510..f7063a5538 100755 --- a/server/services/withings/lib/withings.initDevices.js +++ b/server/services/withings/lib/withings.initDevices.js @@ -277,6 +277,9 @@ async function initDevices(userId) { ); } + logger.debug(devicesResult); + devicesResult.forEach((device) => logger.debug(device.features)); + return devicesResult; } From e7f627ea736124d7caf13743ca4083d75d0042cb Mon Sep 17 00:00:00 2001 From: euguuu Date: Sun, 6 Nov 2022 18:44:51 +0100 Subject: [PATCH 114/164] add log --- front/src/routes/integration/all/withings/device-page/Device.jsx | 1 + 1 file changed, 1 insertion(+) diff --git a/front/src/routes/integration/all/withings/device-page/Device.jsx b/front/src/routes/integration/all/withings/device-page/Device.jsx index 12adbdd9e0..735dabe7c6 100644 --- a/front/src/routes/integration/all/withings/device-page/Device.jsx +++ b/front/src/routes/integration/all/withings/device-page/Device.jsx @@ -69,6 +69,7 @@ class WithingsDeviceBox extends Component { } render(props, { batteryLevel, mostRecentValueAt, loading }) { + console.log('Device: ', props.device.name, batteryLevel); return (
From 00dcd55765a2d844f12840fcad469badc7fe5934 Mon Sep 17 00:00:00 2001 From: euguuu Date: Sun, 10 Apr 2022 15:22:44 +0200 Subject: [PATCH 115/164] Create docker-image.yml --- .github/workflows/docker-image.yml | 92 ++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 .github/workflows/docker-image.yml diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml new file mode 100644 index 0000000000..c025ebdd04 --- /dev/null +++ b/.github/workflows/docker-image.yml @@ -0,0 +1,92 @@ +name: Docker Image CI + + +on: + workflow_dispatch: + inputs: + tag: + description: 'Docker Tag to build' + required: true + default: 'dev' + platforms: + description: 'Docker platform to build' + required: true + default: 'linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64/v8' + +jobs: + build-front: + name: Front build + runs-on: ubuntu-20.04 + steps: + - name: ⬇️ Checkout code + uses: actions/checkout@v2 + - name: 💽 Setup nodejs + uses: actions/setup-node@v2 + with: + node-version: '14' + - name: 📇 Use npm cache + uses: actions/cache@v2 + with: + path: ~/.npm + key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-node- + - name: 📦 Install NPM front packages + working-directory: ./front + run: | + npm ci + - name: 🏗️ Build front + working-directory: ./front + run: | + npm run build + - name: ↗️ Upload build artifact + uses: actions/upload-artifact@v2 + with: + name: static + path: front/build + docker: + needs: build-front + name: Docker magic ! + runs-on: ubuntu-20.04 + env: + DOCKERHUB_USER: ${{secrets.DOCKERHUB_USER}} + DOCKERHUB_PASSWORD: ${{secrets.DOCKERHUB_PASSWORD}} + DOCKERHUB_REPO: ${{secrets.DOCKERHUB_REPO}} + steps: + - name: ⬇️ Checkout code + uses: actions/checkout@v2 + - name: 🐳 Docker meta + id: docker_meta + uses: docker/metadata-action@v3 + with: + images: ${{ secrets.DOCKERHUB_REPO }} + labels: | + org.opencontainers.image.title=Gladys Assistant Preprod Image + - name: 💽 Set up QEMU + uses: docker/setup-qemu-action@v1 + - name: 🐳 Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v1 + with: + version: latest + - name: ↙️ Download build artifact + uses: actions/download-artifact@v2 + with: + name: static + path: static + - name: 🔑 Login to DockerHub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKERHUB_USER }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} + - name: 🐳 Build and push + uses: docker/build-push-action@v2 + with: + context: . + file: ./docker/Dockerfile.buildx + platforms: ${{ github.event.inputs.platforms }} + push: true + pull: true + tags: ${{ secrets.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }} + cache-from: type=registry,ref=${{ secrets.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }} + cache-to: type=inline From afb70387ed9b9b21b67cf02aeed54e3756b6f18d Mon Sep 17 00:00:00 2001 From: euguuu Date: Sun, 10 Apr 2022 15:23:26 +0200 Subject: [PATCH 116/164] Delete docker-image.yml --- .github/workflows/docker-image.yml | 92 ------------------------------ 1 file changed, 92 deletions(-) delete mode 100644 .github/workflows/docker-image.yml diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml deleted file mode 100644 index c025ebdd04..0000000000 --- a/.github/workflows/docker-image.yml +++ /dev/null @@ -1,92 +0,0 @@ -name: Docker Image CI - - -on: - workflow_dispatch: - inputs: - tag: - description: 'Docker Tag to build' - required: true - default: 'dev' - platforms: - description: 'Docker platform to build' - required: true - default: 'linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64/v8' - -jobs: - build-front: - name: Front build - runs-on: ubuntu-20.04 - steps: - - name: ⬇️ Checkout code - uses: actions/checkout@v2 - - name: 💽 Setup nodejs - uses: actions/setup-node@v2 - with: - node-version: '14' - - name: 📇 Use npm cache - uses: actions/cache@v2 - with: - path: ~/.npm - key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} - restore-keys: | - ${{ runner.os }}-node- - - name: 📦 Install NPM front packages - working-directory: ./front - run: | - npm ci - - name: 🏗️ Build front - working-directory: ./front - run: | - npm run build - - name: ↗️ Upload build artifact - uses: actions/upload-artifact@v2 - with: - name: static - path: front/build - docker: - needs: build-front - name: Docker magic ! - runs-on: ubuntu-20.04 - env: - DOCKERHUB_USER: ${{secrets.DOCKERHUB_USER}} - DOCKERHUB_PASSWORD: ${{secrets.DOCKERHUB_PASSWORD}} - DOCKERHUB_REPO: ${{secrets.DOCKERHUB_REPO}} - steps: - - name: ⬇️ Checkout code - uses: actions/checkout@v2 - - name: 🐳 Docker meta - id: docker_meta - uses: docker/metadata-action@v3 - with: - images: ${{ secrets.DOCKERHUB_REPO }} - labels: | - org.opencontainers.image.title=Gladys Assistant Preprod Image - - name: 💽 Set up QEMU - uses: docker/setup-qemu-action@v1 - - name: 🐳 Set up Docker Buildx - id: buildx - uses: docker/setup-buildx-action@v1 - with: - version: latest - - name: ↙️ Download build artifact - uses: actions/download-artifact@v2 - with: - name: static - path: static - - name: 🔑 Login to DockerHub - uses: docker/login-action@v1 - with: - username: ${{ secrets.DOCKERHUB_USER }} - password: ${{ secrets.DOCKERHUB_PASSWORD }} - - name: 🐳 Build and push - uses: docker/build-push-action@v2 - with: - context: . - file: ./docker/Dockerfile.buildx - platforms: ${{ github.event.inputs.platforms }} - push: true - pull: true - tags: ${{ secrets.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }} - cache-from: type=registry,ref=${{ secrets.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }} - cache-to: type=inline From 30001d6cd60933ab33d01e0e47226b55be2713b6 Mon Sep 17 00:00:00 2001 From: euguuu Date: Fri, 18 Nov 2022 22:06:14 +0100 Subject: [PATCH 117/164] add new ftuute and label --- front/src/config/i18n/en.json | 16 ++-- front/src/config/i18n/fr.json | 18 +++-- .../withings/lib/withings.initDevices.js | 74 ++++++++++++------- .../withings/lib/withings.serverMock.test.js | 6 ++ server/utils/constants.js | 7 ++ 5 files changed, 83 insertions(+), 38 deletions(-) diff --git a/front/src/config/i18n/en.json b/front/src/config/i18n/en.json index ec27f84092..1958e9e6f3 100644 --- a/front/src/config/i18n/en.json +++ b/front/src/config/i18n/en.json @@ -1050,7 +1050,7 @@ "device": { "title": "Withings Devices", "menu": "Devices", - "noDevices": "No Withings devices available, go to the 'Settings' page to connect your account and create the devices.", + "noDevices": "No Withings devices available, go to the 'Discover' page to connect your account and create the devices.", "nameLabel": "Name", "mostRecentValueAt": "Last value received {{mostRecentValueAt}}.", "noValueReceived": "No value received.", @@ -2084,9 +2084,9 @@ "unknown": "Unknown", "weight": "Weight", "height": "Height", - "fat-free-mass": "Fat Free Mass", + "fat-free-mass": "Lean Mass", "fat-ratio": "Fat Ratio", - "fat-mass-weight": "Fat Mass Weight", + "fat-mass-weight": "Fat Mass", "diastolic-blood-pressure": "Diastolic Blood Pressure", "systolic-blood-pressure": "Systolic Blood Pressure", "heart-pulse": "Heart Pulse", @@ -2095,9 +2095,15 @@ "body-temperature": "Body Temperature", "skin-temperature": "Skin Temperature", "muscle-mass": "Muscle Mass", - "hydration": "Hydration", + "hydration": "Body water", "bone-mass": "Bone Mass", - "pulse-wave-velocity": "Pulse Wave Velocity" + "pulse-wave-velocity": "Pulse Wave Velocity", + "vo2-max": "VO2 max", + "qrs-interval": "QRS interval", + "pr-interval": "PR interval", + "qt-interval": "QT interval", + "corrected-qt-interval": "Corrected QT interval", + "atrial-fibrillation": "Atrial fibrillation" }, "signal": { "shortCategoryName": "Signal", diff --git a/front/src/config/i18n/fr.json b/front/src/config/i18n/fr.json index 3c18814905..a940972022 100644 --- a/front/src/config/i18n/fr.json +++ b/front/src/config/i18n/fr.json @@ -1050,7 +1050,7 @@ "device": { "title": "Appareils Withings", "menu": "Appareils", - "noDevices": "Aucun appareils Withings disponibles, allez sur la page 'Configuration' pour connecter votre compte et créer les appareils.", + "noDevices": "Aucun appareils Withings disponibles, allez sur la page 'Découverte' pour connecter votre compte et créer les appareils.", "nameLabel": "Nom", "mostRecentValueAt": "Dernière valeur reçue {{mostRecentValueAt}}.", "noValueReceived": "Aucune valeur reçue.", @@ -2084,20 +2084,26 @@ "unknown": "Inconnu", "weight": "Poids", "height": "Taille", - "fat-free-mass": "Masse sans graisse", + "fat-free-mass": "Masse maigre", "fat-ratio": "Ratio de graisse", - "fat-mass-weight": "Poids de la masse grasse", + "fat-mass-weight": "Masse grasse", "diastolic-blood-pressure": "Pression artérielle diastolique", "systolic-blood-pressure": "Pression artérielle systolique", - "heart-pulse": "Pouls cardiaque", + "heart-pulse": "Fréquence cardiaque", "temperature": "Température", "sp-o2": "Sp O2", "body-temperature": "Température corps", "skin-temperature": "Température peau", "muscle-mass": "Masse musculaire", - "hydration": "Hydratation", + "hydration": "Masse hydrique", "bone-mass": "Masse osseuse", - "pulse-wave-velocity": "Vélocité des ondes de pouls" + "pulse-wave-velocity": "Vélocité des ondes de pouls", + "vo2-max": "VO2 max", + "qrs-interval": "Intervalle QRS", + "pr-interval": "Intervalle PR", + "qt-interval": "Intervalle QT", + "corrected-qt-interval": "Intervalle QT corrigé", + "atrial-fibrillation": "Fibrillation auriculaire" }, "signal": { "shortCategoryName": "Signal", diff --git a/server/services/withings/lib/withings.initDevices.js b/server/services/withings/lib/withings.initDevices.js index f7063a5538..4df6a514a3 100755 --- a/server/services/withings/lib/withings.initDevices.js +++ b/server/services/withings/lib/withings.initDevices.js @@ -97,7 +97,7 @@ function buildFeature(currentGroup, device, currentFeatures) { // Choose type of feature // (cf: https://developer.withings.com/api-reference#operation/measure-getmeas ) let featureType; - let featureUnit; + let featureUnit = ''; switch (element.type) { case 1: featureType = DEVICE_FEATURE_TYPES.HEALTH.WEIGHT; @@ -163,39 +163,59 @@ function buildFeature(currentGroup, device, currentFeatures) { featureType = DEVICE_FEATURE_TYPES.HEALTH.PULSE_WAVE_VELOCITY; featureUnit = DEVICE_FEATURE_UNITS.METER_PER_SECOND; break; + case 123: + featureType = DEVICE_FEATURE_TYPES.HEALTH.VO2_MAX; + featureUnit = DEVICE_FEATURE_UNITS.MILILITTER_PER_MINUTE_PER_KILOGRAM; + break; + case 135: + featureType = DEVICE_FEATURE_TYPES.HEALTH.QRS_INERVAL; + break; + case 136: + featureType = DEVICE_FEATURE_TYPES.HEALTH.PR_INERVAL; + break; + case 137: + featureType = DEVICE_FEATURE_TYPES.HEALTH.QT_INERVAL; + break; + case 138: + featureType = DEVICE_FEATURE_TYPES.HEALTH.CORRECTED_QT_INERVAL; + break; + case 139: + featureType = DEVICE_FEATURE_TYPES.HEALTH.ATRIAL_FIBRILLATION; + break; default: featureType = DEVICE_FEATURE_TYPES.HEALTH.UNKNOWN; - featureUnit = ''; break; } - // Search existing feature - let tmpFeature = features.find((feat) => feat.type === featureType); - let isNewFeature = false; + if (featureType !== DEVICE_FEATURE_TYPES.HEALTH.UNKNOWN) { + // Search existing feature + let tmpFeature = features.find((feat) => feat.type === featureType); + let isNewFeature = false; - // if not exist build new - if (!tmpFeature) { - isNewFeature = true; - const uniqueId = uuid.v4(); - tmpFeature = { - id: uniqueId, - selector: `${device.selector}-${featureType}`, - device_id: gladysDeviceId, - external_id: `withings:${device.model}:${DEVICE_FEATURE_CATEGORIES.HEALTH}:${featureType}`, - category: DEVICE_FEATURE_CATEGORIES.HEALTH, - type: featureType, - read_only: true, - keep_history: true, - has_feedback: false, - unit: featureUnit, - min: 0, - max: 100000, - feature_state: [], - }; - } + // if not exist build new + if (!tmpFeature) { + isNewFeature = true; + const uniqueId = uuid.v4(); + tmpFeature = { + id: uniqueId, + selector: `${device.selector}-${featureType}`, + device_id: gladysDeviceId, + external_id: `withings:${device.model}:${DEVICE_FEATURE_CATEGORIES.HEALTH}:${featureType}`, + category: DEVICE_FEATURE_CATEGORIES.HEALTH, + type: featureType, + read_only: true, + keep_history: true, + has_feedback: false, + unit: featureUnit, + min: 0, + max: 100000, + feature_state: [], + }; + } - if (isNewFeature) { - features.push(tmpFeature); + if (isNewFeature) { + features.push(tmpFeature); + } } }); } diff --git a/server/test/services/withings/lib/withings.serverMock.test.js b/server/test/services/withings/lib/withings.serverMock.test.js index 9e31bd9bf2..e16a604d16 100644 --- a/server/test/services/withings/lib/withings.serverMock.test.js +++ b/server/test/services/withings/lib/withings.serverMock.test.js @@ -103,6 +103,12 @@ function getHttpServer(host, port, withHistoricalData) { getWithingsMeasure(77), getWithingsMeasure(88), getWithingsMeasure(91), + getWithingsMeasure(123), + getWithingsMeasure(135), + getWithingsMeasure(136), + getWithingsMeasure(137), + getWithingsMeasure(138), + getWithingsMeasure(139), ]; } else { measures = [getWithingsMeasure(1)]; diff --git a/server/utils/constants.js b/server/utils/constants.js index 4095207156..eb1f13ef42 100644 --- a/server/utils/constants.js +++ b/server/utils/constants.js @@ -423,6 +423,12 @@ const DEVICE_FEATURE_TYPES = { HYDRATION: 'hydration', BONE_MASS: 'bone-mass', PULSE_WAVE_VELOCITY: 'pulse-wave-velocity', + VO2_MAX: 'vo2-max', + QRS_INERVAL: 'qrs-interval', + PR_INERVAL: 'pr-interval', + QT_INERVAL: 'qt-interval', + CORRECTED_QT_INERVAL: 'corrected-qt-interval', + ATRIAL_FIBRILLATION: 'atrial-fibrillation', UNKNOWN: 'unknown', }, SIGNAL: { @@ -544,6 +550,7 @@ const DEVICE_FEATURE_UNITS = { CENTIMETER: 'cm', MERCURE_MILIMETER: 'mmHg', BEATS_PER_MINUTE: 'bpm', + MILILITTER_PER_MINUTE_PER_KILOGRAM: 'milliliter-per-minute-per-kilogram', // Length units MM: 'mm', CM: 'cm', From ab57d375b191827e5b62b5d379c612bf246248b8 Mon Sep 17 00:00:00 2001 From: euguuu Date: Fri, 18 Nov 2022 22:12:41 +0100 Subject: [PATCH 118/164] add unit trad --- front/src/config/i18n/en.json | 2 ++ front/src/config/i18n/fr.json | 2 ++ 2 files changed, 4 insertions(+) diff --git a/front/src/config/i18n/en.json b/front/src/config/i18n/en.json index 1958e9e6f3..bc1ada9fe1 100644 --- a/front/src/config/i18n/en.json +++ b/front/src/config/i18n/en.json @@ -1810,6 +1810,7 @@ "ethereum": "Ethereum (⟠)", "pound-sterling": "Pound sterling (£)", "meter-per-second": "Meter per second (m/s)", + "milliliter-per-minute-per-kilogram": "Milliliter per minute per kilogram (ml/min/kg)", "kilometer-per-hour": "Kilometer per hour (km/h)", "millimeter-per-hour": "Millimeter per hour (mm/h)", "millimeter-per-day": "Millimeter per day (mm/d)", @@ -1884,6 +1885,7 @@ "ethereum": "⟠", "pound-sterling": "£", "meter-per-second": "m/s", + "milliliter-per-minute-per-kilogram": "ml/min/kg", "kilometer-per-hour": "km/h", "millimeter-per-hour": "mm/h", "millimeter-per-day": "mm/d", diff --git a/front/src/config/i18n/fr.json b/front/src/config/i18n/fr.json index a940972022..b0dccad2a4 100644 --- a/front/src/config/i18n/fr.json +++ b/front/src/config/i18n/fr.json @@ -1810,6 +1810,7 @@ "ethereum": "Ethereum (⟠)", "pound-sterling": "livre sterling (£)", "meter-per-second": "Mètre par seconde (m/s)", + "milliliter-per-minute-per-kilogram": "Millilitre par minute par kilogramme (ml/min/kg)", "kilometer-per-hour": "Kilomètre par heure (km/h)", "millimeter-per-hour": "Millimètre par heure (mm/h)", "millimeter-per-day": "Millimètre par jour (mm/j)", @@ -1884,6 +1885,7 @@ "ethereum": "⟠", "pound-sterling": "£", "meter-per-second": "m/s", + "milliliter-per-minute-per-kilogram": "ml/min/kg", "kilometer-per-hour": "km/h", "millimeter-per-hour": "mm/h", "millimeter-per-day": "mm/j", From a65f38f486d6f3581c5b3bbca1ab5e6115a42b53 Mon Sep 17 00:00:00 2001 From: euguuu Date: Fri, 18 Nov 2022 22:57:00 +0100 Subject: [PATCH 119/164] fix test --- server/test/services/withings/lib/withings.initDevices.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/test/services/withings/lib/withings.initDevices.test.js b/server/test/services/withings/lib/withings.initDevices.test.js index ec8f2a6aa6..8bd3c66e67 100644 --- a/server/test/services/withings/lib/withings.initDevices.test.js +++ b/server/test/services/withings/lib/withings.initDevices.test.js @@ -81,7 +81,7 @@ describe('WithingsHandler initDevices', () => { await assert.equal(firstResult.poll_frequency, 86400000); const featureCreated = firstResult.features; - await assert.equal(featureCreated.length, 18); + await assert.equal(featureCreated.length, 23); await assert.equal(firstResult.external_id, 'withingsDevideId'); await assert.equal(secondResult.name, 'Withings - string'); From 58f0bb69a2784a310c516158b008a749b47cd1cd Mon Sep 17 00:00:00 2001 From: euguuu Date: Sun, 10 Apr 2022 15:22:44 +0200 Subject: [PATCH 120/164] Create docker-image.yml --- .github/workflows/docker-image.yml | 92 ++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 .github/workflows/docker-image.yml diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml new file mode 100644 index 0000000000..c025ebdd04 --- /dev/null +++ b/.github/workflows/docker-image.yml @@ -0,0 +1,92 @@ +name: Docker Image CI + + +on: + workflow_dispatch: + inputs: + tag: + description: 'Docker Tag to build' + required: true + default: 'dev' + platforms: + description: 'Docker platform to build' + required: true + default: 'linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64/v8' + +jobs: + build-front: + name: Front build + runs-on: ubuntu-20.04 + steps: + - name: ⬇️ Checkout code + uses: actions/checkout@v2 + - name: 💽 Setup nodejs + uses: actions/setup-node@v2 + with: + node-version: '14' + - name: 📇 Use npm cache + uses: actions/cache@v2 + with: + path: ~/.npm + key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-node- + - name: 📦 Install NPM front packages + working-directory: ./front + run: | + npm ci + - name: 🏗️ Build front + working-directory: ./front + run: | + npm run build + - name: ↗️ Upload build artifact + uses: actions/upload-artifact@v2 + with: + name: static + path: front/build + docker: + needs: build-front + name: Docker magic ! + runs-on: ubuntu-20.04 + env: + DOCKERHUB_USER: ${{secrets.DOCKERHUB_USER}} + DOCKERHUB_PASSWORD: ${{secrets.DOCKERHUB_PASSWORD}} + DOCKERHUB_REPO: ${{secrets.DOCKERHUB_REPO}} + steps: + - name: ⬇️ Checkout code + uses: actions/checkout@v2 + - name: 🐳 Docker meta + id: docker_meta + uses: docker/metadata-action@v3 + with: + images: ${{ secrets.DOCKERHUB_REPO }} + labels: | + org.opencontainers.image.title=Gladys Assistant Preprod Image + - name: 💽 Set up QEMU + uses: docker/setup-qemu-action@v1 + - name: 🐳 Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v1 + with: + version: latest + - name: ↙️ Download build artifact + uses: actions/download-artifact@v2 + with: + name: static + path: static + - name: 🔑 Login to DockerHub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKERHUB_USER }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} + - name: 🐳 Build and push + uses: docker/build-push-action@v2 + with: + context: . + file: ./docker/Dockerfile.buildx + platforms: ${{ github.event.inputs.platforms }} + push: true + pull: true + tags: ${{ secrets.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }} + cache-from: type=registry,ref=${{ secrets.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }} + cache-to: type=inline From d9b40235a31406c9c3c456d183389f021bb52a20 Mon Sep 17 00:00:00 2001 From: euguuu Date: Sun, 10 Apr 2022 15:23:26 +0200 Subject: [PATCH 121/164] Delete docker-image.yml --- .github/workflows/docker-image.yml | 92 ------------------------------ 1 file changed, 92 deletions(-) delete mode 100644 .github/workflows/docker-image.yml diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml deleted file mode 100644 index c025ebdd04..0000000000 --- a/.github/workflows/docker-image.yml +++ /dev/null @@ -1,92 +0,0 @@ -name: Docker Image CI - - -on: - workflow_dispatch: - inputs: - tag: - description: 'Docker Tag to build' - required: true - default: 'dev' - platforms: - description: 'Docker platform to build' - required: true - default: 'linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64/v8' - -jobs: - build-front: - name: Front build - runs-on: ubuntu-20.04 - steps: - - name: ⬇️ Checkout code - uses: actions/checkout@v2 - - name: 💽 Setup nodejs - uses: actions/setup-node@v2 - with: - node-version: '14' - - name: 📇 Use npm cache - uses: actions/cache@v2 - with: - path: ~/.npm - key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} - restore-keys: | - ${{ runner.os }}-node- - - name: 📦 Install NPM front packages - working-directory: ./front - run: | - npm ci - - name: 🏗️ Build front - working-directory: ./front - run: | - npm run build - - name: ↗️ Upload build artifact - uses: actions/upload-artifact@v2 - with: - name: static - path: front/build - docker: - needs: build-front - name: Docker magic ! - runs-on: ubuntu-20.04 - env: - DOCKERHUB_USER: ${{secrets.DOCKERHUB_USER}} - DOCKERHUB_PASSWORD: ${{secrets.DOCKERHUB_PASSWORD}} - DOCKERHUB_REPO: ${{secrets.DOCKERHUB_REPO}} - steps: - - name: ⬇️ Checkout code - uses: actions/checkout@v2 - - name: 🐳 Docker meta - id: docker_meta - uses: docker/metadata-action@v3 - with: - images: ${{ secrets.DOCKERHUB_REPO }} - labels: | - org.opencontainers.image.title=Gladys Assistant Preprod Image - - name: 💽 Set up QEMU - uses: docker/setup-qemu-action@v1 - - name: 🐳 Set up Docker Buildx - id: buildx - uses: docker/setup-buildx-action@v1 - with: - version: latest - - name: ↙️ Download build artifact - uses: actions/download-artifact@v2 - with: - name: static - path: static - - name: 🔑 Login to DockerHub - uses: docker/login-action@v1 - with: - username: ${{ secrets.DOCKERHUB_USER }} - password: ${{ secrets.DOCKERHUB_PASSWORD }} - - name: 🐳 Build and push - uses: docker/build-push-action@v2 - with: - context: . - file: ./docker/Dockerfile.buildx - platforms: ${{ github.event.inputs.platforms }} - push: true - pull: true - tags: ${{ secrets.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }} - cache-from: type=registry,ref=${{ secrets.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }} - cache-to: type=inline From 21e3b4a48e0220270bd84dba117cc5e8c5bc27bb Mon Sep 17 00:00:00 2001 From: euguuu Date: Sat, 10 Dec 2022 17:38:44 +0100 Subject: [PATCH 122/164] fix bug and img --- .../src/assets/images/withings/scanwatch.jpg | Bin 0 -> 15970 bytes .../all/withings/device-page/Device.jsx | 2 +- .../withings/device-page/withingsConsts.js | 3 +- front/src/utils/consts.js | 8 +- .../utils/withings.buildBatteryLevelValues.js | 6 +- server/services/withings/lib/withings.poll.js | 2 +- server/services/withings/package-lock.json | 140 +++++++++++++----- .../withings/lib/withings.initDevices.test.js | 7 +- .../withings/lib/withings.poll.test.js | 41 +---- .../withings/lib/withings.postCreate.test.js | 8 +- 10 files changed, 123 insertions(+), 94 deletions(-) create mode 100644 front/src/assets/images/withings/scanwatch.jpg diff --git a/front/src/assets/images/withings/scanwatch.jpg b/front/src/assets/images/withings/scanwatch.jpg new file mode 100644 index 0000000000000000000000000000000000000000..23d544bec03d514f9f6ac60da56f0c73d04f958f GIT binary patch literal 15970 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 literal 0 HcmV?d00001 diff --git a/front/src/routes/integration/all/withings/device-page/Device.jsx b/front/src/routes/integration/all/withings/device-page/Device.jsx index 735dabe7c6..e5c66b7d23 100644 --- a/front/src/routes/integration/all/withings/device-page/Device.jsx +++ b/front/src/routes/integration/all/withings/device-page/Device.jsx @@ -96,7 +96,7 @@ class WithingsDeviceBox extends Component { class="card-img-top" style="aspect-ratio: 1 / 1;" src={`/assets/images/withings/${WithingsDeviceImgByModel[props.device.model]}`} - alt={} + alt="/assets/icons/android-icon-192x192-round.png" /> )} diff --git a/front/src/routes/integration/all/withings/device-page/withingsConsts.js b/front/src/routes/integration/all/withings/device-page/withingsConsts.js index e023ce64d7..b9487b7a79 100644 --- a/front/src/routes/integration/all/withings/device-page/withingsConsts.js +++ b/front/src/routes/integration/all/withings/device-page/withingsConsts.js @@ -29,5 +29,6 @@ export const WithingsDeviceImgByModel = { 'Aura Dock': 'Aura_2.jpg', 'Aura Sensor': 'Aura_2.jpg', 'Aura Sensor V2': 'Aura_2.jpg', - Thermo: 'thermo-c.jpg' + Thermo: 'thermo-c.jpg', + Scanwatch: 'scanwatch.jpg' }; diff --git a/front/src/utils/consts.js b/front/src/utils/consts.js index 6e347eb636..f742993acd 100644 --- a/front/src/utils/consts.js +++ b/front/src/utils/consts.js @@ -250,7 +250,13 @@ export const DeviceFeatureCategoriesIcon = { [DEVICE_FEATURE_TYPES.HEALTH.SPO2]: 'cloud', [DEVICE_FEATURE_TYPES.HEALTH.SYSTOLIC_BLOOD_PRESSURE]: 'droplet', [DEVICE_FEATURE_TYPES.HEALTH.TEMPERATURE]: 'thermometer', - [DEVICE_FEATURE_TYPES.HEALTH.WEIGHT]: 'grid' + [DEVICE_FEATURE_TYPES.HEALTH.WEIGHT]: 'grid', + [DEVICE_FEATURE_TYPES.HEALTH.VO2_MAX]: 'heartbeat', + [DEVICE_FEATURE_TYPES.HEALTH.QRS_INERVAL]: 'heartbeat', + [DEVICE_FEATURE_TYPES.HEALTH.PR_INERVAL]: 'heartbeat', + [DEVICE_FEATURE_TYPES.HEALTH.QT_INERVAL]: 'heartbeat', + [DEVICE_FEATURE_TYPES.HEALTH.CORRECTED_QT_INERVAL]: 'heartbeat', + [DEVICE_FEATURE_TYPES.HEALTH.ATRIAL_FIBRILLATION]: 'heartbeat' }, [DEVICE_FEATURE_CATEGORIES.ENERGY_SENSOR]: { [DEVICE_FEATURE_TYPES.ENERGY_SENSOR.BINARY]: 'power', diff --git a/server/services/withings/lib/utils/withings.buildBatteryLevelValues.js b/server/services/withings/lib/utils/withings.buildBatteryLevelValues.js index c218d67227..706b00476f 100644 --- a/server/services/withings/lib/utils/withings.buildBatteryLevelValues.js +++ b/server/services/withings/lib/utils/withings.buildBatteryLevelValues.js @@ -17,11 +17,11 @@ function buildBatteryLevelValues(currentBatValueString) { break; case 'medium': batValueString = `${currentBatValueString} (> 30%)`; - batValue = 30; - break; + batValue = 50; + break; case 'high': batValueString = `${currentBatValueString} (> 75%)`; - batValue = 75; + batValue = 100; break; default: batValueString = `No value`; diff --git a/server/services/withings/lib/withings.poll.js b/server/services/withings/lib/withings.poll.js index 5c49363405..c45280702c 100755 --- a/server/services/withings/lib/withings.poll.js +++ b/server/services/withings/lib/withings.poll.js @@ -16,7 +16,7 @@ async function poll(device) { if (device.features) { logger.debug('Features : ', device.features); - const withingsDeviceId = device.params.find((oneParam) => oneParam.name === 'WITHINGS_DEVICE_ID').value; + const withingsDeviceId = device.external_id; // Get all users of gladys const users = await this.gladys.user.get(); diff --git a/server/services/withings/package-lock.json b/server/services/withings/package-lock.json index 6ab2770714..3974c4b08f 100644 --- a/server/services/withings/package-lock.json +++ b/server/services/withings/package-lock.json @@ -1,103 +1,151 @@ { "name": "gladys-withings", + "lockfileVersion": 3, "requires": true, - "lockfileVersion": 1, - "dependencies": { - "@hapi/boom": { + "packages": { + "": { + "name": "gladys-withings", + "cpu": [ + "x64", + "arm", + "arm64" + ], + "os": [ + "darwin", + "linux", + "win32" + ], + "dependencies": { + "axios": "^0.21.4", + "bluebird": "^3.7.2", + "query-string": "^7.1.1", + "simple-oauth2": "^4.3.0", + "uuid": "^3.3.2" + } + }, + "node_modules/@hapi/boom": { "version": "9.1.4", "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-9.1.4.tgz", "integrity": "sha512-Ls1oH8jaN1vNsqcaHVYJrKmgMcKsC1wcp8bujvXrHaAqD2iDYq3HoOwsxwo09Cuda5R5nC0o0IxlrlTuvPuzSw==", - "requires": { + "dependencies": { "@hapi/hoek": "9.x.x" } }, - "@hapi/bourne": { + "node_modules/@hapi/bourne": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-2.1.0.tgz", "integrity": "sha512-i1BpaNDVLJdRBEKeJWkVO6tYX6DMFBuwMhSuWqLsY4ufeTKGVuV5rBsUhxPayXqnnWHgXUAmWK16H/ykO5Wj4Q==" }, - "@hapi/hoek": { + "node_modules/@hapi/hoek": { "version": "9.3.0", "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" }, - "@hapi/topo": { + "node_modules/@hapi/topo": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", - "requires": { + "dependencies": { "@hapi/hoek": "^9.0.0" } }, - "@hapi/wreck": { + "node_modules/@hapi/wreck": { "version": "17.2.0", "resolved": "https://registry.npmjs.org/@hapi/wreck/-/wreck-17.2.0.tgz", "integrity": "sha512-pJ5kjYoRPYDv+eIuiLQqhGon341fr2bNIYZjuotuPJG/3Ilzr/XtI+JAp0A86E2bYfsS3zBPABuS2ICkaXFT8g==", - "requires": { + "dependencies": { "@hapi/boom": "9.x.x", "@hapi/bourne": "2.x.x", "@hapi/hoek": "9.x.x" } }, - "@sideway/address": { + "node_modules/@sideway/address": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", - "requires": { + "dependencies": { "@hapi/hoek": "^9.0.0" } }, - "@sideway/formula": { + "node_modules/@sideway/formula": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==" }, - "@sideway/pinpoint": { + "node_modules/@sideway/pinpoint": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" }, - "axios": { + "node_modules/axios": { "version": "0.21.4", "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "requires": { + "dependencies": { "follow-redirects": "^1.14.0" } }, - "bluebird": { + "node_modules/bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, - "debug": { + "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { + "dependencies": { "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "decode-uri-component": { + "node_modules/decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==" + "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==", + "engines": { + "node": ">=0.10" + } }, - "filter-obj": { + "node_modules/filter-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", - "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==" + "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==", + "engines": { + "node": ">=0.10.0" + } }, - "follow-redirects": { + "node_modules/follow-redirects": { "version": "1.15.1", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", - "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==" + "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } }, - "joi": { + "node_modules/joi": { "version": "17.6.0", "resolved": "https://registry.npmjs.org/joi/-/joi-17.6.0.tgz", "integrity": "sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw==", - "requires": { + "dependencies": { "@hapi/hoek": "^9.0.0", "@hapi/topo": "^5.0.0", "@sideway/address": "^4.1.3", @@ -105,47 +153,63 @@ "@sideway/pinpoint": "^2.0.0" } }, - "ms": { + "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, - "query-string": { + "node_modules/query-string": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.1.tgz", "integrity": "sha512-MplouLRDHBZSG9z7fpuAAcI7aAYjDLhtsiVZsevsfaHWDS2IDdORKbSd1kWUA+V4zyva/HZoSfpwnYMMQDhb0w==", - "requires": { + "dependencies": { "decode-uri-component": "^0.2.0", "filter-obj": "^1.1.0", "split-on-first": "^1.0.0", "strict-uri-encode": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "simple-oauth2": { + "node_modules/simple-oauth2": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/simple-oauth2/-/simple-oauth2-4.3.0.tgz", "integrity": "sha512-gjLIfy7M7WZSf3k5IZCQfEozbQwmW80zR9YMH4ph/WWG6S4U6sGhPujz8X6Hj6sZ8l7acSAxiyM4tF0vIN+E+A==", - "requires": { + "dependencies": { "@hapi/hoek": "^9.0.4", "@hapi/wreck": "^17.0.0", "debug": "^4.1.1", "joi": "^17.3.0" } }, - "split-on-first": { + "node_modules/split-on-first": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", - "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==" + "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", + "engines": { + "node": ">=6" + } }, - "strict-uri-encode": { + "node_modules/strict-uri-encode": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", - "integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY=" + "integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY=", + "engines": { + "node": ">=4" + } }, - "uuid": { + "node_modules/uuid": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" + } } } } diff --git a/server/test/services/withings/lib/withings.initDevices.test.js b/server/test/services/withings/lib/withings.initDevices.test.js index 8bd3c66e67..66eab4a1d3 100644 --- a/server/test/services/withings/lib/withings.initDevices.test.js +++ b/server/test/services/withings/lib/withings.initDevices.test.js @@ -19,12 +19,7 @@ const gladys = { return [ { name: 'Withings - string', - params: [ - { - name: 'WITHINGS_DEVICE_ID', - value: 'withingsDevideId4', - }, - ], + external_id: 'withingsDevideId4' }, ]; }, diff --git a/server/test/services/withings/lib/withings.poll.test.js b/server/test/services/withings/lib/withings.poll.test.js index 3d9d2554e3..a9852dfe57 100644 --- a/server/test/services/withings/lib/withings.poll.test.js +++ b/server/test/services/withings/lib/withings.poll.test.js @@ -72,13 +72,7 @@ describe('WithingsHandler poll', () => { selector: 'withings-string-9f66c962-7207-4e55-b893-712642f5e043', service_id: '55f177d7-bc35-4560-a1f0-4c58b9e9f2c4', should_poll: true, - external_id: '9f66c962-7207-4e55-b893-712642f5e043', - params: [ - { - name: 'WITHINGS_DEVICE_ID', - value: 'withingsDevideId', - }, - ], + external_id: 'withingsDevideId', }; deviceToPoll.features = [ { @@ -186,8 +180,7 @@ describe('WithingsHandler poll', () => { selector: 'withings-string-9f66c962-7207-4e55-b893-712642f5e043', service_id: '55f177d7-bc35-4560-a1f0-4c58b9e9f2c4', should_poll: true, - external_id: '9f66c962-7207-4e55-b893-712642f5e043', - params: [{ name: 'WITHINGS_DEVICE_ID', value: 'withingsDevideId' }], + external_id: 'withingsDevideId', features: deviceToPoll.features, }; @@ -204,13 +197,7 @@ describe('WithingsHandler poll', () => { selector: 'withings-string-9f66c962-7207-4e55-b893-712642f5e043', service_id: '55f177d7-bc35-4560-a1f0-4c58b9e9f2c4', should_poll: true, - external_id: '9f66c962-7207-4e55-b893-712642f5e043', - params: [ - { - name: 'WITHINGS_DEVICE_ID', - value: 'withingsDevideId2', - }, - ], + external_id: 'withingsDevideId2', }; deviceToPoll2.features = [ { @@ -221,8 +208,6 @@ describe('WithingsHandler poll', () => { ]; await withingsHandler.poll(deviceToPoll2); - deviceDef.params = [{ name: 'WITHINGS_DEVICE_ID', value: 'withingsDevideId2' }]; - deviceDef.features = deviceToPoll2.features; assert.calledWith(gladys.device.saveHistoricalState, deviceToPoll.features[0]); const deviceToPoll3 = { @@ -233,13 +218,7 @@ describe('WithingsHandler poll', () => { selector: 'withings-string-9f66c962-7207-4e55-b893-712642f5e043', service_id: '55f177d7-bc35-4560-a1f0-4c58b9e9f2c4', should_poll: true, - external_id: '9f66c962-7207-4e55-b893-712642f5e043', - params: [ - { - name: 'WITHINGS_DEVICE_ID', - value: 'withingsDevideId3', - }, - ], + external_id: 'withingsDevideId3', }; deviceToPoll3.features = [ { @@ -250,8 +229,6 @@ describe('WithingsHandler poll', () => { ]; await withingsHandler.poll(deviceToPoll3); - deviceDef.params = [{ name: 'WITHINGS_DEVICE_ID', value: 'withingsDevideId3' }]; - deviceDef.features = deviceToPoll3.features; assert.calledWith(gladys.device.saveHistoricalState, deviceToPoll.features[0]); const deviceToPoll4 = { @@ -262,13 +239,7 @@ describe('WithingsHandler poll', () => { selector: 'withings-string-9f66c962-7207-4e55-b893-712642f5e043', service_id: '55f177d7-bc35-4560-a1f0-4c58b9e9f2c4', should_poll: true, - external_id: '9f66c962-7207-4e55-b893-712642f5e043', - params: [ - { - name: 'WITHINGS_DEVICE_ID', - value: 'withingsDevideId4', - }, - ], + external_id: 'withingsDevideId4', }; deviceToPoll4.features = [ { @@ -279,8 +250,6 @@ describe('WithingsHandler poll', () => { ]; await withingsHandler.poll(deviceToPoll4); - deviceDef.params = [{ name: 'WITHINGS_DEVICE_ID', value: 'withingsDevideId4' }]; - deviceDef.features = deviceToPoll4.features; assert.calledWith(gladys.device.saveHistoricalState, deviceToPoll.features[0]); }); }); diff --git a/server/test/services/withings/lib/withings.postCreate.test.js b/server/test/services/withings/lib/withings.postCreate.test.js index be1b8a917a..182c09fa68 100644 --- a/server/test/services/withings/lib/withings.postCreate.test.js +++ b/server/test/services/withings/lib/withings.postCreate.test.js @@ -32,13 +32,7 @@ describe('WithingsHandler poll', () => { selector: 'withings-string-9f66c962-7207-4e55-b893-712642f5e043', service_id: '55f177d7-bc35-4560-a1f0-4c58b9e9f2c4', should_poll: true, - external_id: '9f66c962-7207-4e55-b893-712642f5e043', - params: [ - { - name: 'WITHINGS_DEVICE_ID', - value: 'withingsDevideId', - }, - ], + external_id: 'withingsDevideId', }; await withingsHandler.postCreate(deviceToPoll); From f4aed0cbf85dcee4144b1acc0878439fd78ad36f Mon Sep 17 00:00:00 2001 From: euguuu Date: Sat, 10 Dec 2022 17:50:57 +0100 Subject: [PATCH 123/164] add logs --- .../withings/lib/withings.initDevices.js | 4 + server/services/withings/package-lock.json | 158 ++++++------------ 2 files changed, 51 insertions(+), 111 deletions(-) diff --git a/server/services/withings/lib/withings.initDevices.js b/server/services/withings/lib/withings.initDevices.js index 4df6a514a3..a10828cc6c 100755 --- a/server/services/withings/lib/withings.initDevices.js +++ b/server/services/withings/lib/withings.initDevices.js @@ -272,6 +272,10 @@ async function initDevices(userId) { }, { concurrency: 0 }, ); + + logger.trace('measureResult: ', measureResult); + logger.trace('mapOfDeviceByWithingsDeviceId: ', mapOfDeviceByWithingsDeviceId); + logger.trace('mapOfFeatureByWithingsDeviceId: ', mapOfFeatureByWithingsDeviceId); // Build list of device to display await Promise.map( diff --git a/server/services/withings/package-lock.json b/server/services/withings/package-lock.json index 3974c4b08f..208fa51bb0 100644 --- a/server/services/withings/package-lock.json +++ b/server/services/withings/package-lock.json @@ -1,151 +1,103 @@ { "name": "gladys-withings", - "lockfileVersion": 3, "requires": true, - "packages": { - "": { - "name": "gladys-withings", - "cpu": [ - "x64", - "arm", - "arm64" - ], - "os": [ - "darwin", - "linux", - "win32" - ], - "dependencies": { - "axios": "^0.21.4", - "bluebird": "^3.7.2", - "query-string": "^7.1.1", - "simple-oauth2": "^4.3.0", - "uuid": "^3.3.2" - } - }, - "node_modules/@hapi/boom": { + "lockfileVersion": 2, + "dependencies": { + "@hapi/boom": { "version": "9.1.4", "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-9.1.4.tgz", "integrity": "sha512-Ls1oH8jaN1vNsqcaHVYJrKmgMcKsC1wcp8bujvXrHaAqD2iDYq3HoOwsxwo09Cuda5R5nC0o0IxlrlTuvPuzSw==", - "dependencies": { + "requires": { "@hapi/hoek": "9.x.x" } }, - "node_modules/@hapi/bourne": { + "@hapi/bourne": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-2.1.0.tgz", "integrity": "sha512-i1BpaNDVLJdRBEKeJWkVO6tYX6DMFBuwMhSuWqLsY4ufeTKGVuV5rBsUhxPayXqnnWHgXUAmWK16H/ykO5Wj4Q==" }, - "node_modules/@hapi/hoek": { + "@hapi/hoek": { "version": "9.3.0", "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" }, - "node_modules/@hapi/topo": { + "@hapi/topo": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", - "dependencies": { + "requires": { "@hapi/hoek": "^9.0.0" } }, - "node_modules/@hapi/wreck": { + "@hapi/wreck": { "version": "17.2.0", "resolved": "https://registry.npmjs.org/@hapi/wreck/-/wreck-17.2.0.tgz", "integrity": "sha512-pJ5kjYoRPYDv+eIuiLQqhGon341fr2bNIYZjuotuPJG/3Ilzr/XtI+JAp0A86E2bYfsS3zBPABuS2ICkaXFT8g==", - "dependencies": { + "requires": { "@hapi/boom": "9.x.x", "@hapi/bourne": "2.x.x", "@hapi/hoek": "9.x.x" } }, - "node_modules/@sideway/address": { + "@sideway/address": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", - "dependencies": { + "requires": { "@hapi/hoek": "^9.0.0" } }, - "node_modules/@sideway/formula": { + "@sideway/formula": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==" }, - "node_modules/@sideway/pinpoint": { + "@sideway/pinpoint": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" }, - "node_modules/axios": { + "axios": { "version": "0.21.4", "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "dependencies": { + "requires": { "follow-redirects": "^1.14.0" } }, - "node_modules/bluebird": { + "bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, - "node_modules/debug": { + "debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { + "requires": { "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } } }, - "node_modules/decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==", - "engines": { - "node": ">=0.10" - } + "decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==" }, - "node_modules/filter-obj": { + "filter-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", - "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/follow-redirects": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", - "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/joi": { - "version": "17.6.0", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.6.0.tgz", - "integrity": "sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw==", - "dependencies": { + "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==" + }, + "follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" + }, + "joi": { + "version": "17.7.0", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.7.0.tgz", + "integrity": "sha512-1/ugc8djfn93rTE3WRKdCzGGt/EtiYKxITMO4Wiv6q5JL1gl9ePt4kBsl1S499nbosspfctIQTpYIhSmHA3WAg==", + "requires": { "@hapi/hoek": "^9.0.0", "@hapi/topo": "^5.0.0", "@sideway/address": "^4.1.3", @@ -153,63 +105,47 @@ "@sideway/pinpoint": "^2.0.0" } }, - "node_modules/ms": { + "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, - "node_modules/query-string": { + "query-string": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.1.tgz", "integrity": "sha512-MplouLRDHBZSG9z7fpuAAcI7aAYjDLhtsiVZsevsfaHWDS2IDdORKbSd1kWUA+V4zyva/HZoSfpwnYMMQDhb0w==", - "dependencies": { + "requires": { "decode-uri-component": "^0.2.0", "filter-obj": "^1.1.0", "split-on-first": "^1.0.0", "strict-uri-encode": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/simple-oauth2": { + "simple-oauth2": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/simple-oauth2/-/simple-oauth2-4.3.0.tgz", "integrity": "sha512-gjLIfy7M7WZSf3k5IZCQfEozbQwmW80zR9YMH4ph/WWG6S4U6sGhPujz8X6Hj6sZ8l7acSAxiyM4tF0vIN+E+A==", - "dependencies": { + "requires": { "@hapi/hoek": "^9.0.4", "@hapi/wreck": "^17.0.0", "debug": "^4.1.1", "joi": "^17.3.0" } }, - "node_modules/split-on-first": { + "split-on-first": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", - "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", - "engines": { - "node": ">=6" - } + "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==" }, - "node_modules/strict-uri-encode": { + "strict-uri-encode": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", - "integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY=", - "engines": { - "node": ">=4" - } + "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==" }, - "node_modules/uuid": { + "uuid": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "bin": { - "uuid": "bin/uuid" - } + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" } } } From 10b503ec1312f3fce39bbd103d2c9cab72ef7fdf Mon Sep 17 00:00:00 2001 From: euguuu Date: Sat, 10 Dec 2022 18:58:11 +0100 Subject: [PATCH 124/164] update pckage.json --- server/package-lock.json | 300 +++++++++++++++--- server/package.json | 2 +- .../lib/oauth2-client/oauth2.executeQuery.js | 8 - .../oauth2-client/oauth2.getAccessToken.js | 2 - server/services/withings/package-lock.json | 257 +++++++++++++-- server/services/withings/package.json | 5 +- 6 files changed, 488 insertions(+), 86 deletions(-) diff --git a/server/package-lock.json b/server/package-lock.json index 1c9c9451c3..b9e23aa46d 100644 --- a/server/package-lock.json +++ b/server/package-lock.json @@ -62,10 +62,12 @@ "jsdoc": "^3.6.10", "mocha": "^8.3.2", "mock-express-request": "^0.2.2", + "mock-http-server": "^1.4.5", "nock": "^13.0.11", "nodemon": "^2.0.7", "npm-run-all": "^4.1.5", "nyc": "^15.1.0", + "oauth2-mock-server": "^5.0.1", "prettier": "^1.17.1", "proxyquire": "^2.1.0", "shx": "^0.3.2", @@ -2583,6 +2585,18 @@ } ] }, + "node_modules/basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dev": true, + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/bcrypt": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.1.0.tgz", @@ -3284,6 +3298,60 @@ "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", "dev": true }, + "node_modules/connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/connect/node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/connect/node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/connect/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", @@ -3370,6 +3438,19 @@ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/cpu-features": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/cpu-features/-/cpu-features-0.0.4.tgz", @@ -6525,6 +6606,15 @@ "@sideway/pinpoint": "^2.0.0" } }, + "node_modules/jose": { + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/jose/-/jose-4.11.1.tgz", + "integrity": "sha512-YRv4Tk/Wlug8qicwqFNFVEZSdbROCHRAC6qu/i0dyNKr5JQdoa2pIGoS04lLO/jXQX7Z9omoNewYIVIxqZBd9Q==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/panva" + } + }, "node_modules/joycon": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", @@ -7704,6 +7794,18 @@ "type-is": "^1.6.15" } }, + "node_modules/mock-http-server": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/mock-http-server/-/mock-http-server-1.4.5.tgz", + "integrity": "sha512-7WZx7RJmMQEvTxJTOJt9U6+gLFl0JFaPHLSsAngfLaOgr3UH+ci7PW8049quyXwZGI4mh3W8oAch6w406ccyRQ==", + "dev": true, + "dependencies": { + "body-parser": "^1.18.1", + "connect": "^3.4.0", + "multiparty": "^4.1.2", + "underscore": "^1.8.3" + } + }, "node_modules/mock-req": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/mock-req/-/mock-req-0.2.0.tgz", @@ -7740,6 +7842,74 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, + "node_modules/multiparty": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/multiparty/-/multiparty-4.2.3.tgz", + "integrity": "sha512-Ak6EUJZuhGS8hJ3c2fY6UW5MbkGUPMBEGd13djUzoY/BHqV/gTuFWtC6IuVA7A2+v3yjBS6c4or50xhzTQZImQ==", + "dev": true, + "dependencies": { + "http-errors": "~1.8.1", + "safe-buffer": "5.2.1", + "uid-safe": "2.1.5" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/multiparty/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/multiparty/node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/multiparty/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/multiparty/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/nan": { "version": "2.17.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", @@ -8472,6 +8642,28 @@ "node": ">=6" } }, + "node_modules/oauth2-mock-server": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/oauth2-mock-server/-/oauth2-mock-server-5.0.1.tgz", + "integrity": "sha512-BbpcgQkP+kKM6XJWAEhP1UQSColU/PdHR0KPC4zqEm/eUZr5PklcmbfZOKmtZFWv/6T2kLLFsH+NEsEitByXuQ==", + "dev": true, + "dependencies": { + "basic-auth": "^2.0.1", + "body-parser": "^1.20.0", + "cors": "^2.8.5", + "express": "^4.18.1", + "jose": "^4.10.0", + "lodash.isplainobject": "^4.0.6", + "uuid": "^9.0.0" + }, + "bin": { + "oauth2-mock-server": "dist/oauth2-mock-server.js" + }, + "engines": { + "node": "^14.15 || ^16.13 || ^18", + "yarn": "^1.15.2" + } + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -9117,6 +9309,15 @@ "integrity": "sha512-A9hihu7dUTLOUCM+I8E61V4kRXnN4DwYeK0DwCBydC1MqNI1PidyAtbtpsJlBBzK4icSctEcCQ1bGcLpBuETUQ==", "dev": true }, + "node_modules/random-bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", + "integrity": "sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -10857,6 +11058,18 @@ "node": ">=0.8.0" } }, + "node_modules/uid-safe": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", + "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==", + "dev": true, + "dependencies": { + "random-bytes": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/umzug": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/umzug/-/umzug-2.3.0.tgz", @@ -14322,14 +14535,35 @@ "utils-merge": "1.0.1" }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", "dev": true, "requires": { - "ms": "2.0.0" + "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" } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true } } }, @@ -16721,9 +16955,9 @@ } }, "jose": { - "version": "4.10.4", - "resolved": "https://registry.npmjs.org/jose/-/jose-4.10.4.tgz", - "integrity": "sha512-eBH77Xs9Yc/oTDvukhAEDVMijhekPuNktXJL4tUlB22jqKP1k48v5nmsUmc8feoJPsxB3HsfEt2LbVSoz+1mng==", + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/jose/-/jose-4.11.1.tgz", + "integrity": "sha512-YRv4Tk/Wlug8qicwqFNFVEZSdbROCHRAC6qu/i0dyNKr5JQdoa2pIGoS04lLO/jXQX7Z9omoNewYIVIxqZBd9Q==", "dev": true }, "joycon": { @@ -17735,6 +17969,12 @@ "uid-safe": "2.1.5" }, "dependencies": { + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true + }, "http-errors": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", @@ -17754,16 +17994,10 @@ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true }, - "setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - }, - "toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", "dev": true } } @@ -18353,18 +18587,19 @@ } }, "oauth2-mock-server": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/oauth2-mock-server/-/oauth2-mock-server-4.3.2.tgz", - "integrity": "sha512-aCcG6S12hk6QK0nqsqx8kI6wfQkheDx51RIgq8a5o7DPwZuSJawj1UOz8xaRRg/xbv7E4k9iqwQhqLLkb1DJ8A==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/oauth2-mock-server/-/oauth2-mock-server-5.0.1.tgz", + "integrity": "sha512-BbpcgQkP+kKM6XJWAEhP1UQSColU/PdHR0KPC4zqEm/eUZr5PklcmbfZOKmtZFWv/6T2kLLFsH+NEsEitByXuQ==", "dev": true, "requires": { "basic-auth": "^2.0.1", "body-parser": "^1.20.0", "cors": "^2.8.5", "express": "^4.18.1", - "jose": "^4.8.1", + "jose": "^4.10.0", "lodash.isplainobject": "^4.0.6", - "uuid": "^8.3.2" + "uuid": "^9.0.0" + } }, "object-assign": { "version": "4.1.1", @@ -19335,25 +19570,6 @@ "object-inspect": "^1.9.0" } }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "dependencies": { - "object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", - "dev": true - } - } - }, "sigmund": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", diff --git a/server/package.json b/server/package.json index 23aee7b8ce..d9ddcec91b 100644 --- a/server/package.json +++ b/server/package.json @@ -67,7 +67,7 @@ "nodemon": "^2.0.7", "npm-run-all": "^4.1.5", "nyc": "^15.1.0", - "oauth2-mock-server": "^4.1.1", + "oauth2-mock-server": "^5.0.1", "prettier": "^1.17.1", "proxyquire": "^2.1.0", "shx": "^0.3.2", diff --git a/server/services/withings/lib/oauth2-client/oauth2.executeQuery.js b/server/services/withings/lib/oauth2-client/oauth2.executeQuery.js index 94d1bace4d..3249e7667d 100644 --- a/server/services/withings/lib/oauth2-client/oauth2.executeQuery.js +++ b/server/services/withings/lib/oauth2-client/oauth2.executeQuery.js @@ -12,8 +12,6 @@ const { OAUTH2 } = require('./utils/constants.js'); * @param {string} userId - Gladys userId of current session. * @param {string} tokenHost - Token host url. * @param {string} tokenPath - Token path. - * @param {string} authorizeHost - Authorize host url. - * @param {string} authorizePath - Authorize path. * @param {string} additionalAccessTokenRequestActionParam - Additional action parameter. * @returns {Object} Response of oauth2 refresh token query . * @example @@ -27,8 +25,6 @@ async function refreshTokenAccess( userId, tokenHost, tokenPath, - authorizeHost, - authorizePath, additionalAccessTokenRequestActionParam, ) { const clientId = await variable.getValue(OAUTH2.VARIABLE.CLIENT_ID, serviceId, userId); @@ -46,8 +42,6 @@ async function refreshTokenAccess( auth: { tokenHost, tokenPath, - authorizeHost, - authorizePath, }, http: { json: true, @@ -116,8 +110,6 @@ async function executeQuery(serviceId, userId, queryType, queryUrl, queryParams) userId, this.tokenHost, this.tokenPath, - this.authorizeHost, - this.authorizePath, this.additionalAccessTokenRequestActionParam, ); diff --git a/server/services/withings/lib/oauth2-client/oauth2.getAccessToken.js b/server/services/withings/lib/oauth2-client/oauth2.getAccessToken.js index 29dc4938aa..3e2aac8df5 100755 --- a/server/services/withings/lib/oauth2-client/oauth2.getAccessToken.js +++ b/server/services/withings/lib/oauth2-client/oauth2.getAccessToken.js @@ -34,8 +34,6 @@ async function getAccessToken(serviceId, userId, authorizationCode, referer, red auth: { tokenHost: this.tokenHost, tokenPath: this.tokenPath, - authorizeHost: this.authorizeHost, - authorizePath: this.authorizePath, }, }; diff --git a/server/services/withings/package-lock.json b/server/services/withings/package-lock.json index 208fa51bb0..d569e5c48e 100644 --- a/server/services/withings/package-lock.json +++ b/server/services/withings/package-lock.json @@ -1,20 +1,208 @@ { "name": "gladys-withings", - "requires": true, "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "gladys-withings", + "cpu": [ + "x64", + "arm", + "arm64" + ], + "os": [ + "darwin", + "linux", + "win32" + ], + "dependencies": { + "axios": "^0.21.4", + "bluebird": "^3.7.2", + "query-string": "^7.1.3", + "simple-oauth2": "^5.0.0" + } + }, + "node_modules/@hapi/boom": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-10.0.0.tgz", + "integrity": "sha512-1YVs9tLHhypBqqinKQRqh7FUERIolarQApO37OWkzD+z6y6USi871Sv746zBPKcIOBuI6g6y4FrwX87mmJ90Gg==", + "dependencies": { + "@hapi/hoek": "10.x.x" + } + }, + "node_modules/@hapi/boom/node_modules/@hapi/hoek": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-10.0.1.tgz", + "integrity": "sha512-CvlW7jmOhWzuqOqiJQ3rQVLMcREh0eel4IBnxDx2FAcK8g7qoJRQK4L1CPBASoCY6y8e6zuCy3f2g+HWdkzcMw==" + }, + "node_modules/@hapi/bourne": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-3.0.0.tgz", + "integrity": "sha512-Waj1cwPXJDucOib4a3bAISsKJVb15MKi9IvmTI/7ssVEm6sywXGjVJDhl6/umt1pK1ZS7PacXU3A1PmFKHEZ2w==" + }, + "node_modules/@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" + }, + "node_modules/@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@hapi/wreck": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/@hapi/wreck/-/wreck-18.0.0.tgz", + "integrity": "sha512-Yk9STxoM06Hjjq58cH0KFG91u9F2h9eVE72o8vUr3AfK80qt7I2POG5+cDGTEntbnvvzm0ERow2sjG3QsqCWUA==", + "dependencies": { + "@hapi/boom": "^10.0.0", + "@hapi/bourne": "^3.0.0", + "@hapi/hoek": "^10.0.0" + } + }, + "node_modules/@hapi/wreck/node_modules/@hapi/hoek": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-10.0.1.tgz", + "integrity": "sha512-CvlW7jmOhWzuqOqiJQ3rQVLMcREh0eel4IBnxDx2FAcK8g7qoJRQK4L1CPBASoCY6y8e6zuCy3f2g+HWdkzcMw==" + }, + "node_modules/@sideway/address": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", + "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@sideway/formula": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", + "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==" + }, + "node_modules/@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" + }, + "node_modules/axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "dependencies": { + "follow-redirects": "^1.14.0" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + } + }, + "node_modules/decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==" + }, + "node_modules/filter-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", + "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==" + }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" + }, + "node_modules/joi": { + "version": "17.7.0", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.7.0.tgz", + "integrity": "sha512-1/ugc8djfn93rTE3WRKdCzGGt/EtiYKxITMO4Wiv6q5JL1gl9ePt4kBsl1S499nbosspfctIQTpYIhSmHA3WAg==", + "dependencies": { + "@hapi/hoek": "^9.0.0", + "@hapi/topo": "^5.0.0", + "@sideway/address": "^4.1.3", + "@sideway/formula": "^3.0.0", + "@sideway/pinpoint": "^2.0.0" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/query-string": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.3.tgz", + "integrity": "sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==", + "dependencies": { + "decode-uri-component": "^0.2.2", + "filter-obj": "^1.1.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/simple-oauth2": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/simple-oauth2/-/simple-oauth2-5.0.0.tgz", + "integrity": "sha512-8291lo/z5ZdpmiOFzOs1kF3cxn22bMj5FFH+DNUppLJrpoIlM1QnFiE7KpshHu3J3i21TVcx4yW+gXYjdCKDLQ==", + "dependencies": { + "@hapi/hoek": "^10.0.1", + "@hapi/wreck": "^18.0.0", + "debug": "^4.3.4", + "joi": "^17.6.4" + } + }, + "node_modules/simple-oauth2/node_modules/@hapi/hoek": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-10.0.1.tgz", + "integrity": "sha512-CvlW7jmOhWzuqOqiJQ3rQVLMcREh0eel4IBnxDx2FAcK8g7qoJRQK4L1CPBASoCY6y8e6zuCy3f2g+HWdkzcMw==" + }, + "node_modules/split-on-first": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", + "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==" + }, + "node_modules/strict-uri-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", + "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==" + } + }, "dependencies": { "@hapi/boom": { - "version": "9.1.4", - "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-9.1.4.tgz", - "integrity": "sha512-Ls1oH8jaN1vNsqcaHVYJrKmgMcKsC1wcp8bujvXrHaAqD2iDYq3HoOwsxwo09Cuda5R5nC0o0IxlrlTuvPuzSw==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-10.0.0.tgz", + "integrity": "sha512-1YVs9tLHhypBqqinKQRqh7FUERIolarQApO37OWkzD+z6y6USi871Sv746zBPKcIOBuI6g6y4FrwX87mmJ90Gg==", "requires": { - "@hapi/hoek": "9.x.x" + "@hapi/hoek": "10.x.x" + }, + "dependencies": { + "@hapi/hoek": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-10.0.1.tgz", + "integrity": "sha512-CvlW7jmOhWzuqOqiJQ3rQVLMcREh0eel4IBnxDx2FAcK8g7qoJRQK4L1CPBASoCY6y8e6zuCy3f2g+HWdkzcMw==" + } } }, "@hapi/bourne": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-2.1.0.tgz", - "integrity": "sha512-i1BpaNDVLJdRBEKeJWkVO6tYX6DMFBuwMhSuWqLsY4ufeTKGVuV5rBsUhxPayXqnnWHgXUAmWK16H/ykO5Wj4Q==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-3.0.0.tgz", + "integrity": "sha512-Waj1cwPXJDucOib4a3bAISsKJVb15MKi9IvmTI/7ssVEm6sywXGjVJDhl6/umt1pK1ZS7PacXU3A1PmFKHEZ2w==" }, "@hapi/hoek": { "version": "9.3.0", @@ -30,13 +218,20 @@ } }, "@hapi/wreck": { - "version": "17.2.0", - "resolved": "https://registry.npmjs.org/@hapi/wreck/-/wreck-17.2.0.tgz", - "integrity": "sha512-pJ5kjYoRPYDv+eIuiLQqhGon341fr2bNIYZjuotuPJG/3Ilzr/XtI+JAp0A86E2bYfsS3zBPABuS2ICkaXFT8g==", + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/@hapi/wreck/-/wreck-18.0.0.tgz", + "integrity": "sha512-Yk9STxoM06Hjjq58cH0KFG91u9F2h9eVE72o8vUr3AfK80qt7I2POG5+cDGTEntbnvvzm0ERow2sjG3QsqCWUA==", "requires": { - "@hapi/boom": "9.x.x", - "@hapi/bourne": "2.x.x", - "@hapi/hoek": "9.x.x" + "@hapi/boom": "^10.0.0", + "@hapi/bourne": "^3.0.0", + "@hapi/hoek": "^10.0.0" + }, + "dependencies": { + "@hapi/hoek": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-10.0.1.tgz", + "integrity": "sha512-CvlW7jmOhWzuqOqiJQ3rQVLMcREh0eel4IBnxDx2FAcK8g7qoJRQK4L1CPBASoCY6y8e6zuCy3f2g+HWdkzcMw==" + } } }, "@sideway/address": { @@ -111,25 +306,32 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "query-string": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.1.tgz", - "integrity": "sha512-MplouLRDHBZSG9z7fpuAAcI7aAYjDLhtsiVZsevsfaHWDS2IDdORKbSd1kWUA+V4zyva/HZoSfpwnYMMQDhb0w==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.3.tgz", + "integrity": "sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==", "requires": { - "decode-uri-component": "^0.2.0", + "decode-uri-component": "^0.2.2", "filter-obj": "^1.1.0", "split-on-first": "^1.0.0", "strict-uri-encode": "^2.0.0" } }, "simple-oauth2": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/simple-oauth2/-/simple-oauth2-4.3.0.tgz", - "integrity": "sha512-gjLIfy7M7WZSf3k5IZCQfEozbQwmW80zR9YMH4ph/WWG6S4U6sGhPujz8X6Hj6sZ8l7acSAxiyM4tF0vIN+E+A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/simple-oauth2/-/simple-oauth2-5.0.0.tgz", + "integrity": "sha512-8291lo/z5ZdpmiOFzOs1kF3cxn22bMj5FFH+DNUppLJrpoIlM1QnFiE7KpshHu3J3i21TVcx4yW+gXYjdCKDLQ==", "requires": { - "@hapi/hoek": "^9.0.4", - "@hapi/wreck": "^17.0.0", - "debug": "^4.1.1", - "joi": "^17.3.0" + "@hapi/hoek": "^10.0.1", + "@hapi/wreck": "^18.0.0", + "debug": "^4.3.4", + "joi": "^17.6.4" + }, + "dependencies": { + "@hapi/hoek": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-10.0.1.tgz", + "integrity": "sha512-CvlW7jmOhWzuqOqiJQ3rQVLMcREh0eel4IBnxDx2FAcK8g7qoJRQK4L1CPBASoCY6y8e6zuCy3f2g+HWdkzcMw==" + } } }, "split-on-first": { @@ -141,11 +343,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==" - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" } } } diff --git a/server/services/withings/package.json b/server/services/withings/package.json index 0f429b618c..6f61f3dae2 100755 --- a/server/services/withings/package.json +++ b/server/services/withings/package.json @@ -15,8 +15,7 @@ "dependencies": { "axios": "^0.21.4", "bluebird": "^3.7.2", - "query-string": "^7.1.1", - "simple-oauth2": "^4.3.0", - "uuid": "^3.3.2" + "query-string": "^7.1.3", + "simple-oauth2": "^5.0.0" } } From ab745f555ca62e8e9c4b107625843c9c65cd9582 Mon Sep 17 00:00:00 2001 From: euguuu Date: Sat, 10 Dec 2022 19:03:01 +0100 Subject: [PATCH 125/164] fix prettier --- .../withings/lib/utils/withings.buildBatteryLevelValues.js | 2 +- server/services/withings/lib/withings.initDevices.js | 2 +- server/test/services/withings/lib/withings.initDevices.test.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/server/services/withings/lib/utils/withings.buildBatteryLevelValues.js b/server/services/withings/lib/utils/withings.buildBatteryLevelValues.js index 706b00476f..a2b06b65b2 100644 --- a/server/services/withings/lib/utils/withings.buildBatteryLevelValues.js +++ b/server/services/withings/lib/utils/withings.buildBatteryLevelValues.js @@ -18,7 +18,7 @@ function buildBatteryLevelValues(currentBatValueString) { case 'medium': batValueString = `${currentBatValueString} (> 30%)`; batValue = 50; - break; + break; case 'high': batValueString = `${currentBatValueString} (> 75%)`; batValue = 100; diff --git a/server/services/withings/lib/withings.initDevices.js b/server/services/withings/lib/withings.initDevices.js index a10828cc6c..f390f2e506 100755 --- a/server/services/withings/lib/withings.initDevices.js +++ b/server/services/withings/lib/withings.initDevices.js @@ -272,7 +272,7 @@ async function initDevices(userId) { }, { concurrency: 0 }, ); - + logger.trace('measureResult: ', measureResult); logger.trace('mapOfDeviceByWithingsDeviceId: ', mapOfDeviceByWithingsDeviceId); logger.trace('mapOfFeatureByWithingsDeviceId: ', mapOfFeatureByWithingsDeviceId); diff --git a/server/test/services/withings/lib/withings.initDevices.test.js b/server/test/services/withings/lib/withings.initDevices.test.js index 66eab4a1d3..b5e6cbcd06 100644 --- a/server/test/services/withings/lib/withings.initDevices.test.js +++ b/server/test/services/withings/lib/withings.initDevices.test.js @@ -19,7 +19,7 @@ const gladys = { return [ { name: 'Withings - string', - external_id: 'withingsDevideId4' + external_id: 'withingsDevideId4', }, ]; }, From 5eed16d7a7f57858a3a5a0d50a2b33283fbf5c63 Mon Sep 17 00:00:00 2001 From: euguuu Date: Sat, 10 Dec 2022 19:44:11 +0100 Subject: [PATCH 126/164] fix eslint --- .../oauth2.buildAuthorizationUri.js | 2 +- .../lib/oauth2-client/oauth2.deleteClient.js | 2 +- .../lib/oauth2-client/oauth2.executeQuery.js | 2 +- .../lib/oauth2-client/oauth2.getAccessToken.js | 2 +- .../lib/oauth2-client/oauth2.getCurrentConfig.js | 2 +- server/services/withings/lib/withings.poll.js | 2 +- server/services/withings/package-lock.json | 16 +++++++++++++++- server/services/withings/package.json | 3 ++- .../lib/oauth2-client/oauth2manager.test.js | 6 +++--- .../withings/lib/withings.initDevices.test.js | 4 ++-- .../services/withings/lib/withings.poll.test.js | 14 +------------- .../withings/lib/withings.serverMock.test.js | 2 +- 12 files changed, 30 insertions(+), 27 deletions(-) diff --git a/server/services/withings/lib/oauth2-client/oauth2.buildAuthorizationUri.js b/server/services/withings/lib/oauth2-client/oauth2.buildAuthorizationUri.js index 87a3ff73e8..9f3ff267da 100755 --- a/server/services/withings/lib/oauth2-client/oauth2.buildAuthorizationUri.js +++ b/server/services/withings/lib/oauth2-client/oauth2.buildAuthorizationUri.js @@ -1,5 +1,5 @@ const { AuthorizationCode } = require('simple-oauth2'); -const { OAUTH2 } = require('./utils/constants.js'); +const { OAUTH2 } = require('./utils/constants'); /** * @description Build a authorization uri of current oauth2 integration. diff --git a/server/services/withings/lib/oauth2-client/oauth2.deleteClient.js b/server/services/withings/lib/oauth2-client/oauth2.deleteClient.js index bdc654a9b1..2d218a55e1 100755 --- a/server/services/withings/lib/oauth2-client/oauth2.deleteClient.js +++ b/server/services/withings/lib/oauth2-client/oauth2.deleteClient.js @@ -1,4 +1,4 @@ -const { OAUTH2 } = require('./utils/constants.js'); +const { OAUTH2 } = require('./utils/constants'); /** * @description Delete client_id and secrei_id of current oauth2 integration. diff --git a/server/services/withings/lib/oauth2-client/oauth2.executeQuery.js b/server/services/withings/lib/oauth2-client/oauth2.executeQuery.js index 3249e7667d..821932e21a 100644 --- a/server/services/withings/lib/oauth2-client/oauth2.executeQuery.js +++ b/server/services/withings/lib/oauth2-client/oauth2.executeQuery.js @@ -2,7 +2,7 @@ const queryString = require('query-string'); const { default: axios } = require('axios'); const { ClientCredentials } = require('simple-oauth2'); const logger = require('../../../../utils/logger'); -const { OAUTH2 } = require('./utils/constants.js'); +const { OAUTH2 } = require('./utils/constants'); /** * diff --git a/server/services/withings/lib/oauth2-client/oauth2.getAccessToken.js b/server/services/withings/lib/oauth2-client/oauth2.getAccessToken.js index 3e2aac8df5..22e4dfc565 100755 --- a/server/services/withings/lib/oauth2-client/oauth2.getAccessToken.js +++ b/server/services/withings/lib/oauth2-client/oauth2.getAccessToken.js @@ -1,6 +1,6 @@ const { AuthorizationCode } = require('simple-oauth2'); const logger = require('../../../../utils/logger'); -const { OAUTH2 } = require('./utils/constants.js'); +const { OAUTH2 } = require('./utils/constants'); const { BadOauth2ClientResponse } = require('./utils/coreErrors'); /** diff --git a/server/services/withings/lib/oauth2-client/oauth2.getCurrentConfig.js b/server/services/withings/lib/oauth2-client/oauth2.getCurrentConfig.js index 939db6e0ce..0c0366c569 100755 --- a/server/services/withings/lib/oauth2-client/oauth2.getCurrentConfig.js +++ b/server/services/withings/lib/oauth2-client/oauth2.getCurrentConfig.js @@ -1,4 +1,4 @@ -const { OAUTH2 } = require('./utils/constants.js'); +const { OAUTH2 } = require('./utils/constants'); /** * @description Return the current integration config. diff --git a/server/services/withings/lib/withings.poll.js b/server/services/withings/lib/withings.poll.js index c45280702c..217ecfc994 100755 --- a/server/services/withings/lib/withings.poll.js +++ b/server/services/withings/lib/withings.poll.js @@ -1,7 +1,7 @@ const Promise = require('bluebird'); const { DEVICE_FEATURE_TYPES } = require('../../../utils/constants'); const logger = require('../../../utils/logger'); -const { OAUTH2 } = require('./oauth2-client/utils/constants.js'); +const { OAUTH2 } = require('./oauth2-client/utils/constants'); /** * @description Poll value of a withings device. diff --git a/server/services/withings/package-lock.json b/server/services/withings/package-lock.json index d569e5c48e..0ace93aca4 100644 --- a/server/services/withings/package-lock.json +++ b/server/services/withings/package-lock.json @@ -19,7 +19,8 @@ "axios": "^0.21.4", "bluebird": "^3.7.2", "query-string": "^7.1.3", - "simple-oauth2": "^5.0.0" + "simple-oauth2": "^5.0.0", + "uuid": "^9.0.0" } }, "node_modules/@hapi/boom": { @@ -181,6 +182,14 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==" + }, + "node_modules/uuid": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "bin": { + "uuid": "dist/bin/uuid" + } } }, "dependencies": { @@ -343,6 +352,11 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==" + }, + "uuid": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==" } } } diff --git a/server/services/withings/package.json b/server/services/withings/package.json index 6f61f3dae2..794d5ebb20 100755 --- a/server/services/withings/package.json +++ b/server/services/withings/package.json @@ -16,6 +16,7 @@ "axios": "^0.21.4", "bluebird": "^3.7.2", "query-string": "^7.1.3", - "simple-oauth2": "^5.0.0" + "simple-oauth2": "^5.0.0", + "uuid": "^9.0.0" } } diff --git a/server/test/services/withings/lib/oauth2-client/oauth2manager.test.js b/server/test/services/withings/lib/oauth2-client/oauth2manager.test.js index 6243656af9..885f7269b4 100755 --- a/server/test/services/withings/lib/oauth2-client/oauth2manager.test.js +++ b/server/test/services/withings/lib/oauth2-client/oauth2manager.test.js @@ -4,7 +4,7 @@ const { fake } = require('sinon'); const OAuth2Manager = require('../../../../../services/withings/lib/oauth2-client'); const logger = require('../../../../../utils/logger'); -const { OAUTH2 } = require('../../../../../services/withings/lib/oauth2-client/utils/constants.js'); +const { OAUTH2 } = require('../../../../../services/withings/lib/oauth2-client/utils/constants'); const { BadOauth2ClientResponse } = require('../../../../../services/withings/lib/oauth2-client/utils/coreErrors'); const server = new OAuth2Server(); @@ -42,7 +42,7 @@ const gladys = { * Verify componant to implement oauth2manager executeQuery */ describe('oauth2manager test', () => { - before(async function testBefore() { + before(async () => { // Generate a new RSA key and add it to the keystore await server.issuer.keys.generate('RS256'); // Start the server @@ -50,7 +50,7 @@ describe('oauth2manager test', () => { logger.debug('Issuer URL:', server.issuer.url); }); - after(async function testAfter() { + after(async () => { await server.stop(); }); diff --git a/server/test/services/withings/lib/withings.initDevices.test.js b/server/test/services/withings/lib/withings.initDevices.test.js index b5e6cbcd06..deff7e2e87 100644 --- a/server/test/services/withings/lib/withings.initDevices.test.js +++ b/server/test/services/withings/lib/withings.initDevices.test.js @@ -42,7 +42,7 @@ const gladys = { }; describe('WithingsHandler initDevices', () => { - before(function testBefore(done) { + before((done) => { server.start(done); // Start fake oatuh2 server @@ -52,7 +52,7 @@ describe('WithingsHandler initDevices', () => { serverOauth2.start(oauth2ServerPort, serverHost); }); - after(function testAfter(done) { + after((done) => { server.stop(done); serverOauth2.stop(); }); diff --git a/server/test/services/withings/lib/withings.poll.test.js b/server/test/services/withings/lib/withings.poll.test.js index a9852dfe57..578900564a 100644 --- a/server/test/services/withings/lib/withings.poll.test.js +++ b/server/test/services/withings/lib/withings.poll.test.js @@ -4,7 +4,7 @@ const sinon = require('sinon'); const serverHttpWithingsMock = require('./withings.serverMock.test'); const WithingsHandler = require('../../../../services/withings/lib'); const { DEVICE_FEATURE_TYPES } = require('../../../../utils/constants'); -const { OAUTH2 } = require('../../../../services/withings/lib/oauth2-client/utils/constants.js'); +const { OAUTH2 } = require('../../../../services/withings/lib/oauth2-client/utils/constants'); const { assert, fake } = sinon; @@ -172,18 +172,6 @@ describe('WithingsHandler poll', () => { chai.assert.equal(countGetValueCall, 52); chai.assert.equal(countGetValueCallClientId, 18); - const deviceDef = { - id: 'gdfgdfgd-7207-4e55-b893-gfdgdfgkjliu', - name: 'Withings - string', - model: 'string', - poll_frequency: 86400000, - selector: 'withings-string-9f66c962-7207-4e55-b893-712642f5e043', - service_id: '55f177d7-bc35-4560-a1f0-4c58b9e9f2c4', - should_poll: true, - external_id: 'withingsDevideId', - features: deviceToPoll.features, - }; - assert.callCount(gladys.device.saveState, 1); // 17 feature - 1 feature unknown = 16 state to save assert.callCount(gladys.device.saveHistoricalState, 16); diff --git a/server/test/services/withings/lib/withings.serverMock.test.js b/server/test/services/withings/lib/withings.serverMock.test.js index e16a604d16..d55eec23b3 100644 --- a/server/test/services/withings/lib/withings.serverMock.test.js +++ b/server/test/services/withings/lib/withings.serverMock.test.js @@ -1,5 +1,5 @@ const ServerMock = require('mock-http-server'); -const { OAUTH2 } = require('../../../../services/withings/lib/oauth2-client/utils/constants.js'); +const { OAUTH2 } = require('../../../../services/withings/lib/oauth2-client/utils/constants'); /** * From 58b1c4e27c96afa521e6bea3ac999ebe1948b005 Mon Sep 17 00:00:00 2001 From: euguuu Date: Sat, 10 Dec 2022 20:45:05 +0100 Subject: [PATCH 127/164] fix test --- .../api/oauth2/oauth2.controller.test.js | 26 ++++++++++++++++--- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/server/test/services/withings/api/oauth2/oauth2.controller.test.js b/server/test/services/withings/api/oauth2/oauth2.controller.test.js index 1b045f8bc1..081f290271 100755 --- a/server/test/services/withings/api/oauth2/oauth2.controller.test.js +++ b/server/test/services/withings/api/oauth2/oauth2.controller.test.js @@ -1,4 +1,5 @@ const sinon = require('sinon'); +const chai = require('chai'); const { fake, assert } = sinon; @@ -71,8 +72,13 @@ describe('POST /api/v1/service/withings/oauth2/client/authorization-uri', () => const res = { json: fake.returns(null), status: fake.returns(null) }; - await controller['post /api/v1/service/withings/oauth2/client/authorization-uri'].controller(req, res); - + try { + await controller['post /api/v1/service/withings/oauth2/client/authorization-uri'].controller(req, res); + assert.fail(); + } catch (e) { + chai.assert.equal(e.status, 400); + chai.assert.equal(e.code, 'BAD_REQUEST'); + } assert.notCalled(withingsHandler.oauth2Client.getAccessToken); assert.notCalled(res.json); }); @@ -119,7 +125,13 @@ describe('POST /api/v1/service/withings/oauth2/client/access-token', () => { json: fake.returns(null), status: fake.returns(null), }; - await controller['post /api/v1/service/withings/oauth2/client/access-token'].controller(req, res); + try { + await controller['post /api/v1/service/withings/oauth2/client/access-token'].controller(req, res); + assert.fail(); + } catch (e) { + chai.assert.equal(e.status, 400); + chai.assert.equal(e.code, 'BAD_REQUEST'); + } assert.notCalled(withingsHandler.oauth2Client.getAccessToken); assert.notCalled(res.json); }); @@ -163,7 +175,13 @@ describe('GET /api/v1/service/withings/oauth2/client', () => { }; const res = { json: fake.returns(null), status: fake.returns(null) }; - await controller['get /api/v1/service/withings/oauth2/client'].controller(req, res); + try { + await controller['get /api/v1/service/withings/oauth2/client'].controller(req, res); + assert.fail(); + } catch (e) { + chai.assert.equal(e.status, 400); + chai.assert.equal(e.code, 'BAD_REQUEST'); + } assert.notCalled(withingsHandler.oauth2Client.getAccessToken); assert.notCalled(res.json); }); From b973fd89f51edad5c9409f70cef093066112a0cd Mon Sep 17 00:00:00 2001 From: euguuu Date: Sun, 10 Apr 2022 15:22:44 +0200 Subject: [PATCH 128/164] Create docker-image.yml --- .github/workflows/docker-image.yml | 92 ++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 .github/workflows/docker-image.yml diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml new file mode 100644 index 0000000000..c025ebdd04 --- /dev/null +++ b/.github/workflows/docker-image.yml @@ -0,0 +1,92 @@ +name: Docker Image CI + + +on: + workflow_dispatch: + inputs: + tag: + description: 'Docker Tag to build' + required: true + default: 'dev' + platforms: + description: 'Docker platform to build' + required: true + default: 'linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64/v8' + +jobs: + build-front: + name: Front build + runs-on: ubuntu-20.04 + steps: + - name: ⬇️ Checkout code + uses: actions/checkout@v2 + - name: 💽 Setup nodejs + uses: actions/setup-node@v2 + with: + node-version: '14' + - name: 📇 Use npm cache + uses: actions/cache@v2 + with: + path: ~/.npm + key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-node- + - name: 📦 Install NPM front packages + working-directory: ./front + run: | + npm ci + - name: 🏗️ Build front + working-directory: ./front + run: | + npm run build + - name: ↗️ Upload build artifact + uses: actions/upload-artifact@v2 + with: + name: static + path: front/build + docker: + needs: build-front + name: Docker magic ! + runs-on: ubuntu-20.04 + env: + DOCKERHUB_USER: ${{secrets.DOCKERHUB_USER}} + DOCKERHUB_PASSWORD: ${{secrets.DOCKERHUB_PASSWORD}} + DOCKERHUB_REPO: ${{secrets.DOCKERHUB_REPO}} + steps: + - name: ⬇️ Checkout code + uses: actions/checkout@v2 + - name: 🐳 Docker meta + id: docker_meta + uses: docker/metadata-action@v3 + with: + images: ${{ secrets.DOCKERHUB_REPO }} + labels: | + org.opencontainers.image.title=Gladys Assistant Preprod Image + - name: 💽 Set up QEMU + uses: docker/setup-qemu-action@v1 + - name: 🐳 Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v1 + with: + version: latest + - name: ↙️ Download build artifact + uses: actions/download-artifact@v2 + with: + name: static + path: static + - name: 🔑 Login to DockerHub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKERHUB_USER }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} + - name: 🐳 Build and push + uses: docker/build-push-action@v2 + with: + context: . + file: ./docker/Dockerfile.buildx + platforms: ${{ github.event.inputs.platforms }} + push: true + pull: true + tags: ${{ secrets.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }} + cache-from: type=registry,ref=${{ secrets.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }} + cache-to: type=inline From cf1ffe7826597a904b85194b887a28362eedd90c Mon Sep 17 00:00:00 2001 From: euguuu Date: Sun, 10 Apr 2022 15:23:26 +0200 Subject: [PATCH 129/164] Delete docker-image.yml --- .github/workflows/docker-image.yml | 92 ------------------------------ 1 file changed, 92 deletions(-) delete mode 100644 .github/workflows/docker-image.yml diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml deleted file mode 100644 index c025ebdd04..0000000000 --- a/.github/workflows/docker-image.yml +++ /dev/null @@ -1,92 +0,0 @@ -name: Docker Image CI - - -on: - workflow_dispatch: - inputs: - tag: - description: 'Docker Tag to build' - required: true - default: 'dev' - platforms: - description: 'Docker platform to build' - required: true - default: 'linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64/v8' - -jobs: - build-front: - name: Front build - runs-on: ubuntu-20.04 - steps: - - name: ⬇️ Checkout code - uses: actions/checkout@v2 - - name: 💽 Setup nodejs - uses: actions/setup-node@v2 - with: - node-version: '14' - - name: 📇 Use npm cache - uses: actions/cache@v2 - with: - path: ~/.npm - key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} - restore-keys: | - ${{ runner.os }}-node- - - name: 📦 Install NPM front packages - working-directory: ./front - run: | - npm ci - - name: 🏗️ Build front - working-directory: ./front - run: | - npm run build - - name: ↗️ Upload build artifact - uses: actions/upload-artifact@v2 - with: - name: static - path: front/build - docker: - needs: build-front - name: Docker magic ! - runs-on: ubuntu-20.04 - env: - DOCKERHUB_USER: ${{secrets.DOCKERHUB_USER}} - DOCKERHUB_PASSWORD: ${{secrets.DOCKERHUB_PASSWORD}} - DOCKERHUB_REPO: ${{secrets.DOCKERHUB_REPO}} - steps: - - name: ⬇️ Checkout code - uses: actions/checkout@v2 - - name: 🐳 Docker meta - id: docker_meta - uses: docker/metadata-action@v3 - with: - images: ${{ secrets.DOCKERHUB_REPO }} - labels: | - org.opencontainers.image.title=Gladys Assistant Preprod Image - - name: 💽 Set up QEMU - uses: docker/setup-qemu-action@v1 - - name: 🐳 Set up Docker Buildx - id: buildx - uses: docker/setup-buildx-action@v1 - with: - version: latest - - name: ↙️ Download build artifact - uses: actions/download-artifact@v2 - with: - name: static - path: static - - name: 🔑 Login to DockerHub - uses: docker/login-action@v1 - with: - username: ${{ secrets.DOCKERHUB_USER }} - password: ${{ secrets.DOCKERHUB_PASSWORD }} - - name: 🐳 Build and push - uses: docker/build-push-action@v2 - with: - context: . - file: ./docker/Dockerfile.buildx - platforms: ${{ github.event.inputs.platforms }} - push: true - pull: true - tags: ${{ secrets.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }} - cache-from: type=registry,ref=${{ secrets.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }} - cache-to: type=inline From 0be7624bb160d12447130b5d4d5fa3a06873b32a Mon Sep 17 00:00:00 2001 From: euguuu Date: Sun, 18 Dec 2022 17:08:48 +0100 Subject: [PATCH 130/164] fix for scanwatch --- .../lib/utils/withings.buildMapOfMeasures.js | 18 ++++++++------- .../lib/utils/withings.getAndSaveMeasures.js | 22 +++++++++++-------- server/services/withings/lib/withings.poll.js | 18 +++++++++++++++ 3 files changed, 41 insertions(+), 17 deletions(-) diff --git a/server/services/withings/lib/utils/withings.buildMapOfMeasures.js b/server/services/withings/lib/utils/withings.buildMapOfMeasures.js index e8556b8adc..b539abf1da 100644 --- a/server/services/withings/lib/utils/withings.buildMapOfMeasures.js +++ b/server/services/withings/lib/utils/withings.buildMapOfMeasures.js @@ -8,14 +8,16 @@ */ function buildMapOfMeasures(measuregrps) { const mapOfMeasuresGrpsByWithingsDeviceId = new Map(); - measuregrps.forEach((element) => { - if (element) { - // Build map of measuregrps by withings device id - const measureList = mapOfMeasuresGrpsByWithingsDeviceId.get(element.deviceid) || []; - measureList.push(element); - mapOfMeasuresGrpsByWithingsDeviceId.set(element.deviceid, measureList); - } - }); + if (measuregrps) { + measuregrps.forEach((element) => { + if (element) { + // Build map of measuregrps by withings device id + const measureList = mapOfMeasuresGrpsByWithingsDeviceId.get(element.deviceid) || []; + measureList.push(element); + mapOfMeasuresGrpsByWithingsDeviceId.set(element.deviceid, measureList); + } + }); + } return mapOfMeasuresGrpsByWithingsDeviceId; } diff --git a/server/services/withings/lib/utils/withings.getAndSaveMeasures.js b/server/services/withings/lib/utils/withings.getAndSaveMeasures.js index e2a56645e3..17bd70db2d 100644 --- a/server/services/withings/lib/utils/withings.getAndSaveMeasures.js +++ b/server/services/withings/lib/utils/withings.getAndSaveMeasures.js @@ -27,15 +27,19 @@ async function getAndSaveMeasures(feature, withingsType, userId) { await Promise.each(mapOfMeasuresGrpsByWithingsDeviceId, async (value) => { const key = value[0]; const valueList = value[1]; - await Promise.each(valueList, async (currentGroup) => { - if (key) { - await Promise.each(currentGroup.measures, async (measure) => { - const historicalValueState = (measure.value * 10 ** measure.unit).toFixed(2); - const createdAt = new Date(currentGroup.created * 1000); - await this.gladys.device.saveHistoricalState(feature, historicalValueState, createdAt); - }); - } - }); + if (key) { + await Promise.each(valueList, async (currentGroup) => { + if (currentGroup) { + await Promise.each(currentGroup.measures, async (measure) => { + if (measure) { + const historicalValueState = (measure.value * 10 ** measure.unit).toFixed(2); + const createdAt = new Date(currentGroup.created * 1000); + await this.gladys.device.saveHistoricalState(feature, historicalValueState, createdAt); + } + }); + } + }); + } }); } } diff --git a/server/services/withings/lib/withings.poll.js b/server/services/withings/lib/withings.poll.js index 217ecfc994..b41989c0e4 100755 --- a/server/services/withings/lib/withings.poll.js +++ b/server/services/withings/lib/withings.poll.js @@ -84,6 +84,24 @@ async function poll(device) { case DEVICE_FEATURE_TYPES.HEALTH.PULSE_WAVE_VELOCITY: withingsType = 91; break; + case DEVICE_FEATURE_TYPES.HEALTH.VO2_MAX: + withingsType = 123; + break; + case DEVICE_FEATURE_TYPES.HEALTH.QRS_INERVAL: + withingsType = 135; + break; + case DEVICE_FEATURE_TYPES.HEALTH.PR_INERVAL: + withingsType = 136; + break; + case DEVICE_FEATURE_TYPES.HEALTH.QT_INERVAL: + withingsType = 137; + break; + case DEVICE_FEATURE_TYPES.HEALTH.CORRECTED_QT_INERVAL: + withingsType = 138; + break; + case DEVICE_FEATURE_TYPES.HEALTH.ATRIAL_FIBRILLATION: + withingsType = 139; + break; case DEVICE_FEATURE_TYPES.SENSOR.INTEGER: withingsType = -1; featureBattery = { ...feature }; From 3e19fbefde28ccb2b1c78c536b05439448c09e90 Mon Sep 17 00:00:00 2001 From: euguuu Date: Sun, 18 Dec 2022 18:21:45 +0100 Subject: [PATCH 131/164] add test case --- .../withings/lib/withings.poll.test.js | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/server/test/services/withings/lib/withings.poll.test.js b/server/test/services/withings/lib/withings.poll.test.js index 578900564a..0989b5fd29 100644 --- a/server/test/services/withings/lib/withings.poll.test.js +++ b/server/test/services/withings/lib/withings.poll.test.js @@ -160,6 +160,36 @@ describe('WithingsHandler poll', () => { type: DEVICE_FEATURE_TYPES.HEALTH.BODY_TEMPERATURE, last_value_changed: new Date(), }, + { + id: 'feb624ed-5d88-33ee-aaee-33f8069a78e5', + type: DEVICE_FEATURE_TYPES.HEALTH.VO2_MAX, + last_value_changed: new Date(), + }, + { + id: 'feb624ed-5d88-47ae-emlp-33f8069a78e5', + type: DEVICE_FEATURE_TYPES.HEALTH.QRS_INERVAL, + last_value_changed: new Date(), + }, + { + id: 'feb624ed-59df-47ae-aaee-33f8069a78e5', + type: DEVICE_FEATURE_TYPES.HEALTH.PR_INERVAL, + last_value_changed: new Date(), + }, + { + id: 'feb624ed-5d88-47ae-mpcd-33f8069a78e5', + type: DEVICE_FEATURE_TYPES.HEALTH.QT_INERVAL, + last_value_changed: new Date(), + }, + { + id: 'feb624ed-5d88-47ae-cdeq-33f8069a78e5', + type: DEVICE_FEATURE_TYPES.HEALTH.CORRECTED_QT_INERVAL, + last_value_changed: new Date(), + }, + { + id: 'feb624ed-5d88-47ae-ddvv-33f8069a78e5', + type: DEVICE_FEATURE_TYPES.HEALTH.ATRIAL_FIBRILLATION, + last_value_changed: new Date(), + }, { id: '832fd6ce-9c2b-4806-bd0f-fbc9bb2432a4', type: DEVICE_FEATURE_TYPES.SENSOR.INTEGER, From 58dd72e374fad34db7c2a6b4aadca367c85ea6d8 Mon Sep 17 00:00:00 2001 From: euguuu Date: Sun, 18 Dec 2022 18:55:52 +0100 Subject: [PATCH 132/164] fix scanwatch test --- server/test/services/withings/lib/withings.poll.test.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/server/test/services/withings/lib/withings.poll.test.js b/server/test/services/withings/lib/withings.poll.test.js index 0989b5fd29..c70c5da645 100644 --- a/server/test/services/withings/lib/withings.poll.test.js +++ b/server/test/services/withings/lib/withings.poll.test.js @@ -199,12 +199,12 @@ describe('WithingsHandler poll', () => { await withingsHandler.poll(deviceToPoll); - chai.assert.equal(countGetValueCall, 52); - chai.assert.equal(countGetValueCallClientId, 18); + chai.assert.equal(countGetValueCall, 70); + chai.assert.equal(countGetValueCallClientId, 24); assert.callCount(gladys.device.saveState, 1); - // 17 feature - 1 feature unknown = 16 state to save - assert.callCount(gladys.device.saveHistoricalState, 16); + // 23 feature - 1 feature unknown = 22 state to save + assert.callCount(gladys.device.saveHistoricalState, 22); assert.calledWith(gladys.device.saveHistoricalState, deviceToPoll.features[0]); const deviceToPoll2 = { From 8de6956ad7a7b6ce5ef20d922aa6411313a1609c Mon Sep 17 00:00:00 2001 From: euguuu Date: Wed, 21 Dec 2022 20:01:35 +0100 Subject: [PATCH 133/164] change feature icon --- front/src/utils/consts.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/front/src/utils/consts.js b/front/src/utils/consts.js index f742993acd..e5fc3bc2fc 100644 --- a/front/src/utils/consts.js +++ b/front/src/utils/consts.js @@ -251,12 +251,12 @@ export const DeviceFeatureCategoriesIcon = { [DEVICE_FEATURE_TYPES.HEALTH.SYSTOLIC_BLOOD_PRESSURE]: 'droplet', [DEVICE_FEATURE_TYPES.HEALTH.TEMPERATURE]: 'thermometer', [DEVICE_FEATURE_TYPES.HEALTH.WEIGHT]: 'grid', - [DEVICE_FEATURE_TYPES.HEALTH.VO2_MAX]: 'heartbeat', - [DEVICE_FEATURE_TYPES.HEALTH.QRS_INERVAL]: 'heartbeat', - [DEVICE_FEATURE_TYPES.HEALTH.PR_INERVAL]: 'heartbeat', - [DEVICE_FEATURE_TYPES.HEALTH.QT_INERVAL]: 'heartbeat', - [DEVICE_FEATURE_TYPES.HEALTH.CORRECTED_QT_INERVAL]: 'heartbeat', - [DEVICE_FEATURE_TYPES.HEALTH.ATRIAL_FIBRILLATION]: 'heartbeat' + [DEVICE_FEATURE_TYPES.HEALTH.VO2_MAX]: 'activity', + [DEVICE_FEATURE_TYPES.HEALTH.QRS_INERVAL]: 'activity', + [DEVICE_FEATURE_TYPES.HEALTH.PR_INERVAL]: 'activity', + [DEVICE_FEATURE_TYPES.HEALTH.QT_INERVAL]: 'activity', + [DEVICE_FEATURE_TYPES.HEALTH.CORRECTED_QT_INERVAL]: 'activity', + [DEVICE_FEATURE_TYPES.HEALTH.ATRIAL_FIBRILLATION]: 'activity' }, [DEVICE_FEATURE_CATEGORIES.ENERGY_SENSOR]: { [DEVICE_FEATURE_TYPES.ENERGY_SENSOR.BINARY]: 'power', From 9ca61b2b186f7204970ea0d19e5e4e99b2390c84 Mon Sep 17 00:00:00 2001 From: euguuu Date: Sun, 15 Jan 2023 15:19:35 +0100 Subject: [PATCH 134/164] fix for review --- .../routes/integration/all/withings/device-page/Device.jsx | 3 +-- .../integration/all/withings/settings-page/actions.js | 4 ---- .../withings/lib/utils/withings.buildBatteryLevelValues.js | 6 +++--- 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/front/src/routes/integration/all/withings/device-page/Device.jsx b/front/src/routes/integration/all/withings/device-page/Device.jsx index e5c66b7d23..12adbdd9e0 100644 --- a/front/src/routes/integration/all/withings/device-page/Device.jsx +++ b/front/src/routes/integration/all/withings/device-page/Device.jsx @@ -69,7 +69,6 @@ class WithingsDeviceBox extends Component { } render(props, { batteryLevel, mostRecentValueAt, loading }) { - console.log('Device: ', props.device.name, batteryLevel); return (
@@ -96,7 +95,7 @@ class WithingsDeviceBox extends Component { class="card-img-top" style="aspect-ratio: 1 / 1;" src={`/assets/images/withings/${WithingsDeviceImgByModel[props.device.model]}`} - alt="/assets/icons/android-icon-192x192-round.png" + alt={} /> )} diff --git a/front/src/routes/integration/all/withings/settings-page/actions.js b/front/src/routes/integration/all/withings/settings-page/actions.js index 11af10ea47..10dab469f1 100755 --- a/front/src/routes/integration/all/withings/settings-page/actions.js +++ b/front/src/routes/integration/all/withings/settings-page/actions.js @@ -31,15 +31,11 @@ const actions = store => ({ let withingsDevices; if (returnGetConfig.client_id) { const result = await state.httpClient.post('/api/v1/service/withings/init_devices'); - console.log(result); if (result) { withingsDevices = result.withingsDevices; - console.log('withingsDevices: ', withingsDevices); withingsDevices.forEach(device => { - console.log('Device: ', device.name); device.features.forEach(feature => { const featureName = dictionary.deviceFeatureCategory[feature.category][feature.type]; - console.log('Feature: ', feature, featureName); if (featureName) { feature.name = featureName; } diff --git a/server/services/withings/lib/utils/withings.buildBatteryLevelValues.js b/server/services/withings/lib/utils/withings.buildBatteryLevelValues.js index a2b06b65b2..4154f6015c 100644 --- a/server/services/withings/lib/utils/withings.buildBatteryLevelValues.js +++ b/server/services/withings/lib/utils/withings.buildBatteryLevelValues.js @@ -12,15 +12,15 @@ function buildBatteryLevelValues(currentBatValueString) { switch (currentBatValueString) { case 'low': - batValueString = `${currentBatValueString} (< 30%)`; + batValueString = `${currentBatValueString} (< 20%)`; batValue = 20; break; case 'medium': - batValueString = `${currentBatValueString} (> 30%)`; + batValueString = `${currentBatValueString} (> 50%)`; batValue = 50; break; case 'high': - batValueString = `${currentBatValueString} (> 75%)`; + batValueString = `${currentBatValueString} (100%)`; batValue = 100; break; default: From 1bc89744ff987f29244dca4e802599bc81ff9505 Mon Sep 17 00:00:00 2001 From: Pierre-Gilles Leymarie Date: Mon, 6 Feb 2023 10:42:42 +0700 Subject: [PATCH 135/164] Be able to re-order dashboard boxes with drag and drop (#1704) --- .../e2e/routes/dashboard/Dashboard.cy.js | 16 +- front/src/components/boxs/SelectBoxType.jsx | 34 +++ front/src/components/boxs/baseEditBox.jsx | 86 ++++-- front/src/config/i18n/en.json | 5 +- front/src/config/i18n/fr.json | 5 +- front/src/routes/dashboard/DashboardPage.jsx | 2 +- .../edit-dashboard/BottomDropZone.jsx | 33 +++ .../edit-dashboard/EditAddBoxButton.jsx | 38 --- .../dashboard/edit-dashboard/EditBox.jsx | 12 +- .../edit-dashboard/EditBoxColumns.jsx | 68 +++-- .../edit-dashboard/EditDashboard.jsx | 2 + .../edit-dashboard/EmptyColumnDropZone.jsx | 36 +++ .../routes/dashboard/edit-dashboard/index.js | 93 +++--- .../routes/dashboard/edit-dashboard/style.css | 28 ++ front/src/routes/dashboard/index.js | 271 +----------------- front/src/routes/dashboard/style.css | 4 + 16 files changed, 319 insertions(+), 414 deletions(-) create mode 100644 front/src/components/boxs/SelectBoxType.jsx create mode 100644 front/src/routes/dashboard/edit-dashboard/BottomDropZone.jsx delete mode 100644 front/src/routes/dashboard/edit-dashboard/EditAddBoxButton.jsx create mode 100644 front/src/routes/dashboard/edit-dashboard/EmptyColumnDropZone.jsx create mode 100644 front/src/routes/dashboard/edit-dashboard/style.css diff --git a/front/cypress/e2e/routes/dashboard/Dashboard.cy.js b/front/cypress/e2e/routes/dashboard/Dashboard.cy.js index f48c4b0ea9..64345290f9 100644 --- a/front/cypress/e2e/routes/dashboard/Dashboard.cy.js +++ b/front/cypress/e2e/routes/dashboard/Dashboard.cy.js @@ -25,23 +25,11 @@ describe('Dashboard', () => { cy.url().should('eq', `${Cypress.config().baseUrl}/dashboard/my-new-dashboard/edit`); }); it('Should add new boxes', () => { + cy.contains('.btn-primary', 'dashboard.addBoxButton').click(); cy.get('select').then(inputs => { cy.wrap(inputs[0]).select('user-presence'); - cy.get('button').then(inputs => { - cy.wrap(inputs[0]).click(); - }); }); - cy.get('[class*="-control"]') - .find('div') - .first() - .click(0, 0, { force: true }) - .get('[class*="-menu"]') - .find('[class*="-option"]') - .filter(`:contains("Tony")`) - .click(0, 0, { force: true }); - cy.contains('dashboard.editDashboardSaveButton') - .should('have.class', 'btn-outline-primary') - .click(); + cy.contains('.btn-outline-primary', 'dashboard.editDashboardSaveButton').click(); }); it('Should delete dashboard', () => { cy.contains('dashboard.editDashboardButton') diff --git a/front/src/components/boxs/SelectBoxType.jsx b/front/src/components/boxs/SelectBoxType.jsx new file mode 100644 index 0000000000..58ccfe4a32 --- /dev/null +++ b/front/src/components/boxs/SelectBoxType.jsx @@ -0,0 +1,34 @@ +import { Component } from 'preact'; +import { Text } from 'preact-i18n'; +import { DASHBOARD_BOX_TYPE_LIST } from '../../../../server/utils/constants'; + +import BaseEditBox from './baseEditBox'; + +class SelectBoxType extends Component { + selectType = e => { + this.props.updateNewSelectedBox(this.props.x, this.props.y, e.target.value); + }; + render(props) { + return ( + +
+ + +
+
+ ); + } +} + +export default SelectBoxType; diff --git a/front/src/components/boxs/baseEditBox.jsx b/front/src/components/boxs/baseEditBox.jsx index 386463bb0f..1fbfb70971 100644 --- a/front/src/components/boxs/baseEditBox.jsx +++ b/front/src/components/boxs/baseEditBox.jsx @@ -1,37 +1,63 @@ import { Text } from 'preact-i18n'; +import { useRef } from 'preact/hooks'; +import { useDrag, useDrop } from 'react-dnd'; -const moveBoxUp = (moveBoxUpFunction, x, y) => () => { - moveBoxUpFunction(x, y); -}; - -const moveBoxDown = (moveBoxDownFunction, x, y) => () => { - moveBoxDownFunction(x, y); -}; +const DASHBOARD_EDIT_BOX_TYPE = 'DASHBOARD_EDIT_BOX'; -const removeBox = (removeBoxFunction, x, y) => () => { - removeBoxFunction(x, y); -}; - -const BaseEditBox = ({ children, ...props }) => ( -
-
-

- -

-
- - - - - - - - - +const BaseEditBox = ({ children, ...props }) => { + const { x, y } = props; + const ref = useRef(null); + const [{ isDragging }, drag, preview] = useDrag(() => ({ + type: DASHBOARD_EDIT_BOX_TYPE, + item: () => { + return { x, y }; + }, + collect: monitor => ({ + isDragging: !!monitor.isDragging() + }) + })); + const [{ isActive }, drop] = useDrop({ + accept: DASHBOARD_EDIT_BOX_TYPE, + collect: monitor => ({ + isActive: monitor.canDrop() && monitor.isOver() + }), + drop(item) { + if (!ref.current) { + return; + } + props.moveCard(item.x, item.y, x, y); + } + }); + preview(drop(ref)); + const removeBox = () => { + props.removeBox(x, y); + }; + return ( +
+
+

+ +

+
+
{children}
-
{children}
-
-); + ); +}; export default BaseEditBox; diff --git a/front/src/config/i18n/en.json b/front/src/config/i18n/en.json index c932939fd0..b2a3d20791 100644 --- a/front/src/config/i18n/en.json +++ b/front/src/config/i18n/en.json @@ -197,6 +197,10 @@ "gatewayInstanceNotFoundError": "Your Gladys instance is not connected to the Gladys Gateway", "editDashboardNameLabel": "Name", "editDashboardMyDashboards": "My dashboards", + "editDashboardExplanation": "Each dashboard has 3 columns, which you can fill in according to your preferences. Click on the + button to add a new widget. You can move this widget by grabbing it by the star at the top right of it.", + "addBoxButton": "Add", + "selectBoxType": "Select a type", + "selectBoxTypeLabel": "Choose which widget to display here", "boxTitle": { "weather": "Weather", "temperature-in-room": "Temperature in room", @@ -210,7 +214,6 @@ }, "boxes": { "column": "Column {{index}}", - "dragAndDrop": "Drag and drop me here", "deleteButton": "Delete", "weather": { "editHouseLabel": "Select a house. I will use its latitude/longitude to get the weather.", diff --git a/front/src/config/i18n/fr.json b/front/src/config/i18n/fr.json index 4af15ddcc4..03b31e38e3 100644 --- a/front/src/config/i18n/fr.json +++ b/front/src/config/i18n/fr.json @@ -197,6 +197,10 @@ "gatewayInstanceNotFoundError": "Votre instance Gladys n'est pas connectée à Gladys Plus.", "editDashboardNameLabel": "Nom", "editDashboardMyDashboards": "Mes tableaux de bords", + "editDashboardExplanation": "Chaque tableau de bord comporte 3 colonnes, que vous pouvez remplir selon vos préférences. Cliquez sur le bouton + pour ajouter un nouveau widget. Vous pouvez déplacer ce widget en l'attrapant par l'étoile en haut à droite de celui-ci.", + "addBoxButton": "Ajouter", + "selectBoxType": "Sélectionner un type", + "selectBoxTypeLabel": "Choisissez quel widget afficher ici", "boxTitle": { "weather": "Météo", "temperature-in-room": "Température de la pièce", @@ -210,7 +214,6 @@ }, "boxes": { "column": "Colonne {{index}}", - "dragAndDrop": "Glissez et déposez moi ici", "deleteButton": "Supprimer", "weather": { "editHouseLabel": "Sélectionnez une maison. J'utiliserai les latitude/longitude pour obtenir la météo.", diff --git a/front/src/routes/dashboard/DashboardPage.jsx b/front/src/routes/dashboard/DashboardPage.jsx index 46d6dde074..952dcc8003 100644 --- a/front/src/routes/dashboard/DashboardPage.jsx +++ b/front/src/routes/dashboard/DashboardPage.jsx @@ -28,7 +28,7 @@ const DashboardPage = ({ children, ...props }) => ( > {props.dashboards.map(dashboard => ( diff --git a/front/src/routes/dashboard/edit-dashboard/BottomDropZone.jsx b/front/src/routes/dashboard/edit-dashboard/BottomDropZone.jsx new file mode 100644 index 0000000000..72d7680592 --- /dev/null +++ b/front/src/routes/dashboard/edit-dashboard/BottomDropZone.jsx @@ -0,0 +1,33 @@ +import { useRef } from 'preact/hooks'; +import { useDrop } from 'react-dnd'; +import cx from 'classnames'; +import style from './style.css'; + +const DASHBOARD_EDIT_BOX_TYPE = 'DASHBOARD_EDIT_BOX'; + +const BottomDropZone = ({ children, ...props }) => { + const ref = useRef(null); + const [{ isActive, canDrop }, drop] = useDrop({ + accept: DASHBOARD_EDIT_BOX_TYPE, + collect: monitor => ({ canDrop: monitor.canDrop(), isActive: monitor.canDrop() && monitor.isOver() }), + drop(item) { + if (!ref.current) { + return; + } + props.moveCard(item.x, item.y, props.x, props.y); + } + }); + drop(ref); + return ( +
+ ); +}; + +export default BottomDropZone; diff --git a/front/src/routes/dashboard/edit-dashboard/EditAddBoxButton.jsx b/front/src/routes/dashboard/edit-dashboard/EditAddBoxButton.jsx deleted file mode 100644 index c080744b23..0000000000 --- a/front/src/routes/dashboard/edit-dashboard/EditAddBoxButton.jsx +++ /dev/null @@ -1,38 +0,0 @@ -import { Text } from 'preact-i18n'; -import { DASHBOARD_BOX_TYPE_LIST } from '../../../../../server/utils/constants'; - -const addBox = (addBoxFunction, x) => () => { - addBoxFunction(x); -}; - -const updateNewSelectedBox = (updateNewSelectedBoxFunction, x) => e => { - updateNewSelectedBoxFunction(x, e.target.value); -}; - -const marginBottom = { - marginBottom: '50px' -}; - -const EditAddBoxButton = ({ children, ...props }) => ( -
-
- -
-
- -
-
-); - -export default EditAddBoxButton; diff --git a/front/src/routes/dashboard/edit-dashboard/EditBox.jsx b/front/src/routes/dashboard/edit-dashboard/EditBox.jsx index 3d281346eb..62093aa086 100644 --- a/front/src/routes/dashboard/edit-dashboard/EditBox.jsx +++ b/front/src/routes/dashboard/edit-dashboard/EditBox.jsx @@ -8,6 +8,8 @@ import EditChart from '../../../components/boxs/chart/EditChart'; import EditEcowatt from '../../../components/boxs/ecowatt/EditEcowatt'; import EditClock from '../../../components/boxs/clock/EditClock'; +import SelectBoxType from '../../../components/boxs/SelectBoxType'; + const Box = ({ children, ...props }) => { switch (props.box.type) { case 'weather': @@ -28,13 +30,9 @@ const Box = ({ children, ...props }) => { return ; case 'clock': return ; + default: + return ; } }; -const EditBoxWithDragAndDrop = ({ children, ...props }) => ( -
- -
-); - -export default EditBoxWithDragAndDrop; +export default Box; diff --git a/front/src/routes/dashboard/edit-dashboard/EditBoxColumns.jsx b/front/src/routes/dashboard/edit-dashboard/EditBoxColumns.jsx index 0cf31560e2..411922eba4 100644 --- a/front/src/routes/dashboard/edit-dashboard/EditBoxColumns.jsx +++ b/front/src/routes/dashboard/edit-dashboard/EditBoxColumns.jsx @@ -1,11 +1,16 @@ import { Text, Localizer } from 'preact-i18n'; import cx from 'classnames'; +import { DndProvider } from 'react-dnd'; +import { TouchBackend } from 'react-dnd-touch-backend'; +import { HTML5Backend } from 'react-dnd-html5-backend'; + import EditBox from './EditBox'; -import EditAddBoxButton from './EditAddBoxButton'; +import EmptyColumnDropZone from './EmptyColumnDropZone'; +import BottomDropZone from './BottomDropZone'; import style from '../style.css'; const EditBoxColumns = ({ children, ...props }) => ( -
+

@@ -24,7 +29,7 @@ const EditBoxColumns = ({ children, ...props }) => (
)} -
+
-
- {props.homeDashboard && - props.homeDashboard.boxes && - props.homeDashboard.boxes.map((column, x) => ( -
-

- -

+
+
+ +
+
+ +
+ {props.homeDashboard && + props.homeDashboard.boxes && + props.homeDashboard.boxes.map((column, x) => ( +
+

+ +

- {column.map((box, y) => ( - - ))} + {column.length > 0 && ( +
+ {column.map((box, y) => ( + + ))} + +
+ )} - -
- ))} -
+ {column.length === 0 && } +
+ ))} +
+
+ +
+
); diff --git a/front/src/routes/dashboard/edit-dashboard/EditDashboard.jsx b/front/src/routes/dashboard/edit-dashboard/EditDashboard.jsx index 9ccdef48eb..520993234b 100644 --- a/front/src/routes/dashboard/edit-dashboard/EditDashboard.jsx +++ b/front/src/routes/dashboard/edit-dashboard/EditDashboard.jsx @@ -1,6 +1,7 @@ import { Text } from 'preact-i18n'; import { Link } from 'preact-router/match'; import cx from 'classnames'; + import EditActions from './EditActions'; import ReorderDashbordList from './ReorderDashbordList'; import EditBoxColumns from './EditBoxColumns'; @@ -45,6 +46,7 @@ const EditDashboard = ({ children, ...props }) => (
{props.currentDashboard && ( { + const ref = useRef(null); + const [{ isActive }, drop] = useDrop({ + accept: DASHBOARD_EDIT_BOX_TYPE, + collect: monitor => ({ + isActive: monitor.canDrop() && monitor.isOver() + }), + drop(item) { + if (!ref.current) { + return; + } + props.moveCard(item.x, item.y, props.x, 0); + } + }); + drop(ref); + return ( +
+ ); +}; + +export default EmptyColumnDropZone; diff --git a/front/src/routes/dashboard/edit-dashboard/index.js b/front/src/routes/dashboard/edit-dashboard/index.js index c3fa49adc3..32778e5782 100644 --- a/front/src/routes/dashboard/edit-dashboard/index.js +++ b/front/src/routes/dashboard/edit-dashboard/index.js @@ -77,10 +77,12 @@ class EditDashboard extends Component { if (destX < 0 || destY < 0) { return null; } - if (destX >= this.state.currentDashboard.boxes.length || destY >= this.state.currentDashboard.boxes[destX].length) { + + if (destX >= this.state.currentDashboard.boxes.length || destY > this.state.currentDashboard.boxes[destX].length) { return null; } const element = this.state.currentDashboard.boxes[originalX][originalY]; + const newStateWithoutElement = update(this.state, { currentDashboard: { boxes: { @@ -102,34 +104,20 @@ class EditDashboard extends Component { await this.setState(newState); }; - moveBoxDown = (x, y) => { - this.moveCard(x, y, x, y + 1); - }; - - moveBoxUp = (x, y) => { - this.moveCard(x, y, x, y - 1); - }; - - addBox = x => { - if (this.state.newSelectedBoxType && this.state.newSelectedBoxType[x]) { - const newState = update(this.state, { - currentDashboard: { - boxes: { - [x]: { - $push: [ - { - type: this.state.newSelectedBoxType[x] - } - ] - } + addBox = () => { + const newState = update(this.state, { + currentDashboard: { + boxes: { + 0: { + $push: [{}] } } - }); - this.setState(newState); - } + } + }); + this.setState(newState); }; - removeBox = (x, y) => { + removeBox = async (x, y) => { const newState = update(this.state, { currentDashboard: { boxes: { @@ -139,7 +127,7 @@ class EditDashboard extends Component { } } }); - this.setState(newState); + await this.setState(newState); }; updateCurrentDashboardName = e => { @@ -168,12 +156,38 @@ class EditDashboard extends Component { this.setState(newState); }; - updateNewSelectedBox = (x, type) => { - const newSelectedBoxType = Object.assign({}, this.state.newSelectedBoxType, { - [x]: type + updateNewSelectedBox = (x, y, type) => { + const newState = update(this.state, { + currentDashboard: { + boxes: { + [x]: { + [y]: { + type: { + $set: type + } + } + } + } + } }); - this.setState({ - newSelectedBoxType + this.setState(newState); + }; + + removeEmptyBoxes = async () => { + const { currentDashboard } = this.state; + // new boxes without empty boxes + const newBoxes = currentDashboard.boxes.map(column => { + return column.filter(box => { + return box.type !== undefined; + }); + }); + const newDashboard = update(currentDashboard, { + boxes: { + $set: newBoxes + } + }); + await this.setState({ + currentDashboard: newDashboard }); }; @@ -185,6 +199,9 @@ class EditDashboard extends Component { unknownError: false }); try { + // We purge all empty boxes + await this.removeEmptyBoxes(); + const { currentDashboard: selectedDashboard, dashboards } = this.state; const { selector } = selectedDashboard; @@ -207,6 +224,7 @@ class EditDashboard extends Component { }); route(`/dashboard/${currentDashboard.selector}`); } catch (e) { + console.error(e); if (e.response && e.response.status === 422) { this.setState({ dashboardValidationError: true @@ -275,6 +293,7 @@ class EditDashboard extends Component { constructor(props) { super(props); this.props = props; + this.isTouchDevice = 'ontouchstart' in window || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0; this.state = { dashboards: [], newSelectedBoxType: {}, @@ -305,21 +324,12 @@ class EditDashboard extends Component { savingNewDashboardList } ) { - const dashboardConfigured = - currentDashboard && - currentDashboard.boxes && - ((currentDashboard.boxes[0] && currentDashboard.boxes[0].length > 0) || - (currentDashboard.boxes[1] && currentDashboard.boxes[1].length > 0) || - (currentDashboard.boxes[2] && currentDashboard.boxes[2].length > 0)); - const dashboardListEmpty = !(dashboards && dashboards.length > 0); - const dashboardNotConfigured = !dashboardConfigured; return ( { - return object ? update(object, value) : update({}, value); -}); - class Dashboard extends Component { toggleDashboardDropdown = () => { this.setState(prevState => { @@ -18,6 +13,14 @@ class Dashboard extends Component { }); }; + closeDashboardDropdown = () => { + if (this.state.dashboardDropdownOpened) { + this.setState({ + dashboardDropdownOpened: false + }); + } + }; + getDashboards = async () => { try { await this.setState({ @@ -90,198 +93,6 @@ class Dashboard extends Component { route(`/dashboard/${this.state.currentDashboard.selector}/edit`); }; - cancelDashboardEdit = async () => { - this.setState({ - dashboardEditMode: false - }); - await this.getCurrentDashboard(); - }; - - moveCard = async (originalX, originalY, destX, destY) => { - // incorrect coordinates - if (destX < 0 || destY < 0) { - return null; - } - if (destX >= this.state.currentDashboard.boxes.length || destY >= this.state.currentDashboard.boxes[destX].length) { - return null; - } - const element = this.state.currentDashboard.boxes[originalX][originalY]; - const newStateWithoutElement = update(this.state, { - currentDashboard: { - boxes: { - [originalX]: { - $splice: [[originalY, 1]] - } - } - } - }); - const newState = update(newStateWithoutElement, { - currentDashboard: { - boxes: { - [destX]: { - $splice: [[destY, 0, element]] - } - } - } - }); - await this.setState(newState); - }; - - moveBoxDown = (x, y) => { - this.moveCard(x, y, x, y + 1); - }; - - moveBoxUp = (x, y) => { - this.moveCard(x, y, x, y - 1); - }; - - addBox = x => { - if (this.state.newSelectedBoxType && this.state.newSelectedBoxType[x]) { - const newState = update(this.state, { - currentDashboard: { - boxes: { - [x]: { - $push: [ - { - type: this.state.newSelectedBoxType[x] - } - ] - } - } - } - }); - this.setState(newState); - } - }; - - removeBox = (x, y) => { - const newState = update(this.state, { - currentDashboard: { - boxes: { - [x]: { - $splice: [[y, 1]] - } - } - } - }); - this.setState(newState); - }; - - updateCurrentDashboardName = e => { - const newState = update(this.state, { - currentDashboard: { - name: { - $set: e.target.value - } - } - }); - this.setState(newState); - }; - - updateBoxConfig = (x, y, data) => { - const newState = update(this.state, { - currentDashboard: { - boxes: { - [x]: { - [y]: { - $merge: data - } - } - } - } - }); - this.setState(newState); - }; - - updateNewSelectedBox = (x, type) => { - const newSelectedBoxType = Object.assign({}, this.state.newSelectedBoxType, { - [x]: type - }); - this.setState({ - newSelectedBoxType - }); - }; - - saveDashboard = async () => { - this.setState({ - loading: true, - dashboardValidationError: false, - dashboardAlreadyExistError: false, - unknownError: false - }); - try { - const { currentDashboard: selectedDashboard, dashboards } = this.state; - const { selector } = selectedDashboard; - - const currentDashboard = await this.props.httpClient.patch( - `/api/v1/dashboard/${selector}`, - this.state.currentDashboard - ); - - const currentDashboardIndex = dashboards.findIndex(d => d.selector === selector); - const updatedDashboards = update(dashboards, { - [currentDashboardIndex]: { - $set: currentDashboard - } - }); - - this.setState({ - currentDashboard, - dashboardEditMode: false, - loading: false, - dashboards: updatedDashboards - }); - } catch (e) { - if (e.response && e.response.status === 422) { - this.setState({ - dashboardValidationError: true - }); - } else if (e.response && e.response.status === 409) { - this.setState({ - dashboardAlreadyExistError: true - }); - } else { - this.setState({ - unknownError: true - }); - } - } - }; - - askDeleteCurrentDashboard = async () => { - await this.setState({ - askDeleteDashboard: true - }); - }; - - cancelDeleteCurrentDashboard = async () => { - await this.setState({ - askDeleteDashboard: false - }); - }; - - deleteCurrentDashboard = async () => { - try { - await this.props.httpClient.delete(`/api/v1/dashboard/${this.state.currentDashboard.selector}`); - const dashboardIndex = this.state.dashboards.findIndex(d => d.id === this.state.currentDashboard.id); - const dashboards = update(this.state.dashboards, { - $splice: [[dashboardIndex, 1]] - }); - const currentDashboard = dashboards.length > 0 ? dashboards[0] : null; - await this.setState({ - dashboards, - currentDashboard, - dashboardDropdownOpened: false, - dashboardEditMode: false, - askDeleteDashboard: false - }); - this.init(); - route('/dashboard'); - } catch (e) { - console.error(e); - } - }; - isBrowserFullScreenCompatible = () => { return document.fullscreenEnabled || document.webkitFullscreenEnabled; }; @@ -318,38 +129,6 @@ class Dashboard extends Component { this.props.setFullScreen(isFullScreen); }; - toggleReorderDashboard = () => { - if (this.state.showReorderDashboard) { - this.saveNewDashboardList(); - } else { - this.setState({ showReorderDashboard: !this.state.showReorderDashboard }); - } - }; - - updateDashboardList = newDashboards => { - this.setState({ - dashboards: newDashboards - }); - }; - - saveNewDashboardList = async () => { - await this.setState({ - savingNewDashboardList: true - }); - try { - const dashboardSelectors = this.state.dashboards.map(d => d.selector); - await this.props.httpClient.post('/api/v1/dashboard/order', dashboardSelectors); - this.setState({ - showReorderDashboard: false - }); - } catch (e) { - console.error(e); - } - this.setState({ - savingNewDashboardList: false - }); - }; - constructor(props) { super(props); this.props = props; @@ -369,6 +148,7 @@ class Dashboard extends Component { document.addEventListener('fullscreenchange', this.onFullScreenChange, false); document.addEventListener('webkitfullscreenchange', this.onFullScreenChange, false); document.addEventListener('mozfullscreenchange', this.onFullScreenChange, false); + document.addEventListener('click', this.closeDashboardDropdown, true); } componentDidUpdate(prevProps) { @@ -381,6 +161,7 @@ class Dashboard extends Component { document.removeEventListener('fullscreenchange', this.onFullScreenChange, false); document.removeEventListener('webkitfullscreenchange', this.onFullScreenChange, false); document.removeEventListener('mozfullscreenchange', this.onFullScreenChange, false); + document.removeEventListener('click', this.closeDashboardDropdown, true); } render( @@ -392,13 +173,7 @@ class Dashboard extends Component { dashboardEditMode, gatewayInstanceNotFound, loading, - browserFullScreenCompatible, - dashboardValidationError, - dashboardAlreadyExistError, - unknownError, - askDeleteDashboard, - showReorderDashboard, - savingNewDashboardList + browserFullScreenCompatible } ) { const dashboardConfigured = @@ -424,34 +199,14 @@ class Dashboard extends Component { loading={loading} dashboardNotConfigured={dashboardNotConfigured} browserFullScreenCompatible={browserFullScreenCompatible} - dashboardValidationError={dashboardValidationError} - dashboardAlreadyExistError={dashboardAlreadyExistError} - unknownError={unknownError} toggleDashboardDropdown={this.toggleDashboardDropdown} redirectToDashboard={this.redirectToDashboard} editDashboard={this.editDashboard} - cancelDashboardEdit={this.cancelDashboardEdit} - moveBoxDown={this.moveBoxDown} - moveBoxUp={this.moveBoxUp} - addBox={this.addBox} - removeBox={this.removeBox} - updateNewSelectedBox={this.updateNewSelectedBox} - saveDashboard={this.saveDashboard} - updateBoxConfig={this.updateBoxConfig} toggleFullScreen={this.toggleFullScreen} - updateCurrentDashboardName={this.updateCurrentDashboardName} - askDeleteCurrentDashboard={this.askDeleteCurrentDashboard} - cancelDeleteCurrentDashboard={this.cancelDeleteCurrentDashboard} - deleteCurrentDashboard={this.deleteCurrentDashboard} - askDeleteDashboard={askDeleteDashboard} fullScreen={props.fullScreen} - showReorderDashboard={showReorderDashboard} - toggleReorderDashboard={this.toggleReorderDashboard} - updateDashboardList={this.updateDashboardList} - savingNewDashboardList={savingNewDashboardList} /> ); } } -export default connect('user,fullScreen,currentUrl,httpClient,gatewayAccountExpired', actions)(Dashboard); +export default connect('user,fullScreen,currentUrl,httpClient,gatewayAccountExpired', {})(Dashboard); diff --git a/front/src/routes/dashboard/style.css b/front/src/routes/dashboard/style.css index a85d039109..f1985a449a 100644 --- a/front/src/routes/dashboard/style.css +++ b/front/src/routes/dashboard/style.css @@ -61,6 +61,10 @@ transition: max-height 0.5s ease-in; } +.dropdownItemBiggerLines { + line-height: 2.5rem; +} + .editDashboardText { display: inline; } From cc6504d6e9aa40ad192f32d715b375a7331a071a Mon Sep 17 00:00:00 2001 From: Bertrand d'Aure Date: Mon, 6 Feb 2023 05:49:13 +0100 Subject: [PATCH 136/164] Fix CalDAV update during sync (#1703) --- .../services/caldav/lib/calendar/calendar.syncUserCalendars.js | 1 + 1 file changed, 1 insertion(+) diff --git a/server/services/caldav/lib/calendar/calendar.syncUserCalendars.js b/server/services/caldav/lib/calendar/calendar.syncUserCalendars.js index 577ebb864a..664e87c039 100644 --- a/server/services/caldav/lib/calendar/calendar.syncUserCalendars.js +++ b/server/services/caldav/lib/calendar/calendar.syncUserCalendars.js @@ -53,6 +53,7 @@ async function syncUserCalendars(userId) { // Else update it if sync is enable on calendar & events change if (gladysCalendar[0].sync && formatedCalendar.ctag !== gladysCalendar[0].ctag) { + delete formatedCalendar.sync; await this.gladys.calendar.update(gladysCalendar[0].selector, formatedCalendar); return gladysCalendar[0]; } From 465a9633fc5f1f6d022ce9739ac1d11366eb2524 Mon Sep 17 00:00:00 2001 From: Cyril Beslay Date: Mon, 6 Feb 2023 05:58:55 +0100 Subject: [PATCH 137/164] Fix NaN dates in tasks list on Safari/Firefox (#1697) --- .../settings/settings-background-jobs/index.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/front/src/routes/settings/settings-background-jobs/index.js b/front/src/routes/settings/settings-background-jobs/index.js index e8b438bf87..216cbea7ba 100644 --- a/front/src/routes/settings/settings-background-jobs/index.js +++ b/front/src/routes/settings/settings-background-jobs/index.js @@ -8,11 +8,21 @@ import { WEBSOCKET_MESSAGE_TYPES } from '../../../../../server/utils/constants'; const NUMBER_OF_JOBS_PER_PAGE = 15; class SettingsSystem extends Component { + /* + * Function to replace "2023-01-23 14:20:23.594 +00:00" by "2023-01-23T14:20:23.594+00:00" + * to be Firefox compatible (ISO8601) + */ + convertGladysDateToISO8601 = gladysDate => { + return gladysDate.replace(' ', 'T').replace(' ', ''); + }; + getJobs = async page => { try { const skip = page * NUMBER_OF_JOBS_PER_PAGE; const jobs = await this.props.httpClient.get(`/api/v1/job?take=${NUMBER_OF_JOBS_PER_PAGE}&skip=${skip}`); + jobs.forEach(job => (job.created_at = this.convertGladysDateToISO8601(job.created_at))); + this.setState({ jobs, isFirstPage: page === 0, @@ -46,6 +56,7 @@ class SettingsSystem extends Component { const { jobs, currentPage } = this.state; // only add jobs to page if we are at the first page if (currentPage === 0) { + payload.created_at = this.convertGladysDateToISO8601(payload.created_at); jobs.unshift(payload); this.setState({ jobs @@ -57,6 +68,7 @@ class SettingsSystem extends Component { const { jobs } = this.state; const previousJobIndex = jobs.findIndex(j => j.id === payload.id); if (previousJobIndex !== -1) { + payload.created_at = this.convertGladysDateToISO8601(payload.created_at); jobs[previousJobIndex] = payload; this.setState({ jobs From c75dbb1b04a417a02c96f90d8923d50d8e8a5949 Mon Sep 17 00:00:00 2001 From: Vincent KULAK Date: Mon, 6 Feb 2023 06:05:51 +0100 Subject: [PATCH 138/164] Add AQI sensor (#1685) --- .../sensor-value/BadgeNumberDeviceValue.jsx | 24 +++++++- front/src/config/demo.js | 59 ++++++++++++++++++- front/src/config/i18n/en.json | 10 +++- front/src/config/i18n/fr.json | 10 +++- front/src/utils/consts.js | 3 + server/utils/constants.js | 53 +++++++++++++---- 6 files changed, 142 insertions(+), 17 deletions(-) diff --git a/front/src/components/boxs/device-in-room/device-features/sensor-value/BadgeNumberDeviceValue.jsx b/front/src/components/boxs/device-in-room/device-features/sensor-value/BadgeNumberDeviceValue.jsx index 6ac27a1518..6c1959b223 100644 --- a/front/src/components/boxs/device-in-room/device-features/sensor-value/BadgeNumberDeviceValue.jsx +++ b/front/src/components/boxs/device-in-room/device-features/sensor-value/BadgeNumberDeviceValue.jsx @@ -14,9 +14,31 @@ const colorLowAsGreen = (value, safeLimit, warnLimit) => { return 'danger'; }; +const getAqiColor = value => { + if (value < 50) { + // Safe + return 'success'; + } else if (value < 100) { + // Moderate + return 'warning'; + } else if (value < 150) { + // Unhealthy for Sensitive Groups + return 'orange'; + } else if (value < 200) { + // Unhealthy + return 'pink'; + } else if (value < 300) { + // Very Unhealthy + return 'purple'; + } + // Hazardous + return 'danger'; +}; + const BADGE_CATEGORIES = { [DEVICE_FEATURE_CATEGORIES.CO2_SENSOR]: value => colorLowAsGreen(value, 600, 1200), - [DEVICE_FEATURE_CATEGORIES.VOC_SENSOR]: value => colorLowAsGreen(value, 250, 2000) + [DEVICE_FEATURE_CATEGORIES.VOC_SENSOR]: value => colorLowAsGreen(value, 250, 2000), + [DEVICE_FEATURE_CATEGORIES.AIRQUALITY_SENSOR]: value => getAqiColor(value) }; const BadgeNumberDeviceValue = props => { diff --git a/front/src/config/demo.js b/front/src/config/demo.js index 9e6f46775c..854de425b7 100644 --- a/front/src/config/demo.js +++ b/front/src/config/demo.js @@ -126,6 +126,11 @@ const data = { type: 'camera', camera: 'living-room-camera', name: 'Garden' + }, + { + type: 'devices-in-room', + room: 'exterior', + device_features: ['aqi-city'] } ], [ @@ -263,7 +268,7 @@ const data = { } ] }, - 'get /api/v1/room/living-room?expand=temperature': { + 'get /api/v1/room/living-room?expand=temperature,devices': { id: '1c634ff4-0476-4733-a084-b4a43d649c84', name: 'Living Room', selector: 'living-room', @@ -472,6 +477,32 @@ const data = { } ] }, + 'get /api/v1/room/exterior?expand=devices': { + id: 'af3e166e-64f1-444d-a5fe-90ceaa1fc176', + name: 'Exterior', + selector: 'exterior', + devices: [ + { + id: 'ed62adc6-b1b6-4a2b-b6d1-8e676d470e10', + name: 'Air Quality Index', + selector: 'aq-sensors', + features: [ + { + name: 'Air Quality Index', + selector: 'aqi-city', + category: 'airquality-sensor', + type: 'aqi', + min: 0, + max: 1000, + read_only: true, + unit: 'aqi', + last_value: 101, + last_value_changed: '2023-01-23 08:50:06.556 +00:00' + } + ] + } + ] + }, 'get /api/v1/room/parental-room?expand=devices': { id: '1c634ff4-0476-4733-a084-b4a43d649c84', name: 'Parental Room', @@ -788,6 +819,32 @@ const data = { ] } ] + }, + { + id: 'af3e166e-64f1-444d-a5fe-90ceaa1fc176', + name: 'Exterior', + selector: 'exterior', + devices: [ + { + id: 'ed62adc6-b1b6-4a2b-b6d1-8e676d470e10', + name: 'Air Quality Index', + selector: 'aq-sensors', + features: [ + { + name: 'Air Quality Index', + selector: 'aqi-city', + category: 'airquality-sensor', + type: 'aqi', + min: 0, + max: 1000, + read_only: true, + unit: 'aqi', + last_value: 101, + last_value_changed: '2023-01-23 08:50:06.556 +00:00' + } + ] + } + ] } ], 'post /api/v1/light/main-lamp/on': { diff --git a/front/src/config/i18n/en.json b/front/src/config/i18n/en.json index b2a3d20791..27eed9c1cd 100644 --- a/front/src/config/i18n/en.json +++ b/front/src/config/i18n/en.json @@ -1846,7 +1846,8 @@ "bytes-per-second": "Bytes per second (B/s)", "kilobytes-per-second": "kilobytes per second (kB/s)", "megabytes-per-second": "Megabytes per second (MB/s)", - "gigabytes-per-second": "Gigabytes per second (GB/s)" + "gigabytes-per-second": "Gigabytes per second (GB/s)", + "aqi": "Air Quality Index" }, "deviceFeatureUnitShort": { "celsius": "°C", @@ -1921,7 +1922,8 @@ "bytes-per-second": "B/s", "kilobytes-per-second": "kB/s", "megabytes-per-second": "MB/s", - "gigabytes-per-second": "GB/s" + "gigabytes-per-second": "GB/s", + "aqi": "AQI" }, "deviceFeatureAction": { "category": { @@ -2215,6 +2217,10 @@ "shortCategoryName": "Thermostat", "target-temperature": "Thermostat Temperature" }, + "airquality-sensor": { + "shortCategoryName": "Air Quality", + "aqi": "Air Quality Index" + }, "unknown": { "shortCategoryName": "Unknown", "unknown": "Unknown" diff --git a/front/src/config/i18n/fr.json b/front/src/config/i18n/fr.json index 03b31e38e3..656e5e82dc 100644 --- a/front/src/config/i18n/fr.json +++ b/front/src/config/i18n/fr.json @@ -1846,7 +1846,8 @@ "bytes-per-second": "Octets par seconde (o/s)", "kilobytes-per-second": "Kilooctets par seconde (Ko/s)", "megabytes-per-second": "Megaoctets par seconde (Mo/s)", - "gigabytes-per-second": "Gigaoctets par seconde (Go/s)" + "gigabytes-per-second": "Gigaoctets par seconde (Go/s)", + "aqi": "Indice de Qualité de l'Air" }, "deviceFeatureUnitShort": { "celsius": "°C", @@ -1921,7 +1922,8 @@ "bytes-per-second": "o/s", "kilobytes-per-second": "Ko/s", "megabytes-per-second": "Mo/s", - "gigabytes-per-second": "Go/s" + "gigabytes-per-second": "Go/s", + "aqi": "AQI" }, "deviceFeatureAction": { "category": { @@ -2215,6 +2217,10 @@ "shortCategoryName": "Thermostat", "target-temperature": "Température de consigne" }, + "airquality-sensor": { + "shortCategoryName": "Qualité de l'air", + "aqi": "Indice de qualité de l'air" + }, "unknown": { "shortCategoryName": "Inconnu", "unknown": "Inconnu" diff --git a/front/src/utils/consts.js b/front/src/utils/consts.js index e5fc3bc2fc..61259c01d1 100644 --- a/front/src/utils/consts.js +++ b/front/src/utils/consts.js @@ -298,6 +298,9 @@ export const DeviceFeatureCategoriesIcon = { [DEVICE_FEATURE_CATEGORIES.THERMOSTAT]: { [DEVICE_FEATURE_TYPES.THERMOSTAT.TARGET_TEMPERATURE]: 'thermometer' }, + [DEVICE_FEATURE_CATEGORIES.AIRQUALITY_SENSOR]: { + [DEVICE_FEATURE_TYPES.AIRQUALITY_SENSOR.AQI]: 'bar-chart-2' + }, [DEVICE_FEATURE_CATEGORIES.UNKNOWN]: { [DEVICE_FEATURE_TYPES.UNKNOWN.UNKNOWN]: 'help-circle' } diff --git a/server/utils/constants.js b/server/utils/constants.js index 981d14f3cd..08194d7135 100644 --- a/server/utils/constants.js +++ b/server/utils/constants.js @@ -310,20 +310,17 @@ const INTENTS = { }; const DEVICE_FEATURE_CATEGORIES = { - LIGHT: 'light', + ACCESS_CONTROL: 'access-control', + AIRQUALITY_SENSOR: 'airquality-sensor', BATTERY: 'battery', - TEMPERATURE_SENSOR: 'temperature-sensor', - MOTION_SENSOR: 'motion-sensor', - LIGHT_SENSOR: 'light-sensor', - SMOKE_SENSOR: 'smoke-sensor', - SISMIC_SENSOR: 'sismic-sensor', - PRESSURE_SENSOR: 'pressure-sensor', - OPENING_SENSOR: 'opening-sensor', - HUMIDITY_SENSOR: 'humidity-sensor', - VIBRATION_SENSOR: 'vibration-sensor', + BUTTON: 'button', + CAMERA: 'camera', + CUBE: 'cube', + CURRENCY: 'currency', CO_SENSOR: 'co-sensor', CO2_SENSOR: 'co2-sensor', COUNTER_SENSOR: 'counter-sensor', +<<<<<<< HEAD LEAK_SENSOR: 'leak-sensor', PRESENCE_SENSOR: 'presence-sensor', DISTANCE_SENSOR: 'distance-sensor', @@ -346,11 +343,39 @@ const DEVICE_FEATURE_CATEGORIES = { DURATION: 'duration', VOC_SENSOR: 'voc-sensor', SHUTTER: 'shutter', +======= +>>>>>>> a57bf296 (Add AQI sensor (#1685)) CURTAIN: 'curtain', DATA: 'data', DATARATE: 'datarate', - UNKNOWN: 'unknown', + DEVICE_TEMPERATURE_SENSOR: 'device-temperature-sensor', + DISTANCE_SENSOR: 'distance-sensor', + DURATION: 'duration', + ENERGY_SENSOR: 'energy-sensor', + HUMIDITY_SENSOR: 'humidity-sensor', + LEAK_SENSOR: 'leak-sensor', + LIGHT: 'light', + LIGHT_SENSOR: 'light-sensor', + MOTION_SENSOR: 'motion-sensor', + OPENING_SENSOR: 'opening-sensor', + PRECIPITATION_SENSOR: 'precipitation-sensor', + PRESENCE_SENSOR: 'presence-sensor', + PRESSURE_SENSOR: 'pressure-sensor', + SHUTTER: 'shutter', + SIGNAL: 'signal', + SIREN: 'siren', + SISMIC_SENSOR: 'sismic-sensor', + SMOKE_SENSOR: 'smoke-sensor', + SWITCH: 'switch', + SPEED_SENSOR: 'speed-sensor', + TELEVISION: 'television', + TEMPERATURE_SENSOR: 'temperature-sensor', THERMOSTAT: 'thermostat', + UNKNOWN: 'unknown', + UV_SENSOR: 'uv-sensor', + VIBRATION_SENSOR: 'vibration-sensor', + VOC_SENSOR: 'voc-sensor', + VOLUME_SENSOR: 'volume-sensor', }; const DEVICE_FEATURE_TYPES = { @@ -517,6 +542,9 @@ const DEVICE_FEATURE_TYPES = { THERMOSTAT: { TARGET_TEMPERATURE: 'target-temperature', }, + AIRQUALITY_SENSOR: { + AQI: 'aqi', + }, }; const DEVICE_FEATURE_UNITS = { @@ -610,6 +638,8 @@ const DEVICE_FEATURE_UNITS = { KILOBYTES_PER_SECOND: 'kilobytes-per-second', MEGABYTES_PER_SECOND: 'megabytes-per-second', GIGABYTES_PER_SECOND: 'gigabytes-per-second', + // Airquality Index + AQI: 'aqi', }; const WEATHER_UNITS = { @@ -722,6 +752,7 @@ const DEVICE_FEATURE_UNITS_BY_CATEGORY = { DEVICE_FEATURE_UNITS.GIGABYTES_PER_SECOND, ], [DEVICE_FEATURE_CATEGORIES.THERMOSTAT]: [DEVICE_FEATURE_UNITS.CELSIUS, DEVICE_FEATURE_UNITS.FAHRENHEIT], + [DEVICE_FEATURE_CATEGORIES.AIRQUALITY_SENSOR]: [DEVICE_FEATURE_UNITS.AQI], }; const ACTIONS_STATUS = { From 84cd89067bbde76cd2fad27765a26ece69466439 Mon Sep 17 00:00:00 2001 From: Alexandre Trovato <1839717+atrovato@users.noreply.github.com> Date: Mon, 6 Feb 2023 06:14:06 +0100 Subject: [PATCH 139/164] Zigbee2mqtt: Add limits on Docker containers logs size (#1692) --- .../docker/gladys-z2m-mqtt-container.json | 6 + .../gladys-z2m-zigbee2mqtt-container.json | 6 + .../lib/checkForContainerUpdates.js | 63 +++++++++++ server/services/zigbee2mqtt/lib/constants.js | 4 + .../zigbee2mqtt/lib/getConfiguration.js | 12 +- server/services/zigbee2mqtt/lib/index.js | 2 + server/services/zigbee2mqtt/lib/init.js | 1 + .../zigbee2mqtt/lib/saveConfiguration.js | 16 +-- .../lib/checkForContainerUpdates.test.js | 104 ++++++++++++++++++ .../zigbee2mqtt/lib/getConfiguration.test.js | 6 +- .../services/zigbee2mqtt/lib/init.test.js | 9 ++ .../zigbee2mqtt/lib/saveConfiguration.test.js | 10 +- 12 files changed, 225 insertions(+), 14 deletions(-) create mode 100644 server/services/zigbee2mqtt/lib/checkForContainerUpdates.js create mode 100644 server/test/services/zigbee2mqtt/lib/checkForContainerUpdates.test.js diff --git a/server/services/zigbee2mqtt/docker/gladys-z2m-mqtt-container.json b/server/services/zigbee2mqtt/docker/gladys-z2m-mqtt-container.json index 6f663e7e82..ace42cbfd1 100644 --- a/server/services/zigbee2mqtt/docker/gladys-z2m-mqtt-container.json +++ b/server/services/zigbee2mqtt/docker/gladys-z2m-mqtt-container.json @@ -6,6 +6,12 @@ }, "HostConfig": { "Binds": [], + "LogConfig": { + "Type": "json-file", + "Config": { + "max-size": "10m" + } + }, "PortBindings": { "1884/tcp": [ { diff --git a/server/services/zigbee2mqtt/docker/gladys-z2m-zigbee2mqtt-container.json b/server/services/zigbee2mqtt/docker/gladys-z2m-zigbee2mqtt-container.json index ed56b7cde8..d2e0c0eef3 100644 --- a/server/services/zigbee2mqtt/docker/gladys-z2m-zigbee2mqtt-container.json +++ b/server/services/zigbee2mqtt/docker/gladys-z2m-zigbee2mqtt-container.json @@ -4,6 +4,12 @@ "ExposedPorts": {}, "HostConfig": { "Binds": [], + "LogConfig": { + "Type": "json-file", + "Config": { + "max-size": "10m" + } + }, "PortBindings": {}, "RestartPolicy": { "Name": "always" diff --git a/server/services/zigbee2mqtt/lib/checkForContainerUpdates.js b/server/services/zigbee2mqtt/lib/checkForContainerUpdates.js new file mode 100644 index 0000000000..6137cbe9c5 --- /dev/null +++ b/server/services/zigbee2mqtt/lib/checkForContainerUpdates.js @@ -0,0 +1,63 @@ +const logger = require('../../../utils/logger'); +const { DEFAULT } = require('./constants'); + +const mqttContainerDescriptor = require('../docker/gladys-z2m-mqtt-container.json'); +const z2mContainerDescriptor = require('../docker/gladys-z2m-zigbee2mqtt-container.json'); + +/** + * @description Checks if version is the latest for this service, if not, it removes existing containers. + * @param {Object} config - Service configuration properties. + * @example + * await z2m.checkForContainerUpdates(config); + */ +async function checkForContainerUpdates(config) { + logger.info('Checking for current installed versions and required updates...'); + + // Check for MQTT container version + if (config.dockerMqttVersion !== DEFAULT.DOCKER_MQTT_VERSION) { + logger.info(`MQTT container: update #${DEFAULT.DOCKER_MQTT_VERSION} of the container required...`); + + const containers = await this.gladys.system.getContainers({ + all: true, + filters: { name: [mqttContainerDescriptor.name] }, + }); + + if (containers.length !== 0) { + logger.debug('Removing current installed MQTT container...'); + // If container is present, we remove it + // The init process will create it again + const [container] = containers; + await this.gladys.system.removeContainer(container.id, { force: true }); + } + + // Update to last version + config.dockerMqttVersion = DEFAULT.DOCKER_MQTT_VERSION; + logger.info(`MQTT container: update #${DEFAULT.DOCKER_MQTT_VERSION} of the container done`); + } + + // Check for Z2M container version + if (config.dockerZ2mVersion !== DEFAULT.DOCKER_Z2M_VERSION) { + logger.info(`Z2M container: update #${DEFAULT.DOCKER_Z2M_VERSION} of the container required...`); + + const containers = await this.gladys.system.getContainers({ + all: true, + filters: { name: [z2mContainerDescriptor.name] }, + }); + + if (containers.length !== 0) { + logger.debug('Removing current installed Z2M container...'); + // If container is present, we remove it + // The init process will create it again + const [container] = containers; + await this.gladys.system.removeContainer(container.id, { force: true }); + } + + // Update to last version + config.dockerZ2mVersion = DEFAULT.DOCKER_Z2M_VERSION; + logger.info(`Z2M container: update #${DEFAULT.DOCKER_Z2M_VERSION} of the container done`); + } +} + +module.exports = { + checkForContainerUpdates, +}; diff --git a/server/services/zigbee2mqtt/lib/constants.js b/server/services/zigbee2mqtt/lib/constants.js index cf70ed8936..db11ae4864 100644 --- a/server/services/zigbee2mqtt/lib/constants.js +++ b/server/services/zigbee2mqtt/lib/constants.js @@ -8,12 +8,16 @@ const CONFIGURATION = { GLADYS_MQTT_USERNAME_KEY: 'GLADYS_MQTT_USERNAME', GLADYS_MQTT_USERNAME_VALUE: 'gladys', GLADYS_MQTT_PASSWORD_KEY: 'GLADYS_MQTT_PASSWORD', + DOCKER_MQTT_VERSION: 'DOCKER_MQTT_VERSION', // Variable to identify last version of MQTT docker file is installed + DOCKER_Z2M_VERSION: 'DOCKER_Z2M_VERSION', // Variable to identify last version of Z2M docker file is installed }; const DEFAULT = { TOPICS: [ 'zigbee2mqtt/#', // Default zigbee2mqtt topic ], + DOCKER_MQTT_VERSION: '2', // Last version of MQTT docker file + DOCKER_Z2M_VERSION: '2', // Last version of Z2M docker file }; module.exports = { diff --git a/server/services/zigbee2mqtt/lib/getConfiguration.js b/server/services/zigbee2mqtt/lib/getConfiguration.js index ce6faa3a6b..50ac568050 100644 --- a/server/services/zigbee2mqtt/lib/getConfiguration.js +++ b/server/services/zigbee2mqtt/lib/getConfiguration.js @@ -2,10 +2,10 @@ const logger = require('../../../utils/logger'); const { CONFIGURATION } = require('./constants'); /** - * @description Get MQTT configuration. - * @returns {Promise} Current MQTT network configuration. + * @description Get Z2M configuration. + * @returns {Promise} Current Z2M network configuration. * @example - * getConfiguration(); + * const config = await z2m.getConfiguration(); */ async function getConfiguration() { logger.debug('Zigbee2mqtt: loading stored configuration...'); @@ -20,6 +20,10 @@ async function getConfiguration() { const mqttUsername = await this.gladys.variable.getValue(CONFIGURATION.GLADYS_MQTT_USERNAME_KEY, this.serviceId); const mqttPassword = await this.gladys.variable.getValue(CONFIGURATION.GLADYS_MQTT_PASSWORD_KEY, this.serviceId); + // Load version parameters + const dockerMqttVersion = await this.gladys.variable.getValue(CONFIGURATION.DOCKER_MQTT_VERSION, this.serviceId); + const dockerZ2mVersion = await this.gladys.variable.getValue(CONFIGURATION.DOCKER_Z2M_VERSION, this.serviceId); + return { z2mDriverPath, z2mMqttUsername, @@ -27,6 +31,8 @@ async function getConfiguration() { mqttUrl, mqttUsername, mqttPassword, + dockerMqttVersion, + dockerZ2mVersion, }; } diff --git a/server/services/zigbee2mqtt/lib/index.js b/server/services/zigbee2mqtt/lib/index.js index bda3581961..7dff155c09 100644 --- a/server/services/zigbee2mqtt/lib/index.js +++ b/server/services/zigbee2mqtt/lib/index.js @@ -11,6 +11,7 @@ const { setValue } = require('./setValue'); const { status } = require('./status'); const { isEnabled } = require('./isEnabled'); const { subscribe } = require('./subscribe'); +const { checkForContainerUpdates } = require('./checkForContainerUpdates'); const { installMqttContainer } = require('./installMqttContainer'); const { installZ2mContainer } = require('./installZ2mContainer'); const { setPermitJoin } = require('./setPermitJoin'); @@ -58,6 +59,7 @@ Zigbee2mqttManager.prototype.setValue = setValue; Zigbee2mqttManager.prototype.status = status; Zigbee2mqttManager.prototype.isEnabled = isEnabled; Zigbee2mqttManager.prototype.subscribe = subscribe; +Zigbee2mqttManager.prototype.checkForContainerUpdates = checkForContainerUpdates; Zigbee2mqttManager.prototype.installMqttContainer = installMqttContainer; Zigbee2mqttManager.prototype.installZ2mContainer = installZ2mContainer; Zigbee2mqttManager.prototype.setPermitJoin = setPermitJoin; diff --git a/server/services/zigbee2mqtt/lib/init.js b/server/services/zigbee2mqtt/lib/init.js index 542213141b..445a07af5d 100644 --- a/server/services/zigbee2mqtt/lib/init.js +++ b/server/services/zigbee2mqtt/lib/init.js @@ -62,6 +62,7 @@ async function init() { if (this.usbConfigured) { logger.debug('Zibgee2mqtt: installing and starting required docker containers...'); + await this.checkForContainerUpdates(configuration); await this.installMqttContainer(configuration); await this.installZ2mContainer(configuration); diff --git a/server/services/zigbee2mqtt/lib/saveConfiguration.js b/server/services/zigbee2mqtt/lib/saveConfiguration.js index 2d5e552954..8d6878c6b3 100644 --- a/server/services/zigbee2mqtt/lib/saveConfiguration.js +++ b/server/services/zigbee2mqtt/lib/saveConfiguration.js @@ -17,17 +17,17 @@ const saveOrDestroy = async (variableManager, key, value, serviceId) => { * await z2m.saveConfiguration(config); */ async function saveConfiguration(config) { - const { z2mDriverPath, z2mMqttUsername, z2mMqttPassword, mqttUrl, mqttUsername, mqttPassword } = config; - logger.debug('Zigbee2mqtt: storing configuration...'); const keyValueMap = { - [CONFIGURATION.Z2M_DRIVER_PATH]: z2mDriverPath, - [CONFIGURATION.Z2M_MQTT_USERNAME_KEY]: z2mMqttUsername, - [CONFIGURATION.Z2M_MQTT_PASSWORD_KEY]: z2mMqttPassword, - [CONFIGURATION.MQTT_URL_KEY]: mqttUrl, - [CONFIGURATION.GLADYS_MQTT_USERNAME_KEY]: mqttUsername, - [CONFIGURATION.GLADYS_MQTT_PASSWORD_KEY]: mqttPassword, + [CONFIGURATION.Z2M_DRIVER_PATH]: config.z2mDriverPath, + [CONFIGURATION.Z2M_MQTT_USERNAME_KEY]: config.z2mMqttUsername, + [CONFIGURATION.Z2M_MQTT_PASSWORD_KEY]: config.z2mMqttPassword, + [CONFIGURATION.MQTT_URL_KEY]: config.mqttUrl, + [CONFIGURATION.GLADYS_MQTT_USERNAME_KEY]: config.mqttUsername, + [CONFIGURATION.GLADYS_MQTT_PASSWORD_KEY]: config.mqttPassword, + [CONFIGURATION.DOCKER_MQTT_VERSION]: config.dockerMqttVersion, + [CONFIGURATION.DOCKER_Z2M_VERSION]: config.dockerZ2mVersion, }; const variableKeys = Object.keys(keyValueMap); diff --git a/server/test/services/zigbee2mqtt/lib/checkForContainerUpdates.test.js b/server/test/services/zigbee2mqtt/lib/checkForContainerUpdates.test.js new file mode 100644 index 0000000000..575b22484d --- /dev/null +++ b/server/test/services/zigbee2mqtt/lib/checkForContainerUpdates.test.js @@ -0,0 +1,104 @@ +const { expect } = require('chai'); +const sinon = require('sinon'); + +const { assert, fake } = sinon; + +const Zigbee2mqttManager = require('../../../../services/zigbee2mqtt/lib'); +const { DEFAULT } = require('../../../../services/zigbee2mqtt/lib/constants'); + +const serviceId = 'f87b7af2-ca8e-44fc-b754-444354b42fee'; + +describe('zigbee2mqtt checkForContainerUpdates', () => { + // PREPARE + let zigbee2mqttManager; + let gladys; + + beforeEach(() => { + gladys = { + system: { + getContainers: fake.resolves([]), + removeContainer: fake.resolves(true), + }, + }; + + zigbee2mqttManager = new Zigbee2mqttManager(gladys, null, serviceId); + }); + + afterEach(() => { + sinon.reset(); + }); + + it('not updated, but no containers runnning -> it should only update config', async () => { + // PREPARE + const config = { + dockerMqttVersion: 'BAD_REVISION', + dockerZ2mVersion: 'BAD_REVISION', + }; + // EXECUTE + await zigbee2mqttManager.checkForContainerUpdates(config); + // ASSERT + assert.calledTwice(gladys.system.getContainers); + assert.calledWithExactly(gladys.system.getContainers, { + all: true, + filters: { name: ['gladys-z2m-mqtt'] }, + }); + assert.calledWithExactly(gladys.system.getContainers, { + all: true, + filters: { name: ['gladys-z2m-zigbee2mqtt'] }, + }); + assert.notCalled(gladys.system.removeContainer); + + expect(config).deep.equal({ + dockerMqttVersion: DEFAULT.DOCKER_MQTT_VERSION, + dockerZ2mVersion: DEFAULT.DOCKER_Z2M_VERSION, + }); + }); + + it('not updated, found both containers -> it should remove containers and update config', async () => { + // PREPARE + gladys.system.getContainers = fake.resolves([{ id: 'container-id' }]); + const config = { + dockerMqttVersion: 'BAD_REVISION', + dockerZ2mVersion: 'BAD_REVISION', + }; + // EXECUTE + await zigbee2mqttManager.checkForContainerUpdates(config); + // ASSERT + assert.calledTwice(gladys.system.getContainers); + assert.calledWithExactly(gladys.system.getContainers, { + all: true, + filters: { name: ['gladys-z2m-mqtt'] }, + }); + assert.calledWithExactly(gladys.system.getContainers, { + all: true, + filters: { name: ['gladys-z2m-zigbee2mqtt'] }, + }); + + assert.calledTwice(gladys.system.removeContainer); + assert.calledWithExactly(gladys.system.removeContainer, 'container-id', { force: true }); + + expect(config).deep.equal({ + dockerMqttVersion: DEFAULT.DOCKER_MQTT_VERSION, + dockerZ2mVersion: DEFAULT.DOCKER_Z2M_VERSION, + }); + }); + + it('already updated -> it should do nothing', async () => { + // PREPARE + gladys.system.getContainers = fake.resolves([{ id: 'container-id' }]); + const config = { + dockerMqttVersion: DEFAULT.DOCKER_MQTT_VERSION, + dockerZ2mVersion: DEFAULT.DOCKER_Z2M_VERSION, + }; + // EXECUTE + await zigbee2mqttManager.checkForContainerUpdates(config); + // ASSERT + assert.notCalled(gladys.system.getContainers); + assert.notCalled(gladys.system.removeContainer); + + expect(config).deep.equal({ + dockerMqttVersion: DEFAULT.DOCKER_MQTT_VERSION, + dockerZ2mVersion: DEFAULT.DOCKER_Z2M_VERSION, + }); + }); +}); diff --git a/server/test/services/zigbee2mqtt/lib/getConfiguration.test.js b/server/test/services/zigbee2mqtt/lib/getConfiguration.test.js index fafdf1d762..89c7b8d3ff 100644 --- a/server/test/services/zigbee2mqtt/lib/getConfiguration.test.js +++ b/server/test/services/zigbee2mqtt/lib/getConfiguration.test.js @@ -30,13 +30,15 @@ describe('zigbee2mqtt getConfiguration', () => { // EXECUTE const result = await zigbee2MqttManager.getConfiguration(); // ASSERT - assert.callCount(gladys.variable.getValue, 6); + assert.callCount(gladys.variable.getValue, 8); assert.calledWithExactly(gladys.variable.getValue, 'ZIGBEE2MQTT_DRIVER_PATH', serviceId); assert.calledWithExactly(gladys.variable.getValue, 'Z2M_MQTT_USERNAME', serviceId); assert.calledWithExactly(gladys.variable.getValue, 'Z2M_MQTT_PASSWORD', serviceId); assert.calledWithExactly(gladys.variable.getValue, 'Z2M_MQTT_URL', serviceId); assert.calledWithExactly(gladys.variable.getValue, 'GLADYS_MQTT_USERNAME', serviceId); assert.calledWithExactly(gladys.variable.getValue, 'GLADYS_MQTT_PASSWORD', serviceId); + assert.calledWithExactly(gladys.variable.getValue, 'DOCKER_MQTT_VERSION', serviceId); + assert.calledWithExactly(gladys.variable.getValue, 'DOCKER_Z2M_VERSION', serviceId); expect(result).to.deep.equal({ z2mDriverPath: 'fake', @@ -45,6 +47,8 @@ describe('zigbee2mqtt getConfiguration', () => { mqttUrl: 'fake', mqttUsername: 'fake', mqttPassword: 'fake', + dockerMqttVersion: 'fake', + dockerZ2mVersion: 'fake', }); }); }); diff --git a/server/test/services/zigbee2mqtt/lib/init.test.js b/server/test/services/zigbee2mqtt/lib/init.test.js index 4e26b0a249..80ea35e383 100644 --- a/server/test/services/zigbee2mqtt/lib/init.test.js +++ b/server/test/services/zigbee2mqtt/lib/init.test.js @@ -40,6 +40,7 @@ describe('zigbee2mqtt init', () => { zigbee2mqttManager.getConfiguration = sinon.stub(); zigbee2mqttManager.saveConfiguration = sinon.stub(); + zigbee2mqttManager.checkForContainerUpdates = sinon.stub(); zigbee2mqttManager.installMqttContainer = sinon.stub(); zigbee2mqttManager.installZ2mContainer = sinon.stub(); zigbee2mqttManager.isEnabled = sinon.stub(); @@ -68,6 +69,7 @@ describe('zigbee2mqtt init', () => { expect(zigbee2mqttManager.dockerBased).to.equal(false); assert.notCalled(zigbee2mqttManager.getConfiguration); assert.notCalled(zigbee2mqttManager.saveConfiguration); + assert.notCalled(zigbee2mqttManager.checkForContainerUpdates); assert.notCalled(zigbee2mqttManager.installMqttContainer); assert.notCalled(zigbee2mqttManager.installZ2mContainer); assert.notCalled(zigbee2mqttManager.isEnabled); @@ -88,6 +90,7 @@ describe('zigbee2mqtt init', () => { expect(zigbee2mqttManager.networkModeValid).to.equal(false); assert.notCalled(zigbee2mqttManager.getConfiguration); assert.notCalled(zigbee2mqttManager.saveConfiguration); + assert.notCalled(zigbee2mqttManager.checkForContainerUpdates); assert.notCalled(zigbee2mqttManager.installMqttContainer); assert.notCalled(zigbee2mqttManager.installZ2mContainer); assert.notCalled(zigbee2mqttManager.isEnabled); @@ -104,6 +107,7 @@ describe('zigbee2mqtt init', () => { // ASSERT assert.calledOnceWithExactly(zigbee2mqttManager.getConfiguration); assert.calledOnceWithExactly(zigbee2mqttManager.saveConfiguration, config); + assert.notCalled(zigbee2mqttManager.checkForContainerUpdates); assert.notCalled(zigbee2mqttManager.installMqttContainer); assert.notCalled(zigbee2mqttManager.installZ2mContainer); assert.notCalled(zigbee2mqttManager.isEnabled); @@ -120,6 +124,7 @@ describe('zigbee2mqtt init', () => { // ASSERT assert.calledOnceWithExactly(zigbee2mqttManager.getConfiguration); assert.calledOnceWithExactly(zigbee2mqttManager.saveConfiguration, config); + assert.notCalled(zigbee2mqttManager.checkForContainerUpdates); assert.notCalled(zigbee2mqttManager.installMqttContainer); assert.notCalled(zigbee2mqttManager.installZ2mContainer); assert.notCalled(zigbee2mqttManager.isEnabled); @@ -137,6 +142,7 @@ describe('zigbee2mqtt init', () => { // ASSERT assert.calledOnceWithExactly(zigbee2mqttManager.getConfiguration); assert.calledOnceWithExactly(zigbee2mqttManager.saveConfiguration, config); + assert.calledOnceWithExactly(zigbee2mqttManager.checkForContainerUpdates, config); assert.calledOnceWithExactly(zigbee2mqttManager.installMqttContainer, config); assert.calledOnceWithExactly(zigbee2mqttManager.installZ2mContainer, config); assert.calledOnceWithExactly(zigbee2mqttManager.isEnabled); @@ -162,6 +168,8 @@ describe('zigbee2mqtt init', () => { assert.calledOnceWithExactly(zigbee2mqttManager.getConfiguration); assert.calledOnce(zigbee2mqttManager.saveConfiguration); assert.calledWithMatch(zigbee2mqttManager.saveConfiguration, sinon.match(expectedNewConfig)); + assert.calledOnce(zigbee2mqttManager.checkForContainerUpdates); + assert.calledWithMatch(zigbee2mqttManager.checkForContainerUpdates, sinon.match(expectedNewConfig)); assert.calledOnce(zigbee2mqttManager.installMqttContainer); assert.calledWithMatch(zigbee2mqttManager.installMqttContainer, sinon.match(expectedNewConfig)); assert.calledOnce(zigbee2mqttManager.installZ2mContainer); @@ -181,6 +189,7 @@ describe('zigbee2mqtt init', () => { // ASSERT assert.calledOnceWithExactly(zigbee2mqttManager.getConfiguration); assert.calledOnceWithExactly(zigbee2mqttManager.saveConfiguration, config); + assert.calledOnceWithExactly(zigbee2mqttManager.checkForContainerUpdates, config); assert.calledOnceWithExactly(zigbee2mqttManager.installMqttContainer, config); assert.calledOnceWithExactly(zigbee2mqttManager.installZ2mContainer, config); assert.calledOnceWithExactly(zigbee2mqttManager.isEnabled); diff --git a/server/test/services/zigbee2mqtt/lib/saveConfiguration.test.js b/server/test/services/zigbee2mqtt/lib/saveConfiguration.test.js index f72642e1a7..6eeeb43f9c 100644 --- a/server/test/services/zigbee2mqtt/lib/saveConfiguration.test.js +++ b/server/test/services/zigbee2mqtt/lib/saveConfiguration.test.js @@ -35,17 +35,21 @@ describe('zigbee2mqtt saveConfiguration', () => { mqttUrl: 'mqttUrl', mqttUsername: 'mqttUsername', mqttPassword: 'mqttPassword', + dockerMqttVersion: 'dockerMqttVersion', + dockerZ2mVersion: 'dockerZ2mVersion', }; // EXECUTE await zigbee2MqttManager.saveConfiguration(config); // ASSERT - assert.callCount(gladys.variable.setValue, 6); + assert.callCount(gladys.variable.setValue, 8); assert.calledWithExactly(gladys.variable.setValue, 'ZIGBEE2MQTT_DRIVER_PATH', config.z2mDriverPath, serviceId); assert.calledWithExactly(gladys.variable.setValue, 'Z2M_MQTT_USERNAME', config.z2mMqttUsername, serviceId); assert.calledWithExactly(gladys.variable.setValue, 'Z2M_MQTT_PASSWORD', config.z2mMqttPassword, serviceId); assert.calledWithExactly(gladys.variable.setValue, 'Z2M_MQTT_URL', config.mqttUrl, serviceId); assert.calledWithExactly(gladys.variable.setValue, 'GLADYS_MQTT_USERNAME', config.mqttUsername, serviceId); assert.calledWithExactly(gladys.variable.setValue, 'GLADYS_MQTT_PASSWORD', config.mqttPassword, serviceId); + assert.calledWithExactly(gladys.variable.setValue, 'DOCKER_MQTT_VERSION', config.dockerMqttVersion, serviceId); + assert.calledWithExactly(gladys.variable.setValue, 'DOCKER_Z2M_VERSION', config.dockerZ2mVersion, serviceId); }); it('should destroy all variables', async () => { @@ -54,12 +58,14 @@ describe('zigbee2mqtt saveConfiguration', () => { // EXECUTE await zigbee2MqttManager.saveConfiguration(config); // ASSERT - assert.callCount(gladys.variable.destroy, 6); + assert.callCount(gladys.variable.destroy, 8); assert.calledWithExactly(gladys.variable.destroy, 'ZIGBEE2MQTT_DRIVER_PATH', serviceId); assert.calledWithExactly(gladys.variable.destroy, 'Z2M_MQTT_USERNAME', serviceId); assert.calledWithExactly(gladys.variable.destroy, 'Z2M_MQTT_PASSWORD', serviceId); assert.calledWithExactly(gladys.variable.destroy, 'Z2M_MQTT_URL', serviceId); assert.calledWithExactly(gladys.variable.destroy, 'GLADYS_MQTT_USERNAME', serviceId); assert.calledWithExactly(gladys.variable.destroy, 'GLADYS_MQTT_PASSWORD', serviceId); + assert.calledWithExactly(gladys.variable.destroy, 'DOCKER_MQTT_VERSION', serviceId); + assert.calledWithExactly(gladys.variable.destroy, 'DOCKER_Z2M_VERSION', serviceId); }); }); From 92de5c2cecc4a2dd743e6af9f757b93e977c152e Mon Sep 17 00:00:00 2001 From: Pierre-Gilles Leymarie Date: Mon, 6 Feb 2023 14:42:12 +0700 Subject: [PATCH 140/164] 4.16.0 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2520a67682..ad2b49157c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "gladys", - "version": "4.15.0", + "version": "4.16.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "gladys", - "version": "4.15.0", + "version": "4.16.0", "hasInstallScript": true, "license": "Apache-2.0", "devDependencies": { diff --git a/package.json b/package.json index ef4ec1a402..389506069e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "gladys", - "version": "4.15.0", + "version": "4.16.0", "description": "A privacy-first, open-source home assistant", "main": "index.js", "engines": { From b4a49ef7855f68d37300ed9ee9576f45e6f9bbb0 Mon Sep 17 00:00:00 2001 From: Pierre-Gilles Leymarie Date: Mon, 6 Feb 2023 14:42:55 +0700 Subject: [PATCH 141/164] Upgrade CHANGELOG --- CHANGELOG.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e12bff195b..869f01059a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,20 @@ All notable changes to this project will be documented in this file. Dates are d Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). +#### [v4.16.0](https://github.com/GladysAssistant/Gladys/compare/v4.15.0...v4.16.0) + +> 6 February 2023 + +- Zigbee2mqtt: Add limits on Docker containers logs size [`#1692`](https://github.com/GladysAssistant/Gladys/pull/1692) +- Add AQI sensor [`#1685`](https://github.com/GladysAssistant/Gladys/pull/1685) +- Fix NaN dates in tasks list on Safari/Firefox [`#1697`](https://github.com/GladysAssistant/Gladys/pull/1697) +- Fix CalDAV update during sync [`#1703`](https://github.com/GladysAssistant/Gladys/pull/1703) +- Be able to re-order dashboard boxes with drag and drop [`#1704`](https://github.com/GladysAssistant/Gladys/pull/1704) +- Dashboard: user can now re-order his dashboard list [`#1701`](https://github.com/GladysAssistant/Gladys/pull/1701) +- Caldav: Improve calendar sharing wording [`#1698`](https://github.com/GladysAssistant/Gladys/pull/1698) +- Gladys Plus: add confirm button before upgrading to yearly [`#1700`](https://github.com/GladysAssistant/Gladys/pull/1700) +- Upgrade CHANGELOG [`16cb5b4`](https://github.com/GladysAssistant/Gladys/commit/16cb5b48b836fb9a565220c40b48a4e2a3954bfe) + #### [v4.15.0](https://github.com/GladysAssistant/Gladys/compare/v4.14.0...v4.15.0) > 26 January 2023 From 8b80ffac382978fd333d8946cddcb2a6e4809ae9 Mon Sep 17 00:00:00 2001 From: Pierre-Gilles Leymarie Date: Mon, 6 Feb 2023 16:34:53 +0700 Subject: [PATCH 142/164] Add back full screen button (#1706) --- front/src/routes/dashboard/DashboardPage.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/front/src/routes/dashboard/DashboardPage.jsx b/front/src/routes/dashboard/DashboardPage.jsx index 952dcc8003..71a096f5c5 100644 --- a/front/src/routes/dashboard/DashboardPage.jsx +++ b/front/src/routes/dashboard/DashboardPage.jsx @@ -41,7 +41,7 @@ const DashboardPage = ({ children, ...props }) => (
- {!props.dashboardNotConfigured && props.browserFullScreenCompatible && false && ( + {!props.dashboardNotConfigured && props.browserFullScreenCompatible && (
+
+
+

+ +

+
+
+ {' '} + + + +
+
diff --git a/front/src/routes/integration/all/openai/index.js b/front/src/routes/integration/all/openai/index.js index 7310283789..40f8b3549e 100644 --- a/front/src/routes/integration/all/openai/index.js +++ b/front/src/routes/integration/all/openai/index.js @@ -101,17 +101,51 @@ class OpenAIGateway extends Component { } }; + getOpenAiEnabledStatus = async () => { + try { + const response = await this.props.httpClient.get('/api/v1/variable/GLADYS_GATEWAY_OPEN_AI_ENABLED'); + this.setState({ + openAIActiveInChat: response.value === 'true' + }); + } catch (e) { + console.error(e); + } + }; + + toggleOpenAI = async () => { + const { openAIActiveInChat } = this.state; + try { + const newOpenAIActiveInChat = !openAIActiveInChat; + await this.props.httpClient.post('/api/v1/variable/GLADYS_GATEWAY_OPEN_AI_ENABLED', { + value: newOpenAIActiveInChat.toString() + }); + this.setState({ + openAIActiveInChat: newOpenAIActiveInChat + }); + } catch (e) { + console.error(e); + } + }; + + componentDidMount() { + this.getOpenAiEnabledStatus(); + } + constructor(props) { super(props); this.props = props; this.state = { messages: [], currentMessageTextInput: '', - gladysIsTyping: false + gladysIsTyping: false, + openAIActiveInChat: null }; } - render(props, { messages, gladysIsTyping, currentMessageTextInput, error, accountLicenseShouldBeActive }) { + render( + props, + { messages, gladysIsTyping, currentMessageTextInput, error, accountLicenseShouldBeActive, openAIActiveInChat } + ) { const notOnGladysPlus = props.session && props.session.getGatewayUser === undefined; return ( @@ -147,6 +181,25 @@ class OpenAIGateway extends Component {

+
diff --git a/server/config/brain/camera/answers.en.json b/server/config/brain/camera/answers.en.json index c94382350d..ea5ac241b6 100644 --- a/server/config/brain/camera/answers.en.json +++ b/server/config/brain/camera/answers.en.json @@ -7,5 +7,9 @@ { "label": "camera.get-image-room.no-image-found", "answers": ["Sorry, I can't get a recent image."] + }, + { + "label": "camera.get-image-room.fail", + "answers": ["Sorry, something wrong happened while getting the camera"] } ] diff --git a/server/config/brain/camera/answers.fr.json b/server/config/brain/camera/answers.fr.json index 0c97935d84..72cf5d36d5 100644 --- a/server/config/brain/camera/answers.fr.json +++ b/server/config/brain/camera/answers.fr.json @@ -7,5 +7,9 @@ { "label": "camera.get-image-room.no-image-found", "answers": ["Désolé, je n'ai pas trouvé d'image récente."] + }, + { + "label": "camera.get-image-room.fail", + "answers": ["Désolé, je n'ai pas réussi à récupérer cette image de caméra"] } ] diff --git a/server/config/brain/openai/answers.en.json b/server/config/brain/openai/answers.en.json new file mode 100644 index 0000000000..c5c293e3a3 --- /dev/null +++ b/server/config/brain/openai/answers.en.json @@ -0,0 +1,10 @@ +[ + { + "label": "openai.request.fail", + "answers": ["The request to OpenAI failed, please try again!"] + }, + { + "label": "openai.request.tooManyRequests", + "answers": ["You have made too many requests this month to OpenAI!"] + } +] diff --git a/server/config/brain/openai/answers.fr.json b/server/config/brain/openai/answers.fr.json new file mode 100644 index 0000000000..b7998b3645 --- /dev/null +++ b/server/config/brain/openai/answers.fr.json @@ -0,0 +1,10 @@ +[ + { + "label": "openai.request.fail", + "answers": ["La requête vers OpenAI a échoué, merci de re-essayer !"] + }, + { + "label": "openai.request.tooManyRequests", + "answers": ["Vous avez fais trop de requêtes ce mois-ci vers OpenAI !"] + } +] diff --git a/server/config/brain/scene/answers.en.json b/server/config/brain/scene/answers.en.json new file mode 100644 index 0000000000..d989bcb70b --- /dev/null +++ b/server/config/brain/scene/answers.en.json @@ -0,0 +1,11 @@ +[ + { + "label": "scene.start.success", + "answers": ["Scene started with success!"] + }, + + { + "label": "scene.start.fail", + "answers": ["Failed to start scene."] + } +] diff --git a/server/config/brain/scene/answers.fr.json b/server/config/brain/scene/answers.fr.json new file mode 100644 index 0000000000..da47d55371 --- /dev/null +++ b/server/config/brain/scene/answers.fr.json @@ -0,0 +1,11 @@ +[ + { + "label": "scene.start.success", + "answers": ["Scène lancée avec succès !"] + }, + + { + "label": "scene.start.fail", + "answers": ["Impossible de lancer la scène."] + } +] diff --git a/server/config/brain/temperature-sensor/answers.en.json b/server/config/brain/temperature-sensor/answers.en.json index f699e6a7b6..2abbe69753 100644 --- a/server/config/brain/temperature-sensor/answers.en.json +++ b/server/config/brain/temperature-sensor/answers.en.json @@ -10,5 +10,9 @@ { "label": "temperature-sensor.get-in-room.fail.room-not-found", "answers": ["I can't find a room with this name."] + }, + { + "label": "temperature-sensor.get-in-room.fail", + "answers": ["I didn't manage to get the temperature in this room."] } ] diff --git a/server/config/brain/temperature-sensor/answers.fr.json b/server/config/brain/temperature-sensor/answers.fr.json index 932eee6735..8a1f3e7dee 100644 --- a/server/config/brain/temperature-sensor/answers.fr.json +++ b/server/config/brain/temperature-sensor/answers.fr.json @@ -10,5 +10,9 @@ { "label": "temperature-sensor.get-in-room.fail.room-not-found", "answers": ["Je n'ai pas trouvé de pièce avec ce nom."] + }, + { + "label": "temperature-sensor.get-in-room.fail", + "answers": ["Je n'ai pas réussi à récupérer la température dans cette pièce."] } ] diff --git a/server/lib/brain/brain.addNamedEntity.js b/server/lib/brain/brain.addNamedEntity.js new file mode 100644 index 0000000000..26ed2c1e89 --- /dev/null +++ b/server/lib/brain/brain.addNamedEntity.js @@ -0,0 +1,18 @@ +const { SUPPORTED_LANGUAGES } = require('../../config/brain/index'); + +/** + * @description Add an entity to the named entity manager + * @param {string} entity - The entity type. + * @param {string} identifier - The identifier of the entity. + * @param {string} name - The name of the entity. + * @example + * brain.addNamedEntity('room', '1794c473-fc19-403f-bff7-a7fe667b4604', 'living room'); + */ +function addNamedEntity(entity, identifier, name) { + this.namedEntities[entity].set(name, identifier); + this.nlpManager.addNamedEntityText(entity, identifier, SUPPORTED_LANGUAGES, [name]); +} + +module.exports = { + addNamedEntity, +}; diff --git a/server/lib/brain/brain.addRoom.js b/server/lib/brain/brain.addRoom.js deleted file mode 100644 index 314a643b17..0000000000 --- a/server/lib/brain/brain.addRoom.js +++ /dev/null @@ -1,15 +0,0 @@ -const { SUPPORTED_LANGUAGES } = require('../../config/brain/index'); - -/** - * @description Add a room to the named entity manager - * @param {Object} room - The room object. - * @example - * brain.addRoom(room); - */ -function addRoom(room) { - this.nlpManager.addNamedEntityText('room', room.id, SUPPORTED_LANGUAGES, [room.name]); -} - -module.exports = { - addRoom, -}; diff --git a/server/lib/brain/brain.getEntityIdByName.js b/server/lib/brain/brain.getEntityIdByName.js new file mode 100644 index 0000000000..84a1c57577 --- /dev/null +++ b/server/lib/brain/brain.getEntityIdByName.js @@ -0,0 +1,47 @@ +const { similarity } = require('@nlpjs/similarity'); +const logger = require('../../utils/logger'); + +const SIMILAR_THRESHOLD = 3; + +/** + * @description Return entity id by name + * @param {string} entity - The entity type. + * @param {string} name - The name of the entity. + * @returns {string} Return the id of the entity. + * @example + * brain.getEntityIdByName('room', 'salon'); + */ +function getEntityIdByName(entity, name) { + logger.debug(`Brain: Trying to find entity ${entity} with name ${name}`); + // if no entity exist with this name + if (!this.namedEntities[entity]) { + return undefined; + } + // If we find an exact match, we resolve immediately + const exactMatch = this.namedEntities[entity].get(name); + if (exactMatch) { + return exactMatch; + } + // If not, we calculate similarity + const similars = []; + this.namedEntities[entity].forEach((identifier, nameInDb) => { + const similarNumber = similarity(nameInDb, name, true); + if (similarNumber <= SIMILAR_THRESHOLD) { + similars.push({ identifier, similarNumber }); + } + }); + + // if some similarity are found, we order by similarity + if (similars.length > 0) { + similars.sort((a, b) => a.similarNumber - b.similarNumber); + logger.debug(similars); + // and return the first one + return similars[0].identifier; + } + + return undefined; +} + +module.exports = { + getEntityIdByName, +}; diff --git a/server/lib/brain/brain.removeNamedEntity.js b/server/lib/brain/brain.removeNamedEntity.js new file mode 100644 index 0000000000..681c52aa1f --- /dev/null +++ b/server/lib/brain/brain.removeNamedEntity.js @@ -0,0 +1,18 @@ +const { SUPPORTED_LANGUAGES } = require('../../config/brain/index'); + +/** + * @description Remove a room + * @param {string} entity - The entity type. + * @param {string} identifier - The identifier of the entity. + * @param {string} name - The name of the entity. + * @example + * brain.removeNamedEntity(room); + */ +function removeNamedEntity(entity, identifier, name) { + this.namedEntities[entity].delete(name); + this.nlpManager.removeNamedEntityText(identifier, identifier, SUPPORTED_LANGUAGES, [name]); +} + +module.exports = { + removeNamedEntity, +}; diff --git a/server/lib/brain/brain.removeRoom.js b/server/lib/brain/brain.removeRoom.js deleted file mode 100644 index be99610361..0000000000 --- a/server/lib/brain/brain.removeRoom.js +++ /dev/null @@ -1,15 +0,0 @@ -const { SUPPORTED_LANGUAGES } = require('../../config/brain/index'); - -/** - * @description Remove a room - * @param {Object} room - The old room object to remove. - * @example - * brain.removeRoom(room); - */ -function removeRoom(room) { - this.nlpManager.removeNamedEntityText('room', room.id, SUPPORTED_LANGUAGES, [room.name]); -} - -module.exports = { - removeRoom, -}; diff --git a/server/lib/brain/index.js b/server/lib/brain/index.js index 5eb260b166..288771fbd9 100644 --- a/server/lib/brain/index.js +++ b/server/lib/brain/index.js @@ -1,26 +1,33 @@ const { NlpManager } = require('node-nlp'); const { SUPPORTED_LANGUAGES } = require('../../config/brain/index'); -const { addRoom } = require('./brain.addRoom'); -const { removeRoom } = require('./brain.removeRoom'); +const { addNamedEntity } = require('./brain.addNamedEntity'); +const { removeNamedEntity } = require('./brain.removeNamedEntity'); const { train } = require('./brain.train'); const { classify } = require('./brain.classify'); const { getReply } = require('./brain.getReply'); const { load } = require('./brain.load'); +const { getEntityIdByName } = require('./brain.getEntityIdByName'); const Brain = function Brain() { this.nlpManager = new NlpManager({ + ner: { threshold: 0.8, builtins: [] }, languages: SUPPORTED_LANGUAGES, nlu: { log: false }, autoSave: false, }); + this.namedEntities = { + room: new Map(), + scene: new Map(), + }; }; -Brain.prototype.addRoom = addRoom; -Brain.prototype.removeRoom = removeRoom; +Brain.prototype.addNamedEntity = addNamedEntity; +Brain.prototype.removeNamedEntity = removeNamedEntity; Brain.prototype.train = train; Brain.prototype.load = load; Brain.prototype.classify = classify; Brain.prototype.getReply = getReply; +Brain.prototype.getEntityIdByName = getEntityIdByName; module.exports = Brain; diff --git a/server/lib/device/light/light.command.js b/server/lib/device/light/light.command.js index 4821ffd64c..8d2e5f7fc2 100644 --- a/server/lib/device/light/light.command.js +++ b/server/lib/device/light/light.command.js @@ -68,7 +68,7 @@ async function command(message, classification, context) { } } catch (e) { logger.debug(e); - this.messageManager.replyByIntent(message, 'light.turn-on.fail', context); + this.messageManager.replyByIntent(message, `${classification.intent}.fail`, context); } return null; } diff --git a/server/lib/gateway/gateway.forwardMessageToOpenAI.js b/server/lib/gateway/gateway.forwardMessageToOpenAI.js new file mode 100644 index 0000000000..75176a90fa --- /dev/null +++ b/server/lib/gateway/gateway.forwardMessageToOpenAI.js @@ -0,0 +1,77 @@ +const { Error429 } = require('../../utils/httpErrors'); + +const intentTranslation = { + SHOW_CAMERA: 'camera.get-image-room', + TURN_ON: 'light.turn-on', + TURN_OFF: 'light.turn-off', + GET_TEMPERATURE: 'temperature-sensor.get-in-room', + GET_HUMIDITY: 'humidity-sensor.get-in-room', + SCENE_START: 'scene.start', + INFO: 'info.get-info', +}; + +const disableOpenAiFirstReply = new Set(['GET_TEMPERATURE', 'GET_HUMIDITY']); + +/** + * @public + * @description handle a new message sent by a user to Gladys. + * @param {Object} request - A request sent. + * @param {Array} request.previousQuestions - List of previous messages. + * @param {Object} request.context - Context of messages (user, etc...). + * @param {Object} request.message - A message sent by a user. + * @param {string} request.message.text - The text of the message. + * @param {string} request.message.language - The language of the message. + * @param {string} request.message.source - The name of the service where the message comes from. + * @param {string} request.message.source_user_id - The user id for the source service. + * @param {Object} request.message.user - A user object. + * @param {Object} request.message.id - Id of the message. + * @returns {Promise} Return classification. + * @example + * forwardMessageToOpenAI(request); + */ +async function forwardMessageToOpenAI({ message, previousQuestions, context }) { + try { + const response = await this.openAIAsk({ + question: message.text, + previous_questions: previousQuestions, + }); + + const classification = {}; + + // add room entity + if (response.room) { + const roomId = this.brain.getEntityIdByName('room', response.room); + classification.entities = [{ entity: 'room', option: roomId, sourceText: response.room }]; + } + + // add scene entity + if (response.scene) { + const sceneSelector = this.brain.getEntityIdByName('scene', response.scene); + classification.entities = [{ entity: 'scene', option: sceneSelector, sourceText: response.scene }]; + } + + classification.intent = intentTranslation[response.type]; + + // Reply with OpenAI response + if (!disableOpenAiFirstReply.has(response.type)) { + await this.message.reply(message, response.answer); + } + + if (classification.intent) { + this.event.emit(`intent.${classification.intent}`, message, classification, context); + } + + return classification; + } catch (e) { + if (e instanceof Error429) { + await this.message.replyByIntent(message, 'openai.request.tooManyRequests', context); + } else { + await this.message.replyByIntent(message, 'openai.request.fail', context); + } + return null; + } +} + +module.exports = { + forwardMessageToOpenAI, +}; diff --git a/server/lib/gateway/index.js b/server/lib/gateway/index.js index fed6ad51ac..a696cc2416 100644 --- a/server/lib/gateway/index.js +++ b/server/lib/gateway/index.js @@ -29,6 +29,7 @@ const { saveUsersKeys } = require('./gateway.saveUsersKeys'); const { refreshUserKeys } = require('./gateway.refreshUserKeys'); const { getEcowattSignals } = require('./gateway.getEcowattSignals'); const { openAIAsk } = require('./gateway.openAIAsk'); +const { forwardMessageToOpenAI } = require('./gateway.forwardMessageToOpenAI'); const Gateway = function Gateway( variable, @@ -41,6 +42,8 @@ const Gateway = function Gateway( serviceManager, job, scheduler, + message, + brain, ) { this.variable = variable; this.event = event; @@ -52,6 +55,8 @@ const Gateway = function Gateway( this.stateManager = stateManager; this.serviceManager = serviceManager; this.job = job; + this.message = message; + this.brain = brain; this.connected = false; this.restoreInProgress = false; this.usersKeys = []; @@ -80,6 +85,7 @@ const Gateway = function Gateway( this.event.on(EVENTS.GATEWAY.USER_KEYS_CHANGED, eventFunctionWrapper(this.refreshUserKeys.bind(this))); this.event.on(EVENTS.TRIGGERS.CHECK, eventFunctionWrapper(this.forwardDeviceStateToGoogleHome.bind(this))); this.event.on(EVENTS.TRIGGERS.CHECK, eventFunctionWrapper(this.forwardDeviceStateToAlexa.bind(this))); + this.event.on(EVENTS.MESSAGE.NEW_FOR_OPEN_AI, eventFunctionWrapper(this.forwardMessageToOpenAI.bind(this))); }; Gateway.prototype.backup = backup; @@ -106,5 +112,6 @@ Gateway.prototype.saveUsersKeys = saveUsersKeys; Gateway.prototype.refreshUserKeys = refreshUserKeys; Gateway.prototype.getEcowattSignals = getEcowattSignals; Gateway.prototype.openAIAsk = openAIAsk; +Gateway.prototype.forwardMessageToOpenAI = forwardMessageToOpenAI; module.exports = Gateway; diff --git a/server/lib/index.js b/server/lib/index.js index b9d9acf46d..440c1c6df3 100644 --- a/server/lib/index.js +++ b/server/lib/index.js @@ -60,7 +60,7 @@ function Gladys(params = {}) { const house = new House(event, stateManager); const room = new Room(brain); const service = new Service(services, stateManager); - const message = new MessageHandler(event, brain, service, stateManager); + const message = new MessageHandler(event, brain, service, stateManager, variable); const session = new Session(params.jwtSecret, cache); const user = new User(session, stateManager, variable); const location = new Location(user, event); @@ -79,8 +79,22 @@ function Gladys(params = {}) { service, job, scheduler, + message, + brain, + ); + const scene = new Scene( + stateManager, + event, + device, + message, + variable, + house, + calendar, + http, + gateway, + scheduler, + brain, ); - const scene = new Scene(stateManager, event, device, message, variable, house, calendar, http, gateway, scheduler); const gladys = { version: '0.1.0', // todo, read package.json diff --git a/server/lib/message/index.js b/server/lib/message/index.js index 7edfaa5cb1..d836f3dfb4 100644 --- a/server/lib/message/index.js +++ b/server/lib/message/index.js @@ -6,11 +6,12 @@ const { handleEvent } = require('./message.handleEvent'); const { replyByIntent } = require('./message.replyByIntent'); const { sendToUser } = require('./message.sendToUser'); -const MessageHandler = function MessageHandler(event, brain, service, state) { +const MessageHandler = function MessageHandler(event, brain, service, state, variable) { this.event = event; this.brain = brain; this.service = service; this.state = state; + this.variable = variable; event.on(EVENTS.MESSAGE.NEW, (message) => this.handleEvent(message)); }; diff --git a/server/lib/message/message.create.js b/server/lib/message/message.create.js index eea17dc1b4..00094baf00 100644 --- a/server/lib/message/message.create.js +++ b/server/lib/message/message.create.js @@ -1,5 +1,8 @@ +const { Op } = require('sequelize'); + const logger = require('../../utils/logger'); const db = require('../../models'); +const { EVENTS, SYSTEM_VARIABLE_NAMES } = require('../../utils/constants'); /** * @public @@ -15,17 +18,53 @@ const db = require('../../models'); * message.create(message); */ async function create(message) { - // first, we classify the message to understand the intent - const { classification, context } = await this.brain.classify(message.text, message.language, { - user: message.user, - }); + const gladysGatewayOpenAiEnabledVar = await this.variable.getValue( + SYSTEM_VARIABLE_NAMES.GLADYS_GATEWAY_OPEN_AI_ENABLED, + ); + const openAiEnabled = gladysGatewayOpenAiEnabledVar === 'true'; + + let classification; + let context; + + if (!openAiEnabled) { + console.log('starting classification'); + console.time('StartingClassification'); + + // first, we classify the message to understand the intent + ({ classification, context } = await this.brain.classify(message.text, message.language, { + user: message.user, + })); - logger.debug(`Classified "${message.text}" with intent = "${classification.intent}".`); - logger.debug(classification); + console.timeEnd('StartingClassification'); - // if Gladys doesn't understand - if (classification.intent === 'None') { - this.replyByIntent(message, 'question.no-intent-found', context); + logger.debug(`Classified "${message.text}" with intent = "${classification.intent}".`); + logger.debug(classification); + + // if Gladys doesn't understand + if (classification.intent === 'None') { + this.replyByIntent(message, 'question.no-intent-found', context); + } + } else { + context = { + user: message.user, + }; + const previousMessages = await db.Message.findAll({ + where: { + [Op.or]: [{ sender_id: message.user.id }, { receiver_id: message.user.id }], + }, + order: [['created_at', 'desc']], + limit: 10, + }); + const lastUserQuestion = previousMessages.find((msg) => msg.sender_id !== null); + const lastGladysAnswer = previousMessages.find((msg) => msg.sender_id === null); + const previousQuestions = []; + if (lastUserQuestion && lastGladysAnswer) { + previousQuestions.push({ + question: lastUserQuestion.text, + answer: lastGladysAnswer.text, + }); + } + this.event.emit(EVENTS.MESSAGE.NEW_FOR_OPEN_AI, { message, previousQuestions, context }); } const messageToInsert = { @@ -38,13 +77,15 @@ async function create(message) { await db.Message.create(messageToInsert); - // if a first answer needs to be sent, send it - if (classification.answer) { - await this.reply(message, classification.answer, classification.context); - } + if (!openAiEnabled) { + if (classification.answer) { + // if a first answer needs to be sent, send it + await this.reply(message, classification.answer, classification.context); + } - // new classification found, emitting event - this.event.emit(`intent.${classification.intent}`, message, classification, context); + // new classification found, emitting event + this.event.emit(`intent.${classification.intent}`, message, classification, context); + } return { message, diff --git a/server/lib/room/room.create.js b/server/lib/room/room.create.js index 4f9b608b52..aefb9ffd52 100644 --- a/server/lib/room/room.create.js +++ b/server/lib/room/room.create.js @@ -26,7 +26,7 @@ async function create(selector, room) { const roomPlain = roomCreated.get({ plain: true }); // add room to the brain - this.brain.addRoom(roomPlain); + this.brain.addNamedEntity('room', roomPlain.id, roomPlain.name); return roomPlain; } diff --git a/server/lib/room/room.destroy.js b/server/lib/room/room.destroy.js index 026f2cb0d0..1b4f94f126 100644 --- a/server/lib/room/room.destroy.js +++ b/server/lib/room/room.destroy.js @@ -19,7 +19,7 @@ async function destroy(selector) { throw new NotFoundError('Room not found'); } - this.brain.removeRoom(room); + this.brain.removeNamedEntity('room', room.id, room.name); await room.destroy(); } diff --git a/server/lib/room/room.init.js b/server/lib/room/room.init.js index b9426565bf..d52a4c0009 100644 --- a/server/lib/room/room.init.js +++ b/server/lib/room/room.init.js @@ -7,7 +7,7 @@ async function init() { const rooms = await this.getAll(); rooms.forEach((room) => { - this.brain.addRoom(room); + this.brain.addNamedEntity('room', room.id, room.name); }); } diff --git a/server/lib/room/room.update.js b/server/lib/room/room.update.js index ff586d1668..9332b8598c 100644 --- a/server/lib/room/room.update.js +++ b/server/lib/room/room.update.js @@ -28,11 +28,8 @@ async function update(selector, room) { const updatedRoomPlain = existingRoom.get({ plain: true }); if (oldName !== updatedRoomPlain.name) { - this.brain.removeRoom({ - id: updatedRoomPlain.id, - name: oldName, - }); - this.brain.addRoom(updatedRoomPlain); + this.brain.removeNamedEntity('room', updatedRoomPlain.id, oldName); + this.brain.addNamedEntity('room', updatedRoomPlain.id, updatedRoomPlain.name); } return updatedRoomPlain; diff --git a/server/lib/scene/index.js b/server/lib/scene/index.js index e50b88da29..f93df961f9 100644 --- a/server/lib/scene/index.js +++ b/server/lib/scene/index.js @@ -15,8 +15,9 @@ const { executeSingleAction } = require('./scene.executeSingleAction'); const { update } = require('./scene.update'); const { dailyUpdate } = require('./scene.dailyUpdate'); const { duplicate } = require('./scene.duplicate'); +const { command } = require('./scene.command'); -const { EVENTS } = require('../../utils/constants'); +const { EVENTS, INTENTS } = require('../../utils/constants'); const { eventFunctionWrapper } = require('../../utils/functionsWrapper'); const DEFAULT_TIMEZONE = 'Europe/Paris'; @@ -32,6 +33,7 @@ const SceneManager = function SceneManager( http, gateway, scheduler, + brain, ) { this.stateManager = stateManager; this.event = event; @@ -42,6 +44,7 @@ const SceneManager = function SceneManager( this.calendar = calendar; this.http = http; this.gateway = gateway; + this.brain = brain; this.scenes = {}; this.timezone = DEFAULT_TIMEZONE; // @ts-ignore @@ -60,6 +63,7 @@ const SceneManager = function SceneManager( this.event.on(EVENTS.HOUSE.UPDATED, eventFunctionWrapper(this.dailyUpdate.bind(this))); this.event.on(EVENTS.HOUSE.DELETED, eventFunctionWrapper(this.dailyUpdate.bind(this))); this.event.on(EVENTS.CALENDAR.CHECK_IF_EVENT_IS_COMING, eventFunctionWrapper(this.checkCalendarTriggers.bind(this))); + this.event.on(INTENTS.SCENE.START, this.command.bind(this)); }; SceneManager.prototype.addScene = addScene; @@ -76,5 +80,6 @@ SceneManager.prototype.execute = execute; SceneManager.prototype.executeSingleAction = executeSingleAction; SceneManager.prototype.update = update; SceneManager.prototype.duplicate = duplicate; +SceneManager.prototype.command = command; module.exports = SceneManager; diff --git a/server/lib/scene/scene.addScene.js b/server/lib/scene/scene.addScene.js index 214782eb1f..6ae7e99c00 100644 --- a/server/lib/scene/scene.addScene.js +++ b/server/lib/scene/scene.addScene.js @@ -95,6 +95,7 @@ function addScene(sceneRaw) { } this.scenes[scene.selector] = scene; + this.brain.addNamedEntity('scene', scene.selector, scene.name); return scene; } diff --git a/server/lib/scene/scene.command.js b/server/lib/scene/scene.command.js new file mode 100644 index 0000000000..fa92a06621 --- /dev/null +++ b/server/lib/scene/scene.command.js @@ -0,0 +1,33 @@ +const logger = require('../../utils/logger'); +const { NotFoundError } = require('../../utils/coreErrors'); +/** + * @description Command a scene. + * @param {Object} message - The message sent by the user. + * @param {Object} classification - The classification calculated by the brain. + * @param {Object} context - The context object containing found variables in question. + * @example + * command(message, classification, context); + */ +async function command(message, classification, context) { + const sceneEntity = classification.entities.find((entity) => entity.entity === 'scene'); + + if (classification.intent === 'scene.start') { + try { + if (!sceneEntity || !sceneEntity.option) { + throw new NotFoundError('Scene not found'); + } + logger.debug(`Starting scene ${sceneEntity.option}, original text = ${sceneEntity.sourceText}`); + await this.execute(sceneEntity.option); + this.message.replyByIntent(message, 'scene.start.success', context); + } catch (e) { + logger.debug(e); + this.message.replyByIntent(message, 'scene.start.fail', context); + } + } + + return null; +} + +module.exports = { + command, +}; diff --git a/server/lib/scene/scene.destroy.js b/server/lib/scene/scene.destroy.js index e5da4e119e..8a70562688 100644 --- a/server/lib/scene/scene.destroy.js +++ b/server/lib/scene/scene.destroy.js @@ -18,6 +18,9 @@ async function destroy(selector) { throw new NotFoundError('Scene not found'); } + // Remove scene from brain + this.brain.removeNamedEntity('scene', existingScene.selector, existingScene.name); + await existingScene.destroy(); // we cancel triggers linked to the scene this.cancelTriggers(selector); diff --git a/server/lib/scene/scene.init.js b/server/lib/scene/scene.init.js index 62640efdd4..97e2c03842 100644 --- a/server/lib/scene/scene.init.js +++ b/server/lib/scene/scene.init.js @@ -20,6 +20,7 @@ async function init() { const plainScenes = scenes.map((scene) => { const plainScene = scene.get({ plain: true }); this.addScene(plainScene); + this.brain.addNamedEntity('scene', plainScene.selector, plainScene.name); return plainScene; }); diff --git a/server/lib/scene/scene.update.js b/server/lib/scene/scene.update.js index 63ae8ed2b1..376384b643 100644 --- a/server/lib/scene/scene.update.js +++ b/server/lib/scene/scene.update.js @@ -22,9 +22,15 @@ async function update(selector, scene) { throw new NotFoundError('Scene not found'); } + const oldName = existingScene.name; + await existingScene.update(scene); const plainScene = existingScene.get({ plain: true }); + // Remove scene in brain if already present + if (oldName !== plainScene.name) { + this.brain.removeNamedEntity('scene', plainScene.selector, oldName); + } // add scene to live store this.addScene(plainScene); // return updated scene diff --git a/server/package-lock.json b/server/package-lock.json index 9237158a77..ec3d0e3e63 100644 --- a/server/package-lock.json +++ b/server/package-lock.json @@ -11,6 +11,7 @@ "@gladysassistant/gladys-gateway-js": "^4.10.0", "@hapi/joi": "^17.1.0", "@hapi/joi-date": "^2.0.1", + "@nlpjs/similarity": "^4.26.1", "async-retry": "^1.3.3", "axios": "^1.2.0", "bcrypt": "^5.1.0", @@ -30,7 +31,7 @@ "joi": "^17.7.0", "jsonwebtoken": "^8.5.1", "lodash.clonedeep": "^4.5.0", - "node-nlp": "^4.24.0", + "node-nlp": "^4.26.1", "node-schedule": "^2.1.0", "path-to-regexp": "^6.2.1", "pify": "^5.0.0", @@ -1092,523 +1093,523 @@ } }, "node_modules/@nlpjs/builtin-duckling": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/builtin-duckling/-/builtin-duckling-4.23.4.tgz", - "integrity": "sha512-GYaXX0cDOFg7KTJT3nOEZvWiG31yacw2f5Wjq+VrATv1iNertbrqp3lJahGp+it3oj4len4GyDS/PhI5SqS+9g==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/builtin-duckling/-/builtin-duckling-4.26.1.tgz", + "integrity": "sha512-3qkH955X2g5MXV1EqT3fTAT/lLEdiqqe5IgBDyr+MQB7FOV9R3YhqGIn3DFOl+TSm/tP5n/BAEptkTNn/TOpmQ==", "dependencies": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "node_modules/@nlpjs/builtin-microsoft": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/builtin-microsoft/-/builtin-microsoft-4.23.4.tgz", - "integrity": "sha512-Ihdd6HHPoFql1CGhcUvjxBKjTvDyDL9Zgi5xGJwCZ/w5LGhDTa4cAZG1GSaaR2RxOi5r1Q0H2GI+EAK3ZRz3eA==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/builtin-microsoft/-/builtin-microsoft-4.26.1.tgz", + "integrity": "sha512-AODgzTcfYUf5Ozm00aQnHImDum7Idtl0F9dSPoaXpfj7rZqP8hPZ7iWwdGTAvISH/da2YhjPOU65QSYk2YpjFA==", "dependencies": { "@microsoft/recognizers-text-suite": "1.3.0", - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "node_modules/@nlpjs/core": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/core/-/core-4.23.4.tgz", - "integrity": "sha512-iIQHCqYcUYxOk2LRa2shgMdZ1jdvuLqU9OaR1raOI+Hl5RDCoIpmnEFUTFYcBjGWbrXJZwjoQBnLsNMe81ZTZg==" + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/core/-/core-4.26.1.tgz", + "integrity": "sha512-M/PeFddsi3y7Z1piFJxsLGm5/xdMhcrpOsml7s6CTEgYo8iduaT30HDd61tZxDyvvJseU6uFqlXSn7XKkAcC1g==" }, "node_modules/@nlpjs/core-loader": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/core-loader/-/core-loader-4.23.4.tgz", - "integrity": "sha512-s58cu+gI+kPRG6r2ayK+B4++OHdTHA6SFLLxQ42JzdmY6rsEa1yEjMzICc14+zuye1qWelp8oYf5AqmzlVNdug==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/core-loader/-/core-loader-4.26.1.tgz", + "integrity": "sha512-IiRtn65bdiUSQHy2kusco2fmhk39u2Mc2c5Fsm9+9EVG6BtJCmVEFU/btAzGDAmxEA/E4qKecaAT4LvcW6TPbA==", "dependencies": { - "@nlpjs/core": "^4.23.4", - "@nlpjs/request": "^4.22.7" + "@nlpjs/core": "^4.26.1", + "@nlpjs/request": "^4.25.0" } }, "node_modules/@nlpjs/emoji": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/emoji/-/emoji-4.23.4.tgz", - "integrity": "sha512-n7mk0TbvsaAupom9cRdUv/WfKorhVJi4/6jMso8n35kYapA4nDSuba4oqmt4siqjlt0++a89Dcx21ZiBxHIRow==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/emoji/-/emoji-4.26.1.tgz", + "integrity": "sha512-Q0PoXwIvaB1bnRXK4U/YD7mrqaz29Yfed3s2au0iXl1bffUgoG+hs4GORCvyy7DFCCLlc9d5yDM3oLIX/ggZ+Q==", "dependencies": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "node_modules/@nlpjs/evaluator": { - "version": "4.22.7", - "resolved": "https://registry.npmjs.org/@nlpjs/evaluator/-/evaluator-4.22.7.tgz", - "integrity": "sha512-gujkMpCfdjuqn14gJklHe8NBqSIGGcNNg2BA/Ag50BT+VRsTCBeEib57Cf/SgG/JjTTBERaAQ3SxvxghLmMDpA==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/evaluator/-/evaluator-4.26.1.tgz", + "integrity": "sha512-WeUrC8qq7+V8Jhkkjc2yiXdzy9V0wbETv8/qasQmL0QmEuwBDJF+fvfl4z2vWpBb0vW07A8aNrFElKELzbpkdg==", "dependencies": { "escodegen": "^2.0.0", "esprima": "^4.0.1" } }, "node_modules/@nlpjs/lang-all": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-all/-/lang-all-4.24.0.tgz", - "integrity": "sha512-kD7WchbHoMozbMBER9sKqkPUjKiXtdHEtsRdX4z0BZ0J+Thr+deoxNQZXQvuFH61MhYCfIPi8vNSKFvFODu1Zg==", - "dependencies": { - "@nlpjs/core": "^4.23.4", - "@nlpjs/lang-ar": "^4.23.4", - "@nlpjs/lang-bn": "^4.23.4", - "@nlpjs/lang-ca": "^4.23.4", - "@nlpjs/lang-cs": "^4.23.4", - "@nlpjs/lang-da": "^4.23.4", - "@nlpjs/lang-de": "^4.23.4", - "@nlpjs/lang-el": "^4.23.4", - "@nlpjs/lang-en": "^4.23.4", - "@nlpjs/lang-es": "^4.23.4", - "@nlpjs/lang-eu": "^4.23.4", - "@nlpjs/lang-fa": "^4.23.4", - "@nlpjs/lang-fi": "^4.23.4", - "@nlpjs/lang-fr": "^4.23.4", - "@nlpjs/lang-ga": "^4.23.4", - "@nlpjs/lang-gl": "^4.23.4", - "@nlpjs/lang-hi": "^4.23.4", - "@nlpjs/lang-hu": "^4.23.4", - "@nlpjs/lang-hy": "^4.23.4", - "@nlpjs/lang-id": "^4.23.4", - "@nlpjs/lang-it": "^4.23.4", - "@nlpjs/lang-ja": "^4.24.0", - "@nlpjs/lang-ko": "^4.23.4", - "@nlpjs/lang-lt": "^4.23.4", - "@nlpjs/lang-ms": "^4.23.4", - "@nlpjs/lang-ne": "^4.23.4", - "@nlpjs/lang-nl": "^4.23.4", - "@nlpjs/lang-no": "^4.23.4", - "@nlpjs/lang-pl": "^4.23.4", - "@nlpjs/lang-pt": "^4.23.4", - "@nlpjs/lang-ro": "^4.23.4", - "@nlpjs/lang-ru": "^4.23.4", - "@nlpjs/lang-sl": "^4.23.4", - "@nlpjs/lang-sr": "^4.23.4", - "@nlpjs/lang-sv": "^4.23.4", - "@nlpjs/lang-ta": "^4.23.4", - "@nlpjs/lang-th": "^4.23.4", - "@nlpjs/lang-tl": "^4.23.4", - "@nlpjs/lang-tr": "^4.23.4", - "@nlpjs/lang-uk": "^4.23.4", - "@nlpjs/lang-zh": "^4.23.4", - "@nlpjs/language": "^4.22.7" + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-all/-/lang-all-4.26.1.tgz", + "integrity": "sha512-UzRm1JRRAyQqilEOxQ2ySMOitKbhPk5iKYbjD8FREDcPjreUvDxVuQsYUOvYucmEyFcZU2U/TdJx+fX9/bcaKQ==", + "dependencies": { + "@nlpjs/core": "^4.26.1", + "@nlpjs/lang-ar": "^4.26.1", + "@nlpjs/lang-bn": "^4.26.1", + "@nlpjs/lang-ca": "^4.26.1", + "@nlpjs/lang-cs": "^4.26.1", + "@nlpjs/lang-da": "^4.26.1", + "@nlpjs/lang-de": "^4.26.1", + "@nlpjs/lang-el": "^4.26.1", + "@nlpjs/lang-en": "^4.26.1", + "@nlpjs/lang-es": "^4.26.1", + "@nlpjs/lang-eu": "^4.26.1", + "@nlpjs/lang-fa": "^4.26.1", + "@nlpjs/lang-fi": "^4.26.1", + "@nlpjs/lang-fr": "^4.26.1", + "@nlpjs/lang-ga": "^4.26.1", + "@nlpjs/lang-gl": "^4.26.1", + "@nlpjs/lang-hi": "^4.26.1", + "@nlpjs/lang-hu": "^4.26.1", + "@nlpjs/lang-hy": "^4.26.1", + "@nlpjs/lang-id": "^4.26.1", + "@nlpjs/lang-it": "^4.26.1", + "@nlpjs/lang-ja": "^4.26.1", + "@nlpjs/lang-ko": "^4.26.1", + "@nlpjs/lang-lt": "^4.26.1", + "@nlpjs/lang-ms": "^4.26.1", + "@nlpjs/lang-ne": "^4.26.1", + "@nlpjs/lang-nl": "^4.26.1", + "@nlpjs/lang-no": "^4.26.1", + "@nlpjs/lang-pl": "^4.26.1", + "@nlpjs/lang-pt": "^4.26.1", + "@nlpjs/lang-ro": "^4.26.1", + "@nlpjs/lang-ru": "^4.26.1", + "@nlpjs/lang-sl": "^4.26.1", + "@nlpjs/lang-sr": "^4.26.1", + "@nlpjs/lang-sv": "^4.26.1", + "@nlpjs/lang-ta": "^4.26.1", + "@nlpjs/lang-th": "^4.26.1", + "@nlpjs/lang-tl": "^4.26.1", + "@nlpjs/lang-tr": "^4.26.1", + "@nlpjs/lang-uk": "^4.26.1", + "@nlpjs/lang-zh": "^4.26.1", + "@nlpjs/language": "^4.25.0" } }, "node_modules/@nlpjs/lang-ar": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-ar/-/lang-ar-4.23.4.tgz", - "integrity": "sha512-x/pax8lXS3RPj4dsw0Q7JK9zefJHDtmweKBsT/C2sbySkm9ml2xD65CeHopl2jdy1X73r2fNgFflfEXr5zM3rQ==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-ar/-/lang-ar-4.26.1.tgz", + "integrity": "sha512-MUlVtabt9ltG7WyzCQpFJymLJlnEqp3mxhgN9JHyFH7oZMK3REvMovFfvEUAbfiYrJEv/BN5KKLL7yrvUeaHtg==", "dependencies": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "node_modules/@nlpjs/lang-bn": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-bn/-/lang-bn-4.23.4.tgz", - "integrity": "sha512-EwNohVRyqJeSM1JQnVQIufLpAtBkNtqa1FipHai4O+fxUlud4ujR4HF6uXYaCn2I46LgyiDbYPHSjI2bp3h/lQ==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-bn/-/lang-bn-4.26.1.tgz", + "integrity": "sha512-sim1iZKBDdehi/yBUKrLW51QvS9uB+sXW7lj+THVqBy5UsnEQvt4gzE0NsC873uJMh66vt2AlHkhzgPH0qH/nQ==", "dependencies": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "node_modules/@nlpjs/lang-ca": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-ca/-/lang-ca-4.23.4.tgz", - "integrity": "sha512-9+ljf2dqFurUjTR0XwOsmDoIvJhyD/1c2m7DVwoz5hTv3HFzv0tuJOsLtLb19qo5rWd+hAabte4e2vEImMiJxw==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-ca/-/lang-ca-4.26.1.tgz", + "integrity": "sha512-fD4R5tcAB0uYtNxSEF20b1KmF6nUQSbiJqrIUJI5yis4ObjCYRQnSh4bjVDKUKxyONjbD6L8EaK5GrY1/jkwFQ==", "dependencies": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "node_modules/@nlpjs/lang-cs": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-cs/-/lang-cs-4.23.4.tgz", - "integrity": "sha512-m1A0e45nTttgX7ZnaYw4z47Il9g3C52cd4KbOFsbc9iJvNp52qOTeS9SrTkdRr9i0tIRQYQoqj25r6Wlh59Adw==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-cs/-/lang-cs-4.26.1.tgz", + "integrity": "sha512-CqI6VB8toaJ/MlP1D4K9BctA6GpZJhMKyEy+OX9xavDe4r4ao/SxlSaIYK3izK0k+J38lJWC5lXYGazfCdTGjA==", "dependencies": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "node_modules/@nlpjs/lang-da": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-da/-/lang-da-4.23.4.tgz", - "integrity": "sha512-U/lS/SvEmYWpmU431n/0Nn70ar/EKeuRIkBCVLBILpF4dUtCgmj0b7YVGZOlplputUIqKVqadvWkVUndZPDEtQ==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-da/-/lang-da-4.26.1.tgz", + "integrity": "sha512-krI/ojeDSi329ENM/hLIsbUh1x4XRTKAbtPcbFxAY6XVhcSVoWPO7L77jFTL1NQeE1oGRFzGHaeC9hZJ8phVbA==", "dependencies": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "node_modules/@nlpjs/lang-de": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-de/-/lang-de-4.23.4.tgz", - "integrity": "sha512-qTdoVN+ZyLEALl/791LZG9fToLT4eCk1kg5DL/GGe0pmr7vzqQiVL7ac5uUGwyE1jI9ymr96Ipu6oWwWAEx3/w==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-de/-/lang-de-4.26.1.tgz", + "integrity": "sha512-HfZQwsE5FICq9taVZDiyktmdAePVF5948NM80et0d9mx43RWDFhHKQYgtJPwfQXtdCoQtOM5TOJ2FanGwzPeaA==", "dependencies": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "node_modules/@nlpjs/lang-el": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-el/-/lang-el-4.23.4.tgz", - "integrity": "sha512-oztT3iO/pZ2+zdDrSvcP7XpLWskiiW/EH56Uz0U2aLVHzFzUYgc4o1QNqcBnF0D0mJEYWSgA6gS1IufupNViug==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-el/-/lang-el-4.26.1.tgz", + "integrity": "sha512-pcOvuSwPCXxI+2xNZZzM4V5pTRDntYoJi0SP/ic2nV4IPQ0nU2j16dYfg1HlvET/E6iN1VTqghrCaf10SMkDGA==", "dependencies": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "node_modules/@nlpjs/lang-en": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-en/-/lang-en-4.23.4.tgz", - "integrity": "sha512-sPSP8C1miTyrpRtS2I5mQekScVAY1U/514A4VgMtwQi8Be0dc1mnR2lY3RcdWC0DhcwUxq3fXSn7JYGufjzl6Q==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-en/-/lang-en-4.26.1.tgz", + "integrity": "sha512-GVoJpOjyk5TtBAqo/fxsiuuH7jXycyakGT0gw5f01u9lOmUnpJegvXyGff/Nb0j14pXcGHXOhmpWrcTrG2B0LQ==", "dependencies": { - "@nlpjs/core": "^4.23.4", - "@nlpjs/lang-en-min": "^4.23.4" + "@nlpjs/core": "^4.26.1", + "@nlpjs/lang-en-min": "^4.26.1" } }, "node_modules/@nlpjs/lang-en-min": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-en-min/-/lang-en-min-4.23.4.tgz", - "integrity": "sha512-jQ5LlrSLMtR00gYKNgz+FHw2Pt9EmNDeUC+5cl5lO17hfyGA05C1UnvsdA3Q6LJFEqnD8DDyR3PMloqIhDAA0w==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-en-min/-/lang-en-min-4.26.1.tgz", + "integrity": "sha512-1sJZ7dy7ysqzbsB8IklguvB88J8EPIv4XGVkZCcwecKtOw+fp5LAsZ3TJVmEf18iK1gD4cEGr7qZg5fpPxTpWQ==", "dependencies": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "node_modules/@nlpjs/lang-es": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-es/-/lang-es-4.23.4.tgz", - "integrity": "sha512-5me9OOx2kA+W/984v5LJONzYIXgg2nUtEPAE0GtlpxL7Pukszd7OGqZmJWzDW2Cux2RhsgJ4BbwN/J6zJBPKEA==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-es/-/lang-es-4.26.1.tgz", + "integrity": "sha512-fIPQt+WPcNdyxZOCMkOPlMb4Y1iE585QxjB9IAdFz8ZtVg7mc4dlv5f46ud7ppdMh84iLOuOdo6pzu2Cqm14lw==", "dependencies": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "node_modules/@nlpjs/lang-eu": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-eu/-/lang-eu-4.23.4.tgz", - "integrity": "sha512-3dX0GNUZxP5wlaQe+ydFeWg1mwyteo4M/J3ZGYFTzrTM88SZ4kSAAZaaAd4HmMZDRBBk2/6TiZ+FHMHuSGx7FQ==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-eu/-/lang-eu-4.26.1.tgz", + "integrity": "sha512-Ha8GHTbgQYd7dwHM8aWHDyxmbUNUcyu/5xlBKqqBOPxysDyZ6Ad0tvj0FmJBy6mYhqmFTPBnEAo69cfuFSqWIQ==", "dependencies": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "node_modules/@nlpjs/lang-fa": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-fa/-/lang-fa-4.23.4.tgz", - "integrity": "sha512-a3GKaFccnkHpEK4P5vYFm/+C/G4NdF6hY7xJLKPemju5GRmyAogGSV+BZi2VoC9v2egFO9vZGxy5wftnUjUwJg==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-fa/-/lang-fa-4.26.1.tgz", + "integrity": "sha512-qJCmNXgJZnfNXUnKnxvEGEzSFBdQT4XU7/rMxuFmSJqmQY7fH/Vsmi5CKF94VRBPOIV4ULlEJuLpUWHXRmOnVQ==", "dependencies": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "node_modules/@nlpjs/lang-fi": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-fi/-/lang-fi-4.23.4.tgz", - "integrity": "sha512-r1e0f3zIHm3DYgnq0FAQ++xQWpKtvZzHue4DrS/EYmuyR44TYJdlA2fb6bYYVXQIy9GEofVu/3b9o03oi88PoQ==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-fi/-/lang-fi-4.26.1.tgz", + "integrity": "sha512-W/rUcrzSh3KE07q2vOsssTpU1sbX32gbBzKPZfRJ2ZUF4afO+eHxmAywikXubP4kiU3JxVNLvXXEjuGD3SBUbA==", "dependencies": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "node_modules/@nlpjs/lang-fr": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-fr/-/lang-fr-4.23.4.tgz", - "integrity": "sha512-0ctG8YtzwBD7Vs4BFM5Tuwp1daVPZrIGqA5UEAJv5c2qvQ6dledt7bOfBa0jL0JNQRkkdKNmZXRrlX4FsaGJvg==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-fr/-/lang-fr-4.26.1.tgz", + "integrity": "sha512-LTA852atCJnHtKDmtjx/ui5AnvEIkrPx+MJQ2mB3gn8ko6i2UITnJgPmJE9Kej5bLasVZOAJvU/SrfXEmnPGOw==", "dependencies": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "node_modules/@nlpjs/lang-ga": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-ga/-/lang-ga-4.23.4.tgz", - "integrity": "sha512-F9z3l2qXDp6VgCfBZHp2cA4Yg+2RaKU/Hh2RBXwmKWyCqKoIiOgEQBEL84cRiB9q86axLhmJyKz935fD2F6xXQ==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-ga/-/lang-ga-4.26.1.tgz", + "integrity": "sha512-JsP1CZ8r3Jd6o/Az7cN3exz0HDP3FNYLzh4Vi6ksEkdKF0yCjJ9G5dXZYqS9qFIN5ffemWn29G4WRELY6QH/cQ==", "dependencies": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "node_modules/@nlpjs/lang-gl": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-gl/-/lang-gl-4.23.4.tgz", - "integrity": "sha512-VSI02tEix2k1Z/dSM+P/LEIDldqkj3OMbbsX2xyp0vENzA11MC/LVQMApg90M1+8AJ6N6S0lPyqU7jLRKGLu/Q==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-gl/-/lang-gl-4.26.1.tgz", + "integrity": "sha512-y1NNu6NVy/6o5UNfihgg0WkSlVr4IvKA5W193CpRLZWS4FccQDmnFFhyYWRkshyDbgEsfsZ0Rs3BoE82+T2Ubg==", "dependencies": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "node_modules/@nlpjs/lang-hi": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-hi/-/lang-hi-4.23.4.tgz", - "integrity": "sha512-2/gu2nS7hXdPD1e5ADyybSNAuOCD9JjRO8RoxCqYyCHfUk/Qf+/FZQpTHGJRfivf7tuqtyCw7tNYa1faaQkRHA==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-hi/-/lang-hi-4.26.1.tgz", + "integrity": "sha512-Fw9rXqF5l8q9etJG5uOlEFpnMVjQEWMaCIgQfEcA1yTvieSV8mpoSvQkEZl+DFhww+azareoJ7ZCkx0gJ9UDuQ==", "dependencies": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "node_modules/@nlpjs/lang-hu": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-hu/-/lang-hu-4.23.4.tgz", - "integrity": "sha512-jRjR2i1Lurl6GQL/XUu8kIq+kV6Sp9NDOA2g/pBbZv55WdD7RwreJtxP1HcYo1+NZTyPESLknZwTq9sXAGblkg==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-hu/-/lang-hu-4.26.1.tgz", + "integrity": "sha512-7dPUn5/ZpLZmsdRwO+dtORuMIiIpnsWbgSLIKdOLh8irhgUR+M2bYTfkdnKcrEcHzHPP8Svn7pU0xk7OKSUA1w==", "dependencies": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "node_modules/@nlpjs/lang-hy": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-hy/-/lang-hy-4.23.4.tgz", - "integrity": "sha512-wrV4NhFJY+eFtzQWcc64FAOclM85nk9lq2Z5APaXiRwZ0Sr4jm18N84GQ+4TeVCRDnck3ORtEkg1rCIwEiqFWA==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-hy/-/lang-hy-4.26.1.tgz", + "integrity": "sha512-T2brpLGDJryAwWmjtnmY8Ot6ZUkCz+/nRR9/QM1PybvZIqOVLjJqA49bqjJfT5DMN89HbwC7I/15NTT0y09i1Q==", "dependencies": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "node_modules/@nlpjs/lang-id": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-id/-/lang-id-4.23.4.tgz", - "integrity": "sha512-KNY2C3mucG/7u8apWwzQAkjel4cMYHWtkRu2YCjdaGN0i6mior5u/3ihNdk8pfHISBW5ERgCbvG7buQEhAl4WA==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-id/-/lang-id-4.26.1.tgz", + "integrity": "sha512-rVuIkYFKdltFhMT/a2ZxD9ovoZSVZF7OPuqYjTXW9xKd3Ff32yUrzcf/pHXlqmZOSltqOH3E5jZRRDkHvgUOjQ==", "dependencies": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "node_modules/@nlpjs/lang-it": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-it/-/lang-it-4.23.4.tgz", - "integrity": "sha512-8x6TTPRCJwjNcXSHJUUCXVo2y0XTUp5+Cn9l5PdEkpfdZJ0lMtmnjrYoCnzwo5kBYIObcZ6UxgjIGcwXldVHtA==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-it/-/lang-it-4.26.1.tgz", + "integrity": "sha512-BZA3QnfQGW91gYaybRmHnCAPBvQggtmHZJrAmuBZUKUS12HoQm8uybjw2fZO+vahEeUQceKNDISRcT1eLLijog==", "dependencies": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "node_modules/@nlpjs/lang-ja": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-ja/-/lang-ja-4.24.0.tgz", - "integrity": "sha512-a7bdoUKc6xZGla4yYPvQtYDDiixUKlOFrz4jdIqVeRsu4skKk5wrvvokMbfsvuGmdND4VgX+k8Cxs7zz4W76LQ==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-ja/-/lang-ja-4.26.1.tgz", + "integrity": "sha512-QgkuJOkHguRFyfnckH2It5/Kg8zecnOMJsHxYeuDC4tBF7jL/5xqWis+679lYLsXtAkrG8+fjVcBbjyopP0KHg==", "dependencies": { - "@nlpjs/core": "^4.23.4", + "@nlpjs/core": "^4.26.1", "kuromoji": "^0.1.2" } }, "node_modules/@nlpjs/lang-ko": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-ko/-/lang-ko-4.23.4.tgz", - "integrity": "sha512-V0sgfR/xxxWf8GUO4ChGci9Z86r2eDaNB0CIAVHPxvtef6nWJXLDivyvpGMHbzEq00lNiJ+8OhZ/yTFA54ytvQ==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-ko/-/lang-ko-4.26.1.tgz", + "integrity": "sha512-Q0N8bLJJ829ILWCKH1UQWPSNyuLaEURAXCawkDju4pt33DBLcpqz9IzO9dnqiFc+fjSgVzZ7WMaLT18hXZQ9vg==", "dependencies": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "node_modules/@nlpjs/lang-lt": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-lt/-/lang-lt-4.23.4.tgz", - "integrity": "sha512-P+YqL0Rj+b0V2jnxeRmue/OH/bCC9XktCny9azcW7yAUzNTbob50CAkfWSBZIfcImABW+UJPe9IHPtnCrERWKg==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-lt/-/lang-lt-4.26.1.tgz", + "integrity": "sha512-SeYZxRhdCy+ClQNnF/u0MAtcDui/ocdk4NtgNOCuwNTNuzhN3t3rfGeArfBGmZeg1SIeBLUDE9dsTxYCv5AOEg==", "dependencies": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "node_modules/@nlpjs/lang-ms": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-ms/-/lang-ms-4.23.4.tgz", - "integrity": "sha512-poBO98nVKnzwOw2Kjj63L9YO72+7wiOslYrqXPsob3kCVbHAj0Ld7YE3L7jeIWUXbbDbTvw8CFzAWijRSfcYSg==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-ms/-/lang-ms-4.26.1.tgz", + "integrity": "sha512-KxWBS+tFY2U8z9UrjQIqMM40npGDOskP5DcWhaEE3zuhzf3RTDYjy8sdz34jVd0fBdbPihX133h3bFibg2Cm7w==", "dependencies": { - "@nlpjs/core": "^4.23.4", - "@nlpjs/lang-id": "^4.23.4" + "@nlpjs/core": "^4.26.1", + "@nlpjs/lang-id": "^4.26.1" } }, "node_modules/@nlpjs/lang-ne": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-ne/-/lang-ne-4.23.4.tgz", - "integrity": "sha512-rzJw54gYrNrDBbWLiSCjMx4hhsOj9qBn6fQnw1WEI/KBNpxZ1qkpgoEp3Nli0dMOorECfLlIVzh1l4SLCNNKkA==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-ne/-/lang-ne-4.26.1.tgz", + "integrity": "sha512-K3E2l+0LTESv+dO+ZTIdvNa+zwMJvvnMiFYYkKvJst6lhc8JgvGOsPxGsjJn6PDhI3wyfQu+dg3b+bnVPu4FDA==", "dependencies": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "node_modules/@nlpjs/lang-nl": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-nl/-/lang-nl-4.23.4.tgz", - "integrity": "sha512-DIvzWpqfC4GTBxKxYuLLEAH5SAx8kBNLthPM4RngbHy4uhVrqQC7Hk+Ob1uN2glmAhrfGw0kwipvRI6gGahsYQ==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-nl/-/lang-nl-4.26.1.tgz", + "integrity": "sha512-I/mP1RRbUN4BQ+8NXAl2FKaLHbb7f6S8JVjxHQ0sKHT4BgQ3+r0yO+DVcEsHg+vWRiY1Fyzh0gq0PhLVnF6HnA==", "dependencies": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "node_modules/@nlpjs/lang-no": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-no/-/lang-no-4.23.4.tgz", - "integrity": "sha512-2S/wQOsADJcA6AbeCRFkBk6R4lzk0mySzgau+fIn9wft881OT48iUG9HRKW07M5Ywxr8JJXp0HxBe6fxzaK1Fw==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-no/-/lang-no-4.26.1.tgz", + "integrity": "sha512-a0CLL2c/OCzbg7J7ugyrsAksI96XhkQ3IeBbbx60o5o/9wsFNik6cPWrkpoE5xNtw7gLlAJWabwDiZXkl8Zrcw==", "dependencies": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "node_modules/@nlpjs/lang-pl": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-pl/-/lang-pl-4.23.4.tgz", - "integrity": "sha512-auXqk5gfNT5r8k/yUBN3yIpTTO17uP8jWpGLK+BuGdfWfhOmPBGWR66+1OPC9OzSQAb2QODlhhUohP4uOdM3ag==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-pl/-/lang-pl-4.26.1.tgz", + "integrity": "sha512-nrDXlq+TzQLE5IpXPIlFMzd8OpquvApWsouh6fmLsD9HZLZI4O3w1M4sXXLzE+9Ggu9Cy1m1QJ0/i7XCcv115g==", "dependencies": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "node_modules/@nlpjs/lang-pt": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-pt/-/lang-pt-4.23.4.tgz", - "integrity": "sha512-vlBQ037mQGlsNm/BTt40DpzSk46C03wTjpswZ+HyvAN+p+HXiaKNTbQjVBCVLudn/gAlbrC/UWamiMHg85C3fA==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-pt/-/lang-pt-4.26.1.tgz", + "integrity": "sha512-p6yZHaJ0e+n0avMHpdDw5PMk4HkKXjPbOMbrlg0dF+VRqChjxfH478Q423rDyzu/4MzDsIYB+p6KzL9AARKXpg==", "dependencies": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "node_modules/@nlpjs/lang-ro": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-ro/-/lang-ro-4.23.4.tgz", - "integrity": "sha512-g3uZShS3t0Cp+DWCqL+bhMF1p8n83jxnGrPPthJZ3Yp4Phy0O1k9w4rU2dSDTFo2yL3crNfxHI67dxMkBk4+0g==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-ro/-/lang-ro-4.26.1.tgz", + "integrity": "sha512-baUdTA0DWpDR0Tn6fxo+RDN/6gbuINLCARtHwap2UR/HKQWP2XoH/DIvcjZpwUTalr5MQjso31epcdeRRapczA==", "dependencies": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "node_modules/@nlpjs/lang-ru": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-ru/-/lang-ru-4.23.4.tgz", - "integrity": "sha512-Zr4i2EoimvtKCOyjD/5Ym+/TWcLXVJwYIcgXQGzXjQjaYigWvZvsQxpBeAXPkqMsR6npdvemJkKPMB+GZvO9gQ==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-ru/-/lang-ru-4.26.1.tgz", + "integrity": "sha512-NaZ2DAOGxWG2Us9IyIDs3m6vhGpUaUJRVgzzHHyX3LO3xEYjZmtnA0jEpBaTOe2PuNHThv0WCZUNn9BSurV3PA==", "dependencies": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "node_modules/@nlpjs/lang-sl": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-sl/-/lang-sl-4.23.4.tgz", - "integrity": "sha512-/YDbAl0toDDb/7lHI0o9U8sG3mPcUShCStsudqTkfoaxU1nDI8ydAgOa38K8F6h5Z7Gotar1jpEKs8oerDPDMg==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-sl/-/lang-sl-4.26.1.tgz", + "integrity": "sha512-QBJwcJt+oKUpAnHKNJkLkx9Xm1n4dUPC5GPYfAXTnJZf0hNWJSY21GicdWi7Vu/qFJ3ghIqtSP8D7KIPLnibNw==", "dependencies": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "node_modules/@nlpjs/lang-sr": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-sr/-/lang-sr-4.23.4.tgz", - "integrity": "sha512-5QxIutDSbDIzNVPSVOX/BeeBvSxQR7SrlRp2oi+7ycukBVDYSzUT42M0/q11kAALMBSzxq7PGTaQHHGlssv6bw==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-sr/-/lang-sr-4.26.1.tgz", + "integrity": "sha512-drH3+UqTW637uLWsnLrcp8jEKUGxV61ZgCBjNkVQNEv1/jbpSg6IqgynSY2JyhtnlV0f870KS0HvSbyo5AD4Ng==", "dependencies": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "node_modules/@nlpjs/lang-sv": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-sv/-/lang-sv-4.23.4.tgz", - "integrity": "sha512-hAJjpfAZ7Y03l20RIC2mxiI1mlrdzUVPCLI01DOkmZ8+3uCTnuNacqVuOtpjXYazdG33xJ3ky8GaXroTgWnoCw==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-sv/-/lang-sv-4.26.1.tgz", + "integrity": "sha512-2axkrYFC02tAlxCWeiEKISbe4dSteciP1CIggO/dZglnnLWgdF+g7kOeYMn7abCfFVSnh5vLqfDkrwnyIqt7Ag==", "dependencies": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "node_modules/@nlpjs/lang-ta": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-ta/-/lang-ta-4.23.4.tgz", - "integrity": "sha512-F45cO4PsO4/8/BDLskD98tchdLhkptV5p4qUXQ0p9Mqmx+gKxsMmpnwNp6my062w2sgtx5wDz27q2nFWnMeSSA==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-ta/-/lang-ta-4.26.1.tgz", + "integrity": "sha512-keeh+croa1TAirV9Fd3OQMo5IkAlTGNWTNweHbi/htYMX0MKOPYxyqg+VH2bml+57VY2aUj/WYgV/p3ATx9EfQ==", "dependencies": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "node_modules/@nlpjs/lang-th": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-th/-/lang-th-4.23.4.tgz", - "integrity": "sha512-tTmKWk0R74NUjflmFPlLBZhhKkMixf6LEdPpKCOELamyfACAwrTTeHZEnpspaozoHZxfImVEKmaUJxte8drlgQ==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-th/-/lang-th-4.26.1.tgz", + "integrity": "sha512-2SWZhrln3rMw8/DsRc9yS5bi3qEdGfw2pq9Uejx/UYED5zvvL6kh9AiCJZT4k0wMBGEwWUV6HxJ0Pq/jOTHogg==", "dependencies": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "node_modules/@nlpjs/lang-tl": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-tl/-/lang-tl-4.23.4.tgz", - "integrity": "sha512-CzbkLb+y2zEZ/e9Ynh2mU0knvVzRhcUoBw2PfjIkHNB+5DdzTWPWEcluKOWVptywh7+lCgjRC6hHiLAEKIHpqg==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-tl/-/lang-tl-4.26.1.tgz", + "integrity": "sha512-AzmLtg28tm0VXCm0Q0EY3OtA3m4oYxaqh4VX6uhB4J+PoEsIkm0py12SJxMNIsh/r98pobCumH8KH9bvHQoCAg==", "dependencies": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "node_modules/@nlpjs/lang-tr": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-tr/-/lang-tr-4.23.4.tgz", - "integrity": "sha512-W4s/HhDNxfzAUD7b3WX3FBEeR7hen6Eh+D7hs+ABZ/7pObAoXpPzILVaQJntOl8NF55yFJPH9AddWMmJdm8QEA==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-tr/-/lang-tr-4.26.1.tgz", + "integrity": "sha512-p30uuXvE9pZeU/5XkrQfvxRgiAOBmP3EyBFGV/+P05PEogaqbsmmtVCgCnR63yeRvVnGbToPBPjRK3OO1y4AEQ==", "dependencies": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "node_modules/@nlpjs/lang-uk": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-uk/-/lang-uk-4.23.4.tgz", - "integrity": "sha512-QFDVI0WHzkiGjNw+0Yy9TVA+g25Q/M52sylQI4natvuaItDO+JVYwL0i6aNgKXi4U2aj3BBreqcVGZKKPxMR6A==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-uk/-/lang-uk-4.26.1.tgz", + "integrity": "sha512-PVEvmlhvl6BL3e/Q4qjMPsnwON3cWEYvDh9dg+Si+sjD2Edu9tajolJKcQ6ZA4I8dXrld5xuXx+DEBH/uB4uWQ==", "dependencies": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "node_modules/@nlpjs/lang-zh": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-zh/-/lang-zh-4.23.4.tgz", - "integrity": "sha512-BnH1gpm5j7YOjcEHRfZDlrQbL1AaNWJMSuNEqFrCVWCE0ENoZb0xfqXRTTfPgCzc8rF+ysxIeQsCmAxeQUZiPA==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-zh/-/lang-zh-4.26.1.tgz", + "integrity": "sha512-kwqeqeEgMAMvucVX9HNE1p6s/2APP23ZsS8Um/lNvtswb4gL5jjYF9kyCvRfqlPBQSWWdRv7wwcnNXOvXYkxcQ==", "dependencies": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "node_modules/@nlpjs/language": { - "version": "4.22.7", - "resolved": "https://registry.npmjs.org/@nlpjs/language/-/language-4.22.7.tgz", - "integrity": "sha512-oz5PrPwsIharMGRKZbcIkDtOko5tvynK/s765Wu7fgRHaILXT0ZoqNR/kNeo9BQCsTLV0GvFJreQ/UFy1XGZew==" + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@nlpjs/language/-/language-4.25.0.tgz", + "integrity": "sha512-tUF6QENoUQ/E26RYc32IgsttStSF9cNO4ySN+BQECn8VpjukWdwbMw073MlOLXzjfeobxa+3hCVrmPPcW+V3UA==" }, "node_modules/@nlpjs/language-min": { - "version": "4.22.7", - "resolved": "https://registry.npmjs.org/@nlpjs/language-min/-/language-min-4.22.7.tgz", - "integrity": "sha512-kmA9u6onlMP1sdBS8Q7yJcFPLhDgrT0q9jSovVAW+WjZN3UmkMNsrgV35q1LWnbonTKnvb/NjdaN4VnT/+nuQw==" + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@nlpjs/language-min/-/language-min-4.25.0.tgz", + "integrity": "sha512-g8jtbDbqtRm+dlD/1Vnb4VWfKbKteApEGVTqIMxYkk6N/HMhvLZ5J2svrxzrB98a/HZ0fb//YBfFgymnz9Oukg==" }, "node_modules/@nlpjs/ner": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/ner/-/ner-4.23.4.tgz", - "integrity": "sha512-B09dHq9rVjg3OGU+ZyzReQnBFzLYrik+u+mQzHI84mFGp3lxDejCDmCfFr04KQmqFGUZZ+Z9bohvK8MZ09JUMg==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/ner/-/ner-4.26.1.tgz", + "integrity": "sha512-oaOjHP2OqIDeGHBMobSFGxidctMots/4S8lScG8rEtJlhGCmRZ3bZFpsIlnakg0P6RTejUIRmgK47OY0ioTxOQ==", "dependencies": { - "@nlpjs/core": "^4.23.4", - "@nlpjs/language-min": "^4.22.7", - "@nlpjs/similarity": "^4.22.7" + "@nlpjs/core": "^4.26.1", + "@nlpjs/language-min": "^4.25.0", + "@nlpjs/similarity": "^4.26.1" } }, "node_modules/@nlpjs/neural": { - "version": "4.22.7", - "resolved": "https://registry.npmjs.org/@nlpjs/neural/-/neural-4.22.7.tgz", - "integrity": "sha512-sMWbuaEX5n7fuC8B8o5ueKZewA5Fu4JerBNcUzv3N5F7+SV59RFbZmDFfE+gXoF4/wwmkuZCRMV1arEut0vjoA==" + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@nlpjs/neural/-/neural-4.25.0.tgz", + "integrity": "sha512-Oz20denGiBe0DlQsS7lN4TNrATN1nXlHKc/HB6jJPegjVmgJVCugDaHwIGoV7qOWyA6F2fRRwOgD+quNT2gVpg==" }, "node_modules/@nlpjs/nlg": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/nlg/-/nlg-4.23.4.tgz", - "integrity": "sha512-qbdWkLv/LEw17Om+wS1pTcvpCxowTzM2wSr+cUcaGr1xqAcBfEhrQScUDnuehRZ2LohQSIzw5dC6klNTEwtQYw==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/nlg/-/nlg-4.26.1.tgz", + "integrity": "sha512-PCJWiZ7464ChXXUGvjBZIFtoqkC24Oy6X63HgQrSv+63svz22Y5Cmu1MYLk77Nb+4keWv+hKhFJKDkvJoOpBVg==", "dependencies": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "node_modules/@nlpjs/nlp": { - "version": "4.23.5", - "resolved": "https://registry.npmjs.org/@nlpjs/nlp/-/nlp-4.23.5.tgz", - "integrity": "sha512-ZsIXpS++dyq4L7z3AXSSJa27MUE/nsjYWpl7W4+Ghaj0PXf1bhmQkRsaL/b60/KsA0U+FobAX8F+nIlBIQkGxw==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/nlp/-/nlp-4.26.1.tgz", + "integrity": "sha512-xVzmSlu/FzH+lzjP8zriwuY7sXE6IsbYvEhT5Z6cKYCGFHoMTCvT6cID8Y47NraEU1H/NTVMudkFoOAT+O8eww==", "dependencies": { - "@nlpjs/core": "^4.23.4", - "@nlpjs/ner": "^4.23.4", - "@nlpjs/nlg": "^4.23.4", - "@nlpjs/nlu": "^4.23.5", - "@nlpjs/sentiment": "^4.23.4", - "@nlpjs/slot": "^4.22.17" + "@nlpjs/core": "^4.26.1", + "@nlpjs/ner": "^4.26.1", + "@nlpjs/nlg": "^4.26.1", + "@nlpjs/nlu": "^4.26.1", + "@nlpjs/sentiment": "^4.26.1", + "@nlpjs/slot": "^4.26.1" } }, "node_modules/@nlpjs/nlu": { - "version": "4.23.5", - "resolved": "https://registry.npmjs.org/@nlpjs/nlu/-/nlu-4.23.5.tgz", - "integrity": "sha512-3LLdmcE/W5yhKNvbYc+3rN32Asmg2zP6Ae2Blse7/AuKhiUIzVL/exLgvfEqDW9MqTKej5UZpYypMGUeK0HP6g==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/nlu/-/nlu-4.26.1.tgz", + "integrity": "sha512-RfEuIz7HzqMA5sBPSeVUsSPUlDboUsKzauRD0CHp37Gx5l2I5EQcQxliEgtxEWA0Q2pKnRQerZvEufnKtyF0mQ==", "dependencies": { - "@nlpjs/core": "^4.23.4", - "@nlpjs/language-min": "^4.22.7", - "@nlpjs/neural": "^4.22.7", - "@nlpjs/similarity": "^4.22.7" + "@nlpjs/core": "^4.26.1", + "@nlpjs/language-min": "^4.25.0", + "@nlpjs/neural": "^4.25.0", + "@nlpjs/similarity": "^4.26.1" } }, "node_modules/@nlpjs/request": { - "version": "4.22.7", - "resolved": "https://registry.npmjs.org/@nlpjs/request/-/request-4.22.7.tgz", - "integrity": "sha512-NvJsB8YjqsMM7JVILNwzRELV/lCyh8bMgXadl1kvXwXKgtmlplgJ095hKKzjkooMl+jemUtM5l/kqvaXGUi09w==", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@nlpjs/request/-/request-4.25.0.tgz", + "integrity": "sha512-MPVYWfFZY03WyFL7GWkUkv8tw968OXsdxFSJEvjXHzhiCe/vAlPCWbvoR+VnoQTgzLHxs/KIF6sIF2s9AzsLmQ==", "dependencies": { "http-proxy-agent": "^5.0.0", "https-proxy-agent": "^5.0.0" } }, "node_modules/@nlpjs/sentiment": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/sentiment/-/sentiment-4.23.4.tgz", - "integrity": "sha512-4m1nsGbnehWX17MmT5g37CwkVrPivB5vnq6SnvvSHQU5oueg1qLGGXl+xkz0/pqyjmU4o8gO1FPsrQZuLeWe0g==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/sentiment/-/sentiment-4.26.1.tgz", + "integrity": "sha512-U2WmcW3w6yDDO45+Y7v5e6DPQj8e0x+RUUePPyRu2uIZmUtIKG+qCPMWnNLMmYQZoSQEFxmMMlLcGDC7tN7o3w==", "dependencies": { - "@nlpjs/core": "^4.23.4", - "@nlpjs/language-min": "^4.22.7", - "@nlpjs/neural": "^4.22.7" + "@nlpjs/core": "^4.26.1", + "@nlpjs/language-min": "^4.25.0", + "@nlpjs/neural": "^4.25.0" } }, "node_modules/@nlpjs/similarity": { - "version": "4.22.7", - "resolved": "https://registry.npmjs.org/@nlpjs/similarity/-/similarity-4.22.7.tgz", - "integrity": "sha512-iWbZz6Yf0sXIiFi2jtdpsCLkOQsXFxT1YME4GysMtJxKiN/Cu4AhXugEiixhacPIPQb8lfouR0dQtSnx+9kW2A==" + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/similarity/-/similarity-4.26.1.tgz", + "integrity": "sha512-QutSBFGo/huNuz60PgqCjub0oBd9S8MLrjme33U5GzxuSvToQzXtn9/ynIia8qDm009D09VXV+LPeNE4h7yuSg==" }, "node_modules/@nlpjs/slot": { - "version": "4.22.17", - "resolved": "https://registry.npmjs.org/@nlpjs/slot/-/slot-4.22.17.tgz", - "integrity": "sha512-cNYcxf9DKB+fnRa2NxT5wbWq5j57R1WCTXLWI/1Cyycr227IP7GN7qaD4RbkzotBFFB8wm63UHod9frzmuiXxg==" + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/slot/-/slot-4.26.1.tgz", + "integrity": "sha512-mK8EEy5O+mRGne822PIKMxHSFh8j+iC7hGJ6T31XdFsNhFEYXLI/0dmeBstZgTSKBTe27HNFgCCwuGb77u0o9w==" }, "node_modules/@nlpjs/xtables": { - "version": "4.23.5", - "resolved": "https://registry.npmjs.org/@nlpjs/xtables/-/xtables-4.23.5.tgz", - "integrity": "sha512-6e5mrm3OU1BE67UVlY6p8oP8AKHfFKUW0ENn936LxdgUlNWuZbaxinU4h5Mnby7sYSDUHhgZMvkmavJVZMgbwg==", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@nlpjs/xtables/-/xtables-4.25.0.tgz", + "integrity": "sha512-+baCtMZIp+aDqODLQs8Wyyke5qUqQkL8AGWsZzwYuJV8S7xdW2+XklRnHnkFc3p3foC248TkzG5L8j9r6INOtg==", "dependencies": { "xlsx": "^0.18.0" } @@ -8160,25 +8161,25 @@ } }, "node_modules/node-nlp": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/node-nlp/-/node-nlp-4.24.0.tgz", - "integrity": "sha512-AvP9yEcGMa8inZU79KhBeohAmZsr0i90ExlKT6LU+HdUsz3F4HV/uxO0BMhQN7e1NIFSjCXBvF1DCJ9jIK5cBw==", - "dependencies": { - "@nlpjs/builtin-duckling": "^4.23.4", - "@nlpjs/builtin-microsoft": "^4.23.4", - "@nlpjs/core-loader": "^4.23.4", - "@nlpjs/emoji": "^4.23.4", - "@nlpjs/evaluator": "^4.22.7", - "@nlpjs/lang-all": "^4.24.0", - "@nlpjs/language": "^4.22.7", - "@nlpjs/neural": "^4.22.7", - "@nlpjs/nlg": "^4.23.4", - "@nlpjs/nlp": "^4.23.5", - "@nlpjs/nlu": "^4.23.5", - "@nlpjs/request": "^4.22.7", - "@nlpjs/sentiment": "^4.23.4", - "@nlpjs/similarity": "^4.22.7", - "@nlpjs/xtables": "^4.23.5" + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/node-nlp/-/node-nlp-4.26.1.tgz", + "integrity": "sha512-XRb3TvXSmrhxQvRkI9BKnan+QQ3AjErTWCrOWNIfbjZXDdoQ3i0Fh7Rp5j3VIi5ZiafieRWI5qH0ypsdTlgg/w==", + "dependencies": { + "@nlpjs/builtin-duckling": "^4.26.1", + "@nlpjs/builtin-microsoft": "^4.26.1", + "@nlpjs/core-loader": "^4.26.1", + "@nlpjs/emoji": "^4.26.1", + "@nlpjs/evaluator": "^4.26.1", + "@nlpjs/lang-all": "^4.26.1", + "@nlpjs/language": "^4.25.0", + "@nlpjs/neural": "^4.25.0", + "@nlpjs/nlg": "^4.26.1", + "@nlpjs/nlp": "^4.26.1", + "@nlpjs/nlu": "^4.26.1", + "@nlpjs/request": "^4.25.0", + "@nlpjs/sentiment": "^4.26.1", + "@nlpjs/similarity": "^4.26.1", + "@nlpjs/xtables": "^4.25.0" } }, "node_modules/node-preload": { @@ -12649,523 +12650,523 @@ } }, "@nlpjs/builtin-duckling": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/builtin-duckling/-/builtin-duckling-4.23.4.tgz", - "integrity": "sha512-GYaXX0cDOFg7KTJT3nOEZvWiG31yacw2f5Wjq+VrATv1iNertbrqp3lJahGp+it3oj4len4GyDS/PhI5SqS+9g==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/builtin-duckling/-/builtin-duckling-4.26.1.tgz", + "integrity": "sha512-3qkH955X2g5MXV1EqT3fTAT/lLEdiqqe5IgBDyr+MQB7FOV9R3YhqGIn3DFOl+TSm/tP5n/BAEptkTNn/TOpmQ==", "requires": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "@nlpjs/builtin-microsoft": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/builtin-microsoft/-/builtin-microsoft-4.23.4.tgz", - "integrity": "sha512-Ihdd6HHPoFql1CGhcUvjxBKjTvDyDL9Zgi5xGJwCZ/w5LGhDTa4cAZG1GSaaR2RxOi5r1Q0H2GI+EAK3ZRz3eA==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/builtin-microsoft/-/builtin-microsoft-4.26.1.tgz", + "integrity": "sha512-AODgzTcfYUf5Ozm00aQnHImDum7Idtl0F9dSPoaXpfj7rZqP8hPZ7iWwdGTAvISH/da2YhjPOU65QSYk2YpjFA==", "requires": { "@microsoft/recognizers-text-suite": "1.3.0", - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "@nlpjs/core": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/core/-/core-4.23.4.tgz", - "integrity": "sha512-iIQHCqYcUYxOk2LRa2shgMdZ1jdvuLqU9OaR1raOI+Hl5RDCoIpmnEFUTFYcBjGWbrXJZwjoQBnLsNMe81ZTZg==" + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/core/-/core-4.26.1.tgz", + "integrity": "sha512-M/PeFddsi3y7Z1piFJxsLGm5/xdMhcrpOsml7s6CTEgYo8iduaT30HDd61tZxDyvvJseU6uFqlXSn7XKkAcC1g==" }, "@nlpjs/core-loader": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/core-loader/-/core-loader-4.23.4.tgz", - "integrity": "sha512-s58cu+gI+kPRG6r2ayK+B4++OHdTHA6SFLLxQ42JzdmY6rsEa1yEjMzICc14+zuye1qWelp8oYf5AqmzlVNdug==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/core-loader/-/core-loader-4.26.1.tgz", + "integrity": "sha512-IiRtn65bdiUSQHy2kusco2fmhk39u2Mc2c5Fsm9+9EVG6BtJCmVEFU/btAzGDAmxEA/E4qKecaAT4LvcW6TPbA==", "requires": { - "@nlpjs/core": "^4.23.4", - "@nlpjs/request": "^4.22.7" + "@nlpjs/core": "^4.26.1", + "@nlpjs/request": "^4.25.0" } }, "@nlpjs/emoji": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/emoji/-/emoji-4.23.4.tgz", - "integrity": "sha512-n7mk0TbvsaAupom9cRdUv/WfKorhVJi4/6jMso8n35kYapA4nDSuba4oqmt4siqjlt0++a89Dcx21ZiBxHIRow==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/emoji/-/emoji-4.26.1.tgz", + "integrity": "sha512-Q0PoXwIvaB1bnRXK4U/YD7mrqaz29Yfed3s2au0iXl1bffUgoG+hs4GORCvyy7DFCCLlc9d5yDM3oLIX/ggZ+Q==", "requires": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "@nlpjs/evaluator": { - "version": "4.22.7", - "resolved": "https://registry.npmjs.org/@nlpjs/evaluator/-/evaluator-4.22.7.tgz", - "integrity": "sha512-gujkMpCfdjuqn14gJklHe8NBqSIGGcNNg2BA/Ag50BT+VRsTCBeEib57Cf/SgG/JjTTBERaAQ3SxvxghLmMDpA==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/evaluator/-/evaluator-4.26.1.tgz", + "integrity": "sha512-WeUrC8qq7+V8Jhkkjc2yiXdzy9V0wbETv8/qasQmL0QmEuwBDJF+fvfl4z2vWpBb0vW07A8aNrFElKELzbpkdg==", "requires": { "escodegen": "^2.0.0", "esprima": "^4.0.1" } }, "@nlpjs/lang-all": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-all/-/lang-all-4.24.0.tgz", - "integrity": "sha512-kD7WchbHoMozbMBER9sKqkPUjKiXtdHEtsRdX4z0BZ0J+Thr+deoxNQZXQvuFH61MhYCfIPi8vNSKFvFODu1Zg==", - "requires": { - "@nlpjs/core": "^4.23.4", - "@nlpjs/lang-ar": "^4.23.4", - "@nlpjs/lang-bn": "^4.23.4", - "@nlpjs/lang-ca": "^4.23.4", - "@nlpjs/lang-cs": "^4.23.4", - "@nlpjs/lang-da": "^4.23.4", - "@nlpjs/lang-de": "^4.23.4", - "@nlpjs/lang-el": "^4.23.4", - "@nlpjs/lang-en": "^4.23.4", - "@nlpjs/lang-es": "^4.23.4", - "@nlpjs/lang-eu": "^4.23.4", - "@nlpjs/lang-fa": "^4.23.4", - "@nlpjs/lang-fi": "^4.23.4", - "@nlpjs/lang-fr": "^4.23.4", - "@nlpjs/lang-ga": "^4.23.4", - "@nlpjs/lang-gl": "^4.23.4", - "@nlpjs/lang-hi": "^4.23.4", - "@nlpjs/lang-hu": "^4.23.4", - "@nlpjs/lang-hy": "^4.23.4", - "@nlpjs/lang-id": "^4.23.4", - "@nlpjs/lang-it": "^4.23.4", - "@nlpjs/lang-ja": "^4.24.0", - "@nlpjs/lang-ko": "^4.23.4", - "@nlpjs/lang-lt": "^4.23.4", - "@nlpjs/lang-ms": "^4.23.4", - "@nlpjs/lang-ne": "^4.23.4", - "@nlpjs/lang-nl": "^4.23.4", - "@nlpjs/lang-no": "^4.23.4", - "@nlpjs/lang-pl": "^4.23.4", - "@nlpjs/lang-pt": "^4.23.4", - "@nlpjs/lang-ro": "^4.23.4", - "@nlpjs/lang-ru": "^4.23.4", - "@nlpjs/lang-sl": "^4.23.4", - "@nlpjs/lang-sr": "^4.23.4", - "@nlpjs/lang-sv": "^4.23.4", - "@nlpjs/lang-ta": "^4.23.4", - "@nlpjs/lang-th": "^4.23.4", - "@nlpjs/lang-tl": "^4.23.4", - "@nlpjs/lang-tr": "^4.23.4", - "@nlpjs/lang-uk": "^4.23.4", - "@nlpjs/lang-zh": "^4.23.4", - "@nlpjs/language": "^4.22.7" + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-all/-/lang-all-4.26.1.tgz", + "integrity": "sha512-UzRm1JRRAyQqilEOxQ2ySMOitKbhPk5iKYbjD8FREDcPjreUvDxVuQsYUOvYucmEyFcZU2U/TdJx+fX9/bcaKQ==", + "requires": { + "@nlpjs/core": "^4.26.1", + "@nlpjs/lang-ar": "^4.26.1", + "@nlpjs/lang-bn": "^4.26.1", + "@nlpjs/lang-ca": "^4.26.1", + "@nlpjs/lang-cs": "^4.26.1", + "@nlpjs/lang-da": "^4.26.1", + "@nlpjs/lang-de": "^4.26.1", + "@nlpjs/lang-el": "^4.26.1", + "@nlpjs/lang-en": "^4.26.1", + "@nlpjs/lang-es": "^4.26.1", + "@nlpjs/lang-eu": "^4.26.1", + "@nlpjs/lang-fa": "^4.26.1", + "@nlpjs/lang-fi": "^4.26.1", + "@nlpjs/lang-fr": "^4.26.1", + "@nlpjs/lang-ga": "^4.26.1", + "@nlpjs/lang-gl": "^4.26.1", + "@nlpjs/lang-hi": "^4.26.1", + "@nlpjs/lang-hu": "^4.26.1", + "@nlpjs/lang-hy": "^4.26.1", + "@nlpjs/lang-id": "^4.26.1", + "@nlpjs/lang-it": "^4.26.1", + "@nlpjs/lang-ja": "^4.26.1", + "@nlpjs/lang-ko": "^4.26.1", + "@nlpjs/lang-lt": "^4.26.1", + "@nlpjs/lang-ms": "^4.26.1", + "@nlpjs/lang-ne": "^4.26.1", + "@nlpjs/lang-nl": "^4.26.1", + "@nlpjs/lang-no": "^4.26.1", + "@nlpjs/lang-pl": "^4.26.1", + "@nlpjs/lang-pt": "^4.26.1", + "@nlpjs/lang-ro": "^4.26.1", + "@nlpjs/lang-ru": "^4.26.1", + "@nlpjs/lang-sl": "^4.26.1", + "@nlpjs/lang-sr": "^4.26.1", + "@nlpjs/lang-sv": "^4.26.1", + "@nlpjs/lang-ta": "^4.26.1", + "@nlpjs/lang-th": "^4.26.1", + "@nlpjs/lang-tl": "^4.26.1", + "@nlpjs/lang-tr": "^4.26.1", + "@nlpjs/lang-uk": "^4.26.1", + "@nlpjs/lang-zh": "^4.26.1", + "@nlpjs/language": "^4.25.0" } }, "@nlpjs/lang-ar": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-ar/-/lang-ar-4.23.4.tgz", - "integrity": "sha512-x/pax8lXS3RPj4dsw0Q7JK9zefJHDtmweKBsT/C2sbySkm9ml2xD65CeHopl2jdy1X73r2fNgFflfEXr5zM3rQ==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-ar/-/lang-ar-4.26.1.tgz", + "integrity": "sha512-MUlVtabt9ltG7WyzCQpFJymLJlnEqp3mxhgN9JHyFH7oZMK3REvMovFfvEUAbfiYrJEv/BN5KKLL7yrvUeaHtg==", "requires": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "@nlpjs/lang-bn": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-bn/-/lang-bn-4.23.4.tgz", - "integrity": "sha512-EwNohVRyqJeSM1JQnVQIufLpAtBkNtqa1FipHai4O+fxUlud4ujR4HF6uXYaCn2I46LgyiDbYPHSjI2bp3h/lQ==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-bn/-/lang-bn-4.26.1.tgz", + "integrity": "sha512-sim1iZKBDdehi/yBUKrLW51QvS9uB+sXW7lj+THVqBy5UsnEQvt4gzE0NsC873uJMh66vt2AlHkhzgPH0qH/nQ==", "requires": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "@nlpjs/lang-ca": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-ca/-/lang-ca-4.23.4.tgz", - "integrity": "sha512-9+ljf2dqFurUjTR0XwOsmDoIvJhyD/1c2m7DVwoz5hTv3HFzv0tuJOsLtLb19qo5rWd+hAabte4e2vEImMiJxw==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-ca/-/lang-ca-4.26.1.tgz", + "integrity": "sha512-fD4R5tcAB0uYtNxSEF20b1KmF6nUQSbiJqrIUJI5yis4ObjCYRQnSh4bjVDKUKxyONjbD6L8EaK5GrY1/jkwFQ==", "requires": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "@nlpjs/lang-cs": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-cs/-/lang-cs-4.23.4.tgz", - "integrity": "sha512-m1A0e45nTttgX7ZnaYw4z47Il9g3C52cd4KbOFsbc9iJvNp52qOTeS9SrTkdRr9i0tIRQYQoqj25r6Wlh59Adw==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-cs/-/lang-cs-4.26.1.tgz", + "integrity": "sha512-CqI6VB8toaJ/MlP1D4K9BctA6GpZJhMKyEy+OX9xavDe4r4ao/SxlSaIYK3izK0k+J38lJWC5lXYGazfCdTGjA==", "requires": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "@nlpjs/lang-da": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-da/-/lang-da-4.23.4.tgz", - "integrity": "sha512-U/lS/SvEmYWpmU431n/0Nn70ar/EKeuRIkBCVLBILpF4dUtCgmj0b7YVGZOlplputUIqKVqadvWkVUndZPDEtQ==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-da/-/lang-da-4.26.1.tgz", + "integrity": "sha512-krI/ojeDSi329ENM/hLIsbUh1x4XRTKAbtPcbFxAY6XVhcSVoWPO7L77jFTL1NQeE1oGRFzGHaeC9hZJ8phVbA==", "requires": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "@nlpjs/lang-de": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-de/-/lang-de-4.23.4.tgz", - "integrity": "sha512-qTdoVN+ZyLEALl/791LZG9fToLT4eCk1kg5DL/GGe0pmr7vzqQiVL7ac5uUGwyE1jI9ymr96Ipu6oWwWAEx3/w==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-de/-/lang-de-4.26.1.tgz", + "integrity": "sha512-HfZQwsE5FICq9taVZDiyktmdAePVF5948NM80et0d9mx43RWDFhHKQYgtJPwfQXtdCoQtOM5TOJ2FanGwzPeaA==", "requires": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "@nlpjs/lang-el": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-el/-/lang-el-4.23.4.tgz", - "integrity": "sha512-oztT3iO/pZ2+zdDrSvcP7XpLWskiiW/EH56Uz0U2aLVHzFzUYgc4o1QNqcBnF0D0mJEYWSgA6gS1IufupNViug==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-el/-/lang-el-4.26.1.tgz", + "integrity": "sha512-pcOvuSwPCXxI+2xNZZzM4V5pTRDntYoJi0SP/ic2nV4IPQ0nU2j16dYfg1HlvET/E6iN1VTqghrCaf10SMkDGA==", "requires": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "@nlpjs/lang-en": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-en/-/lang-en-4.23.4.tgz", - "integrity": "sha512-sPSP8C1miTyrpRtS2I5mQekScVAY1U/514A4VgMtwQi8Be0dc1mnR2lY3RcdWC0DhcwUxq3fXSn7JYGufjzl6Q==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-en/-/lang-en-4.26.1.tgz", + "integrity": "sha512-GVoJpOjyk5TtBAqo/fxsiuuH7jXycyakGT0gw5f01u9lOmUnpJegvXyGff/Nb0j14pXcGHXOhmpWrcTrG2B0LQ==", "requires": { - "@nlpjs/core": "^4.23.4", - "@nlpjs/lang-en-min": "^4.23.4" + "@nlpjs/core": "^4.26.1", + "@nlpjs/lang-en-min": "^4.26.1" } }, "@nlpjs/lang-en-min": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-en-min/-/lang-en-min-4.23.4.tgz", - "integrity": "sha512-jQ5LlrSLMtR00gYKNgz+FHw2Pt9EmNDeUC+5cl5lO17hfyGA05C1UnvsdA3Q6LJFEqnD8DDyR3PMloqIhDAA0w==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-en-min/-/lang-en-min-4.26.1.tgz", + "integrity": "sha512-1sJZ7dy7ysqzbsB8IklguvB88J8EPIv4XGVkZCcwecKtOw+fp5LAsZ3TJVmEf18iK1gD4cEGr7qZg5fpPxTpWQ==", "requires": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "@nlpjs/lang-es": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-es/-/lang-es-4.23.4.tgz", - "integrity": "sha512-5me9OOx2kA+W/984v5LJONzYIXgg2nUtEPAE0GtlpxL7Pukszd7OGqZmJWzDW2Cux2RhsgJ4BbwN/J6zJBPKEA==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-es/-/lang-es-4.26.1.tgz", + "integrity": "sha512-fIPQt+WPcNdyxZOCMkOPlMb4Y1iE585QxjB9IAdFz8ZtVg7mc4dlv5f46ud7ppdMh84iLOuOdo6pzu2Cqm14lw==", "requires": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "@nlpjs/lang-eu": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-eu/-/lang-eu-4.23.4.tgz", - "integrity": "sha512-3dX0GNUZxP5wlaQe+ydFeWg1mwyteo4M/J3ZGYFTzrTM88SZ4kSAAZaaAd4HmMZDRBBk2/6TiZ+FHMHuSGx7FQ==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-eu/-/lang-eu-4.26.1.tgz", + "integrity": "sha512-Ha8GHTbgQYd7dwHM8aWHDyxmbUNUcyu/5xlBKqqBOPxysDyZ6Ad0tvj0FmJBy6mYhqmFTPBnEAo69cfuFSqWIQ==", "requires": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "@nlpjs/lang-fa": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-fa/-/lang-fa-4.23.4.tgz", - "integrity": "sha512-a3GKaFccnkHpEK4P5vYFm/+C/G4NdF6hY7xJLKPemju5GRmyAogGSV+BZi2VoC9v2egFO9vZGxy5wftnUjUwJg==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-fa/-/lang-fa-4.26.1.tgz", + "integrity": "sha512-qJCmNXgJZnfNXUnKnxvEGEzSFBdQT4XU7/rMxuFmSJqmQY7fH/Vsmi5CKF94VRBPOIV4ULlEJuLpUWHXRmOnVQ==", "requires": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "@nlpjs/lang-fi": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-fi/-/lang-fi-4.23.4.tgz", - "integrity": "sha512-r1e0f3zIHm3DYgnq0FAQ++xQWpKtvZzHue4DrS/EYmuyR44TYJdlA2fb6bYYVXQIy9GEofVu/3b9o03oi88PoQ==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-fi/-/lang-fi-4.26.1.tgz", + "integrity": "sha512-W/rUcrzSh3KE07q2vOsssTpU1sbX32gbBzKPZfRJ2ZUF4afO+eHxmAywikXubP4kiU3JxVNLvXXEjuGD3SBUbA==", "requires": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "@nlpjs/lang-fr": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-fr/-/lang-fr-4.23.4.tgz", - "integrity": "sha512-0ctG8YtzwBD7Vs4BFM5Tuwp1daVPZrIGqA5UEAJv5c2qvQ6dledt7bOfBa0jL0JNQRkkdKNmZXRrlX4FsaGJvg==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-fr/-/lang-fr-4.26.1.tgz", + "integrity": "sha512-LTA852atCJnHtKDmtjx/ui5AnvEIkrPx+MJQ2mB3gn8ko6i2UITnJgPmJE9Kej5bLasVZOAJvU/SrfXEmnPGOw==", "requires": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "@nlpjs/lang-ga": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-ga/-/lang-ga-4.23.4.tgz", - "integrity": "sha512-F9z3l2qXDp6VgCfBZHp2cA4Yg+2RaKU/Hh2RBXwmKWyCqKoIiOgEQBEL84cRiB9q86axLhmJyKz935fD2F6xXQ==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-ga/-/lang-ga-4.26.1.tgz", + "integrity": "sha512-JsP1CZ8r3Jd6o/Az7cN3exz0HDP3FNYLzh4Vi6ksEkdKF0yCjJ9G5dXZYqS9qFIN5ffemWn29G4WRELY6QH/cQ==", "requires": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "@nlpjs/lang-gl": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-gl/-/lang-gl-4.23.4.tgz", - "integrity": "sha512-VSI02tEix2k1Z/dSM+P/LEIDldqkj3OMbbsX2xyp0vENzA11MC/LVQMApg90M1+8AJ6N6S0lPyqU7jLRKGLu/Q==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-gl/-/lang-gl-4.26.1.tgz", + "integrity": "sha512-y1NNu6NVy/6o5UNfihgg0WkSlVr4IvKA5W193CpRLZWS4FccQDmnFFhyYWRkshyDbgEsfsZ0Rs3BoE82+T2Ubg==", "requires": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "@nlpjs/lang-hi": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-hi/-/lang-hi-4.23.4.tgz", - "integrity": "sha512-2/gu2nS7hXdPD1e5ADyybSNAuOCD9JjRO8RoxCqYyCHfUk/Qf+/FZQpTHGJRfivf7tuqtyCw7tNYa1faaQkRHA==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-hi/-/lang-hi-4.26.1.tgz", + "integrity": "sha512-Fw9rXqF5l8q9etJG5uOlEFpnMVjQEWMaCIgQfEcA1yTvieSV8mpoSvQkEZl+DFhww+azareoJ7ZCkx0gJ9UDuQ==", "requires": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "@nlpjs/lang-hu": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-hu/-/lang-hu-4.23.4.tgz", - "integrity": "sha512-jRjR2i1Lurl6GQL/XUu8kIq+kV6Sp9NDOA2g/pBbZv55WdD7RwreJtxP1HcYo1+NZTyPESLknZwTq9sXAGblkg==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-hu/-/lang-hu-4.26.1.tgz", + "integrity": "sha512-7dPUn5/ZpLZmsdRwO+dtORuMIiIpnsWbgSLIKdOLh8irhgUR+M2bYTfkdnKcrEcHzHPP8Svn7pU0xk7OKSUA1w==", "requires": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "@nlpjs/lang-hy": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-hy/-/lang-hy-4.23.4.tgz", - "integrity": "sha512-wrV4NhFJY+eFtzQWcc64FAOclM85nk9lq2Z5APaXiRwZ0Sr4jm18N84GQ+4TeVCRDnck3ORtEkg1rCIwEiqFWA==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-hy/-/lang-hy-4.26.1.tgz", + "integrity": "sha512-T2brpLGDJryAwWmjtnmY8Ot6ZUkCz+/nRR9/QM1PybvZIqOVLjJqA49bqjJfT5DMN89HbwC7I/15NTT0y09i1Q==", "requires": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "@nlpjs/lang-id": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-id/-/lang-id-4.23.4.tgz", - "integrity": "sha512-KNY2C3mucG/7u8apWwzQAkjel4cMYHWtkRu2YCjdaGN0i6mior5u/3ihNdk8pfHISBW5ERgCbvG7buQEhAl4WA==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-id/-/lang-id-4.26.1.tgz", + "integrity": "sha512-rVuIkYFKdltFhMT/a2ZxD9ovoZSVZF7OPuqYjTXW9xKd3Ff32yUrzcf/pHXlqmZOSltqOH3E5jZRRDkHvgUOjQ==", "requires": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "@nlpjs/lang-it": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-it/-/lang-it-4.23.4.tgz", - "integrity": "sha512-8x6TTPRCJwjNcXSHJUUCXVo2y0XTUp5+Cn9l5PdEkpfdZJ0lMtmnjrYoCnzwo5kBYIObcZ6UxgjIGcwXldVHtA==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-it/-/lang-it-4.26.1.tgz", + "integrity": "sha512-BZA3QnfQGW91gYaybRmHnCAPBvQggtmHZJrAmuBZUKUS12HoQm8uybjw2fZO+vahEeUQceKNDISRcT1eLLijog==", "requires": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "@nlpjs/lang-ja": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-ja/-/lang-ja-4.24.0.tgz", - "integrity": "sha512-a7bdoUKc6xZGla4yYPvQtYDDiixUKlOFrz4jdIqVeRsu4skKk5wrvvokMbfsvuGmdND4VgX+k8Cxs7zz4W76LQ==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-ja/-/lang-ja-4.26.1.tgz", + "integrity": "sha512-QgkuJOkHguRFyfnckH2It5/Kg8zecnOMJsHxYeuDC4tBF7jL/5xqWis+679lYLsXtAkrG8+fjVcBbjyopP0KHg==", "requires": { - "@nlpjs/core": "^4.23.4", + "@nlpjs/core": "^4.26.1", "kuromoji": "^0.1.2" } }, "@nlpjs/lang-ko": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-ko/-/lang-ko-4.23.4.tgz", - "integrity": "sha512-V0sgfR/xxxWf8GUO4ChGci9Z86r2eDaNB0CIAVHPxvtef6nWJXLDivyvpGMHbzEq00lNiJ+8OhZ/yTFA54ytvQ==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-ko/-/lang-ko-4.26.1.tgz", + "integrity": "sha512-Q0N8bLJJ829ILWCKH1UQWPSNyuLaEURAXCawkDju4pt33DBLcpqz9IzO9dnqiFc+fjSgVzZ7WMaLT18hXZQ9vg==", "requires": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "@nlpjs/lang-lt": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-lt/-/lang-lt-4.23.4.tgz", - "integrity": "sha512-P+YqL0Rj+b0V2jnxeRmue/OH/bCC9XktCny9azcW7yAUzNTbob50CAkfWSBZIfcImABW+UJPe9IHPtnCrERWKg==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-lt/-/lang-lt-4.26.1.tgz", + "integrity": "sha512-SeYZxRhdCy+ClQNnF/u0MAtcDui/ocdk4NtgNOCuwNTNuzhN3t3rfGeArfBGmZeg1SIeBLUDE9dsTxYCv5AOEg==", "requires": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "@nlpjs/lang-ms": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-ms/-/lang-ms-4.23.4.tgz", - "integrity": "sha512-poBO98nVKnzwOw2Kjj63L9YO72+7wiOslYrqXPsob3kCVbHAj0Ld7YE3L7jeIWUXbbDbTvw8CFzAWijRSfcYSg==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-ms/-/lang-ms-4.26.1.tgz", + "integrity": "sha512-KxWBS+tFY2U8z9UrjQIqMM40npGDOskP5DcWhaEE3zuhzf3RTDYjy8sdz34jVd0fBdbPihX133h3bFibg2Cm7w==", "requires": { - "@nlpjs/core": "^4.23.4", - "@nlpjs/lang-id": "^4.23.4" + "@nlpjs/core": "^4.26.1", + "@nlpjs/lang-id": "^4.26.1" } }, "@nlpjs/lang-ne": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-ne/-/lang-ne-4.23.4.tgz", - "integrity": "sha512-rzJw54gYrNrDBbWLiSCjMx4hhsOj9qBn6fQnw1WEI/KBNpxZ1qkpgoEp3Nli0dMOorECfLlIVzh1l4SLCNNKkA==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-ne/-/lang-ne-4.26.1.tgz", + "integrity": "sha512-K3E2l+0LTESv+dO+ZTIdvNa+zwMJvvnMiFYYkKvJst6lhc8JgvGOsPxGsjJn6PDhI3wyfQu+dg3b+bnVPu4FDA==", "requires": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "@nlpjs/lang-nl": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-nl/-/lang-nl-4.23.4.tgz", - "integrity": "sha512-DIvzWpqfC4GTBxKxYuLLEAH5SAx8kBNLthPM4RngbHy4uhVrqQC7Hk+Ob1uN2glmAhrfGw0kwipvRI6gGahsYQ==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-nl/-/lang-nl-4.26.1.tgz", + "integrity": "sha512-I/mP1RRbUN4BQ+8NXAl2FKaLHbb7f6S8JVjxHQ0sKHT4BgQ3+r0yO+DVcEsHg+vWRiY1Fyzh0gq0PhLVnF6HnA==", "requires": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "@nlpjs/lang-no": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-no/-/lang-no-4.23.4.tgz", - "integrity": "sha512-2S/wQOsADJcA6AbeCRFkBk6R4lzk0mySzgau+fIn9wft881OT48iUG9HRKW07M5Ywxr8JJXp0HxBe6fxzaK1Fw==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-no/-/lang-no-4.26.1.tgz", + "integrity": "sha512-a0CLL2c/OCzbg7J7ugyrsAksI96XhkQ3IeBbbx60o5o/9wsFNik6cPWrkpoE5xNtw7gLlAJWabwDiZXkl8Zrcw==", "requires": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "@nlpjs/lang-pl": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-pl/-/lang-pl-4.23.4.tgz", - "integrity": "sha512-auXqk5gfNT5r8k/yUBN3yIpTTO17uP8jWpGLK+BuGdfWfhOmPBGWR66+1OPC9OzSQAb2QODlhhUohP4uOdM3ag==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-pl/-/lang-pl-4.26.1.tgz", + "integrity": "sha512-nrDXlq+TzQLE5IpXPIlFMzd8OpquvApWsouh6fmLsD9HZLZI4O3w1M4sXXLzE+9Ggu9Cy1m1QJ0/i7XCcv115g==", "requires": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "@nlpjs/lang-pt": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-pt/-/lang-pt-4.23.4.tgz", - "integrity": "sha512-vlBQ037mQGlsNm/BTt40DpzSk46C03wTjpswZ+HyvAN+p+HXiaKNTbQjVBCVLudn/gAlbrC/UWamiMHg85C3fA==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-pt/-/lang-pt-4.26.1.tgz", + "integrity": "sha512-p6yZHaJ0e+n0avMHpdDw5PMk4HkKXjPbOMbrlg0dF+VRqChjxfH478Q423rDyzu/4MzDsIYB+p6KzL9AARKXpg==", "requires": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "@nlpjs/lang-ro": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-ro/-/lang-ro-4.23.4.tgz", - "integrity": "sha512-g3uZShS3t0Cp+DWCqL+bhMF1p8n83jxnGrPPthJZ3Yp4Phy0O1k9w4rU2dSDTFo2yL3crNfxHI67dxMkBk4+0g==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-ro/-/lang-ro-4.26.1.tgz", + "integrity": "sha512-baUdTA0DWpDR0Tn6fxo+RDN/6gbuINLCARtHwap2UR/HKQWP2XoH/DIvcjZpwUTalr5MQjso31epcdeRRapczA==", "requires": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "@nlpjs/lang-ru": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-ru/-/lang-ru-4.23.4.tgz", - "integrity": "sha512-Zr4i2EoimvtKCOyjD/5Ym+/TWcLXVJwYIcgXQGzXjQjaYigWvZvsQxpBeAXPkqMsR6npdvemJkKPMB+GZvO9gQ==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-ru/-/lang-ru-4.26.1.tgz", + "integrity": "sha512-NaZ2DAOGxWG2Us9IyIDs3m6vhGpUaUJRVgzzHHyX3LO3xEYjZmtnA0jEpBaTOe2PuNHThv0WCZUNn9BSurV3PA==", "requires": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "@nlpjs/lang-sl": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-sl/-/lang-sl-4.23.4.tgz", - "integrity": "sha512-/YDbAl0toDDb/7lHI0o9U8sG3mPcUShCStsudqTkfoaxU1nDI8ydAgOa38K8F6h5Z7Gotar1jpEKs8oerDPDMg==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-sl/-/lang-sl-4.26.1.tgz", + "integrity": "sha512-QBJwcJt+oKUpAnHKNJkLkx9Xm1n4dUPC5GPYfAXTnJZf0hNWJSY21GicdWi7Vu/qFJ3ghIqtSP8D7KIPLnibNw==", "requires": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "@nlpjs/lang-sr": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-sr/-/lang-sr-4.23.4.tgz", - "integrity": "sha512-5QxIutDSbDIzNVPSVOX/BeeBvSxQR7SrlRp2oi+7ycukBVDYSzUT42M0/q11kAALMBSzxq7PGTaQHHGlssv6bw==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-sr/-/lang-sr-4.26.1.tgz", + "integrity": "sha512-drH3+UqTW637uLWsnLrcp8jEKUGxV61ZgCBjNkVQNEv1/jbpSg6IqgynSY2JyhtnlV0f870KS0HvSbyo5AD4Ng==", "requires": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "@nlpjs/lang-sv": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-sv/-/lang-sv-4.23.4.tgz", - "integrity": "sha512-hAJjpfAZ7Y03l20RIC2mxiI1mlrdzUVPCLI01DOkmZ8+3uCTnuNacqVuOtpjXYazdG33xJ3ky8GaXroTgWnoCw==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-sv/-/lang-sv-4.26.1.tgz", + "integrity": "sha512-2axkrYFC02tAlxCWeiEKISbe4dSteciP1CIggO/dZglnnLWgdF+g7kOeYMn7abCfFVSnh5vLqfDkrwnyIqt7Ag==", "requires": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "@nlpjs/lang-ta": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-ta/-/lang-ta-4.23.4.tgz", - "integrity": "sha512-F45cO4PsO4/8/BDLskD98tchdLhkptV5p4qUXQ0p9Mqmx+gKxsMmpnwNp6my062w2sgtx5wDz27q2nFWnMeSSA==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-ta/-/lang-ta-4.26.1.tgz", + "integrity": "sha512-keeh+croa1TAirV9Fd3OQMo5IkAlTGNWTNweHbi/htYMX0MKOPYxyqg+VH2bml+57VY2aUj/WYgV/p3ATx9EfQ==", "requires": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "@nlpjs/lang-th": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-th/-/lang-th-4.23.4.tgz", - "integrity": "sha512-tTmKWk0R74NUjflmFPlLBZhhKkMixf6LEdPpKCOELamyfACAwrTTeHZEnpspaozoHZxfImVEKmaUJxte8drlgQ==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-th/-/lang-th-4.26.1.tgz", + "integrity": "sha512-2SWZhrln3rMw8/DsRc9yS5bi3qEdGfw2pq9Uejx/UYED5zvvL6kh9AiCJZT4k0wMBGEwWUV6HxJ0Pq/jOTHogg==", "requires": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "@nlpjs/lang-tl": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-tl/-/lang-tl-4.23.4.tgz", - "integrity": "sha512-CzbkLb+y2zEZ/e9Ynh2mU0knvVzRhcUoBw2PfjIkHNB+5DdzTWPWEcluKOWVptywh7+lCgjRC6hHiLAEKIHpqg==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-tl/-/lang-tl-4.26.1.tgz", + "integrity": "sha512-AzmLtg28tm0VXCm0Q0EY3OtA3m4oYxaqh4VX6uhB4J+PoEsIkm0py12SJxMNIsh/r98pobCumH8KH9bvHQoCAg==", "requires": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "@nlpjs/lang-tr": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-tr/-/lang-tr-4.23.4.tgz", - "integrity": "sha512-W4s/HhDNxfzAUD7b3WX3FBEeR7hen6Eh+D7hs+ABZ/7pObAoXpPzILVaQJntOl8NF55yFJPH9AddWMmJdm8QEA==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-tr/-/lang-tr-4.26.1.tgz", + "integrity": "sha512-p30uuXvE9pZeU/5XkrQfvxRgiAOBmP3EyBFGV/+P05PEogaqbsmmtVCgCnR63yeRvVnGbToPBPjRK3OO1y4AEQ==", "requires": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "@nlpjs/lang-uk": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-uk/-/lang-uk-4.23.4.tgz", - "integrity": "sha512-QFDVI0WHzkiGjNw+0Yy9TVA+g25Q/M52sylQI4natvuaItDO+JVYwL0i6aNgKXi4U2aj3BBreqcVGZKKPxMR6A==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-uk/-/lang-uk-4.26.1.tgz", + "integrity": "sha512-PVEvmlhvl6BL3e/Q4qjMPsnwON3cWEYvDh9dg+Si+sjD2Edu9tajolJKcQ6ZA4I8dXrld5xuXx+DEBH/uB4uWQ==", "requires": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "@nlpjs/lang-zh": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/lang-zh/-/lang-zh-4.23.4.tgz", - "integrity": "sha512-BnH1gpm5j7YOjcEHRfZDlrQbL1AaNWJMSuNEqFrCVWCE0ENoZb0xfqXRTTfPgCzc8rF+ysxIeQsCmAxeQUZiPA==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/lang-zh/-/lang-zh-4.26.1.tgz", + "integrity": "sha512-kwqeqeEgMAMvucVX9HNE1p6s/2APP23ZsS8Um/lNvtswb4gL5jjYF9kyCvRfqlPBQSWWdRv7wwcnNXOvXYkxcQ==", "requires": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "@nlpjs/language": { - "version": "4.22.7", - "resolved": "https://registry.npmjs.org/@nlpjs/language/-/language-4.22.7.tgz", - "integrity": "sha512-oz5PrPwsIharMGRKZbcIkDtOko5tvynK/s765Wu7fgRHaILXT0ZoqNR/kNeo9BQCsTLV0GvFJreQ/UFy1XGZew==" + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@nlpjs/language/-/language-4.25.0.tgz", + "integrity": "sha512-tUF6QENoUQ/E26RYc32IgsttStSF9cNO4ySN+BQECn8VpjukWdwbMw073MlOLXzjfeobxa+3hCVrmPPcW+V3UA==" }, "@nlpjs/language-min": { - "version": "4.22.7", - "resolved": "https://registry.npmjs.org/@nlpjs/language-min/-/language-min-4.22.7.tgz", - "integrity": "sha512-kmA9u6onlMP1sdBS8Q7yJcFPLhDgrT0q9jSovVAW+WjZN3UmkMNsrgV35q1LWnbonTKnvb/NjdaN4VnT/+nuQw==" + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@nlpjs/language-min/-/language-min-4.25.0.tgz", + "integrity": "sha512-g8jtbDbqtRm+dlD/1Vnb4VWfKbKteApEGVTqIMxYkk6N/HMhvLZ5J2svrxzrB98a/HZ0fb//YBfFgymnz9Oukg==" }, "@nlpjs/ner": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/ner/-/ner-4.23.4.tgz", - "integrity": "sha512-B09dHq9rVjg3OGU+ZyzReQnBFzLYrik+u+mQzHI84mFGp3lxDejCDmCfFr04KQmqFGUZZ+Z9bohvK8MZ09JUMg==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/ner/-/ner-4.26.1.tgz", + "integrity": "sha512-oaOjHP2OqIDeGHBMobSFGxidctMots/4S8lScG8rEtJlhGCmRZ3bZFpsIlnakg0P6RTejUIRmgK47OY0ioTxOQ==", "requires": { - "@nlpjs/core": "^4.23.4", - "@nlpjs/language-min": "^4.22.7", - "@nlpjs/similarity": "^4.22.7" + "@nlpjs/core": "^4.26.1", + "@nlpjs/language-min": "^4.25.0", + "@nlpjs/similarity": "^4.26.1" } }, "@nlpjs/neural": { - "version": "4.22.7", - "resolved": "https://registry.npmjs.org/@nlpjs/neural/-/neural-4.22.7.tgz", - "integrity": "sha512-sMWbuaEX5n7fuC8B8o5ueKZewA5Fu4JerBNcUzv3N5F7+SV59RFbZmDFfE+gXoF4/wwmkuZCRMV1arEut0vjoA==" + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@nlpjs/neural/-/neural-4.25.0.tgz", + "integrity": "sha512-Oz20denGiBe0DlQsS7lN4TNrATN1nXlHKc/HB6jJPegjVmgJVCugDaHwIGoV7qOWyA6F2fRRwOgD+quNT2gVpg==" }, "@nlpjs/nlg": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/nlg/-/nlg-4.23.4.tgz", - "integrity": "sha512-qbdWkLv/LEw17Om+wS1pTcvpCxowTzM2wSr+cUcaGr1xqAcBfEhrQScUDnuehRZ2LohQSIzw5dC6klNTEwtQYw==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/nlg/-/nlg-4.26.1.tgz", + "integrity": "sha512-PCJWiZ7464ChXXUGvjBZIFtoqkC24Oy6X63HgQrSv+63svz22Y5Cmu1MYLk77Nb+4keWv+hKhFJKDkvJoOpBVg==", "requires": { - "@nlpjs/core": "^4.23.4" + "@nlpjs/core": "^4.26.1" } }, "@nlpjs/nlp": { - "version": "4.23.5", - "resolved": "https://registry.npmjs.org/@nlpjs/nlp/-/nlp-4.23.5.tgz", - "integrity": "sha512-ZsIXpS++dyq4L7z3AXSSJa27MUE/nsjYWpl7W4+Ghaj0PXf1bhmQkRsaL/b60/KsA0U+FobAX8F+nIlBIQkGxw==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/nlp/-/nlp-4.26.1.tgz", + "integrity": "sha512-xVzmSlu/FzH+lzjP8zriwuY7sXE6IsbYvEhT5Z6cKYCGFHoMTCvT6cID8Y47NraEU1H/NTVMudkFoOAT+O8eww==", "requires": { - "@nlpjs/core": "^4.23.4", - "@nlpjs/ner": "^4.23.4", - "@nlpjs/nlg": "^4.23.4", - "@nlpjs/nlu": "^4.23.5", - "@nlpjs/sentiment": "^4.23.4", - "@nlpjs/slot": "^4.22.17" + "@nlpjs/core": "^4.26.1", + "@nlpjs/ner": "^4.26.1", + "@nlpjs/nlg": "^4.26.1", + "@nlpjs/nlu": "^4.26.1", + "@nlpjs/sentiment": "^4.26.1", + "@nlpjs/slot": "^4.26.1" } }, "@nlpjs/nlu": { - "version": "4.23.5", - "resolved": "https://registry.npmjs.org/@nlpjs/nlu/-/nlu-4.23.5.tgz", - "integrity": "sha512-3LLdmcE/W5yhKNvbYc+3rN32Asmg2zP6Ae2Blse7/AuKhiUIzVL/exLgvfEqDW9MqTKej5UZpYypMGUeK0HP6g==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/nlu/-/nlu-4.26.1.tgz", + "integrity": "sha512-RfEuIz7HzqMA5sBPSeVUsSPUlDboUsKzauRD0CHp37Gx5l2I5EQcQxliEgtxEWA0Q2pKnRQerZvEufnKtyF0mQ==", "requires": { - "@nlpjs/core": "^4.23.4", - "@nlpjs/language-min": "^4.22.7", - "@nlpjs/neural": "^4.22.7", - "@nlpjs/similarity": "^4.22.7" + "@nlpjs/core": "^4.26.1", + "@nlpjs/language-min": "^4.25.0", + "@nlpjs/neural": "^4.25.0", + "@nlpjs/similarity": "^4.26.1" } }, "@nlpjs/request": { - "version": "4.22.7", - "resolved": "https://registry.npmjs.org/@nlpjs/request/-/request-4.22.7.tgz", - "integrity": "sha512-NvJsB8YjqsMM7JVILNwzRELV/lCyh8bMgXadl1kvXwXKgtmlplgJ095hKKzjkooMl+jemUtM5l/kqvaXGUi09w==", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@nlpjs/request/-/request-4.25.0.tgz", + "integrity": "sha512-MPVYWfFZY03WyFL7GWkUkv8tw968OXsdxFSJEvjXHzhiCe/vAlPCWbvoR+VnoQTgzLHxs/KIF6sIF2s9AzsLmQ==", "requires": { "http-proxy-agent": "^5.0.0", "https-proxy-agent": "^5.0.0" } }, "@nlpjs/sentiment": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@nlpjs/sentiment/-/sentiment-4.23.4.tgz", - "integrity": "sha512-4m1nsGbnehWX17MmT5g37CwkVrPivB5vnq6SnvvSHQU5oueg1qLGGXl+xkz0/pqyjmU4o8gO1FPsrQZuLeWe0g==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/sentiment/-/sentiment-4.26.1.tgz", + "integrity": "sha512-U2WmcW3w6yDDO45+Y7v5e6DPQj8e0x+RUUePPyRu2uIZmUtIKG+qCPMWnNLMmYQZoSQEFxmMMlLcGDC7tN7o3w==", "requires": { - "@nlpjs/core": "^4.23.4", - "@nlpjs/language-min": "^4.22.7", - "@nlpjs/neural": "^4.22.7" + "@nlpjs/core": "^4.26.1", + "@nlpjs/language-min": "^4.25.0", + "@nlpjs/neural": "^4.25.0" } }, "@nlpjs/similarity": { - "version": "4.22.7", - "resolved": "https://registry.npmjs.org/@nlpjs/similarity/-/similarity-4.22.7.tgz", - "integrity": "sha512-iWbZz6Yf0sXIiFi2jtdpsCLkOQsXFxT1YME4GysMtJxKiN/Cu4AhXugEiixhacPIPQb8lfouR0dQtSnx+9kW2A==" + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/similarity/-/similarity-4.26.1.tgz", + "integrity": "sha512-QutSBFGo/huNuz60PgqCjub0oBd9S8MLrjme33U5GzxuSvToQzXtn9/ynIia8qDm009D09VXV+LPeNE4h7yuSg==" }, "@nlpjs/slot": { - "version": "4.22.17", - "resolved": "https://registry.npmjs.org/@nlpjs/slot/-/slot-4.22.17.tgz", - "integrity": "sha512-cNYcxf9DKB+fnRa2NxT5wbWq5j57R1WCTXLWI/1Cyycr227IP7GN7qaD4RbkzotBFFB8wm63UHod9frzmuiXxg==" + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/@nlpjs/slot/-/slot-4.26.1.tgz", + "integrity": "sha512-mK8EEy5O+mRGne822PIKMxHSFh8j+iC7hGJ6T31XdFsNhFEYXLI/0dmeBstZgTSKBTe27HNFgCCwuGb77u0o9w==" }, "@nlpjs/xtables": { - "version": "4.23.5", - "resolved": "https://registry.npmjs.org/@nlpjs/xtables/-/xtables-4.23.5.tgz", - "integrity": "sha512-6e5mrm3OU1BE67UVlY6p8oP8AKHfFKUW0ENn936LxdgUlNWuZbaxinU4h5Mnby7sYSDUHhgZMvkmavJVZMgbwg==", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@nlpjs/xtables/-/xtables-4.25.0.tgz", + "integrity": "sha512-+baCtMZIp+aDqODLQs8Wyyke5qUqQkL8AGWsZzwYuJV8S7xdW2+XklRnHnkFc3p3foC248TkzG5L8j9r6INOtg==", "requires": { "xlsx": "^0.18.0" } @@ -18213,25 +18214,25 @@ } }, "node-nlp": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/node-nlp/-/node-nlp-4.24.0.tgz", - "integrity": "sha512-AvP9yEcGMa8inZU79KhBeohAmZsr0i90ExlKT6LU+HdUsz3F4HV/uxO0BMhQN7e1NIFSjCXBvF1DCJ9jIK5cBw==", - "requires": { - "@nlpjs/builtin-duckling": "^4.23.4", - "@nlpjs/builtin-microsoft": "^4.23.4", - "@nlpjs/core-loader": "^4.23.4", - "@nlpjs/emoji": "^4.23.4", - "@nlpjs/evaluator": "^4.22.7", - "@nlpjs/lang-all": "^4.24.0", - "@nlpjs/language": "^4.22.7", - "@nlpjs/neural": "^4.22.7", - "@nlpjs/nlg": "^4.23.4", - "@nlpjs/nlp": "^4.23.5", - "@nlpjs/nlu": "^4.23.5", - "@nlpjs/request": "^4.22.7", - "@nlpjs/sentiment": "^4.23.4", - "@nlpjs/similarity": "^4.22.7", - "@nlpjs/xtables": "^4.23.5" + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/node-nlp/-/node-nlp-4.26.1.tgz", + "integrity": "sha512-XRb3TvXSmrhxQvRkI9BKnan+QQ3AjErTWCrOWNIfbjZXDdoQ3i0Fh7Rp5j3VIi5ZiafieRWI5qH0ypsdTlgg/w==", + "requires": { + "@nlpjs/builtin-duckling": "^4.26.1", + "@nlpjs/builtin-microsoft": "^4.26.1", + "@nlpjs/core-loader": "^4.26.1", + "@nlpjs/emoji": "^4.26.1", + "@nlpjs/evaluator": "^4.26.1", + "@nlpjs/lang-all": "^4.26.1", + "@nlpjs/language": "^4.25.0", + "@nlpjs/neural": "^4.25.0", + "@nlpjs/nlg": "^4.26.1", + "@nlpjs/nlp": "^4.26.1", + "@nlpjs/nlu": "^4.26.1", + "@nlpjs/request": "^4.25.0", + "@nlpjs/sentiment": "^4.26.1", + "@nlpjs/similarity": "^4.26.1", + "@nlpjs/xtables": "^4.25.0" } }, "node-preload": { diff --git a/server/package.json b/server/package.json index 123b87df54..c5553ada5c 100644 --- a/server/package.json +++ b/server/package.json @@ -79,6 +79,7 @@ "@gladysassistant/gladys-gateway-js": "^4.10.0", "@hapi/joi": "^17.1.0", "@hapi/joi-date": "^2.0.1", + "@nlpjs/similarity": "^4.26.1", "async-retry": "^1.3.3", "axios": "^1.2.0", "bcrypt": "^5.1.0", @@ -98,7 +99,7 @@ "joi": "^17.7.0", "jsonwebtoken": "^8.5.1", "lodash.clonedeep": "^4.5.0", - "node-nlp": "^4.24.0", + "node-nlp": "^4.26.1", "node-schedule": "^2.1.0", "path-to-regexp": "^6.2.1", "pify": "^5.0.0", diff --git a/server/test/lib/brain/brain.e2e.test.js b/server/test/lib/brain/brain.e2e.test.js index 51fb89fd8f..2ddd715257 100644 --- a/server/test/lib/brain/brain.e2e.test.js +++ b/server/test/lib/brain/brain.e2e.test.js @@ -13,13 +13,13 @@ describe('brain end-to-end tests', () => { const service = { getService: fake.returns(null), }; - const messageHandler = new MessageHandler(event, brain, service); + const variable = { + getValue: fake.resolves(null), + }; + const messageHandler = new MessageHandler(event, brain, service, {}, variable); before('should train brain & add room', async () => { await brain.train(); - await brain.addRoom({ - id: '39332b3e-2e4a-465c-b049-b20cafb592ae', - name: 'kitchen', - }); + await brain.addNamedEntity('room', '39332b3e-2e4a-465c-b049-b20cafb592ae', 'kitchen'); }); it('should handle message', async () => { await messageHandler.create({ @@ -57,6 +57,7 @@ describe('brain end-to-end tests', () => { }, from: null, room: 'kitchen', + room_0: 'kitchen', slotFill: undefined, }); expect(nlpJsClassification.entities).to.deep.equal([ diff --git a/server/test/lib/brain/brain.test.js b/server/test/lib/brain/brain.test.js index e7127b95ca..9457d6a982 100644 --- a/server/test/lib/brain/brain.test.js +++ b/server/test/lib/brain/brain.test.js @@ -22,4 +22,34 @@ describe('brain', () => { }, }); }); + it('should add room, then get room by exact match', async () => { + await brain.addNamedEntity('room', '7beb1245-15b2-4808-b555-40bcc6e3900a', 'salon'); + const id = brain.getEntityIdByName('room', 'salon'); + expect(id).to.equal('7beb1245-15b2-4808-b555-40bcc6e3900a'); + }); + it('should add room, then get room (normalized)', async () => { + await brain.addNamedEntity('room', '7beb1245-15b2-4808-b555-40bcc6e3900a', 'SALON'); + const id = brain.getEntityIdByName('room', 'Salon'); + expect(id).to.equal('7beb1245-15b2-4808-b555-40bcc6e3900a'); + }); + it('should fail to get room (not found)', async () => { + await brain.addNamedEntity('room', '7beb1245-15b2-4808-b555-40bcc6e3900a', 'SALON'); + const id = brain.getEntityIdByName('room', 'KDFLMSKFMLSDFKL'); + expect(id).to.equal(undefined); + }); + it('should get unknown entity', async () => { + const id = brain.getEntityIdByName('totototo', 'KDFLMSKFMLSDFKL'); + expect(id).to.equal(undefined); + }); + it('should add scene, then get scene (normalized)', async () => { + brain.addNamedEntity('scene', 'cinema-mode', 'Cinema mode'); + brain.addNamedEntity('scene', 'cinema-2', 'cinema mode 2'); + const id = brain.getEntityIdByName('scene', 'cinema MODE'); + expect(id).to.equal('cinema-mode'); + }); + it('should add scene, then get scene normalized even with a big mistake', async () => { + brain.addNamedEntity('scene', 'coucher', 'Coucher de soleil'); + const id = brain.getEntityIdByName('scene', 'Couche de solei'); + expect(id).to.equal('coucher'); + }); }); diff --git a/server/test/lib/device/humidity-sensor/humidity-sensor.test.js b/server/test/lib/device/humidity-sensor/humidity-sensor.test.js index ebf5329567..39d154c838 100644 --- a/server/test/lib/device/humidity-sensor/humidity-sensor.test.js +++ b/server/test/lib/device/humidity-sensor/humidity-sensor.test.js @@ -90,8 +90,8 @@ describe('HumiditySensor.command', () => { }); it('should ask the humidity in a room with no values', async () => { const brain = { - addRoom: fake.returns(null), - removeRoom: fake.returns(null), + addNamedEntity: fake.returns(null), + removeNamedEntity: fake.returns(null), }; const stateManager = new StateManager(event); const deviceManager = new Device(event, messageManager, stateManager, {}, {}, {}, job); @@ -166,8 +166,8 @@ describe('HumiditySensor.command', () => { }); it('should return error when incorrect intent', async () => { const brain = { - addRoom: fake.returns(null), - removeRoom: fake.returns(null), + addNamedEntity: fake.returns(null), + removeNamedEntity: fake.returns(null), }; const stateManager = new StateManager(event); const deviceManager = new Device(event, messageManager, stateManager, {}, {}, {}, job); diff --git a/server/test/lib/gateway/gateway.forwardMessageToOpenAI.test.js b/server/test/lib/gateway/gateway.forwardMessageToOpenAI.test.js new file mode 100644 index 0000000000..676fec74b8 --- /dev/null +++ b/server/test/lib/gateway/gateway.forwardMessageToOpenAI.test.js @@ -0,0 +1,150 @@ +const { fake, assert } = require('sinon'); +const { expect } = require('chai'); +const proxyquire = require('proxyquire').noCallThru(); +const EventEmitter = require('events'); + +const GladysGatewayClientMock = require('./GladysGatewayClientMock.test'); + +const event = new EventEmitter(); + +const Gateway = proxyquire('../../../lib/gateway', { + '@gladysassistant/gladys-gateway-js': GladysGatewayClientMock, +}); + +const getConfig = require('../../../utils/getConfig'); +const { Error429 } = require('../../../utils/httpErrors'); + +const sequelize = { + close: fake.resolves(null), +}; + +const system = {}; + +const config = getConfig(); + +const job = { + wrapper: (type, func) => { + return async () => { + return func(); + }; + }, + updateProgress: fake.resolves({}), +}; + +describe('gateway.forwardMessageToOpenAI', () => { + let gateway; + let messageManager; + beforeEach(() => { + const variable = { + getValue: fake.resolves(null), + setValue: fake.resolves(null), + }; + const scheduler = {}; + messageManager = { + reply: fake.resolves(null), + replyByIntent: fake.resolves(null), + }; + const brain = { + getEntityIdByName: fake.returns('14a8ad23-78fa-45e4-8583-f5452792818d'), + }; + const serviceManager = {}; + const stateManager = {}; + gateway = new Gateway( + variable, + event, + system, + sequelize, + config, + {}, + stateManager, + serviceManager, + job, + scheduler, + messageManager, + brain, + ); + gateway.connected = true; + }); + + const previousQuestions = []; + const message = { + text: 'Turn on the light in the living room', + }; + const context = {}; + it('should get info response from OpenAI', async () => { + gateway.gladysGatewayClient.openAIAsk = fake.resolves({ + type: 'TURN_ON', + answer: 'Light are being turned on.', + room: 'living room', + }); + const classification = await gateway.forwardMessageToOpenAI({ message, previousQuestions, context }); + expect(classification).to.deep.equal({ + entities: [ + { + entity: 'room', + option: '14a8ad23-78fa-45e4-8583-f5452792818d', + sourceText: 'living room', + }, + ], + intent: 'light.turn-on', + }); + }); + it('should get info from OpenAI', async () => { + gateway.gladysGatewayClient.openAIAsk = fake.resolves({ + type: 'INFO', + answer: 'Jules Verne is a famous writer.', + room: null, + }); + const classification = await gateway.forwardMessageToOpenAI({ message, previousQuestions, context }); + expect(classification).to.deep.equal({ + intent: 'info.get-info', + }); + }); + it('should get temperature from OpenAI', async () => { + gateway.gladysGatewayClient.openAIAsk = fake.resolves({ + type: 'GET_TEMPERATURE', + answer: 'Getting the temperature...', + room: 'living room', + }); + const classification = await gateway.forwardMessageToOpenAI({ message, previousQuestions, context }); + expect(classification).to.deep.equal({ + entities: [ + { + entity: 'room', + option: '14a8ad23-78fa-45e4-8583-f5452792818d', + sourceText: 'living room', + }, + ], + intent: 'temperature-sensor.get-in-room', + }); + }); + it('should start scene from OpenAI', async () => { + gateway.gladysGatewayClient.openAIAsk = fake.resolves({ + type: 'SCENE_START', + answer: 'Starting scene..', + room: null, + scene: 'woodfire', + }); + const classification = await gateway.forwardMessageToOpenAI({ message, previousQuestions, context }); + expect(classification).to.deep.equal({ + entities: [ + { + entity: 'scene', + option: '14a8ad23-78fa-45e4-8583-f5452792818d', + sourceText: 'woodfire', + }, + ], + intent: 'scene.start', + }); + }); + it('should send too many requests message', async () => { + gateway.gladysGatewayClient.openAIAsk = fake.rejects(new Error429()); + await gateway.forwardMessageToOpenAI({ message, previousQuestions, context }); + assert.calledWith(messageManager.replyByIntent, message, 'openai.request.tooManyRequests', context); + }); + it('should send unknown error message', async () => { + gateway.gladysGatewayClient.openAIAsk = fake.rejects(new Error()); + await gateway.forwardMessageToOpenAI({ message, previousQuestions, context }); + assert.calledWith(messageManager.replyByIntent, message, 'openai.request.fail', context); + }); +}); diff --git a/server/test/lib/gateway/gateway.init.test.js b/server/test/lib/gateway/gateway.init.test.js index 7e41473378..e28f1ab903 100644 --- a/server/test/lib/gateway/gateway.init.test.js +++ b/server/test/lib/gateway/gateway.init.test.js @@ -73,7 +73,7 @@ describe('gateway.init', () => { }); it('check constructor event subscription', () => { - assert.callCount(event.on, 9); + assert.callCount(event.on, 10); }); it('check init well connected', async () => { diff --git a/server/test/lib/message/message.create.test.js b/server/test/lib/message/message.create.test.js index 2b5a278dca..1a22a5819d 100644 --- a/server/test/lib/message/message.create.test.js +++ b/server/test/lib/message/message.create.test.js @@ -1,5 +1,7 @@ const { expect } = require('chai'); +const { fake, assert } = require('sinon'); const EventEmitter = require('events'); +const db = require('../../../models'); const MessageHandler = require('../../../lib/message'); const classification = { intent: 'light.turnon', entities: [{ hey: 1 }], answer: 'nice' }; @@ -11,9 +13,12 @@ const service = { }; describe('message.create', () => { - const eventEmitter = new EventEmitter(); - const messageHandler = new MessageHandler(eventEmitter, brain, service); it('should create new message', async () => { + const variable = { + getValue: fake.resolves(null), + }; + const eventEmitter = new EventEmitter(); + const messageHandler = new MessageHandler(eventEmitter, brain, service, {}, variable); const newMessage = await messageHandler.create({ text: 'Turn on the light in the kitchen', language: 'en', @@ -27,4 +32,95 @@ describe('message.create', () => { }); expect(newMessage).to.have.property('message'); }); + it('should try to response with OpenAI', async () => { + const variable = { + getValue: fake.resolves('true'), + }; + const event = { + on: fake.returns(null), + emit: fake.returns(null), + }; + const messageHandler = new MessageHandler(event, brain, service, {}, variable); + const message = { + text: 'Turn on the light in the kitchen', + language: 'en', + source: 'client-api', + source_user_id: '0cd30aef-9c4e-4a23-88e3-3547971296e5', + user: { + id: '0cd30aef-9c4e-4a23-88e3-3547971296e5', + language: 'en', + }, + id: '5cd30aef-9c4e-4a23-88e3-3547971296e5', + }; + const newMessage = await messageHandler.create(message); + expect(newMessage).to.have.property('message'); + assert.calledWith(event.emit, 'message.new-for-open-ai', { + context: { user: { id: '0cd30aef-9c4e-4a23-88e3-3547971296e5', language: 'en' } }, + message, + previousQuestions: [], + }); + }); + it('should try to response with OpenAI and context', async () => { + const variable = { + getValue: fake.resolves('true'), + }; + const event = { + on: fake.returns(null), + emit: fake.returns(null), + }; + await db.Message.create({ + text: 'Question 1', + sender_id: '0cd30aef-9c4e-4a23-88e3-3547971296e5', + receiver_id: null, + is_read: true, + created_at: new Date('2023-02-09T09:55:05.766Z'), + }); + await db.Message.create({ + text: 'Answer 1', + sender_id: null, + receiver_id: '0cd30aef-9c4e-4a23-88e3-3547971296e5', + is_read: true, + created_at: new Date('2023-02-09T09:56:05.766Z'), + }); + await db.Message.create({ + text: 'Question 2', + sender_id: '0cd30aef-9c4e-4a23-88e3-3547971296e5', + receiver_id: null, + is_read: true, + created_at: new Date('2023-02-09T09:57:05.766Z'), + }); + await db.Message.create({ + text: 'Answer 2', + sender_id: null, + receiver_id: '0cd30aef-9c4e-4a23-88e3-3547971296e5', + is_read: true, + created_at: new Date('2023-02-09T09:58:05.766Z'), + }); + const messageHandler = new MessageHandler(event, brain, service, {}, variable); + const message = { + text: 'Turn on the light in the kitchen', + language: 'en', + source: 'client-api', + source_user_id: '0cd30aef-9c4e-4a23-88e3-3547971296e5', + user: { + id: '0cd30aef-9c4e-4a23-88e3-3547971296e5', + language: 'en', + }, + id: '5cd30aef-9c4e-4a23-88e3-3547971296e5', + }; + const newMessage = await messageHandler.create(message); + expect(newMessage).to.have.property('message'); + assert.calledOnce(event.emit); + expect(event.emit.getCall(0).args[0]).to.equal('message.new-for-open-ai'); + expect(event.emit.getCall(0).args[1]).to.deep.equal({ + context: { + user: { + id: '0cd30aef-9c4e-4a23-88e3-3547971296e5', + language: 'en', + }, + }, + message, + previousQuestions: [{ answer: 'Answer 2', question: 'Question 2' }], + }); + }); }); diff --git a/server/test/lib/room/room.test.js b/server/test/lib/room/room.test.js index b8f943736b..cf3c5abe24 100644 --- a/server/test/lib/room/room.test.js +++ b/server/test/lib/room/room.test.js @@ -6,8 +6,8 @@ const Room = require('../../../lib/room'); describe('room.create', () => { const brain = { - addRoom: fake.returns(null), - removeRoom: fake.returns(null), + addNamedEntity: fake.returns(null), + removeNamedEntity: fake.returns(null), }; const room = new Room(brain); it('should create a room', async () => { @@ -16,7 +16,7 @@ describe('room.create', () => { }); expect(newRoom).to.have.property('name', 'My test room'); expect(newRoom).to.have.property('selector', 'my-test-room'); - assert.calledOnce(brain.addRoom); + assert.calledOnce(brain.addNamedEntity); }); it('should not create a room (empty name)', async () => { const promise = room.create('test-house', { @@ -40,8 +40,8 @@ describe('room.create', () => { describe('room.update', () => { const brain = { - addRoom: fake.returns(null), - removeRoom: fake.returns(null), + addNamedEntity: fake.returns(null), + removeNamedEntity: fake.returns(null), }; const room = new Room(brain); it('should update a room', async () => { @@ -50,8 +50,8 @@ describe('room.update', () => { }); expect(newRoom).to.have.property('name', 'New name'); expect(newRoom).to.have.property('selector', 'test-room'); - assert.calledOnce(brain.removeRoom); - assert.calledOnce(brain.addRoom); + assert.calledOnce(brain.removeNamedEntity); + assert.calledOnce(brain.addNamedEntity); }); it('should return room not found', async () => { const promise = room.update('room-does-not-exist', { @@ -63,13 +63,13 @@ describe('room.update', () => { describe('room.destroy', () => { const brain = { - addRoom: fake.returns(null), - removeRoom: fake.returns(null), + addNamedEntity: fake.returns(null), + removeNamedEntity: fake.returns(null), }; const room = new Room(brain); it('should destroy a room', async () => { await room.destroy('test-room'); - assert.calledOnce(brain.removeRoom); + assert.calledOnce(brain.removeNamedEntity); }); it('should return room not found', async () => { const promise = room.destroy('room-does-not-exist'); @@ -79,8 +79,8 @@ describe('room.destroy', () => { describe('room.getBySelector', () => { const brain = { - addRoom: fake.returns(null), - removeRoom: fake.returns(null), + addNamedEntity: fake.returns(null), + removeNamedEntity: fake.returns(null), }; const room = new Room(brain); it('should get a room by selector', async () => { @@ -123,8 +123,8 @@ describe('room.getBySelector', () => { describe('room.getAll', () => { const brain = { - addRoom: fake.returns(null), - removeRoom: fake.returns(null), + addNamedEntity: fake.returns(null), + removeNamedEntity: fake.returns(null), }; const room = new Room(brain); it('should get all rooms', async () => { @@ -138,8 +138,8 @@ describe('room.getAll', () => { describe('room.get', () => { const brain = { - addRoom: fake.returns(null), - removeRoom: fake.returns(null), + addNamedEntity: fake.returns(null), + removeNamedEntity: fake.returns(null), }; const room = new Room(brain); it('should get rooms with expanded devices + features', async () => { diff --git a/server/test/lib/scene/scene.addScene.test.js b/server/test/lib/scene/scene.addScene.test.js index 7cebdc8a10..6c3a24a9bd 100644 --- a/server/test/lib/scene/scene.addScene.test.js +++ b/server/test/lib/scene/scene.addScene.test.js @@ -9,6 +9,7 @@ const SceneManager = require('../../../lib/scene'); describe('SceneManager.addScene', () => { const house = {}; const event = {}; + const brain = {}; let sceneManager; @@ -16,6 +17,8 @@ describe('SceneManager.addScene', () => { house.get = fake.resolves([]); event.on = fake.returns(null); event.emit = fake.returns(null); + brain.addNamedEntity = fake.returns(null); + brain.removeNamedEntity = fake.returns(null); const scheduler = { scheduleJob: (date, callback) => { @@ -27,7 +30,7 @@ describe('SceneManager.addScene', () => { }, }; - sceneManager = new SceneManager({}, event, {}, {}, {}, house, {}, {}, {}, scheduler); + sceneManager = new SceneManager({}, event, {}, {}, {}, house, {}, {}, {}, scheduler, brain); }); afterEach(() => { diff --git a/server/test/lib/scene/scene.cancelTriggers.test.js b/server/test/lib/scene/scene.cancelTriggers.test.js index 44062d6873..b15f24bb75 100644 --- a/server/test/lib/scene/scene.cancelTriggers.test.js +++ b/server/test/lib/scene/scene.cancelTriggers.test.js @@ -10,6 +10,8 @@ const event = new EventEmitter(); describe('SceneManager.cancelTriggers', () => { let sceneManager; + const brain = {}; + beforeEach(() => { const house = { get: fake.resolves([]), @@ -25,7 +27,10 @@ describe('SceneManager.cancelTriggers', () => { }, }; - sceneManager = new SceneManager({}, event, {}, {}, {}, house, {}, {}, {}, scheduler); + brain.addNamedEntity = fake.returns(null); + brain.removeNamedEntity = fake.returns(null); + + sceneManager = new SceneManager({}, event, {}, {}, {}, house, {}, {}, {}, scheduler, brain); }); afterEach(() => { diff --git a/server/test/lib/scene/scene.checkCalendarTriggers.test.js b/server/test/lib/scene/scene.checkCalendarTriggers.test.js index ab070c3656..4fbd6e4829 100644 --- a/server/test/lib/scene/scene.checkCalendarTriggers.test.js +++ b/server/test/lib/scene/scene.checkCalendarTriggers.test.js @@ -25,6 +25,7 @@ describe('scene.checkCalendarTriggers', () => { const calendar = new Calendar(); let sceneManager; let clock; + const brain = {}; const now = new Date(); const startDate = dayjs(now) .add(10, 'minute') @@ -34,7 +35,9 @@ describe('scene.checkCalendarTriggers', () => { .toDate(); beforeEach(async () => { clock = useFakeTimers(now); - sceneManager = new SceneManager(stateManager, event, {}, {}, {}, house, {}); + brain.addNamedEntity = fake.returns(null); + brain.removeNamedEntity = fake.returns(null); + sceneManager = new SceneManager(stateManager, event, {}, {}, {}, house, {}, {}, {}, {}, brain); await calendar.createEvent('test-calendar', { id: 'a2b57b0a-7148-4961-8540-e493104bfd7c', name: 'my test event', diff --git a/server/test/lib/scene/scene.checkTrigger.test.js b/server/test/lib/scene/scene.checkTrigger.test.js index 5a8bb563b8..458586be1e 100644 --- a/server/test/lib/scene/scene.checkTrigger.test.js +++ b/server/test/lib/scene/scene.checkTrigger.test.js @@ -17,6 +17,8 @@ describe('scene.checkTrigger', () => { setValue: fake.resolves(null), }; + const brain = {}; + beforeEach(() => { const house = { get: fake.resolves([]), @@ -32,9 +34,12 @@ describe('scene.checkTrigger', () => { }, }; + brain.addNamedEntity = fake.returns(null); + brain.removeNamedEntity = fake.returns(null); + const stateManager = new StateManager(); - sceneManager = new SceneManager(stateManager, event, device, {}, {}, house, {}, {}, {}, scheduler); + sceneManager = new SceneManager(stateManager, event, device, {}, {}, house, {}, {}, {}, scheduler, brain); }); afterEach(() => { diff --git a/server/test/lib/scene/scene.command.test.js b/server/test/lib/scene/scene.command.test.js new file mode 100644 index 0000000000..690e35e730 --- /dev/null +++ b/server/test/lib/scene/scene.command.test.js @@ -0,0 +1,57 @@ +const { fake, assert: assertSinon } = require('sinon'); +const EventEmitter = require('events'); +const SceneManager = require('../../../lib/scene'); + +const event = new EventEmitter(); + +describe('scene.command', () => { + const brain = {}; + const message = {}; + let sceneManager; + beforeEach(() => { + message.replyByIntent = fake.returns(null); + brain.addNamedEntity = fake.returns(null); + brain.removeNamedEntity = fake.returns(null); + sceneManager = new SceneManager({}, event, {}, message, {}, {}, {}, {}, {}, {}, brain); + sceneManager.execute = fake.resolves(null); + }); + it('should start scene', async () => { + const classification = { + intent: 'scene.start', + entities: [ + { + entity: 'scene', + option: 'my-scene', + sourceText: 'My scene', + }, + ], + }; + await sceneManager.command({}, classification, {}); + assertSinon.calledWith(sceneManager.execute, 'my-scene'); + assertSinon.calledWith(message.replyByIntent, {}, 'scene.start.success', {}); + }); + it('should throw error, scene not found', async () => { + const classification = { + intent: 'scene.start', + entities: [], + }; + await sceneManager.command({}, classification, {}); + assertSinon.notCalled(sceneManager.execute); + assertSinon.calledWith(message.replyByIntent, {}, 'scene.start.fail', {}); + }); + it('should throw error, scene not found', async () => { + const classification = { + intent: 'scene.start', + entities: [ + { + entity: 'scene', + option: undefined, + sourceText: 'My scene', + }, + ], + }; + await sceneManager.command({}, classification, {}); + assertSinon.notCalled(sceneManager.execute); + assertSinon.calledWith(message.replyByIntent, {}, 'scene.start.fail', {}); + }); +}); diff --git a/server/test/lib/scene/scene.create.test.js b/server/test/lib/scene/scene.create.test.js index 6fd58c724c..4ce64df631 100644 --- a/server/test/lib/scene/scene.create.test.js +++ b/server/test/lib/scene/scene.create.test.js @@ -1,4 +1,5 @@ const { assert, expect } = require('chai'); +const { fake, assert: assertSinon } = require('sinon'); const EventEmitter = require('events'); const { ACTIONS } = require('../../../utils/constants'); const SceneManager = require('../../../lib/scene'); @@ -6,8 +7,14 @@ const SceneManager = require('../../../lib/scene'); const event = new EventEmitter(); describe('SceneManager', () => { + const brain = {}; + let sceneManager; + beforeEach(() => { + brain.addNamedEntity = fake.returns(null); + brain.removeNamedEntity = fake.returns(null); + sceneManager = new SceneManager({}, event, {}, {}, {}, {}, {}, {}, {}, {}, brain); + }); it('should create one scene', async () => { - const sceneManager = new SceneManager({}, event); const scene = await sceneManager.create({ name: 'My living room', icon: 'bell', @@ -21,9 +28,9 @@ describe('SceneManager', () => { ], }); expect(scene).to.have.property('selector', 'my-living-room'); + assertSinon.calledOnce(brain.addNamedEntity); }); it('should create one scene with custom selector', async () => { - const sceneManager = new SceneManager({}, event); const scene = await sceneManager.create({ name: 'My living room', icon: 'bell', @@ -40,7 +47,6 @@ describe('SceneManager', () => { expect(scene).to.have.property('selector', 'my-custom-selector'); }); it('should return validation error, invalid actions', async () => { - const sceneManager = new SceneManager({}, event); const promise = sceneManager.create({ name: 'My living room', icon: 'bell', diff --git a/server/test/lib/scene/scene.dailyUpdate.test.js b/server/test/lib/scene/scene.dailyUpdate.test.js index 45636167e4..bbee507e8b 100644 --- a/server/test/lib/scene/scene.dailyUpdate.test.js +++ b/server/test/lib/scene/scene.dailyUpdate.test.js @@ -33,6 +33,7 @@ describe('SceneManager.dailyUpdate', () => { const event = {}; const variable = {}; const scheduler = {}; + const brain = {}; beforeEach(async () => { house.get = fake.resolves([ @@ -51,10 +52,12 @@ describe('SceneManager.dailyUpdate', () => { }; event.on = fake.resolves(null); event.emit = fake.resolves(null); + brain.addNamedEntity = fake.returns(null); + brain.removeNamedEntity = fake.returns(null); variable.getValue = fake.resolves('UTC'); - sceneManager = new SceneManager({}, event, {}, {}, variable, house, {}, {}, {}, scheduler); + sceneManager = new SceneManager({}, event, {}, {}, variable, house, {}, {}, {}, scheduler, brain); await sceneManager.init(); // Reset all fakes invoked within init call sinon.reset(); diff --git a/server/test/lib/scene/scene.destroy.test.js b/server/test/lib/scene/scene.destroy.test.js index be168d911a..2c1042948f 100644 --- a/server/test/lib/scene/scene.destroy.test.js +++ b/server/test/lib/scene/scene.destroy.test.js @@ -1,21 +1,28 @@ const { assert, expect } = require('chai'); +const { fake, assert: assertSinon } = require('sinon'); const EventEmitter = require('events'); const SceneManager = require('../../../lib/scene'); const event = new EventEmitter(); -describe('SceneManager', () => { +describe('scene.destroy', () => { + const brain = {}; + let sceneManager; + beforeEach(() => { + brain.addNamedEntity = fake.returns(null); + brain.removeNamedEntity = fake.returns(null); + sceneManager = new SceneManager({}, event, {}, {}, {}, {}, {}, {}, {}, {}, brain); + }); it('should destroy a scene', async () => { - const sceneManager = new SceneManager({}, event); sceneManager.scenes['test-scene'] = { name: 'Test Scene', triggers: [], }; await sceneManager.destroy('test-scene'); - expect(sceneManager.scenes['test-scene']).to.be.undefined; // eslint-disable-line + expect(sceneManager.scenes['test-scene']).to.equal(undefined); + assertSinon.calledOnce(brain.removeNamedEntity); }); it('should return not found', async () => { - const sceneManager = new SceneManager({}, event); const promise = sceneManager.destroy('not-found-scene'); return assert.isRejected(promise); }); diff --git a/server/test/lib/scene/scene.duplicate.test.js b/server/test/lib/scene/scene.duplicate.test.js index 93e7074efb..91236dab30 100644 --- a/server/test/lib/scene/scene.duplicate.test.js +++ b/server/test/lib/scene/scene.duplicate.test.js @@ -1,11 +1,15 @@ const { expect, assert } = require('chai'); +const { fake, assert: assertSinon } = require('sinon'); const EventEmitter = require('events'); const SceneManager = require('../../../lib/scene'); const { ACTIONS, EVENTS } = require('../../../utils/constants'); const event = new EventEmitter(); -describe('SceneManager', () => { +describe('scene.duplicate', () => { + const brain = {}; + let sceneManager; + const scheduler = { scheduleJob: (date, callback) => { return { @@ -16,9 +20,13 @@ describe('SceneManager', () => { }, }; - it('should duplicate a scene', async () => { - const sceneManager = new SceneManager({}, event, {}, {}, {}, {}, {}, {}, {}, scheduler); + beforeEach(() => { + brain.addNamedEntity = fake.returns(null); + brain.removeNamedEntity = fake.returns(null); + sceneManager = new SceneManager({}, event, {}, {}, {}, {}, {}, {}, {}, scheduler, brain); + }); + it('should duplicate a scene', async () => { const duplicatedScene = await sceneManager.duplicate('to-duplicate-scene', 'new-name', 'new-icon'); expect(sceneManager.scenes['new-name']).not.to.equal(undefined); @@ -39,11 +47,11 @@ describe('SceneManager', () => { time: '12:00', }, ]); + assertSinon.calledOnce(brain.addNamedEntity); }); it('should return not found', async () => { - const sceneManager = new SceneManager({}, event); - const promise = sceneManager.duplicate('not-found-scene', 'new-name'); + const promise = sceneManager.duplicate('not-found-scene', 'new-name', 'new-icon'); return assert.isRejected(promise); }); }); diff --git a/server/test/lib/scene/scene.execute.test.js b/server/test/lib/scene/scene.execute.test.js index 69fc031dc7..64fc7455b1 100644 --- a/server/test/lib/scene/scene.execute.test.js +++ b/server/test/lib/scene/scene.execute.test.js @@ -5,17 +5,21 @@ const { ACTIONS } = require('../../../utils/constants'); const SceneManager = require('../../../lib/scene'); const StateManager = require('../../../lib/state'); -const event = new EventEmitter(); - -const light = { - turnOn: fake.resolves(null), -}; - -describe('SceneManager', () => { +describe('scene.execute', () => { let sandbox; + const event = new EventEmitter(); + const brain = {}; + const device = {}; + let stateManager; + let sceneManager; beforeEach(() => { sandbox = createSandbox(); + brain.addNamedEntity = fake.returns(null); + brain.removeNamedEntity = fake.returns(null); + device.setValue = fake.resolves(null); + stateManager = new StateManager(event); + sceneManager = new SceneManager(stateManager, event, device, {}, {}, {}, {}, {}, {}, {}, brain); }); afterEach(() => { @@ -23,11 +27,6 @@ describe('SceneManager', () => { }); it('should execute one scene', async () => { - const stateManager = new StateManager(event); - const device = { - setValue: fake.resolves(null), - }; - const sceneManager = new SceneManager(stateManager, event, device); const scene = { selector: 'my-scene', triggers: [], @@ -54,16 +53,11 @@ describe('SceneManager', () => { }); }); it('should execute one scene and abort scene', async () => { - const stateManager = new StateManager(event); stateManager.setState('deviceFeature', 'my-device-feature', { category: 'light', type: 'binary', last_value: 15, }); - const device = { - setValue: fake.resolves(null), - }; - const sceneManager = new SceneManager(stateManager, event, device); const scene = { selector: 'my-scene', triggers: [], @@ -105,16 +99,11 @@ describe('SceneManager', () => { }); }); it('should execute one scene, crash but not crash here', async () => { - const stateManager = new StateManager(event); stateManager.setState('deviceFeature', 'my-device-feature', { category: 'light', type: 'binary', last_value: 15, }); - const device = { - setValue: fake.resolves(null), - }; - const sceneManager = new SceneManager(stateManager, event, device); const scene = { selector: 'my-scene', triggers: [], @@ -137,13 +126,9 @@ describe('SceneManager', () => { }); }); it('scene does not exist', async () => { - const sceneManager = new SceneManager(light, event); return sceneManager.execute('thisscenedoesnotexist'); }); it('should execute chained scenes', async () => { - const stateManager = new StateManager(event); - const sceneManager = new SceneManager(stateManager, event); - const executeSpy = sandbox.spy(sceneManager, 'execute'); const scope = {}; const scene = { @@ -192,9 +177,6 @@ describe('SceneManager', () => { }); it('should prevent infinite loop', async () => { - const stateManager = new StateManager(event); - const sceneManager = new SceneManager(stateManager, event); - const executeSpy = sandbox.spy(sceneManager, 'execute'); const scope = {}; const scene = { diff --git a/server/test/lib/scene/scene.getBySelector.test.js b/server/test/lib/scene/scene.getBySelector.test.js index 80725721b4..e48c5d23a8 100644 --- a/server/test/lib/scene/scene.getBySelector.test.js +++ b/server/test/lib/scene/scene.getBySelector.test.js @@ -5,7 +5,7 @@ const SceneManager = require('../../../lib/scene'); const event = new EventEmitter(); -describe('SceneManager', () => { +describe('scene.getBySelector', () => { it('should get a scene by selector', async () => { const sceneManager = new SceneManager({}, event); const scene = await sceneManager.getBySelector('test-scene'); diff --git a/server/test/lib/scene/scene.init.test.js b/server/test/lib/scene/scene.init.test.js index e00da0f1c0..4c06fce42d 100644 --- a/server/test/lib/scene/scene.init.test.js +++ b/server/test/lib/scene/scene.init.test.js @@ -4,10 +4,11 @@ const SceneManager = require('../../../lib/scene'); const { fake, assert } = sinon; -describe('SceneManager.init', () => { +describe('scene.init', () => { const event = {}; const house = {}; const scheduler = {}; + const brain = {}; const variable = {}; @@ -15,15 +16,16 @@ describe('SceneManager.init', () => { beforeEach(() => { event.on = fake.returns(null); event.emit = fake.returns(null); - + brain.addNamedEntity = fake.returns(null); + brain.removeNamedEntity = fake.returns(null); house.get = fake.resolves([]); - variable.getValue = () => Promise.resolve(null); - variable.setValue = () => Promise.resolve(null); + variable.getValue = fake.resolves(null); + variable.setValue = fake.resolves(null); scheduler.scheduleJob = fake.returns(true); - sceneManager = new SceneManager({}, event, {}, {}, variable, house, {}, {}, {}, scheduler); + sceneManager = new SceneManager({}, event, {}, {}, variable, house, {}, {}, {}, scheduler, brain); }); afterEach(() => { diff --git a/server/test/lib/scene/scene.update.test.js b/server/test/lib/scene/scene.update.test.js index 98c9aae9df..fd5c076da9 100644 --- a/server/test/lib/scene/scene.update.test.js +++ b/server/test/lib/scene/scene.update.test.js @@ -1,23 +1,31 @@ const { assert, expect } = require('chai'); +const { fake, assert: assertSinon } = require('sinon'); const EventEmitter = require('events'); const SceneManager = require('../../../lib/scene'); const event = new EventEmitter(); -describe('SceneManager', () => { +describe('scene.update', () => { + const brain = {}; + let sceneManager; + beforeEach(() => { + brain.addNamedEntity = fake.returns(null); + brain.removeNamedEntity = fake.returns(null); + sceneManager = new SceneManager({}, event, {}, {}, {}, {}, {}, {}, {}, {}, brain); + }); it('should update a scene', async () => { - const sceneManager = new SceneManager({}, event); const scene = await sceneManager.update('test-scene', { name: 'Name updated', }); expect(scene).to.have.property('selector', 'test-scene'); expect(scene).to.have.property('name', 'Name updated'); + assertSinon.calledOnce(brain.addNamedEntity); + assertSinon.calledOnce(brain.removeNamedEntity); }); it('should return not found', async () => { - const sceneManager = new SceneManager({}, event); const promise = sceneManager.update('not-found-scene', { name: 'Updated scene', }); - return assert.isRejected(promise); + return assert.isRejected(promise, 'Scene not found'); }); }); diff --git a/server/utils/constants.js b/server/utils/constants.js index 08194d7135..8000cb605b 100644 --- a/server/utils/constants.js +++ b/server/utils/constants.js @@ -55,6 +55,7 @@ const SYSTEM_VARIABLE_NAMES = { GLADYS_GATEWAY_GOOGLE_HOME_USER_IS_CONNECTED_WITH_GATEWAY: 'GLADYS_GATEWAY_GOOGLE_HOME_USER_IS_CONNECTED_WITH_GATEWAY', GLADYS_GATEWAY_ALEXA_USER_IS_CONNECTED_WITH_GATEWAY: 'GLADYS_GATEWAY_ALEXA_USER_IS_CONNECTED_WITH_GATEWAY', + GLADYS_GATEWAY_OPEN_AI_ENABLED: 'GLADYS_GATEWAY_OPEN_AI_ENABLED', TIMEZONE: 'TIMEZONE', }; @@ -153,6 +154,7 @@ const EVENTS = { }, MESSAGE: { NEW: 'message.new', + NEW_FOR_OPEN_AI: 'message.new-for-open-ai', }, SYSTEM: { DOWNLOAD_UPGRADE: 'system.download-upgrade', @@ -307,6 +309,9 @@ const INTENTS = { CAMERA: { GET_IMAGE_ROOM: 'intent.camera.get-image-room', }, + SCENE: { + START: 'intent.scene.start', + }, }; const DEVICE_FEATURE_CATEGORIES = { From 87eca74e0e3e93be43dccfa6611abb10f83e7d53 Mon Sep 17 00:00:00 2001 From: Pierre-Gilles Leymarie Date: Fri, 10 Feb 2023 16:52:49 +0700 Subject: [PATCH 147/164] Improve dashboard re-order UX on mobile (#1707) --- front/src/components/boxs/baseEditBox.jsx | 39 ++++++++++++-- .../src/components/boxs/camera/EditCamera.jsx | 2 +- front/src/components/boxs/chart/EditChart.jsx | 2 +- .../boxs/device-in-room/EditDeviceInRoom.jsx | 7 +-- front/src/config/i18n/en.json | 4 +- front/src/config/i18n/fr.json | 4 +- .../edit-dashboard/AutoScrollMobile.jsx | 51 +++++++++++++++++++ .../edit-dashboard/BottomDropZone.jsx | 2 +- .../edit-dashboard/EditBoxColumns.jsx | 29 +++++++++-- .../edit-dashboard/EditDashboard.jsx | 2 + .../routes/dashboard/edit-dashboard/index.js | 12 ++++- .../routes/dashboard/edit-dashboard/style.css | 27 ++++++++++ 12 files changed, 163 insertions(+), 18 deletions(-) create mode 100644 front/src/routes/dashboard/edit-dashboard/AutoScrollMobile.jsx diff --git a/front/src/components/boxs/baseEditBox.jsx b/front/src/components/boxs/baseEditBox.jsx index 1fbfb70971..1c8a7081ce 100644 --- a/front/src/components/boxs/baseEditBox.jsx +++ b/front/src/components/boxs/baseEditBox.jsx @@ -32,6 +32,32 @@ const BaseEditBox = ({ children, ...props }) => { const removeBox = () => { props.removeBox(x, y); }; + if (props.isMobileReordering) { + return ( +
+
+
+
+ +
+
+ +
+
{props.titleValue && {props.titleValue}}
+
+
+
+ ); + } return (
{ >

- + {props.isMobileReordering && } + {props.titleKey && }

- - - - + + {!props.isMobileReordering && ( + + + + )}
{children}
diff --git a/front/src/components/boxs/camera/EditCamera.jsx b/front/src/components/boxs/camera/EditCamera.jsx index 09eb27cf83..f6a95df0a1 100644 --- a/front/src/components/boxs/camera/EditCamera.jsx +++ b/front/src/components/boxs/camera/EditCamera.jsx @@ -4,7 +4,7 @@ import { Text, Localizer } from 'preact-i18n'; import BaseEditBox from '../baseEditBox'; const EditCameraBox = ({ children, ...props }) => ( - +