├── frontend
├── src
│ ├── components
│ │ ├── App
│ │ │ ├── App.css
│ │ │ └── App.js
│ │ ├── HighScore
│ │ │ ├── HighScore.css
│ │ │ └── HighScore.js
│ │ └── Jogo
│ │ │ ├── Jogo.css
│ │ │ └── Jogo.js
│ ├── assets
│ │ ├── mario.gif
│ │ ├── pipe.png
│ │ ├── clouds.png
│ │ └── game-over.png
│ ├── setupTests.js
│ ├── index.css
│ ├── reportWebVitals.js
│ ├── index.js
│ └── logo.svg
├── public
│ ├── robots.txt
│ ├── favicon.ico
│ ├── logo192.png
│ ├── logo512.png
│ ├── manifest.json
│ └── index.html
├── .gitignore
├── package.json
└── README.md
├── Procfile
├── .gitattributes
├── package.json
├── backend
├── package.json
├── index.js
└── package-lock.json
├── LICENSE
└── .gitignore
/frontend/src/components/App/App.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Procfile:
--------------------------------------------------------------------------------
1 | web: npm start --prefix backend
2 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
3 |
--------------------------------------------------------------------------------
/frontend/public/robots.txt:
--------------------------------------------------------------------------------
1 | # https://www.robotstxt.org/robotstxt.html
2 | User-agent: *
3 | Disallow:
4 |
--------------------------------------------------------------------------------
/frontend/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/paulosalvatore/ocean-jornada-fullstack-agosto-22/HEAD/frontend/public/favicon.ico
--------------------------------------------------------------------------------
/frontend/public/logo192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/paulosalvatore/ocean-jornada-fullstack-agosto-22/HEAD/frontend/public/logo192.png
--------------------------------------------------------------------------------
/frontend/public/logo512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/paulosalvatore/ocean-jornada-fullstack-agosto-22/HEAD/frontend/public/logo512.png
--------------------------------------------------------------------------------
/frontend/src/assets/mario.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/paulosalvatore/ocean-jornada-fullstack-agosto-22/HEAD/frontend/src/assets/mario.gif
--------------------------------------------------------------------------------
/frontend/src/assets/pipe.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/paulosalvatore/ocean-jornada-fullstack-agosto-22/HEAD/frontend/src/assets/pipe.png
--------------------------------------------------------------------------------
/frontend/src/assets/clouds.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/paulosalvatore/ocean-jornada-fullstack-agosto-22/HEAD/frontend/src/assets/clouds.png
--------------------------------------------------------------------------------
/frontend/src/assets/game-over.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/paulosalvatore/ocean-jornada-fullstack-agosto-22/HEAD/frontend/src/assets/game-over.png
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ocean-jornada-fullstack-agosto-22",
3 | "version": "1.0.0",
4 | "scripts": {
5 | "postinstall": "npm install --prefix backend"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/frontend/src/components/HighScore/HighScore.css:
--------------------------------------------------------------------------------
1 | .HighScore {
2 | position: absolute;
3 |
4 | top: 5%;
5 | left: 15%;
6 | width: calc(70% - 1rem - 1rem);
7 | height: calc(90% - 1rem - 1rem);
8 |
9 | background: white;
10 | padding: 1rem;
11 | }
12 |
--------------------------------------------------------------------------------
/frontend/src/setupTests.js:
--------------------------------------------------------------------------------
1 | // jest-dom adds custom jest matchers for asserting on DOM nodes.
2 | // allows you to do things like:
3 | // expect(element).toHaveTextContent(/react/i)
4 | // learn more: https://github.com/testing-library/jest-dom
5 | import '@testing-library/jest-dom';
6 |
--------------------------------------------------------------------------------
/frontend/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | /node_modules
5 | /.pnp
6 | .pnp.js
7 |
8 | # testing
9 | /coverage
10 |
11 | # production
12 | /build
13 |
14 | # misc
15 | .DS_Store
16 | .env.local
17 | .env.development.local
18 | .env.test.local
19 | .env.production.local
20 |
21 | npm-debug.log*
22 | yarn-debug.log*
23 | yarn-error.log*
24 |
--------------------------------------------------------------------------------
/frontend/src/index.css:
--------------------------------------------------------------------------------
1 | body {
2 | margin: 0;
3 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
4 | 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
5 | sans-serif;
6 | -webkit-font-smoothing: antialiased;
7 | -moz-osx-font-smoothing: grayscale;
8 | }
9 |
10 | code {
11 | font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
12 | monospace;
13 | }
14 |
--------------------------------------------------------------------------------
/frontend/src/reportWebVitals.js:
--------------------------------------------------------------------------------
1 | const reportWebVitals = onPerfEntry => {
2 | if (onPerfEntry && onPerfEntry instanceof Function) {
3 | import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {
4 | getCLS(onPerfEntry);
5 | getFID(onPerfEntry);
6 | getFCP(onPerfEntry);
7 | getLCP(onPerfEntry);
8 | getTTFB(onPerfEntry);
9 | });
10 | }
11 | };
12 |
13 | export default reportWebVitals;
14 |
--------------------------------------------------------------------------------
/backend/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "backend",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "index.js",
6 | "scripts": {
7 | "start": "node index.js",
8 | "dev": "nodemon index.js"
9 | },
10 | "keywords": [],
11 | "author": "",
12 | "license": "ISC",
13 | "dependencies": {
14 | "cors": "^2.8.5",
15 | "express": "^4.18.1",
16 | "mongodb": "^4.8.1"
17 | },
18 | "devDependencies": {
19 | "nodemon": "^2.0.19"
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/frontend/public/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "short_name": "React App",
3 | "name": "Create React App Sample",
4 | "icons": [
5 | {
6 | "src": "favicon.ico",
7 | "sizes": "64x64 32x32 24x24 16x16",
8 | "type": "image/x-icon"
9 | },
10 | {
11 | "src": "logo192.png",
12 | "type": "image/png",
13 | "sizes": "192x192"
14 | },
15 | {
16 | "src": "logo512.png",
17 | "type": "image/png",
18 | "sizes": "512x512"
19 | }
20 | ],
21 | "start_url": ".",
22 | "display": "standalone",
23 | "theme_color": "#000000",
24 | "background_color": "#ffffff"
25 | }
26 |
--------------------------------------------------------------------------------
/frontend/src/index.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import ReactDOM from "react-dom/client";
3 | import "./index.css";
4 | import App from "./components/App/App";
5 | import reportWebVitals from "./reportWebVitals";
6 |
7 | const root = ReactDOM.createRoot(document.getElementById("root"));
8 | root.render(
9 | //
10 |
11 | //
12 | );
13 |
14 | // If you want to start measuring performance in your app, pass a function
15 | // to log results (for example: reportWebVitals(console.log))
16 | // or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
17 | reportWebVitals();
18 |
--------------------------------------------------------------------------------
/frontend/src/components/App/App.js:
--------------------------------------------------------------------------------
1 | import { useState } from "react";
2 | import HighScore from "../HighScore/HighScore";
3 | import Jogo from "../Jogo/Jogo";
4 | import "./App.css";
5 |
6 | function App() {
7 | const [gameOver, setGameOver] = useState(false);
8 | const [pontos, setPontos] = useState(0);
9 |
10 | function onMorrer() {
11 | setGameOver(true);
12 | }
13 |
14 | function onPontos(novosPontos) {
15 | setPontos(novosPontos);
16 | }
17 |
18 | return (
19 |
20 |
21 | {gameOver && }
22 |
23 | );
24 | }
25 |
26 | export default App;
27 |
--------------------------------------------------------------------------------
/frontend/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "frontend",
3 | "version": "0.1.0",
4 | "private": true,
5 | "dependencies": {
6 | "@testing-library/jest-dom": "^5.16.5",
7 | "@testing-library/react": "^13.3.0",
8 | "@testing-library/user-event": "^13.5.0",
9 | "react": "^18.2.0",
10 | "react-dom": "^18.2.0",
11 | "react-scripts": "5.0.1",
12 | "web-vitals": "^2.1.4"
13 | },
14 | "scripts": {
15 | "start": "react-scripts start",
16 | "build": "react-scripts build",
17 | "test": "react-scripts test",
18 | "eject": "react-scripts eject"
19 | },
20 | "eslintConfig": {
21 | "extends": [
22 | "react-app",
23 | "react-app/jest"
24 | ]
25 | },
26 | "browserslist": {
27 | "production": [
28 | ">0.2%",
29 | "not dead",
30 | "not op_mini all"
31 | ],
32 | "development": [
33 | "last 1 chrome version",
34 | "last 1 firefox version",
35 | "last 1 safari version"
36 | ]
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2022 Paulo Salvatore
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/frontend/src/components/Jogo/Jogo.css:
--------------------------------------------------------------------------------
1 | .jogo {
2 | background: #9be5e4;
3 |
4 | height: 100vh;
5 | width: 100%;
6 |
7 | overflow: hidden;
8 |
9 | position: relative;
10 | }
11 |
12 | .nuvens {
13 | width: 200px;
14 |
15 | position: absolute;
16 | top: 30px;
17 |
18 | animation: mover-direita-para-esquerda infinite 8s linear;
19 | }
20 |
21 | .cano {
22 | width: 50px;
23 |
24 | position: absolute;
25 | bottom: 30px;
26 | right: 50px;
27 |
28 | /*
29 | animation-name: mover-direita-para-esquerda;
30 | animation-duration: 2s;
31 | animation-iteration-count: infinite;
32 | animation-timing-function: linear;
33 | */
34 |
35 | animation: mover-direita-para-esquerda infinite 2s linear;
36 | }
37 |
38 | .parar-animacao {
39 | animation-play-state: paused;
40 | }
41 |
42 | @keyframes mover-direita-para-esquerda {
43 | from {
44 | right: -300px;
45 | }
46 |
47 | to {
48 | right: 100%;
49 | }
50 | }
51 |
52 | .mario {
53 | height: 100px;
54 |
55 | position: absolute;
56 | bottom: 30px;
57 | left: 50px;
58 | }
59 |
60 | .mario-pulo {
61 | animation: mario-pulo 0.7s;
62 | }
63 |
64 | @keyframes mario-pulo {
65 | from {
66 | bottom: 30px;
67 | }
68 |
69 | 50% {
70 | bottom: 150px;
71 | }
72 |
73 | to {
74 | bottom: 30px;
75 | }
76 | }
77 |
78 | .chao {
79 | background: limegreen;
80 | height: 30px;
81 | bottom: 0;
82 | position: absolute;
83 | width: 100%;
84 | }
85 |
--------------------------------------------------------------------------------
/frontend/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
12 |
13 |
17 |
18 |
27 | React App
28 |
29 |
30 | You need to enable JavaScript to run this app.
31 |
32 |
42 |
43 |
44 |
--------------------------------------------------------------------------------
/frontend/src/logo.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | lerna-debug.log*
8 | .pnpm-debug.log*
9 |
10 | # Diagnostic reports (https://nodejs.org/api/report.html)
11 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
12 |
13 | # Runtime data
14 | pids
15 | *.pid
16 | *.seed
17 | *.pid.lock
18 |
19 | # Directory for instrumented libs generated by jscoverage/JSCover
20 | lib-cov
21 |
22 | # Coverage directory used by tools like istanbul
23 | coverage
24 | *.lcov
25 |
26 | # nyc test coverage
27 | .nyc_output
28 |
29 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
30 | .grunt
31 |
32 | # Bower dependency directory (https://bower.io/)
33 | bower_components
34 |
35 | # node-waf configuration
36 | .lock-wscript
37 |
38 | # Compiled binary addons (https://nodejs.org/api/addons.html)
39 | build/Release
40 |
41 | # Dependency directories
42 | node_modules/
43 | jspm_packages/
44 |
45 | # Snowpack dependency directory (https://snowpack.dev/)
46 | web_modules/
47 |
48 | # TypeScript cache
49 | *.tsbuildinfo
50 |
51 | # Optional npm cache directory
52 | .npm
53 |
54 | # Optional eslint cache
55 | .eslintcache
56 |
57 | # Optional stylelint cache
58 | .stylelintcache
59 |
60 | # Microbundle cache
61 | .rpt2_cache/
62 | .rts2_cache_cjs/
63 | .rts2_cache_es/
64 | .rts2_cache_umd/
65 |
66 | # Optional REPL history
67 | .node_repl_history
68 |
69 | # Output of 'npm pack'
70 | *.tgz
71 |
72 | # Yarn Integrity file
73 | .yarn-integrity
74 |
75 | # dotenv environment variable files
76 | .env
77 | .env.development.local
78 | .env.test.local
79 | .env.production.local
80 | .env.local
81 |
82 | # parcel-bundler cache (https://parceljs.org/)
83 | .cache
84 | .parcel-cache
85 |
86 | # Next.js build output
87 | .next
88 | out
89 |
90 | # Nuxt.js build / generate output
91 | .nuxt
92 | dist
93 |
94 | # Gatsby files
95 | .cache/
96 | # Comment in the public line in if your project uses Gatsby and not Next.js
97 | # https://nextjs.org/blog/next-9-1#public-directory-support
98 | # public
99 |
100 | # vuepress build output
101 | .vuepress/dist
102 |
103 | # vuepress v2.x temp and cache directory
104 | .temp
105 | .cache
106 |
107 | # Serverless directories
108 | .serverless/
109 |
110 | # FuseBox cache
111 | .fusebox/
112 |
113 | # DynamoDB Local files
114 | .dynamodb/
115 |
116 | # TernJS port file
117 | .tern-port
118 |
119 | # Stores VSCode versions used for testing VSCode extensions
120 | .vscode-test
121 |
122 | # yarn v2
123 | .yarn/cache
124 | .yarn/unplugged
125 | .yarn/build-state.yml
126 | .yarn/install-state.gz
127 | .pnp.*
128 |
129 | .DS_Store
130 |
--------------------------------------------------------------------------------
/backend/index.js:
--------------------------------------------------------------------------------
1 | const express = require("express");
2 | const { MongoClient } = require("mongodb");
3 | const cors = require("cors");
4 |
5 | // const url = "mongodb://localhost:27017";
6 | const url =
7 | "mongodb+srv://admin:beeDsNaD7hrUJflY@cluster0.0tjjv1e.mongodb.net/";
8 | const dbName = "jornada-fullstack-agosto-22";
9 |
10 | // Declaração da função main()
11 | async function main() {
12 | // Realizar a conexão com o MongoClient
13 | // MongoClient -> MongoDatabase -> MongoCollection
14 |
15 | // Conexões com o client podem levar um tempo para
16 | // concluir. Portanto, utilizamos o mecanismo de
17 | // Promises do JavaScript, que permitem aguardar
18 | // esse tempo. Para isso, vamos usar o async/await.
19 |
20 | console.log("Conectando com o banco de dados...");
21 |
22 | const client = await MongoClient.connect(url);
23 | const db = client.db(dbName);
24 | const collection = db.collection("pontuacoes");
25 |
26 | console.log("Banco de dados conectado com sucesso!");
27 |
28 | const app = express();
29 |
30 | // Ativamos as configurações do CORS
31 | app.use(cors());
32 |
33 | // Sinalizamos para o express que estamos usando
34 | // JSON no body das requisições
35 | app.use(express.json());
36 |
37 | app.get("/", function (req, res) {
38 | res.send("Hello, World!");
39 | });
40 |
41 | app.get("/oi", function (req, res) {
42 | res.send("Olá, mundo!");
43 | });
44 |
45 | // Nosso backend armazena as pontuações das jogadas
46 | // Criar a lista com as pontuações
47 |
48 | // const lista = [
49 | // {
50 | // id: 1,
51 | // nome: "Paulo",
52 | // pontos: 21,
53 | // },
54 | // {
55 | // id: 2,
56 | // nome: "Daniel",
57 | // pontos: 52,
58 | // },
59 | // {
60 | // id: 3,
61 | // nome: "Beatriz",
62 | // pontos: 97,
63 | // },
64 | // ];
65 |
66 | // Endpoint READ ALL - [GET] /pontuacoes
67 | app.get("/pontuacoes", async function (req, res) {
68 | const itens = await collection
69 | .find()
70 | .sort({ pontos: -1 })
71 | .limit(10)
72 | .toArray();
73 |
74 | res.send(itens);
75 | });
76 |
77 | // Endpoint CREATE - [POST] /pontuacoes
78 | app.post("/pontuacoes", async function (req, res) {
79 | // Peguei o item do corpo da requisição
80 | const item = req.body;
81 | // console.log(item);
82 |
83 | // Adicionar o item na lista
84 | // lista.push({
85 | // id: lista.length + 1,
86 | // nome: item.nome,
87 | // pontos: item.pontos,
88 | // });
89 |
90 | await collection.insertOne(item);
91 |
92 | res.send(item);
93 | });
94 |
95 | app.listen(process.env.PORT || 3333);
96 | }
97 |
98 | // Executamos a função main()
99 | main();
100 |
--------------------------------------------------------------------------------
/frontend/src/components/HighScore/HighScore.js:
--------------------------------------------------------------------------------
1 | import { useEffect, useState } from "react";
2 | import "./HighScore.css";
3 |
4 | /*
5 | - Exibir a pontuação que o jogador fez
6 | - Pegar os HighScores do Backend e exibir as pontuações recebidas
7 | - A pessoa irá digitar o nome e clicar no botão "Enviar" para submeter
8 | um novo score
9 | - Depois que submeteu um novo score, vamos recarregar a lista
10 | de scores
11 | */
12 |
13 | function HighScore(props) {
14 | // Fazer uma solicitação para o backend trazer as maiores pontuações
15 | // Endpoint: [GET] http://localhost:3333/pontuacoes
16 | // Solicitação = Requisição HTTP
17 | // Para fazer requisições HTTP, temos algumas bibliotecas:
18 | // Fetch
19 | // Axios
20 | // entre outras
21 |
22 | const [itens, setItens] = useState(undefined);
23 |
24 | useEffect(function () {
25 | // Declaração da função
26 | async function carregarPontuacoes() {
27 | // Fazemos a requisição e recebemos a resposta
28 | const response = await fetch("http://localhost:3333/pontuacoes");
29 |
30 | // Extraímos o JSON do Corpo da Resposta
31 | const body = await response.json();
32 |
33 | // Atualizamos o estado `itens` com os valores recebido
34 | // Ao atualizar o estado, o React renderiza o componente
35 | // novamente
36 | setItens(body);
37 | }
38 |
39 | // Executamos a função
40 | carregarPontuacoes();
41 | }, []);
42 |
43 | console.log(itens);
44 |
45 | const itensEstaoCarregando = itens === undefined;
46 |
47 | async function salvarPontuacao(event) {
48 | event.preventDefault();
49 |
50 | const form = event.target;
51 | const name = form.name.value;
52 |
53 | const response = await fetch("http://localhost:3333/pontuacoes", {
54 | method: "POST",
55 | body: JSON.stringify({ nome: name, pontos: props.pontos }),
56 | headers: {
57 | "Content-type": "application/json",
58 | },
59 | });
60 |
61 | const body = await response.json();
62 |
63 | console.log("Pontuação salva com sucesso:", body);
64 | }
65 |
66 | return (
67 |
68 |
69 | Você fez {props.pontos} pontos!
70 |
71 |
72 |
73 |
HighScore
74 |
75 | {itensEstaoCarregando ? (
76 |
Carregando...
77 | ) : (
78 |
79 | {itens.map((item, index) => (
80 |
81 | {item.nome} - {item.pontos}
82 |
83 | ))}
84 |
85 | )}
86 |
87 |
88 |
89 |
Registre sua pontuação!
90 |
94 |
95 |
96 | );
97 | }
98 |
99 | export default HighScore;
100 |
--------------------------------------------------------------------------------
/frontend/README.md:
--------------------------------------------------------------------------------
1 | # Getting Started with Create React App
2 |
3 | This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).
4 |
5 | ## Available Scripts
6 |
7 | In the project directory, you can run:
8 |
9 | ### `npm start`
10 |
11 | Runs the app in the development mode.\
12 | Open [http://localhost:3000](http://localhost:3000) to view it in your browser.
13 |
14 | The page will reload when you make changes.\
15 | You may also see any lint errors in the console.
16 |
17 | ### `npm test`
18 |
19 | Launches the test runner in the interactive watch mode.\
20 | See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.
21 |
22 | ### `npm run build`
23 |
24 | Builds the app for production to the `build` folder.\
25 | It correctly bundles React in production mode and optimizes the build for the best performance.
26 |
27 | The build is minified and the filenames include the hashes.\
28 | Your app is ready to be deployed!
29 |
30 | See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.
31 |
32 | ### `npm run eject`
33 |
34 | **Note: this is a one-way operation. Once you `eject`, you can't go back!**
35 |
36 | If you aren't satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.
37 |
38 | Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own.
39 |
40 | You don't have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature. However we understand that this tool wouldn't be useful if you couldn't customize it when you are ready for it.
41 |
42 | ## Learn More
43 |
44 | You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).
45 |
46 | To learn React, check out the [React documentation](https://reactjs.org/).
47 |
48 | ### Code Splitting
49 |
50 | This section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting)
51 |
52 | ### Analyzing the Bundle Size
53 |
54 | This section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size)
55 |
56 | ### Making a Progressive Web App
57 |
58 | This section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app)
59 |
60 | ### Advanced Configuration
61 |
62 | This section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration)
63 |
64 | ### Deployment
65 |
66 | This section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment)
67 |
68 | ### `npm run build` fails to minify
69 |
70 | This section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify)
71 |
--------------------------------------------------------------------------------
/frontend/src/components/Jogo/Jogo.js:
--------------------------------------------------------------------------------
1 | import "./Jogo.css";
2 | import nuvens from "../../assets/clouds.png";
3 | import cano from "../../assets/pipe.png";
4 | import mario from "../../assets/mario.gif";
5 | import gameOver from "../../assets/game-over.png";
6 | import React, { useEffect, useRef, useState } from "react";
7 |
8 | function Jogo(props) {
9 | /*
10 | const estaPulando = useState(false);
11 | const estado = estaPulando[0];
12 | const dispatch = estaPulando[1];
13 |
14 | // Desconstrução de array
15 | // const lista = [10, 20, 30];
16 | // const [numero1, numero2, numero3] = lista;
17 | const [numero1, numero2, numero3] = [10, 20, 30];
18 | */
19 |
20 | // Criamos o estado `estaPulando`, com o valor padrão `false`.
21 | // Primeiro valor é apenas para ler (GET)
22 | // Segundo valor é para atualizar o estado (SET)
23 | // No momento que um estado é atualizado, o componente atualiza
24 | // tudo o que está sendo renderizado
25 | const [estaPulando, setEstaPulando] = useState(false);
26 |
27 | const [estaMorto, setEstaMorto] = useState(false);
28 |
29 | const [pontos, setPontos] = useState(0);
30 |
31 | // Criamos as referências para `mario` e `cano`
32 | const marioRef = useRef();
33 | const canoRef = useRef();
34 |
35 | function marioEstaNoCano() {
36 | // Acessamos as referências do mario e do cano
37 | const mario = marioRef.current;
38 | const cano = canoRef.current;
39 |
40 | // Se por acaso `mario` ou `cano` não forem encontrados,
41 | // encerra essa função
42 | if (!mario || !cano) {
43 | return;
44 | }
45 |
46 | // Retorna o valor da lógica que determinar se o mário
47 | // está na mesma posição do cano ou não (com as checagens
48 | // que consideram toda a área do cano)
49 | return (
50 | cano.offsetLeft > mario.offsetLeft &&
51 | cano.offsetLeft < mario.offsetLeft + mario.offsetWidth &&
52 | mario.offsetTop + mario.offsetHeight > cano.offsetTop
53 | );
54 | }
55 |
56 | useEffect(
57 | // Effect
58 | function () {
59 | // Implementação temporária para exibir se o mário
60 | // está no cano ou não
61 | const interval = setInterval(function () {
62 | // Pegamos o valor que determinar se o Mario
63 | // está no cano ou não
64 | const estaNoCano = marioEstaNoCano();
65 |
66 | // Se o Mario não estiver no cano, encerramos a função com `return`
67 | if (!estaNoCano || estaMorto) {
68 | return;
69 | }
70 |
71 | // Caso esteja no cano, atualizamos o estado
72 | // `estaMorto` para `true`
73 | setEstaMorto(true);
74 |
75 | props.onMorrer();
76 | }, 100);
77 |
78 | // (Opcional) Return mecanismo que desfaz o Effect anterior
79 | return () => clearInterval(interval);
80 | },
81 | // Lista de dependências
82 | [estaMorto, props]
83 | );
84 |
85 | // UseEffect
86 | useEffect(
87 | function () {
88 | // Salvar a pontuação
89 | const interval = setInterval(function () {
90 | if (estaMorto) {
91 | return;
92 | }
93 |
94 | setPontos(pontos + 1);
95 | props.onPontos(pontos + 1);
96 | }, 500);
97 |
98 | return () => clearInterval(interval);
99 | },
100 | [estaMorto, pontos, props]
101 | );
102 |
103 | /*
104 | - Exibir pontos em tempo real (DESAFIO)
105 | - Quando der GameOver, exibir o HighScore
106 | */
107 |
108 | document.onkeydown = function () {
109 | // Atualizamos o estado para true
110 | setEstaPulando(true);
111 |
112 | // 700ms = 0.7s
113 | setTimeout(function () {
114 | // Voltamos o estado para o valor inicial
115 | setEstaPulando(false);
116 | }, 700);
117 | };
118 |
119 | // Por padrão, o elemento tem a classe `.mario`
120 | let marioClassName = "mario";
121 |
122 | // Caso esteja pulando (valor true), a classe será `.mario`
123 | // e `.mario-pulo`
124 | if (estaPulando) {
125 | marioClassName = "mario mario-pulo";
126 | }
127 |
128 | // Outra forma de simplificar, usando ternário
129 | // const marioClassName = "mario " + (estaPulando ? "mario-pulo" : "");
130 |
131 | // No lugar de declarar uma variável e mudar o valor dela em um caso de `if`,
132 | // como fizemos com o className do Mario, podemos criar uma variável
133 | // com dois valores, um para caso a condição seja verdadeira, outro para
134 | // caso a condição seja false
135 | // Esse é o Operador Ternário!
136 | const marioImage = estaMorto ? gameOver : mario;
137 |
138 | const pararAnimacao = estaMorto ? "parar-animacao" : "";
139 |
140 | return (
141 |
142 |
Pontos: {pontos}
143 |
144 |
145 |
146 |
152 |
153 |
159 |
160 |
161 |
162 | );
163 | }
164 |
165 | export default Jogo;
166 |
--------------------------------------------------------------------------------
/backend/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "backend",
3 | "version": "1.0.0",
4 | "lockfileVersion": 2,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "backend",
9 | "version": "1.0.0",
10 | "license": "ISC",
11 | "dependencies": {
12 | "cors": "^2.8.5",
13 | "express": "^4.18.1",
14 | "mongodb": "^4.8.1"
15 | },
16 | "devDependencies": {
17 | "nodemon": "^2.0.19"
18 | }
19 | },
20 | "node_modules/@types/node": {
21 | "version": "18.7.5",
22 | "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.5.tgz",
23 | "integrity": "sha512-NcKK6Ts+9LqdHJaW6HQmgr7dT/i3GOHG+pt6BiWv++5SnjtRd4NXeiuN2kA153SjhXPR/AhHIPHPbrsbpUVOww=="
24 | },
25 | "node_modules/@types/webidl-conversions": {
26 | "version": "6.1.1",
27 | "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-6.1.1.tgz",
28 | "integrity": "sha512-XAahCdThVuCFDQLT7R7Pk/vqeObFNL3YqRyFZg+AqAP/W1/w3xHaIxuW7WszQqTbIBOPRcItYJIou3i/mppu3Q=="
29 | },
30 | "node_modules/@types/whatwg-url": {
31 | "version": "8.2.2",
32 | "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz",
33 | "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==",
34 | "dependencies": {
35 | "@types/node": "*",
36 | "@types/webidl-conversions": "*"
37 | }
38 | },
39 | "node_modules/abbrev": {
40 | "version": "1.1.1",
41 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
42 | "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
43 | "dev": true
44 | },
45 | "node_modules/accepts": {
46 | "version": "1.3.8",
47 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
48 | "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
49 | "dependencies": {
50 | "mime-types": "~2.1.34",
51 | "negotiator": "0.6.3"
52 | },
53 | "engines": {
54 | "node": ">= 0.6"
55 | }
56 | },
57 | "node_modules/anymatch": {
58 | "version": "3.1.2",
59 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
60 | "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
61 | "dev": true,
62 | "dependencies": {
63 | "normalize-path": "^3.0.0",
64 | "picomatch": "^2.0.4"
65 | },
66 | "engines": {
67 | "node": ">= 8"
68 | }
69 | },
70 | "node_modules/array-flatten": {
71 | "version": "1.1.1",
72 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
73 | "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
74 | },
75 | "node_modules/balanced-match": {
76 | "version": "1.0.2",
77 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
78 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
79 | "dev": true
80 | },
81 | "node_modules/base64-js": {
82 | "version": "1.5.1",
83 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
84 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
85 | "funding": [
86 | {
87 | "type": "github",
88 | "url": "https://github.com/sponsors/feross"
89 | },
90 | {
91 | "type": "patreon",
92 | "url": "https://www.patreon.com/feross"
93 | },
94 | {
95 | "type": "consulting",
96 | "url": "https://feross.org/support"
97 | }
98 | ]
99 | },
100 | "node_modules/binary-extensions": {
101 | "version": "2.2.0",
102 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
103 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
104 | "dev": true,
105 | "engines": {
106 | "node": ">=8"
107 | }
108 | },
109 | "node_modules/body-parser": {
110 | "version": "1.20.0",
111 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz",
112 | "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==",
113 | "dependencies": {
114 | "bytes": "3.1.2",
115 | "content-type": "~1.0.4",
116 | "debug": "2.6.9",
117 | "depd": "2.0.0",
118 | "destroy": "1.2.0",
119 | "http-errors": "2.0.0",
120 | "iconv-lite": "0.4.24",
121 | "on-finished": "2.4.1",
122 | "qs": "6.10.3",
123 | "raw-body": "2.5.1",
124 | "type-is": "~1.6.18",
125 | "unpipe": "1.0.0"
126 | },
127 | "engines": {
128 | "node": ">= 0.8",
129 | "npm": "1.2.8000 || >= 1.4.16"
130 | }
131 | },
132 | "node_modules/brace-expansion": {
133 | "version": "1.1.11",
134 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
135 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
136 | "dev": true,
137 | "dependencies": {
138 | "balanced-match": "^1.0.0",
139 | "concat-map": "0.0.1"
140 | }
141 | },
142 | "node_modules/braces": {
143 | "version": "3.0.2",
144 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
145 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
146 | "dev": true,
147 | "dependencies": {
148 | "fill-range": "^7.0.1"
149 | },
150 | "engines": {
151 | "node": ">=8"
152 | }
153 | },
154 | "node_modules/bson": {
155 | "version": "4.6.5",
156 | "resolved": "https://registry.npmjs.org/bson/-/bson-4.6.5.tgz",
157 | "integrity": "sha512-uqrgcjyOaZsHfz7ea8zLRCLe1u+QGUSzMZmvXqO24CDW7DWoW1qiN9folSwa7hSneTSgM2ykDIzF5kcQQ8cwNw==",
158 | "dependencies": {
159 | "buffer": "^5.6.0"
160 | },
161 | "engines": {
162 | "node": ">=6.9.0"
163 | }
164 | },
165 | "node_modules/buffer": {
166 | "version": "5.7.1",
167 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
168 | "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
169 | "funding": [
170 | {
171 | "type": "github",
172 | "url": "https://github.com/sponsors/feross"
173 | },
174 | {
175 | "type": "patreon",
176 | "url": "https://www.patreon.com/feross"
177 | },
178 | {
179 | "type": "consulting",
180 | "url": "https://feross.org/support"
181 | }
182 | ],
183 | "dependencies": {
184 | "base64-js": "^1.3.1",
185 | "ieee754": "^1.1.13"
186 | }
187 | },
188 | "node_modules/bytes": {
189 | "version": "3.1.2",
190 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
191 | "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
192 | "engines": {
193 | "node": ">= 0.8"
194 | }
195 | },
196 | "node_modules/call-bind": {
197 | "version": "1.0.2",
198 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
199 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
200 | "dependencies": {
201 | "function-bind": "^1.1.1",
202 | "get-intrinsic": "^1.0.2"
203 | },
204 | "funding": {
205 | "url": "https://github.com/sponsors/ljharb"
206 | }
207 | },
208 | "node_modules/chokidar": {
209 | "version": "3.5.3",
210 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
211 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
212 | "dev": true,
213 | "funding": [
214 | {
215 | "type": "individual",
216 | "url": "https://paulmillr.com/funding/"
217 | }
218 | ],
219 | "dependencies": {
220 | "anymatch": "~3.1.2",
221 | "braces": "~3.0.2",
222 | "glob-parent": "~5.1.2",
223 | "is-binary-path": "~2.1.0",
224 | "is-glob": "~4.0.1",
225 | "normalize-path": "~3.0.0",
226 | "readdirp": "~3.6.0"
227 | },
228 | "engines": {
229 | "node": ">= 8.10.0"
230 | },
231 | "optionalDependencies": {
232 | "fsevents": "~2.3.2"
233 | }
234 | },
235 | "node_modules/concat-map": {
236 | "version": "0.0.1",
237 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
238 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
239 | "dev": true
240 | },
241 | "node_modules/content-disposition": {
242 | "version": "0.5.4",
243 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
244 | "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
245 | "dependencies": {
246 | "safe-buffer": "5.2.1"
247 | },
248 | "engines": {
249 | "node": ">= 0.6"
250 | }
251 | },
252 | "node_modules/content-type": {
253 | "version": "1.0.4",
254 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
255 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
256 | "engines": {
257 | "node": ">= 0.6"
258 | }
259 | },
260 | "node_modules/cookie": {
261 | "version": "0.5.0",
262 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
263 | "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
264 | "engines": {
265 | "node": ">= 0.6"
266 | }
267 | },
268 | "node_modules/cookie-signature": {
269 | "version": "1.0.6",
270 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
271 | "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
272 | },
273 | "node_modules/cors": {
274 | "version": "2.8.5",
275 | "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
276 | "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
277 | "dependencies": {
278 | "object-assign": "^4",
279 | "vary": "^1"
280 | },
281 | "engines": {
282 | "node": ">= 0.10"
283 | }
284 | },
285 | "node_modules/debug": {
286 | "version": "2.6.9",
287 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
288 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
289 | "dependencies": {
290 | "ms": "2.0.0"
291 | }
292 | },
293 | "node_modules/denque": {
294 | "version": "2.1.0",
295 | "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz",
296 | "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==",
297 | "engines": {
298 | "node": ">=0.10"
299 | }
300 | },
301 | "node_modules/depd": {
302 | "version": "2.0.0",
303 | "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
304 | "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
305 | "engines": {
306 | "node": ">= 0.8"
307 | }
308 | },
309 | "node_modules/destroy": {
310 | "version": "1.2.0",
311 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
312 | "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
313 | "engines": {
314 | "node": ">= 0.8",
315 | "npm": "1.2.8000 || >= 1.4.16"
316 | }
317 | },
318 | "node_modules/ee-first": {
319 | "version": "1.1.1",
320 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
321 | "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
322 | },
323 | "node_modules/encodeurl": {
324 | "version": "1.0.2",
325 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
326 | "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
327 | "engines": {
328 | "node": ">= 0.8"
329 | }
330 | },
331 | "node_modules/escape-html": {
332 | "version": "1.0.3",
333 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
334 | "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
335 | },
336 | "node_modules/etag": {
337 | "version": "1.8.1",
338 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
339 | "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
340 | "engines": {
341 | "node": ">= 0.6"
342 | }
343 | },
344 | "node_modules/express": {
345 | "version": "4.18.1",
346 | "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz",
347 | "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==",
348 | "dependencies": {
349 | "accepts": "~1.3.8",
350 | "array-flatten": "1.1.1",
351 | "body-parser": "1.20.0",
352 | "content-disposition": "0.5.4",
353 | "content-type": "~1.0.4",
354 | "cookie": "0.5.0",
355 | "cookie-signature": "1.0.6",
356 | "debug": "2.6.9",
357 | "depd": "2.0.0",
358 | "encodeurl": "~1.0.2",
359 | "escape-html": "~1.0.3",
360 | "etag": "~1.8.1",
361 | "finalhandler": "1.2.0",
362 | "fresh": "0.5.2",
363 | "http-errors": "2.0.0",
364 | "merge-descriptors": "1.0.1",
365 | "methods": "~1.1.2",
366 | "on-finished": "2.4.1",
367 | "parseurl": "~1.3.3",
368 | "path-to-regexp": "0.1.7",
369 | "proxy-addr": "~2.0.7",
370 | "qs": "6.10.3",
371 | "range-parser": "~1.2.1",
372 | "safe-buffer": "5.2.1",
373 | "send": "0.18.0",
374 | "serve-static": "1.15.0",
375 | "setprototypeof": "1.2.0",
376 | "statuses": "2.0.1",
377 | "type-is": "~1.6.18",
378 | "utils-merge": "1.0.1",
379 | "vary": "~1.1.2"
380 | },
381 | "engines": {
382 | "node": ">= 0.10.0"
383 | }
384 | },
385 | "node_modules/fill-range": {
386 | "version": "7.0.1",
387 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
388 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
389 | "dev": true,
390 | "dependencies": {
391 | "to-regex-range": "^5.0.1"
392 | },
393 | "engines": {
394 | "node": ">=8"
395 | }
396 | },
397 | "node_modules/finalhandler": {
398 | "version": "1.2.0",
399 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
400 | "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
401 | "dependencies": {
402 | "debug": "2.6.9",
403 | "encodeurl": "~1.0.2",
404 | "escape-html": "~1.0.3",
405 | "on-finished": "2.4.1",
406 | "parseurl": "~1.3.3",
407 | "statuses": "2.0.1",
408 | "unpipe": "~1.0.0"
409 | },
410 | "engines": {
411 | "node": ">= 0.8"
412 | }
413 | },
414 | "node_modules/forwarded": {
415 | "version": "0.2.0",
416 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
417 | "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
418 | "engines": {
419 | "node": ">= 0.6"
420 | }
421 | },
422 | "node_modules/fresh": {
423 | "version": "0.5.2",
424 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
425 | "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
426 | "engines": {
427 | "node": ">= 0.6"
428 | }
429 | },
430 | "node_modules/fsevents": {
431 | "version": "2.3.2",
432 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
433 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
434 | "dev": true,
435 | "hasInstallScript": true,
436 | "optional": true,
437 | "os": [
438 | "darwin"
439 | ],
440 | "engines": {
441 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
442 | }
443 | },
444 | "node_modules/function-bind": {
445 | "version": "1.1.1",
446 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
447 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
448 | },
449 | "node_modules/get-intrinsic": {
450 | "version": "1.1.2",
451 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz",
452 | "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==",
453 | "dependencies": {
454 | "function-bind": "^1.1.1",
455 | "has": "^1.0.3",
456 | "has-symbols": "^1.0.3"
457 | },
458 | "funding": {
459 | "url": "https://github.com/sponsors/ljharb"
460 | }
461 | },
462 | "node_modules/glob-parent": {
463 | "version": "5.1.2",
464 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
465 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
466 | "dev": true,
467 | "dependencies": {
468 | "is-glob": "^4.0.1"
469 | },
470 | "engines": {
471 | "node": ">= 6"
472 | }
473 | },
474 | "node_modules/has": {
475 | "version": "1.0.3",
476 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
477 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
478 | "dependencies": {
479 | "function-bind": "^1.1.1"
480 | },
481 | "engines": {
482 | "node": ">= 0.4.0"
483 | }
484 | },
485 | "node_modules/has-flag": {
486 | "version": "3.0.0",
487 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
488 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
489 | "dev": true,
490 | "engines": {
491 | "node": ">=4"
492 | }
493 | },
494 | "node_modules/has-symbols": {
495 | "version": "1.0.3",
496 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
497 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
498 | "engines": {
499 | "node": ">= 0.4"
500 | },
501 | "funding": {
502 | "url": "https://github.com/sponsors/ljharb"
503 | }
504 | },
505 | "node_modules/http-errors": {
506 | "version": "2.0.0",
507 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
508 | "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
509 | "dependencies": {
510 | "depd": "2.0.0",
511 | "inherits": "2.0.4",
512 | "setprototypeof": "1.2.0",
513 | "statuses": "2.0.1",
514 | "toidentifier": "1.0.1"
515 | },
516 | "engines": {
517 | "node": ">= 0.8"
518 | }
519 | },
520 | "node_modules/iconv-lite": {
521 | "version": "0.4.24",
522 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
523 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
524 | "dependencies": {
525 | "safer-buffer": ">= 2.1.2 < 3"
526 | },
527 | "engines": {
528 | "node": ">=0.10.0"
529 | }
530 | },
531 | "node_modules/ieee754": {
532 | "version": "1.2.1",
533 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
534 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
535 | "funding": [
536 | {
537 | "type": "github",
538 | "url": "https://github.com/sponsors/feross"
539 | },
540 | {
541 | "type": "patreon",
542 | "url": "https://www.patreon.com/feross"
543 | },
544 | {
545 | "type": "consulting",
546 | "url": "https://feross.org/support"
547 | }
548 | ]
549 | },
550 | "node_modules/ignore-by-default": {
551 | "version": "1.0.1",
552 | "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz",
553 | "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==",
554 | "dev": true
555 | },
556 | "node_modules/inherits": {
557 | "version": "2.0.4",
558 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
559 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
560 | },
561 | "node_modules/ip": {
562 | "version": "2.0.0",
563 | "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz",
564 | "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ=="
565 | },
566 | "node_modules/ipaddr.js": {
567 | "version": "1.9.1",
568 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
569 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
570 | "engines": {
571 | "node": ">= 0.10"
572 | }
573 | },
574 | "node_modules/is-binary-path": {
575 | "version": "2.1.0",
576 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
577 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
578 | "dev": true,
579 | "dependencies": {
580 | "binary-extensions": "^2.0.0"
581 | },
582 | "engines": {
583 | "node": ">=8"
584 | }
585 | },
586 | "node_modules/is-extglob": {
587 | "version": "2.1.1",
588 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
589 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
590 | "dev": true,
591 | "engines": {
592 | "node": ">=0.10.0"
593 | }
594 | },
595 | "node_modules/is-glob": {
596 | "version": "4.0.3",
597 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
598 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
599 | "dev": true,
600 | "dependencies": {
601 | "is-extglob": "^2.1.1"
602 | },
603 | "engines": {
604 | "node": ">=0.10.0"
605 | }
606 | },
607 | "node_modules/is-number": {
608 | "version": "7.0.0",
609 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
610 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
611 | "dev": true,
612 | "engines": {
613 | "node": ">=0.12.0"
614 | }
615 | },
616 | "node_modules/media-typer": {
617 | "version": "0.3.0",
618 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
619 | "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
620 | "engines": {
621 | "node": ">= 0.6"
622 | }
623 | },
624 | "node_modules/memory-pager": {
625 | "version": "1.5.0",
626 | "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
627 | "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==",
628 | "optional": true
629 | },
630 | "node_modules/merge-descriptors": {
631 | "version": "1.0.1",
632 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
633 | "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
634 | },
635 | "node_modules/methods": {
636 | "version": "1.1.2",
637 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
638 | "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
639 | "engines": {
640 | "node": ">= 0.6"
641 | }
642 | },
643 | "node_modules/mime": {
644 | "version": "1.6.0",
645 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
646 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
647 | "bin": {
648 | "mime": "cli.js"
649 | },
650 | "engines": {
651 | "node": ">=4"
652 | }
653 | },
654 | "node_modules/mime-db": {
655 | "version": "1.52.0",
656 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
657 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
658 | "engines": {
659 | "node": ">= 0.6"
660 | }
661 | },
662 | "node_modules/mime-types": {
663 | "version": "2.1.35",
664 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
665 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
666 | "dependencies": {
667 | "mime-db": "1.52.0"
668 | },
669 | "engines": {
670 | "node": ">= 0.6"
671 | }
672 | },
673 | "node_modules/minimatch": {
674 | "version": "3.1.2",
675 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
676 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
677 | "dev": true,
678 | "dependencies": {
679 | "brace-expansion": "^1.1.7"
680 | },
681 | "engines": {
682 | "node": "*"
683 | }
684 | },
685 | "node_modules/mongodb": {
686 | "version": "4.8.1",
687 | "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.8.1.tgz",
688 | "integrity": "sha512-/NyiM3Ox9AwP5zrfT9TXjRKDJbXlLaUDQ9Rg//2lbg8D2A8GXV0VidYYnA/gfdK6uwbnL4FnAflH7FbGw3TS7w==",
689 | "dependencies": {
690 | "bson": "^4.6.5",
691 | "denque": "^2.0.1",
692 | "mongodb-connection-string-url": "^2.5.2",
693 | "socks": "^2.6.2"
694 | },
695 | "engines": {
696 | "node": ">=12.9.0"
697 | },
698 | "optionalDependencies": {
699 | "saslprep": "^1.0.3"
700 | }
701 | },
702 | "node_modules/mongodb-connection-string-url": {
703 | "version": "2.5.3",
704 | "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.5.3.tgz",
705 | "integrity": "sha512-f+/WsED+xF4B74l3k9V/XkTVj5/fxFH2o5ToKXd8Iyi5UhM+sO9u0Ape17Mvl/GkZaFtM0HQnzAG5OTmhKw+tQ==",
706 | "dependencies": {
707 | "@types/whatwg-url": "^8.2.1",
708 | "whatwg-url": "^11.0.0"
709 | }
710 | },
711 | "node_modules/ms": {
712 | "version": "2.0.0",
713 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
714 | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
715 | },
716 | "node_modules/negotiator": {
717 | "version": "0.6.3",
718 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
719 | "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
720 | "engines": {
721 | "node": ">= 0.6"
722 | }
723 | },
724 | "node_modules/nodemon": {
725 | "version": "2.0.19",
726 | "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.19.tgz",
727 | "integrity": "sha512-4pv1f2bMDj0Eeg/MhGqxrtveeQ5/G/UVe9iO6uTZzjnRluSA4PVWf8CW99LUPwGB3eNIA7zUFoP77YuI7hOc0A==",
728 | "dev": true,
729 | "hasInstallScript": true,
730 | "dependencies": {
731 | "chokidar": "^3.5.2",
732 | "debug": "^3.2.7",
733 | "ignore-by-default": "^1.0.1",
734 | "minimatch": "^3.0.4",
735 | "pstree.remy": "^1.1.8",
736 | "semver": "^5.7.1",
737 | "simple-update-notifier": "^1.0.7",
738 | "supports-color": "^5.5.0",
739 | "touch": "^3.1.0",
740 | "undefsafe": "^2.0.5"
741 | },
742 | "bin": {
743 | "nodemon": "bin/nodemon.js"
744 | },
745 | "engines": {
746 | "node": ">=8.10.0"
747 | },
748 | "funding": {
749 | "type": "opencollective",
750 | "url": "https://opencollective.com/nodemon"
751 | }
752 | },
753 | "node_modules/nodemon/node_modules/debug": {
754 | "version": "3.2.7",
755 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
756 | "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
757 | "dev": true,
758 | "dependencies": {
759 | "ms": "^2.1.1"
760 | }
761 | },
762 | "node_modules/nodemon/node_modules/ms": {
763 | "version": "2.1.3",
764 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
765 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
766 | "dev": true
767 | },
768 | "node_modules/nopt": {
769 | "version": "1.0.10",
770 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
771 | "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==",
772 | "dev": true,
773 | "dependencies": {
774 | "abbrev": "1"
775 | },
776 | "bin": {
777 | "nopt": "bin/nopt.js"
778 | },
779 | "engines": {
780 | "node": "*"
781 | }
782 | },
783 | "node_modules/normalize-path": {
784 | "version": "3.0.0",
785 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
786 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
787 | "dev": true,
788 | "engines": {
789 | "node": ">=0.10.0"
790 | }
791 | },
792 | "node_modules/object-assign": {
793 | "version": "4.1.1",
794 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
795 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
796 | "engines": {
797 | "node": ">=0.10.0"
798 | }
799 | },
800 | "node_modules/object-inspect": {
801 | "version": "1.12.2",
802 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz",
803 | "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==",
804 | "funding": {
805 | "url": "https://github.com/sponsors/ljharb"
806 | }
807 | },
808 | "node_modules/on-finished": {
809 | "version": "2.4.1",
810 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
811 | "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
812 | "dependencies": {
813 | "ee-first": "1.1.1"
814 | },
815 | "engines": {
816 | "node": ">= 0.8"
817 | }
818 | },
819 | "node_modules/parseurl": {
820 | "version": "1.3.3",
821 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
822 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
823 | "engines": {
824 | "node": ">= 0.8"
825 | }
826 | },
827 | "node_modules/path-to-regexp": {
828 | "version": "0.1.7",
829 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
830 | "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
831 | },
832 | "node_modules/picomatch": {
833 | "version": "2.3.1",
834 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
835 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
836 | "dev": true,
837 | "engines": {
838 | "node": ">=8.6"
839 | },
840 | "funding": {
841 | "url": "https://github.com/sponsors/jonschlinkert"
842 | }
843 | },
844 | "node_modules/proxy-addr": {
845 | "version": "2.0.7",
846 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
847 | "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
848 | "dependencies": {
849 | "forwarded": "0.2.0",
850 | "ipaddr.js": "1.9.1"
851 | },
852 | "engines": {
853 | "node": ">= 0.10"
854 | }
855 | },
856 | "node_modules/pstree.remy": {
857 | "version": "1.1.8",
858 | "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz",
859 | "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==",
860 | "dev": true
861 | },
862 | "node_modules/punycode": {
863 | "version": "2.1.1",
864 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
865 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
866 | "engines": {
867 | "node": ">=6"
868 | }
869 | },
870 | "node_modules/qs": {
871 | "version": "6.10.3",
872 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz",
873 | "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==",
874 | "dependencies": {
875 | "side-channel": "^1.0.4"
876 | },
877 | "engines": {
878 | "node": ">=0.6"
879 | },
880 | "funding": {
881 | "url": "https://github.com/sponsors/ljharb"
882 | }
883 | },
884 | "node_modules/range-parser": {
885 | "version": "1.2.1",
886 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
887 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
888 | "engines": {
889 | "node": ">= 0.6"
890 | }
891 | },
892 | "node_modules/raw-body": {
893 | "version": "2.5.1",
894 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
895 | "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
896 | "dependencies": {
897 | "bytes": "3.1.2",
898 | "http-errors": "2.0.0",
899 | "iconv-lite": "0.4.24",
900 | "unpipe": "1.0.0"
901 | },
902 | "engines": {
903 | "node": ">= 0.8"
904 | }
905 | },
906 | "node_modules/readdirp": {
907 | "version": "3.6.0",
908 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
909 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
910 | "dev": true,
911 | "dependencies": {
912 | "picomatch": "^2.2.1"
913 | },
914 | "engines": {
915 | "node": ">=8.10.0"
916 | }
917 | },
918 | "node_modules/safe-buffer": {
919 | "version": "5.2.1",
920 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
921 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
922 | "funding": [
923 | {
924 | "type": "github",
925 | "url": "https://github.com/sponsors/feross"
926 | },
927 | {
928 | "type": "patreon",
929 | "url": "https://www.patreon.com/feross"
930 | },
931 | {
932 | "type": "consulting",
933 | "url": "https://feross.org/support"
934 | }
935 | ]
936 | },
937 | "node_modules/safer-buffer": {
938 | "version": "2.1.2",
939 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
940 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
941 | },
942 | "node_modules/saslprep": {
943 | "version": "1.0.3",
944 | "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz",
945 | "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==",
946 | "optional": true,
947 | "dependencies": {
948 | "sparse-bitfield": "^3.0.3"
949 | },
950 | "engines": {
951 | "node": ">=6"
952 | }
953 | },
954 | "node_modules/semver": {
955 | "version": "5.7.1",
956 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
957 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
958 | "dev": true,
959 | "bin": {
960 | "semver": "bin/semver"
961 | }
962 | },
963 | "node_modules/send": {
964 | "version": "0.18.0",
965 | "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
966 | "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
967 | "dependencies": {
968 | "debug": "2.6.9",
969 | "depd": "2.0.0",
970 | "destroy": "1.2.0",
971 | "encodeurl": "~1.0.2",
972 | "escape-html": "~1.0.3",
973 | "etag": "~1.8.1",
974 | "fresh": "0.5.2",
975 | "http-errors": "2.0.0",
976 | "mime": "1.6.0",
977 | "ms": "2.1.3",
978 | "on-finished": "2.4.1",
979 | "range-parser": "~1.2.1",
980 | "statuses": "2.0.1"
981 | },
982 | "engines": {
983 | "node": ">= 0.8.0"
984 | }
985 | },
986 | "node_modules/send/node_modules/ms": {
987 | "version": "2.1.3",
988 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
989 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
990 | },
991 | "node_modules/serve-static": {
992 | "version": "1.15.0",
993 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
994 | "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
995 | "dependencies": {
996 | "encodeurl": "~1.0.2",
997 | "escape-html": "~1.0.3",
998 | "parseurl": "~1.3.3",
999 | "send": "0.18.0"
1000 | },
1001 | "engines": {
1002 | "node": ">= 0.8.0"
1003 | }
1004 | },
1005 | "node_modules/setprototypeof": {
1006 | "version": "1.2.0",
1007 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
1008 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
1009 | },
1010 | "node_modules/side-channel": {
1011 | "version": "1.0.4",
1012 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
1013 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
1014 | "dependencies": {
1015 | "call-bind": "^1.0.0",
1016 | "get-intrinsic": "^1.0.2",
1017 | "object-inspect": "^1.9.0"
1018 | },
1019 | "funding": {
1020 | "url": "https://github.com/sponsors/ljharb"
1021 | }
1022 | },
1023 | "node_modules/simple-update-notifier": {
1024 | "version": "1.0.7",
1025 | "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.0.7.tgz",
1026 | "integrity": "sha512-BBKgR84BJQJm6WjWFMHgLVuo61FBDSj1z/xSFUIozqO6wO7ii0JxCqlIud7Enr/+LhlbNI0whErq96P2qHNWew==",
1027 | "dev": true,
1028 | "dependencies": {
1029 | "semver": "~7.0.0"
1030 | },
1031 | "engines": {
1032 | "node": ">=8.10.0"
1033 | }
1034 | },
1035 | "node_modules/simple-update-notifier/node_modules/semver": {
1036 | "version": "7.0.0",
1037 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz",
1038 | "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==",
1039 | "dev": true,
1040 | "bin": {
1041 | "semver": "bin/semver.js"
1042 | }
1043 | },
1044 | "node_modules/smart-buffer": {
1045 | "version": "4.2.0",
1046 | "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
1047 | "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
1048 | "engines": {
1049 | "node": ">= 6.0.0",
1050 | "npm": ">= 3.0.0"
1051 | }
1052 | },
1053 | "node_modules/socks": {
1054 | "version": "2.7.0",
1055 | "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.0.tgz",
1056 | "integrity": "sha512-scnOe9y4VuiNUULJN72GrM26BNOjVsfPXI+j+98PkyEfsIXroa5ofyjT+FzGvn/xHs73U2JtoBYAVx9Hl4quSA==",
1057 | "dependencies": {
1058 | "ip": "^2.0.0",
1059 | "smart-buffer": "^4.2.0"
1060 | },
1061 | "engines": {
1062 | "node": ">= 10.13.0",
1063 | "npm": ">= 3.0.0"
1064 | }
1065 | },
1066 | "node_modules/sparse-bitfield": {
1067 | "version": "3.0.3",
1068 | "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz",
1069 | "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==",
1070 | "optional": true,
1071 | "dependencies": {
1072 | "memory-pager": "^1.0.2"
1073 | }
1074 | },
1075 | "node_modules/statuses": {
1076 | "version": "2.0.1",
1077 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
1078 | "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
1079 | "engines": {
1080 | "node": ">= 0.8"
1081 | }
1082 | },
1083 | "node_modules/supports-color": {
1084 | "version": "5.5.0",
1085 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
1086 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
1087 | "dev": true,
1088 | "dependencies": {
1089 | "has-flag": "^3.0.0"
1090 | },
1091 | "engines": {
1092 | "node": ">=4"
1093 | }
1094 | },
1095 | "node_modules/to-regex-range": {
1096 | "version": "5.0.1",
1097 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
1098 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
1099 | "dev": true,
1100 | "dependencies": {
1101 | "is-number": "^7.0.0"
1102 | },
1103 | "engines": {
1104 | "node": ">=8.0"
1105 | }
1106 | },
1107 | "node_modules/toidentifier": {
1108 | "version": "1.0.1",
1109 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
1110 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
1111 | "engines": {
1112 | "node": ">=0.6"
1113 | }
1114 | },
1115 | "node_modules/touch": {
1116 | "version": "3.1.0",
1117 | "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz",
1118 | "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==",
1119 | "dev": true,
1120 | "dependencies": {
1121 | "nopt": "~1.0.10"
1122 | },
1123 | "bin": {
1124 | "nodetouch": "bin/nodetouch.js"
1125 | }
1126 | },
1127 | "node_modules/tr46": {
1128 | "version": "3.0.0",
1129 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz",
1130 | "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==",
1131 | "dependencies": {
1132 | "punycode": "^2.1.1"
1133 | },
1134 | "engines": {
1135 | "node": ">=12"
1136 | }
1137 | },
1138 | "node_modules/type-is": {
1139 | "version": "1.6.18",
1140 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
1141 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
1142 | "dependencies": {
1143 | "media-typer": "0.3.0",
1144 | "mime-types": "~2.1.24"
1145 | },
1146 | "engines": {
1147 | "node": ">= 0.6"
1148 | }
1149 | },
1150 | "node_modules/undefsafe": {
1151 | "version": "2.0.5",
1152 | "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz",
1153 | "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==",
1154 | "dev": true
1155 | },
1156 | "node_modules/unpipe": {
1157 | "version": "1.0.0",
1158 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
1159 | "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
1160 | "engines": {
1161 | "node": ">= 0.8"
1162 | }
1163 | },
1164 | "node_modules/utils-merge": {
1165 | "version": "1.0.1",
1166 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
1167 | "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
1168 | "engines": {
1169 | "node": ">= 0.4.0"
1170 | }
1171 | },
1172 | "node_modules/vary": {
1173 | "version": "1.1.2",
1174 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
1175 | "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
1176 | "engines": {
1177 | "node": ">= 0.8"
1178 | }
1179 | },
1180 | "node_modules/webidl-conversions": {
1181 | "version": "7.0.0",
1182 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
1183 | "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==",
1184 | "engines": {
1185 | "node": ">=12"
1186 | }
1187 | },
1188 | "node_modules/whatwg-url": {
1189 | "version": "11.0.0",
1190 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz",
1191 | "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==",
1192 | "dependencies": {
1193 | "tr46": "^3.0.0",
1194 | "webidl-conversions": "^7.0.0"
1195 | },
1196 | "engines": {
1197 | "node": ">=12"
1198 | }
1199 | }
1200 | },
1201 | "dependencies": {
1202 | "@types/node": {
1203 | "version": "18.7.5",
1204 | "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.5.tgz",
1205 | "integrity": "sha512-NcKK6Ts+9LqdHJaW6HQmgr7dT/i3GOHG+pt6BiWv++5SnjtRd4NXeiuN2kA153SjhXPR/AhHIPHPbrsbpUVOww=="
1206 | },
1207 | "@types/webidl-conversions": {
1208 | "version": "6.1.1",
1209 | "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-6.1.1.tgz",
1210 | "integrity": "sha512-XAahCdThVuCFDQLT7R7Pk/vqeObFNL3YqRyFZg+AqAP/W1/w3xHaIxuW7WszQqTbIBOPRcItYJIou3i/mppu3Q=="
1211 | },
1212 | "@types/whatwg-url": {
1213 | "version": "8.2.2",
1214 | "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz",
1215 | "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==",
1216 | "requires": {
1217 | "@types/node": "*",
1218 | "@types/webidl-conversions": "*"
1219 | }
1220 | },
1221 | "abbrev": {
1222 | "version": "1.1.1",
1223 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
1224 | "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
1225 | "dev": true
1226 | },
1227 | "accepts": {
1228 | "version": "1.3.8",
1229 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
1230 | "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
1231 | "requires": {
1232 | "mime-types": "~2.1.34",
1233 | "negotiator": "0.6.3"
1234 | }
1235 | },
1236 | "anymatch": {
1237 | "version": "3.1.2",
1238 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
1239 | "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
1240 | "dev": true,
1241 | "requires": {
1242 | "normalize-path": "^3.0.0",
1243 | "picomatch": "^2.0.4"
1244 | }
1245 | },
1246 | "array-flatten": {
1247 | "version": "1.1.1",
1248 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
1249 | "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
1250 | },
1251 | "balanced-match": {
1252 | "version": "1.0.2",
1253 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
1254 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
1255 | "dev": true
1256 | },
1257 | "base64-js": {
1258 | "version": "1.5.1",
1259 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
1260 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
1261 | },
1262 | "binary-extensions": {
1263 | "version": "2.2.0",
1264 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
1265 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
1266 | "dev": true
1267 | },
1268 | "body-parser": {
1269 | "version": "1.20.0",
1270 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz",
1271 | "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==",
1272 | "requires": {
1273 | "bytes": "3.1.2",
1274 | "content-type": "~1.0.4",
1275 | "debug": "2.6.9",
1276 | "depd": "2.0.0",
1277 | "destroy": "1.2.0",
1278 | "http-errors": "2.0.0",
1279 | "iconv-lite": "0.4.24",
1280 | "on-finished": "2.4.1",
1281 | "qs": "6.10.3",
1282 | "raw-body": "2.5.1",
1283 | "type-is": "~1.6.18",
1284 | "unpipe": "1.0.0"
1285 | }
1286 | },
1287 | "brace-expansion": {
1288 | "version": "1.1.11",
1289 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
1290 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
1291 | "dev": true,
1292 | "requires": {
1293 | "balanced-match": "^1.0.0",
1294 | "concat-map": "0.0.1"
1295 | }
1296 | },
1297 | "braces": {
1298 | "version": "3.0.2",
1299 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
1300 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
1301 | "dev": true,
1302 | "requires": {
1303 | "fill-range": "^7.0.1"
1304 | }
1305 | },
1306 | "bson": {
1307 | "version": "4.6.5",
1308 | "resolved": "https://registry.npmjs.org/bson/-/bson-4.6.5.tgz",
1309 | "integrity": "sha512-uqrgcjyOaZsHfz7ea8zLRCLe1u+QGUSzMZmvXqO24CDW7DWoW1qiN9folSwa7hSneTSgM2ykDIzF5kcQQ8cwNw==",
1310 | "requires": {
1311 | "buffer": "^5.6.0"
1312 | }
1313 | },
1314 | "buffer": {
1315 | "version": "5.7.1",
1316 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
1317 | "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
1318 | "requires": {
1319 | "base64-js": "^1.3.1",
1320 | "ieee754": "^1.1.13"
1321 | }
1322 | },
1323 | "bytes": {
1324 | "version": "3.1.2",
1325 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
1326 | "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="
1327 | },
1328 | "call-bind": {
1329 | "version": "1.0.2",
1330 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
1331 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
1332 | "requires": {
1333 | "function-bind": "^1.1.1",
1334 | "get-intrinsic": "^1.0.2"
1335 | }
1336 | },
1337 | "chokidar": {
1338 | "version": "3.5.3",
1339 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
1340 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
1341 | "dev": true,
1342 | "requires": {
1343 | "anymatch": "~3.1.2",
1344 | "braces": "~3.0.2",
1345 | "fsevents": "~2.3.2",
1346 | "glob-parent": "~5.1.2",
1347 | "is-binary-path": "~2.1.0",
1348 | "is-glob": "~4.0.1",
1349 | "normalize-path": "~3.0.0",
1350 | "readdirp": "~3.6.0"
1351 | }
1352 | },
1353 | "concat-map": {
1354 | "version": "0.0.1",
1355 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
1356 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
1357 | "dev": true
1358 | },
1359 | "content-disposition": {
1360 | "version": "0.5.4",
1361 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
1362 | "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
1363 | "requires": {
1364 | "safe-buffer": "5.2.1"
1365 | }
1366 | },
1367 | "content-type": {
1368 | "version": "1.0.4",
1369 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
1370 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
1371 | },
1372 | "cookie": {
1373 | "version": "0.5.0",
1374 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
1375 | "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw=="
1376 | },
1377 | "cookie-signature": {
1378 | "version": "1.0.6",
1379 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
1380 | "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
1381 | },
1382 | "cors": {
1383 | "version": "2.8.5",
1384 | "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
1385 | "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
1386 | "requires": {
1387 | "object-assign": "^4",
1388 | "vary": "^1"
1389 | }
1390 | },
1391 | "debug": {
1392 | "version": "2.6.9",
1393 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
1394 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
1395 | "requires": {
1396 | "ms": "2.0.0"
1397 | }
1398 | },
1399 | "denque": {
1400 | "version": "2.1.0",
1401 | "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz",
1402 | "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw=="
1403 | },
1404 | "depd": {
1405 | "version": "2.0.0",
1406 | "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
1407 | "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="
1408 | },
1409 | "destroy": {
1410 | "version": "1.2.0",
1411 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
1412 | "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg=="
1413 | },
1414 | "ee-first": {
1415 | "version": "1.1.1",
1416 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
1417 | "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
1418 | },
1419 | "encodeurl": {
1420 | "version": "1.0.2",
1421 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
1422 | "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w=="
1423 | },
1424 | "escape-html": {
1425 | "version": "1.0.3",
1426 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
1427 | "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
1428 | },
1429 | "etag": {
1430 | "version": "1.8.1",
1431 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
1432 | "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg=="
1433 | },
1434 | "express": {
1435 | "version": "4.18.1",
1436 | "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz",
1437 | "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==",
1438 | "requires": {
1439 | "accepts": "~1.3.8",
1440 | "array-flatten": "1.1.1",
1441 | "body-parser": "1.20.0",
1442 | "content-disposition": "0.5.4",
1443 | "content-type": "~1.0.4",
1444 | "cookie": "0.5.0",
1445 | "cookie-signature": "1.0.6",
1446 | "debug": "2.6.9",
1447 | "depd": "2.0.0",
1448 | "encodeurl": "~1.0.2",
1449 | "escape-html": "~1.0.3",
1450 | "etag": "~1.8.1",
1451 | "finalhandler": "1.2.0",
1452 | "fresh": "0.5.2",
1453 | "http-errors": "2.0.0",
1454 | "merge-descriptors": "1.0.1",
1455 | "methods": "~1.1.2",
1456 | "on-finished": "2.4.1",
1457 | "parseurl": "~1.3.3",
1458 | "path-to-regexp": "0.1.7",
1459 | "proxy-addr": "~2.0.7",
1460 | "qs": "6.10.3",
1461 | "range-parser": "~1.2.1",
1462 | "safe-buffer": "5.2.1",
1463 | "send": "0.18.0",
1464 | "serve-static": "1.15.0",
1465 | "setprototypeof": "1.2.0",
1466 | "statuses": "2.0.1",
1467 | "type-is": "~1.6.18",
1468 | "utils-merge": "1.0.1",
1469 | "vary": "~1.1.2"
1470 | }
1471 | },
1472 | "fill-range": {
1473 | "version": "7.0.1",
1474 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
1475 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
1476 | "dev": true,
1477 | "requires": {
1478 | "to-regex-range": "^5.0.1"
1479 | }
1480 | },
1481 | "finalhandler": {
1482 | "version": "1.2.0",
1483 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
1484 | "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
1485 | "requires": {
1486 | "debug": "2.6.9",
1487 | "encodeurl": "~1.0.2",
1488 | "escape-html": "~1.0.3",
1489 | "on-finished": "2.4.1",
1490 | "parseurl": "~1.3.3",
1491 | "statuses": "2.0.1",
1492 | "unpipe": "~1.0.0"
1493 | }
1494 | },
1495 | "forwarded": {
1496 | "version": "0.2.0",
1497 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
1498 | "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="
1499 | },
1500 | "fresh": {
1501 | "version": "0.5.2",
1502 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
1503 | "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q=="
1504 | },
1505 | "fsevents": {
1506 | "version": "2.3.2",
1507 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
1508 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
1509 | "dev": true,
1510 | "optional": true
1511 | },
1512 | "function-bind": {
1513 | "version": "1.1.1",
1514 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
1515 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
1516 | },
1517 | "get-intrinsic": {
1518 | "version": "1.1.2",
1519 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz",
1520 | "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==",
1521 | "requires": {
1522 | "function-bind": "^1.1.1",
1523 | "has": "^1.0.3",
1524 | "has-symbols": "^1.0.3"
1525 | }
1526 | },
1527 | "glob-parent": {
1528 | "version": "5.1.2",
1529 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
1530 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
1531 | "dev": true,
1532 | "requires": {
1533 | "is-glob": "^4.0.1"
1534 | }
1535 | },
1536 | "has": {
1537 | "version": "1.0.3",
1538 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
1539 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
1540 | "requires": {
1541 | "function-bind": "^1.1.1"
1542 | }
1543 | },
1544 | "has-flag": {
1545 | "version": "3.0.0",
1546 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
1547 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
1548 | "dev": true
1549 | },
1550 | "has-symbols": {
1551 | "version": "1.0.3",
1552 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
1553 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A=="
1554 | },
1555 | "http-errors": {
1556 | "version": "2.0.0",
1557 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
1558 | "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
1559 | "requires": {
1560 | "depd": "2.0.0",
1561 | "inherits": "2.0.4",
1562 | "setprototypeof": "1.2.0",
1563 | "statuses": "2.0.1",
1564 | "toidentifier": "1.0.1"
1565 | }
1566 | },
1567 | "iconv-lite": {
1568 | "version": "0.4.24",
1569 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
1570 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
1571 | "requires": {
1572 | "safer-buffer": ">= 2.1.2 < 3"
1573 | }
1574 | },
1575 | "ieee754": {
1576 | "version": "1.2.1",
1577 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
1578 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
1579 | },
1580 | "ignore-by-default": {
1581 | "version": "1.0.1",
1582 | "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz",
1583 | "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==",
1584 | "dev": true
1585 | },
1586 | "inherits": {
1587 | "version": "2.0.4",
1588 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
1589 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
1590 | },
1591 | "ip": {
1592 | "version": "2.0.0",
1593 | "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz",
1594 | "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ=="
1595 | },
1596 | "ipaddr.js": {
1597 | "version": "1.9.1",
1598 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
1599 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
1600 | },
1601 | "is-binary-path": {
1602 | "version": "2.1.0",
1603 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
1604 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
1605 | "dev": true,
1606 | "requires": {
1607 | "binary-extensions": "^2.0.0"
1608 | }
1609 | },
1610 | "is-extglob": {
1611 | "version": "2.1.1",
1612 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
1613 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
1614 | "dev": true
1615 | },
1616 | "is-glob": {
1617 | "version": "4.0.3",
1618 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
1619 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
1620 | "dev": true,
1621 | "requires": {
1622 | "is-extglob": "^2.1.1"
1623 | }
1624 | },
1625 | "is-number": {
1626 | "version": "7.0.0",
1627 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
1628 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
1629 | "dev": true
1630 | },
1631 | "media-typer": {
1632 | "version": "0.3.0",
1633 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
1634 | "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ=="
1635 | },
1636 | "memory-pager": {
1637 | "version": "1.5.0",
1638 | "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
1639 | "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==",
1640 | "optional": true
1641 | },
1642 | "merge-descriptors": {
1643 | "version": "1.0.1",
1644 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
1645 | "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
1646 | },
1647 | "methods": {
1648 | "version": "1.1.2",
1649 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
1650 | "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w=="
1651 | },
1652 | "mime": {
1653 | "version": "1.6.0",
1654 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
1655 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
1656 | },
1657 | "mime-db": {
1658 | "version": "1.52.0",
1659 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
1660 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
1661 | },
1662 | "mime-types": {
1663 | "version": "2.1.35",
1664 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
1665 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
1666 | "requires": {
1667 | "mime-db": "1.52.0"
1668 | }
1669 | },
1670 | "minimatch": {
1671 | "version": "3.1.2",
1672 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
1673 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
1674 | "dev": true,
1675 | "requires": {
1676 | "brace-expansion": "^1.1.7"
1677 | }
1678 | },
1679 | "mongodb": {
1680 | "version": "4.8.1",
1681 | "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.8.1.tgz",
1682 | "integrity": "sha512-/NyiM3Ox9AwP5zrfT9TXjRKDJbXlLaUDQ9Rg//2lbg8D2A8GXV0VidYYnA/gfdK6uwbnL4FnAflH7FbGw3TS7w==",
1683 | "requires": {
1684 | "bson": "^4.6.5",
1685 | "denque": "^2.0.1",
1686 | "mongodb-connection-string-url": "^2.5.2",
1687 | "saslprep": "^1.0.3",
1688 | "socks": "^2.6.2"
1689 | }
1690 | },
1691 | "mongodb-connection-string-url": {
1692 | "version": "2.5.3",
1693 | "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.5.3.tgz",
1694 | "integrity": "sha512-f+/WsED+xF4B74l3k9V/XkTVj5/fxFH2o5ToKXd8Iyi5UhM+sO9u0Ape17Mvl/GkZaFtM0HQnzAG5OTmhKw+tQ==",
1695 | "requires": {
1696 | "@types/whatwg-url": "^8.2.1",
1697 | "whatwg-url": "^11.0.0"
1698 | }
1699 | },
1700 | "ms": {
1701 | "version": "2.0.0",
1702 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
1703 | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
1704 | },
1705 | "negotiator": {
1706 | "version": "0.6.3",
1707 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
1708 | "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="
1709 | },
1710 | "nodemon": {
1711 | "version": "2.0.19",
1712 | "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.19.tgz",
1713 | "integrity": "sha512-4pv1f2bMDj0Eeg/MhGqxrtveeQ5/G/UVe9iO6uTZzjnRluSA4PVWf8CW99LUPwGB3eNIA7zUFoP77YuI7hOc0A==",
1714 | "dev": true,
1715 | "requires": {
1716 | "chokidar": "^3.5.2",
1717 | "debug": "^3.2.7",
1718 | "ignore-by-default": "^1.0.1",
1719 | "minimatch": "^3.0.4",
1720 | "pstree.remy": "^1.1.8",
1721 | "semver": "^5.7.1",
1722 | "simple-update-notifier": "^1.0.7",
1723 | "supports-color": "^5.5.0",
1724 | "touch": "^3.1.0",
1725 | "undefsafe": "^2.0.5"
1726 | },
1727 | "dependencies": {
1728 | "debug": {
1729 | "version": "3.2.7",
1730 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
1731 | "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
1732 | "dev": true,
1733 | "requires": {
1734 | "ms": "^2.1.1"
1735 | }
1736 | },
1737 | "ms": {
1738 | "version": "2.1.3",
1739 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
1740 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
1741 | "dev": true
1742 | }
1743 | }
1744 | },
1745 | "nopt": {
1746 | "version": "1.0.10",
1747 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
1748 | "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==",
1749 | "dev": true,
1750 | "requires": {
1751 | "abbrev": "1"
1752 | }
1753 | },
1754 | "normalize-path": {
1755 | "version": "3.0.0",
1756 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
1757 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
1758 | "dev": true
1759 | },
1760 | "object-assign": {
1761 | "version": "4.1.1",
1762 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
1763 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="
1764 | },
1765 | "object-inspect": {
1766 | "version": "1.12.2",
1767 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz",
1768 | "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ=="
1769 | },
1770 | "on-finished": {
1771 | "version": "2.4.1",
1772 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
1773 | "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
1774 | "requires": {
1775 | "ee-first": "1.1.1"
1776 | }
1777 | },
1778 | "parseurl": {
1779 | "version": "1.3.3",
1780 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
1781 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
1782 | },
1783 | "path-to-regexp": {
1784 | "version": "0.1.7",
1785 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
1786 | "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
1787 | },
1788 | "picomatch": {
1789 | "version": "2.3.1",
1790 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
1791 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
1792 | "dev": true
1793 | },
1794 | "proxy-addr": {
1795 | "version": "2.0.7",
1796 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
1797 | "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
1798 | "requires": {
1799 | "forwarded": "0.2.0",
1800 | "ipaddr.js": "1.9.1"
1801 | }
1802 | },
1803 | "pstree.remy": {
1804 | "version": "1.1.8",
1805 | "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz",
1806 | "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==",
1807 | "dev": true
1808 | },
1809 | "punycode": {
1810 | "version": "2.1.1",
1811 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
1812 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
1813 | },
1814 | "qs": {
1815 | "version": "6.10.3",
1816 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz",
1817 | "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==",
1818 | "requires": {
1819 | "side-channel": "^1.0.4"
1820 | }
1821 | },
1822 | "range-parser": {
1823 | "version": "1.2.1",
1824 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
1825 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
1826 | },
1827 | "raw-body": {
1828 | "version": "2.5.1",
1829 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
1830 | "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
1831 | "requires": {
1832 | "bytes": "3.1.2",
1833 | "http-errors": "2.0.0",
1834 | "iconv-lite": "0.4.24",
1835 | "unpipe": "1.0.0"
1836 | }
1837 | },
1838 | "readdirp": {
1839 | "version": "3.6.0",
1840 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
1841 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
1842 | "dev": true,
1843 | "requires": {
1844 | "picomatch": "^2.2.1"
1845 | }
1846 | },
1847 | "safe-buffer": {
1848 | "version": "5.2.1",
1849 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
1850 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
1851 | },
1852 | "safer-buffer": {
1853 | "version": "2.1.2",
1854 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
1855 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
1856 | },
1857 | "saslprep": {
1858 | "version": "1.0.3",
1859 | "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz",
1860 | "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==",
1861 | "optional": true,
1862 | "requires": {
1863 | "sparse-bitfield": "^3.0.3"
1864 | }
1865 | },
1866 | "semver": {
1867 | "version": "5.7.1",
1868 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
1869 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
1870 | "dev": true
1871 | },
1872 | "send": {
1873 | "version": "0.18.0",
1874 | "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
1875 | "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
1876 | "requires": {
1877 | "debug": "2.6.9",
1878 | "depd": "2.0.0",
1879 | "destroy": "1.2.0",
1880 | "encodeurl": "~1.0.2",
1881 | "escape-html": "~1.0.3",
1882 | "etag": "~1.8.1",
1883 | "fresh": "0.5.2",
1884 | "http-errors": "2.0.0",
1885 | "mime": "1.6.0",
1886 | "ms": "2.1.3",
1887 | "on-finished": "2.4.1",
1888 | "range-parser": "~1.2.1",
1889 | "statuses": "2.0.1"
1890 | },
1891 | "dependencies": {
1892 | "ms": {
1893 | "version": "2.1.3",
1894 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
1895 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
1896 | }
1897 | }
1898 | },
1899 | "serve-static": {
1900 | "version": "1.15.0",
1901 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
1902 | "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
1903 | "requires": {
1904 | "encodeurl": "~1.0.2",
1905 | "escape-html": "~1.0.3",
1906 | "parseurl": "~1.3.3",
1907 | "send": "0.18.0"
1908 | }
1909 | },
1910 | "setprototypeof": {
1911 | "version": "1.2.0",
1912 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
1913 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
1914 | },
1915 | "side-channel": {
1916 | "version": "1.0.4",
1917 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
1918 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
1919 | "requires": {
1920 | "call-bind": "^1.0.0",
1921 | "get-intrinsic": "^1.0.2",
1922 | "object-inspect": "^1.9.0"
1923 | }
1924 | },
1925 | "simple-update-notifier": {
1926 | "version": "1.0.7",
1927 | "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.0.7.tgz",
1928 | "integrity": "sha512-BBKgR84BJQJm6WjWFMHgLVuo61FBDSj1z/xSFUIozqO6wO7ii0JxCqlIud7Enr/+LhlbNI0whErq96P2qHNWew==",
1929 | "dev": true,
1930 | "requires": {
1931 | "semver": "~7.0.0"
1932 | },
1933 | "dependencies": {
1934 | "semver": {
1935 | "version": "7.0.0",
1936 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz",
1937 | "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==",
1938 | "dev": true
1939 | }
1940 | }
1941 | },
1942 | "smart-buffer": {
1943 | "version": "4.2.0",
1944 | "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
1945 | "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg=="
1946 | },
1947 | "socks": {
1948 | "version": "2.7.0",
1949 | "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.0.tgz",
1950 | "integrity": "sha512-scnOe9y4VuiNUULJN72GrM26BNOjVsfPXI+j+98PkyEfsIXroa5ofyjT+FzGvn/xHs73U2JtoBYAVx9Hl4quSA==",
1951 | "requires": {
1952 | "ip": "^2.0.0",
1953 | "smart-buffer": "^4.2.0"
1954 | }
1955 | },
1956 | "sparse-bitfield": {
1957 | "version": "3.0.3",
1958 | "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz",
1959 | "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==",
1960 | "optional": true,
1961 | "requires": {
1962 | "memory-pager": "^1.0.2"
1963 | }
1964 | },
1965 | "statuses": {
1966 | "version": "2.0.1",
1967 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
1968 | "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="
1969 | },
1970 | "supports-color": {
1971 | "version": "5.5.0",
1972 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
1973 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
1974 | "dev": true,
1975 | "requires": {
1976 | "has-flag": "^3.0.0"
1977 | }
1978 | },
1979 | "to-regex-range": {
1980 | "version": "5.0.1",
1981 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
1982 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
1983 | "dev": true,
1984 | "requires": {
1985 | "is-number": "^7.0.0"
1986 | }
1987 | },
1988 | "toidentifier": {
1989 | "version": "1.0.1",
1990 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
1991 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="
1992 | },
1993 | "touch": {
1994 | "version": "3.1.0",
1995 | "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz",
1996 | "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==",
1997 | "dev": true,
1998 | "requires": {
1999 | "nopt": "~1.0.10"
2000 | }
2001 | },
2002 | "tr46": {
2003 | "version": "3.0.0",
2004 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz",
2005 | "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==",
2006 | "requires": {
2007 | "punycode": "^2.1.1"
2008 | }
2009 | },
2010 | "type-is": {
2011 | "version": "1.6.18",
2012 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
2013 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
2014 | "requires": {
2015 | "media-typer": "0.3.0",
2016 | "mime-types": "~2.1.24"
2017 | }
2018 | },
2019 | "undefsafe": {
2020 | "version": "2.0.5",
2021 | "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz",
2022 | "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==",
2023 | "dev": true
2024 | },
2025 | "unpipe": {
2026 | "version": "1.0.0",
2027 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
2028 | "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ=="
2029 | },
2030 | "utils-merge": {
2031 | "version": "1.0.1",
2032 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
2033 | "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA=="
2034 | },
2035 | "vary": {
2036 | "version": "1.1.2",
2037 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
2038 | "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="
2039 | },
2040 | "webidl-conversions": {
2041 | "version": "7.0.0",
2042 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
2043 | "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g=="
2044 | },
2045 | "whatwg-url": {
2046 | "version": "11.0.0",
2047 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz",
2048 | "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==",
2049 | "requires": {
2050 | "tr46": "^3.0.0",
2051 | "webidl-conversions": "^7.0.0"
2052 | }
2053 | }
2054 | }
2055 | }
2056 |
--------------------------------------------------------------------------------