From fae5f2b3f8dc352ec6e55adda54f9038c1649ab9 Mon Sep 17 00:00:00 2001 From: Jared Stull Date: Thu, 3 Mar 2022 05:17:24 -0600 Subject: [PATCH] Submission of 3 Headstorm challenges --- challenges/README.md | 58 +- challenges/backend/.gitignore | 1 + challenges/backend/index.js | 43 + challenges/backend/package-lock.json | 2884 +++++++++++++++++ challenges/backend/package.json | 16 + challenges/database/.gitignore | 1 + challenges/database/data.json | 57 + .../database/database_challenge_erd.jpg | Bin 0 -> 42756 bytes challenges/database/main.py | 55 + challenges/frontend/css/style.css | 68 + challenges/frontend/images/favicon.ico | Bin 0 -> 124681 bytes challenges/frontend/index.html | 69 + 12 files changed, 3211 insertions(+), 41 deletions(-) create mode 100644 challenges/backend/.gitignore create mode 100644 challenges/backend/index.js create mode 100644 challenges/backend/package-lock.json create mode 100644 challenges/backend/package.json create mode 100644 challenges/database/.gitignore create mode 100644 challenges/database/data.json create mode 100644 challenges/database/database_challenge_erd.jpg create mode 100644 challenges/database/main.py create mode 100644 challenges/frontend/css/style.css create mode 100644 challenges/frontend/images/favicon.ico create mode 100644 challenges/frontend/index.html diff --git a/challenges/README.md b/challenges/README.md index 9b21e014b..92db8548e 100644 --- a/challenges/README.md +++ b/challenges/README.md @@ -1,57 +1,33 @@ # Headstorm Programming Challenges - The following is a set of front-end, back-end, and database challenges that can be completed to supplement your resume as part of the interview process with Headstorm. Technology is a core element of our culture at Headstorm and we hope you find these challenges interesting. Complete as many of the challenges as you desire. It is acceptable to submit an incomplete solution to any challenge. - -### Submission Instructions - - Submit a [Pull Request](https://help.github.com/en/articles/about-pull-requests) (PR) to this repository. Once your PR is created, engineers at Headstorm will review the request and engage in commentary and questions on your PR. +These are my solutions to the 3 challenges provided. ## Front End Challenge -A company has approached you for help in developing their product and establishing an online presence. You have been tasked with quickly creating a web page for them. This page has the following requirements: - -* Company name title +The front end proved troublesome in regards to the reCaptcha v3 verification. Setting up the page itesl (icon, title, and form) was easy enough, but I was unable to print info to console when integrating reCaptcha. Advice on how to accomplish this would be greatly appreciated. -* Company logo as icon in browser tab +## Backend Challenge -* Contact us web form that captures contact information +Three APIs at the endpoint /data with the features below: -* Google reCaptcha V3 implement in page. Submission of form requires Google captcha pass +- GET the list of numbers after being sorted. -* Dump all the information from the form submission to browser console. Google reCaptcha Reference: https://developers.google.com/recaptcha/docs/display +- POST a list of numbers with the following format: `{"numbers":[1,2,...,500]}` -## Back End Challenge +**BONUS:** - Create a [REST API](https://www.restapitutorial.com) using any language or web framework you prefer, which performs the following functionality: - - Provides a POST endpoint at `/data` where a user submits a JSON formatted list of 500 random numbers. The list has to be exactly 500 numbers, if there are more or less than 500 an error must be returned. Similarly, if something other than a list of numbers is submitted, an error must be returned. - - Provides a GET endpoint at `/data` which provides the same JSON formatted list of 500 numbers that are sorted from lowest to highest. - - **BONUS:** - - - Provides a PATCH endpoint at `/data` which allows insertion of a single number into the list which gets placed in the proper order. - +- PATCH a number into the list in the following JSON format: `{"number":1}`. +
The number will be placed into the list in sorted order. -## Database Challenge - - **Part 1** - - The client chose to use a NoSQL database in their original system so that they could skip data modeling. The number of users for their system is growing rapidly. To support the new demands the client has chosen to move to a relational database. Please review the current data stored in the NoSQL database and submit a new relational data model visualization. +API testing done using Postman on localhost:3000. -Startup Order NoSQL Database +Created with express and node.js. Run using: -|Field Name | Type | Sample Value | -| --------- | ------ | ------------ | -|Record ID | Number | 1234 | -|Name | String | Joe Smith | -|Cell Phone | String | 405.867.5309 | -|Work Phone | String | 123.123.1234 | -|Email | String |joe_s@gmail.com | -|Address | String | 123 Vic Way, Dallas TX 75001 | -|Basic Widget Order | Number | 37 | -|Advanced Widget Order | Number | 12 | -|Protection Plan | Boolean | True | +```text +npm install +node index.js +``` -**Part 2** +## Database Challenge - The next step is to create a solution for the client that can migrate the data from their current database to your new relational database. Write a basic program in a language of your choice such as Python or Java. Read in a JSON file that contains the records from the old database, format the data to match your new data model, and print SQL statements to console/standard IO that would insert these records into the new database. - +The database program reads data from a "data.json" file which is checked for. The program also checks whether a person's name exist so that the same customer ID can be assigned to the current widget order. It was done in a python 3.10 venv. diff --git a/challenges/backend/.gitignore b/challenges/backend/.gitignore new file mode 100644 index 000000000..b512c09d4 --- /dev/null +++ b/challenges/backend/.gitignore @@ -0,0 +1 @@ +node_modules \ No newline at end of file diff --git a/challenges/backend/index.js b/challenges/backend/index.js new file mode 100644 index 000000000..16f86bd7d --- /dev/null +++ b/challenges/backend/index.js @@ -0,0 +1,43 @@ +const express = require("express"); +const bodyParser = require("body-parser"); +const app = express(); + +let nums = []; + +app.use(bodyParser.json()); + +app.get("/data", function (req, res) { + // Array will be sorted with any new GET requests + nums.sort(function (a, b) { + return a - b; + }); + res.json(nums); +}); + +app.post("/data", function (req, res) { + const data = req.body.numbers; + + // Accept data if it contains 500 elements and every element is a number + if (data.length == 500 && data.every((e) => !isNaN(e))) { + nums = data; + res.send("Data submitted."); + } else { + res.send( + "Error with data. Submitted data must contain exactly 500 numbers and only numbers." + ); + } +}); + +app.patch("/data", function (req, res) { + const data = req.body.number; + + // Accept data if it is a number + if (!isNaN(data)) { + nums.push(data); + res.send("Data submitted."); + } else { + res.send("Error with data. Submitted data must be a number."); + } +}); + +app.listen(3000, () => console.log("Server running on port 3000")); diff --git a/challenges/backend/package-lock.json b/challenges/backend/package-lock.json new file mode 100644 index 000000000..141d5c4d6 --- /dev/null +++ b/challenges/backend/package-lock.json @@ -0,0 +1,2884 @@ +{ + "name": "backend", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "body-parser": "^1.19.2", + "express": "^4.17.3", + "nodemon": "^2.0.15" + } + }, + "node_modules/@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZdatai+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "engines": { + "node": ">=6" + } + }, + "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==", + "dependencies": { + "defer-to-connect": "^1.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "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.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/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==", + "dependencies": { + "string-width": "^4.1.0" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "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==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "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/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.9.7", + "data-body": "2.4.3", + "type-is": "~1.6.18" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/boxen": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", + "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", + "dependencies": { + "ansi-align": "^3.0.0", + "camelcase": "^6.2.0", + "chalk": "^4.1.0", + "cli-boxes": "^2.2.1", + "string-width": "^4.2.2", + "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/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==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "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==", + "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==", + "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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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/chalk/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==", + "engines": { + "node": ">=8" + } + }, + "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==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "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==" + }, + "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==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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=", + "dependencies": { + "mimic-response": "^1.0.0" + } + }, + "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==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "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==" + }, + "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/configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "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/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==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "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.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "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/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==", + "engines": { + "node": ">=8" + } + }, + "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/decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "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/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==" + }, + "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/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" + }, + "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/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==" + }, + "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/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==", + "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/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/express": { + "version": "4.17.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz", + "integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.19.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.4.2", + "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.7", + "qs": "6.9.7", + "range-parser": "~1.2.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", + "vary": "~1.1.2" + }, + "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==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "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/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.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==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "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==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "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==", + "dependencies": { + "ini": "2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "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.9", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", + "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "engines": { + "node": ">=4" + } + }, + "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==", + "engines": { + "node": ">=8" + } + }, + "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==" + }, + "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==", + "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/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/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=" + }, + "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=", + "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=", + "engines": { + "node": ">=0.8.19" + } + }, + "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": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "engines": { + "node": ">=10" + } + }, + "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==", + "engines": { + "node": ">= 0.10" + } + }, + "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==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "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=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "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==", + "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-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==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "engines": { + "node": ">=0.12.0" + } + }, + "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==", + "engines": { + "node": ">=8" + } + }, + "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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "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==" + }, + "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=" + }, + "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==", + "dependencies": { + "json-buffer": "3.0.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==", + "dependencies": { + "package-json": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "engines": { + "node": ">=0.10.0" + } + }, + "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/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/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==", + "bin": { + "semver": "bin/semver.js" + } + }, + "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/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.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "dependencies": { + "mime-db": "1.51.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==", + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "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/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/nodemon": { + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.15.tgz", + "integrity": "sha512-gdHMNx47Gw7b3kWxJV64NI+Q5nfl0y5DgDbiVtShiwa7Z0IZ07Ll4RLFo6AjrhzMtoEZn5PDE3/c2AbVsiCkpA==", + "hasInstallScript": true, + "dependencies": { + "chokidar": "^3.5.2", + "debug": "^3.2.7", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.0.4", + "pstree.remy": "^1.1.8", + "semver": "^5.7.1", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5", + "update-notifier": "^5.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==", + "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==" + }, + "node_modules/nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "*" + } + }, + "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==", + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "engines": { + "node": ">=8" + } + }, + "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/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dependencies": { + "wrappy": "1" + } + }, + "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==", + "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==", + "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==", + "bin": { + "semver": "bin/semver.js" + } + }, + "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-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/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "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=", + "engines": { + "node": ">=4" + } + }, + "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==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "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==" + }, + "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/pupa": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", + "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", + "dependencies": { + "escape-goat": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==", + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/data-body": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/data-body/-/data-body-2.4.3.tgz", + "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "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/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "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==", + "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==", + "dependencies": { + "rc": "^1.2.8" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "dependencies": { + "lowercase-keys": "^1.0.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "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/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/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==", + "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==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/send": { + "version": "0.17.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", + "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", + "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.8.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/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==" + }, + "node_modules/serve-static": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", + "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "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/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==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "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==", + "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==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "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==", + "dependencies": { + "nopt": "~1.0.10" + }, + "bin": { + "nodetouch": "bin/nodetouch.js" + } + }, + "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==", + "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==", + "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==", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==" + }, + "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==", + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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": "5.1.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", + "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", + "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/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/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=", + "dependencies": { + "prepend-http": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "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/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/widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "dependencies": { + "string-width": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "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/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==", + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + }, + "dependencies": { + "@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZdatai+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" + }, + "@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==", + "requires": { + "defer-to-connect": "^1.0.1" + } + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "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==", + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "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==", + "requires": { + "string-width": "^4.1.0" + } + }, + "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" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" + }, + "body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==", + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.9.7", + "data-body": "2.4.3", + "type-is": "~1.6.18" + } + }, + "boxen": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", + "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", + "requires": { + "ansi-align": "^3.0.0", + "camelcase": "^6.2.0", + "chalk": "^4.1.0", + "cli-boxes": "^2.2.1", + "string-width": "^4.2.2", + "type-fest": "^0.20.2", + "widest-line": "^3.1.0", + "wrap-ansi": "^7.0.0" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" + }, + "cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "requires": { + "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" + }, + "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==", + "requires": { + "pump": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" + } + } + }, + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==" + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "cli-boxes": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==" + }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "requires": { + "mimic-response": "^1.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==", + "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==" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "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" + } + }, + "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==", + "requires": { + "safe-buffer": "5.2.1" + } + }, + "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==" + }, + "cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "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==" + }, + "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" + } + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "requires": { + "mimic-response": "^1.0.0" + } + }, + "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==" + }, + "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==" + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "requires": { + "is-obj": "^2.0.0" + } + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "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==" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } + }, + "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==" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "express": { + "version": "4.17.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz", + "integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==", + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.19.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.4.2", + "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.7", + "qs": "6.9.7", + "range-parser": "~1.2.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", + "vary": "~1.1.2" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + } + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "optional": 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==", + "requires": { + "pump": "^3.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "requires": { + "is-glob": "^4.0.1" + } + }, + "global-dirs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", + "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", + "requires": { + "ini": "2.0.0" + } + }, + "got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "requires": { + "@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" + } + }, + "graceful-fs": { + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", + "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "has-yarn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==" + }, + "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==" + }, + "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==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "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=" + }, + "import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=" + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==" + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + }, + "is-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==", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "requires": { + "ci-info": "^2.0.0" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "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==", + "requires": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + } + }, + "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==" + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" + }, + "is-path-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==" + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "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==" + }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" + }, + "keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "requires": { + "json-buffer": "3.0.0" + } + }, + "latest-version": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", + "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", + "requires": { + "package-json": "^6.3.0" + } + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==" + }, + "mime-types": { + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "requires": { + "mime-db": "1.51.0" + } + }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "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==" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" + }, + "nodemon": { + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.15.tgz", + "integrity": "sha512-gdHMNx47Gw7b3kWxJV64NI+Q5nfl0y5DgDbiVtShiwa7Z0IZ07Ll4RLFo6AjrhzMtoEZn5PDE3/c2AbVsiCkpA==", + "requires": { + "chokidar": "^3.5.2", + "debug": "^3.2.7", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.0.4", + "pstree.remy": "^1.1.8", + "semver": "^5.7.1", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5", + "update-notifier": "^5.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + } + } + }, + "nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", + "requires": { + "abbrev": "1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "normalize-url": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==" + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" + }, + "package-json": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "requires": { + "got": "^9.6.0", + "registry-auth-token": "^4.0.0", + "registry-url": "^5.0.0", + "semver": "^6.2.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "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=" + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" + }, + "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==", + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + } + }, + "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==" + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pupa": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", + "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", + "requires": { + "escape-goat": "^2.0.0" + } + }, + "qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==" + }, + "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==" + }, + "data-body": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/data-body/-/data-body-2.4.3.tgz", + "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==", + "requires": { + "bytes": "3.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "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": { + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + } + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "requires": { + "picomatch": "^2.2.1" + } + }, + "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==", + "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==", + "requires": { + "rc": "^1.2.8" + } + }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "requires": { + "lowercase-keys": "^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==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "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==", + "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==" + } + } + }, + "send": { + "version": "0.17.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", + "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", + "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.8.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + } + } + }, + "serve-static": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", + "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.2" + } + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "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==" + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "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-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "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==" + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" + }, + "touch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "requires": { + "nopt": "~1.0.10" + } + }, + "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==" + }, + "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==", + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==" + }, + "unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "requires": { + "crypto-random-string": "^2.0.0" + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "update-notifier": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", + "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", + "requires": { + "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" + }, + "dependencies": { + "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" + } + } + } + }, + "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=", + "requires": { + "prepend-http": "^2.0.0" + } + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "requires": { + "string-width": "^4.0.0" + } + }, + "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" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "xdg-basedir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==" + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } +} diff --git a/challenges/backend/package.json b/challenges/backend/package.json new file mode 100644 index 000000000..da8a67857 --- /dev/null +++ b/challenges/backend/package.json @@ -0,0 +1,16 @@ +{ + "name": "backend", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC", + "dependencies": { + "body-parser": "^1.19.2", + "express": "^4.17.3", + "nodemon": "^2.0.15" + } +} diff --git a/challenges/database/.gitignore b/challenges/database/.gitignore new file mode 100644 index 000000000..b694934fb --- /dev/null +++ b/challenges/database/.gitignore @@ -0,0 +1 @@ +.venv \ No newline at end of file diff --git a/challenges/database/data.json b/challenges/database/data.json new file mode 100644 index 000000000..7d3374f71 --- /dev/null +++ b/challenges/database/data.json @@ -0,0 +1,57 @@ +[ + { + "rec_id": 1234, + "name": "Joe Smith", + "cell": "405.867.5309", + "work": "123.123.1234", + "email": "joe_s@gmail.com", + "address": "123 Vic Way, Dallas TX, 75001", + "basic": 37, + "advanced": 12, + "plan": true + }, + { + "rec_id": 5678, + "name": "Jane Doe", + "cell": "974.238.5939", + "work": "569.301.0420", + "email": "jane_d@gmail.com", + "address": "456 Civ Street, Houston TX, 77095", + "basic": 12, + "advanced": 37, + "plan": false + }, + { + "rec_id": 9012, + "name": "Joe Smith", + "cell": "405.867.5309", + "work": "123.123.1234", + "email": "joe_s@gmail.com", + "address": "123 Vic Way, Dallas TX, 75001", + "basic": 48, + "advanced": 24, + "plan": false + }, + { + "rec_id": 7895, + "name": "J Jonah Jameson", + "cell": "974.238.5939", + "work": "569.301.0420", + "email": "jane_d@gmail.com", + "address": "456 Civ Street, Houston TX, 77095", + "basic": 12, + "advanced": 37, + "plan": false + }, + { + "rec_id": 5632, + "name": "Jane Doe", + "cell": "974.238.5939", + "work": "569.301.0420", + "email": "jane_d@gmail.com", + "address": "456 Civ Street, Houston TX, 77095", + "basic": 12, + "advanced": 37, + "plan": false + } +] diff --git a/challenges/database/database_challenge_erd.jpg b/challenges/database/database_challenge_erd.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4dffc30f3843e1bbd6bcca565582a032dbbb5b8f GIT binary patch literal 42756 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 literal 0 HcmV?d00001 diff --git a/challenges/database/main.py b/challenges/database/main.py new file mode 100644 index 000000000..21b51dcb0 --- /dev/null +++ b/challenges/database/main.py @@ -0,0 +1,55 @@ +import json + +def createQuery(filename): + try: + with open(filename, "r") as data_file: + data = json.load(data_file) + except FileNotFoundError: + print(f"{filename} not found") + else: + # Dictionary to tie customer name to an ID + cust_dict = {} + i = 1 + print( + 'CREATE TABLE customers (\n' + 'cust_id INT NOT NULL\n' + 'name VARCHAR(255) NOT NULL,\n' + 'cell VARCHAR(12) NOT NULL,\n' + 'work VARCHAR(12) NOT NULL,\n' + 'email VARCHAR(100) NOT NULL,\n' + 'address VARCHAR(100) NOT NULL,\n' + 'PRIMARY KEY (cust_id)\n' + ');\n' + + 'CREATE TABLE widgets (\n' + 'rec_id INT NOT NULL,\n' + 'basic INT NOT NULL,\n' + 'advanced INT NOT NULL,\n' + 'plan BOOLEAN NOT NULL,\n' + 'fk_cust_id INT NOT NULL,\n' + 'PRIMARY KEY (rec_id),\n' + 'FOREIGN KEY (fk_cust_id) REFERENCES customers(cust_id),\n' + ');\n' + ) + + for item in data: + # If a name already exist, assign the same cust_id to that widget order + if item['name'] in cust_dict: + print(f"INSERT INTO widgets VALUES" + f"({item['basic']}, {item['advanced']}, {item['plan']}, {cust_dict.get(item['name'])});") + else: + cust_dict.update({item['name']: i}) + + print(f"INSERT INTO customers VALUES" + f"({cust_dict.get(item['name'])}, {item['rec_id']}, {item['name']}, " + f"{item['cell']}, {item['work']}, " + f"{item['email']}, {item['address']});") + + print(f"INSERT INTO widgets VALUES" + f"({item['basic']}, {item['advanced']}, {item['plan']}, {cust_dict.get(item['name'])});") + + i += 1 + + +if __name__ == '__main__': + createQuery('data.json') diff --git a/challenges/frontend/css/style.css b/challenges/frontend/css/style.css new file mode 100644 index 000000000..d71b4710d --- /dev/null +++ b/challenges/frontend/css/style.css @@ -0,0 +1,68 @@ +* { + box-sizing: border-box; +} +html, +body { + min-height: 100vh; + padding: 0; + margin: 0; + font-family: Arial, sans-serif; + font-size: 14px; + color: black; +} +input, +textarea { + outline: none; +} +body { + display: flex; + justify-content: center; + align-items: center; + padding: 20px; + background: #02059b; +} +h1 { + margin-top: 0; + font-weight: 500; +} + +/* Form */ +form { + position: relative; + width: 80%; + border-radius: 30px; + background: #fff; +} +.form-inner { + padding: 40px; +} +.form-inner input, +.form-inner textarea { + display: block; + width: 100%; + padding: 15px; + margin-bottom: 10px; + border: none; + border-radius: 20px; + background: #d0dfe8; +} +.form-inner textarea { + resize: none; +} + +/* Button */ +button { + width: 100%; + padding: 10px; + margin-top: 20px; + border-radius: 20px; + border: none; + border-bottom: 4px solid black; + background: #02059b; + font-size: 16px; + font-weight: 400; + color: #fff; +} +button:hover { + background: #14c7e2; +} diff --git a/challenges/frontend/images/favicon.ico b/challenges/frontend/images/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..bb99dcb6dbef7ccb79e5243e4d707a9e6b2453e4 GIT binary patch literal 124681 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 literal 0 HcmV?d00001 diff --git a/challenges/frontend/index.html b/challenges/frontend/index.html new file mode 100644 index 000000000..c1df276d8 --- /dev/null +++ b/challenges/frontend/index.html @@ -0,0 +1,69 @@ + + + + + + Test Company + + + + + + + + +
+
+

Contact us

+ + + + + +
+
+ + + +