From 7e4fb4f595a83dfe202b2fb3af574e9ccbbd79d8 Mon Sep 17 00:00:00 2001
From: Abel <abelmhov7l@gmail.com>
Date: Fri, 23 Feb 2024 20:18:06 +0100
Subject: [PATCH 01/94] Changed order of quality goals

---
 docs/src/01_introduction_and_goals.adoc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/docs/src/01_introduction_and_goals.adoc b/docs/src/01_introduction_and_goals.adoc
index 87c25b63..160dfd74 100644
--- a/docs/src/01_introduction_and_goals.adoc
+++ b/docs/src/01_introduction_and_goals.adoc
@@ -77,10 +77,10 @@ A table with quality goals and concrete scenarios, ordered by priorities
 [options="header",cols="1,3"]
 |===
 |Quality Goal|Description
+| _Learnability_ | _Any user must be able to use the app with ease. The interface must remind the user to the one in  Saber y Ganar quiz show._
 | _Satisfaction_ | _Users will not get repeated questions in at least a hundred questions._
 | _Modularity_ | _The application will be divided in modules so that a change on one component has minimal impact on other components._
 | _Testability_ | _The application should be able to go through different test and complete them successfully._
-| _Learnability_ | _Any user must be able to use the app with ease. The interface must remind the user to the one in  Saber y Ganar quiz show._
 | _Time behaviour_ | _Users will not have to wait more than 500ms to get a new question._
 |===
 

From 34755fb8bfe684acd70ec04936d158cecae95ddd Mon Sep 17 00:00:00 2001
From: Abel <abelmhov7l@gmail.com>
Date: Fri, 23 Feb 2024 21:44:30 +0100
Subject: [PATCH 02/94] Corrected cohesion and spelling errors and restructured
 section 4

---
 docs/src/02_architecture_constraints.adoc |  2 +-
 docs/src/04_solution_strategy.adoc        | 12 ++++--------
 docs/src/07_deployment_view.adoc          |  2 +-
 3 files changed, 6 insertions(+), 10 deletions(-)

diff --git a/docs/src/02_architecture_constraints.adoc b/docs/src/02_architecture_constraints.adoc
index 3e7ebafa..ac6d7f0d 100644
--- a/docs/src/02_architecture_constraints.adoc
+++ b/docs/src/02_architecture_constraints.adoc
@@ -33,7 +33,7 @@ See https://docs.arc42.org/section-2/[Architecture Constraints] in the arc42 doc
 |*OS/Browser Independence*        |The project must be available to the maximum amount of users feasible. That includes support for mainstream OSs (_Windows_, _Linux_, _MacOS_) and browsers. (_Chrome_, _Safari_, _Firefox_, _Edge_)
 |*Usage of _REACT_*      |The _REACT JS_ framework will be used to develop the front-end of the project.
 |*Docker*     | The application will operate within a Docker environment.
-|*Version Control*      |In order of the project to be graded adequately, it must use _GitHub_ as its version control system. The contributions of each team member and agreements reached must be easily traceable.
+|*Version Control*      |In order for the project to be graded adequately, it must use _GitHub_ as its version control system. The contributions of each team member and agreements reached must be easily traceable.
 |*Wikidata* | To generate questions, WikiData would be used as a knowledge base. Wikidata is a free and open knowledge base that can be read and edited by both humans and machines. Wikidata acts as central storage for the structured data of its sister Wikimedia projects, including Wikipedia, Wikivoyage, Wiktionary, Wikisource and others. 
 |*Continuous integration and delivery*      |The development must progress through frequent integration of small changes into the main branch. New features must be automatically deployed with ease. (In our case, using _Docker_)
 |===
diff --git a/docs/src/04_solution_strategy.adoc b/docs/src/04_solution_strategy.adoc
index 84832e17..63ace935 100644
--- a/docs/src/04_solution_strategy.adoc
+++ b/docs/src/04_solution_strategy.adoc
@@ -8,7 +8,6 @@ ifndef::imagesdir[:imagesdir: ../images]
 In order to develop the application and adhere to the constraints, we selected the following technologies:
 
 - ReactJS: JavaScript library that streamlines the development of graphical interfaces for web applications.
-- TypeScript: Extension of JavaScript, bolstering it with type support for improved development.
 - GitHub: Platform offering remote repository services for project development, task management, and version control.
 - MongoDB: A non-linear database selected to oversee storage of diverse application contents, with each microservice possessing its dedicated database.
 - NodeJS: Facilitates efficient management of asynchronous events, notably beneficial for scalable network applications and database administration.
@@ -22,13 +21,13 @@ We will use PlantUML and UMLet for creating the documentation's diagrams.
 
 === Approaches to Achieve Top Quality Goals
 
-[cols="1,2,3"]
+[cols="1,2,3" options="header"]
 |===
 | Quality Goal | Scenario | Solution Approach
 
-| Privacy
-| Users seek reassurance in the safety and privacy of their data within our app.
-| Ensuring user data security and privacy within the application.
+| Scalability
+| The application's design must accommodate changes effortlessly throughout its lifecycle.
+| Employing a microservices approach to minimize code repetition and enhance understanding of application distribution, ensuring future scalability.
 
 | Usability
 | Seamless execution of all application functions is crucial for user satisfaction.
@@ -38,9 +37,6 @@ We will use PlantUML and UMLet for creating the documentation's diagrams.
 | Application architecture must facilitate seamless addition or modification of functionalities with minimal code changes.
 | Implementing design patterns and adhering to code conventions to ensure clean and maintainable code. Additionally, prioritizing testing during development for long-term maintainability.
 
-| Scalability
-| The application's design must accommodate changes effortlessly throughout its lifecycle.
-| Employing a microservices approach to minimize code repetition and enhance understanding of application distribution, ensuring future scalability.
 
 |===
 
diff --git a/docs/src/07_deployment_view.adoc b/docs/src/07_deployment_view.adoc
index 239f6db9..84766759 100644
--- a/docs/src/07_deployment_view.adoc
+++ b/docs/src/07_deployment_view.adoc
@@ -68,4 +68,4 @@ Final product will be deployed in http://wiq.sytes.net/ (if that does not work,
 Quality and/or Performance Features::
 As for performance features, our current Azure MV has 2 GiB RAM and 1vCPU.
 If that was not enough, we can always switch to an Oracle VM, which has better resources for free.
-Each microservice has its own container aswell as its own database in case of needing one.
\ No newline at end of file
+Each microservice has its own container as well as its own database in case of needing one.
\ No newline at end of file

From 86442c0914dac15df59d2980cf9ab66f7ac692c9 Mon Sep 17 00:00:00 2001
From: Abel <abelmhov7l@gmail.com>
Date: Fri, 23 Feb 2024 21:45:33 +0100
Subject: [PATCH 03/94] Reestructured some table headings

---
 docs/src/03_system_scope_and_context.adoc |  2 +-
 docs/src/05_building_block_view.adoc      | 32 +++++++++++------------
 docs/src/11_technical_risks.adoc          |  2 +-
 docs/src/12_glossary.adoc                 |  2 +-
 4 files changed, 18 insertions(+), 20 deletions(-)

diff --git a/docs/src/03_system_scope_and_context.adoc b/docs/src/03_system_scope_and_context.adoc
index 0d7b66c8..3fc2a647 100644
--- a/docs/src/03_system_scope_and_context.adoc
+++ b/docs/src/03_system_scope_and_context.adoc
@@ -45,7 +45,7 @@ The title of the table is the name of your system, the three columns contain the
 
 ****
 
-[cols=3 options="header"]
+[cols="1,2,2" options="header"]
 |===
 |Entity           |Input        |Output
 |*User*      | App usage and experience. | The user will introduce and send its credentials every time it creates a new account or logs into an existing one.
diff --git a/docs/src/05_building_block_view.adoc b/docs/src/05_building_block_view.adoc
index a386e81f..9b7f3678 100644
--- a/docs/src/05_building_block_view.adoc
+++ b/docs/src/05_building_block_view.adoc
@@ -71,7 +71,7 @@ Its headline is the name of the black box.
 ****
 
 [options="header"]
-[cols="1,2"]
+[cols="1,4"]
 |===
 |Name |Description
 |User
@@ -119,22 +119,15 @@ image::05_level2Diagram.png[Level 2 Diagram]
 
 ==== Contained Building Blocks
 
-[options="header"]
-[cols="1,2"]
+[cols="1,4" options="header"]
 |===
 |Name |Description
-|Web App
-|Layer in which the user will interact directly and which will connect with the different services.
-|Questions Service
-|Microservice to generate the questions used by the application from WikiData
-|Game Service
-|Microservice that implements the quiz game
-|Question Historic Service
-|Microservice that stores the generated questions for later consultation
-|User Statistics Service
-|Microservice that stores the statistics of the games played by the user.
-|Authentification Service
-|Authentication microservice that allows the user to register and log in.
+|Web App |Layer in which the user will interact directly and which will connect with the different services.
+|Questions Service |Microservice to generate the questions used by the application from WikiData
+|Game Service |Microservice that implements the quiz game
+|Question Historic Service |Microservice that stores the generated questions for later consultation
+|User Statistics Service |Microservice that stores the statistics of the games played by the user.
+|Authentification Service |Authentication microservice that allows the user to register and log in.
 |===
 
 === Level 3
@@ -147,20 +140,25 @@ To display the inner architecture of the different microservices, as well as how
 
 ==== Contained Building Blocks
 
-[options="header"]
-[cols="1,2"]
+[cols="1,4" options="header"]
 |===
 |Name |Description
+
 |Questions Generator
 |Contains the required templates and proceedings to construct questions. In order to do so, it delegates the Wikidata querying to the Wikidata extractor. When the data is returned, the question is formulated through templates. 
+
 |Wikidata Extractor
 |Handles extraction and formatting of Wikidata’s output. It’s queries must cover all necessary information in order to construct the question(s), including not only the correct response, but also believable and coherent “decoy responses”.
+
 |Questions Historic Controller
 |Receives the generated questions, and sends them to the database. Besides, it also handles recovering them from the database and sending them where they are needed. (e.g: as response from an API call, or to the UI)
+
 |User Statistics Controller
 |Receives various information about the player’s performance in the match. There, some processing may occur before storing it in the database. Also handles retrieving the information and sending it where it’s needed (e.g: as response from an API call, or to the UI).
+
 |Game Controller
 |Handles all the game’s logic; where the user input’s processing takes place. It can request questions to the Questions Microservice, and also gather user statistics, to later be set to the User Statistics Controller.
+
 |UI for the game and statistics
 |Handles appeareance and presentation. Actions taken by the user are communicated to their respective controllers, that may respond accordingly.
 |===
diff --git a/docs/src/11_technical_risks.adoc b/docs/src/11_technical_risks.adoc
index b488dee0..21b52120 100644
--- a/docs/src/11_technical_risks.adoc
+++ b/docs/src/11_technical_risks.adoc
@@ -24,7 +24,7 @@ See https://docs.arc42.org/section-11/[Risks and Technical Debt] in the arc42 do
 
 ****
 
-[options="header"]
+[cols="2,4" options="header"]
 |===
 |Risk                       |Consequence
 
diff --git a/docs/src/12_glossary.adoc b/docs/src/12_glossary.adoc
index fcc1b635..63766987 100644
--- a/docs/src/12_glossary.adoc
+++ b/docs/src/12_glossary.adoc
@@ -30,7 +30,7 @@ See https://docs.arc42.org/section-12/[Glossary] in the arc42 documentation.
 
 ****
 
-[cols="e,2e" options="header"]
+[cols="1,4" options="header"]
 |===
 |Term           |Definition
 

From 7f0c9b0a5f38e958cd7a5d91efe4ea9872737e8e Mon Sep 17 00:00:00 2001
From: Alex <uo283076@uniovi.es>
Date: Sat, 24 Feb 2024 10:44:22 +0100
Subject: [PATCH 04/94] =?UTF-8?q?Primera=20version=20del=20un=20ejemplo=20?=
 =?UTF-8?q?con=20una=20pregunta=20y=20a=C3=B1adida=20un=20poco=20de=20nave?=
 =?UTF-8?q?gabilidad?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 webapp/package-lock.json            | 39 +++++++++++++++++++++++++
 webapp/package.json                 |  1 +
 webapp/src/App.js                   |  2 +-
 webapp/src/components/FirstGame.css | 15 ++++++++++
 webapp/src/components/FirstGame.js  | 45 +++++++++++++++++++++++++++++
 webapp/src/components/Login.js      |  5 ++++
 webapp/src/index.js                 | 21 +++++++++++++-
 7 files changed, 126 insertions(+), 2 deletions(-)
 create mode 100644 webapp/src/components/FirstGame.css
 create mode 100644 webapp/src/components/FirstGame.js

diff --git a/webapp/package-lock.json b/webapp/package-lock.json
index bcc358d5..a4595721 100644
--- a/webapp/package-lock.json
+++ b/webapp/package-lock.json
@@ -17,6 +17,7 @@
         "axios": "^1.6.5",
         "react": "^18.2.0",
         "react-dom": "^18.2.0",
+        "react-router-dom": "^6.22.1",
         "react-scripts": "5.0.1",
         "web-vitals": "^3.5.1"
       },
@@ -5026,6 +5027,14 @@
         "node": ">=12"
       }
     },
+    "node_modules/@remix-run/router": {
+      "version": "1.15.1",
+      "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.15.1.tgz",
+      "integrity": "sha512-zcU0gM3z+3iqj8UX45AmWY810l3oUmXM7uH4dt5xtzvMhRtYVhKGOmgOd1877dOPPepfCjUv57w+syamWIYe7w==",
+      "engines": {
+        "node": ">=14.0.0"
+      }
+    },
     "node_modules/@rollup/plugin-babel": {
       "version": "5.3.1",
       "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz",
@@ -22030,6 +22039,36 @@
         "node": ">=0.10.0"
       }
     },
+    "node_modules/react-router": {
+      "version": "6.22.1",
+      "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.22.1.tgz",
+      "integrity": "sha512-0pdoRGwLtemnJqn1K0XHUbnKiX0S4X8CgvVVmHGOWmofESj31msHo/1YiqcJWK7Wxfq2a4uvvtS01KAQyWK/CQ==",
+      "dependencies": {
+        "@remix-run/router": "1.15.1"
+      },
+      "engines": {
+        "node": ">=14.0.0"
+      },
+      "peerDependencies": {
+        "react": ">=16.8"
+      }
+    },
+    "node_modules/react-router-dom": {
+      "version": "6.22.1",
+      "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.22.1.tgz",
+      "integrity": "sha512-iwMyyyrbL7zkKY7MRjOVRy+TMnS/OPusaFVxM2P11x9dzSzGmLsebkCvYirGq0DWB9K9hOspHYYtDz33gE5Duw==",
+      "dependencies": {
+        "@remix-run/router": "1.15.1",
+        "react-router": "6.22.1"
+      },
+      "engines": {
+        "node": ">=14.0.0"
+      },
+      "peerDependencies": {
+        "react": ">=16.8",
+        "react-dom": ">=16.8"
+      }
+    },
     "node_modules/react-scripts": {
       "version": "5.0.1",
       "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-5.0.1.tgz",
diff --git a/webapp/package.json b/webapp/package.json
index 6e59b09b..18a15f71 100644
--- a/webapp/package.json
+++ b/webapp/package.json
@@ -12,6 +12,7 @@
     "axios": "^1.6.5",
     "react": "^18.2.0",
     "react-dom": "^18.2.0",
+    "react-router-dom": "^6.22.1",
     "react-scripts": "5.0.1",
     "web-vitals": "^3.5.1"
   },
diff --git a/webapp/src/App.js b/webapp/src/App.js
index 910935ab..06c2736a 100644
--- a/webapp/src/App.js
+++ b/webapp/src/App.js
@@ -17,7 +17,7 @@ function App() {
     <Container component="main" maxWidth="xs">
       <CssBaseline />
       <Typography component="h1" variant="h5" align="center" sx={{ marginTop: 2 }}>
-        Welcome to wiq_0
+        Welcome to wiq_06c
       </Typography>
       {showLogin ? <Login /> : <AddUser />}
       <Typography component="div" align="center" sx={{ marginTop: 2 }}>
diff --git a/webapp/src/components/FirstGame.css b/webapp/src/components/FirstGame.css
new file mode 100644
index 00000000..f56cd259
--- /dev/null
+++ b/webapp/src/components/FirstGame.css
@@ -0,0 +1,15 @@
+button {
+    font-size: 20px; 
+    width: 200px;
+    height: 50px; 
+    justify-content: center;
+    margin-bottom: 15px;
+}
+
+.questionStructure .answers {
+    display: flex;
+    justify-content: center; /* Alinea los elementos en el centro horizontal /
+    align-items: center; / Alinea los elementos en el centro vertical /
+    height: 100vh; / Ajusta la altura al 100% del viewport */
+}
+  
\ No newline at end of file
diff --git a/webapp/src/components/FirstGame.js b/webapp/src/components/FirstGame.js
new file mode 100644
index 00000000..dbfa99c0
--- /dev/null
+++ b/webapp/src/components/FirstGame.js
@@ -0,0 +1,45 @@
+import React, { useState } from 'react';
+import { Container, Typography, TextField, Button, Snackbar } from '@mui/material';
+import './FirstGame.css';
+
+const Quiz = () => {
+  const question = '¿Cuál es la capital de España?';
+  const options = ['Madrid', 'Barcelona', 'Valencia', 'Sevilla'];
+  const correctAnswer = 'Madrid';
+
+  const [selectedOption, setSelectedOption] = useState(null);
+  const [isCorrect, setIsCorrect] = useState(null);
+
+
+  const checkAnswer = () => {
+    setIsCorrect(selectedOption === correctAnswer);
+  };
+
+  return (
+    
+    <Container component="main" maxWidth="xs" sx={{ marginTop: 4 }}>
+      <div class="questionStructure">
+      <Typography component="h1" variant="h5" sx={{ textAlign: 'center' }}>
+        {question}
+      </Typography>
+      {options.map((option, index) => (
+        <div key={index} class="answers">
+          <button
+            id={`option-${index}`}
+            name="quiz"
+            value={option}
+            onClick={checkAnswer}
+          >
+            {option}
+          </button>
+        </div> 
+      ))}
+      </div>
+      {isCorrect !== null && (
+        <p>{isCorrect ? '¡Respuesta correcta!' : 'Respuesta incorrecta.'}</p>
+      )}
+    </Container>
+  );
+};
+
+export default Quiz;
diff --git a/webapp/src/components/Login.js b/webapp/src/components/Login.js
index 0ad6268e..b9d17bab 100644
--- a/webapp/src/components/Login.js
+++ b/webapp/src/components/Login.js
@@ -2,6 +2,7 @@
 import React, { useState } from 'react';
 import axios from 'axios';
 import { Container, Typography, TextField, Button, Snackbar } from '@mui/material';
+import { useNavigate } from 'react-router-dom'; // Importa useHistory
 
 const Login = () => {
   const [username, setUsername] = useState('');
@@ -13,6 +14,8 @@ const Login = () => {
 
   const apiEndpoint = process.env.REACT_APP_API_ENDPOINT || 'http://localhost:8000';
 
+  const navigation = useNavigate(); // Añade esto
+
   const loginUser = async () => {
     try {
       const response = await axios.post(`${apiEndpoint}/login`, { username, password });
@@ -24,6 +27,8 @@ const Login = () => {
       setLoginSuccess(true);
 
       setOpenSnackbar(true);
+      navigation("/firstGame")
+
     } catch (error) {
       setError(error.response.data.error);
     }
diff --git a/webapp/src/index.js b/webapp/src/index.js
index d563c0fb..f0e61d85 100644
--- a/webapp/src/index.js
+++ b/webapp/src/index.js
@@ -4,10 +4,28 @@ import './index.css';
 import App from './App';
 import reportWebVitals from './reportWebVitals';
 
+import {
+  createBrowserRouter,
+  RouterProvider,
+  Route,
+  Routes,
+  useNavigate,
+  MemoryRouter
+  as Router
+} from "react-router-dom";
+
+import FirstGame from './components/FirstGame';
+
+
 const root = ReactDOM.createRoot(document.getElementById('root'));
 root.render(
   <React.StrictMode>
-    <App />
+    <Router>
+      <Routes>
+        <Route path="/" element={<App/>}></Route>
+        <Route path="/firstGame" element={<FirstGame/>}></Route>
+      </Routes>
+    </Router>
   </React.StrictMode>
 );
 
@@ -15,3 +33,4 @@ root.render(
 // to log results (for example: reportWebVitals(console.log))
 // or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
 reportWebVitals();
+

From 588cc02effb33f6fbb4926936dbd91d5f4749ce1 Mon Sep 17 00:00:00 2001
From: Alex <uo283076@uniovi.es>
Date: Sat, 24 Feb 2024 13:10:50 +0100
Subject: [PATCH 05/94] =?UTF-8?q?A=C3=B1adido=20un=20contador=20de=20tiemp?=
 =?UTF-8?q?o=20visual?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 package-lock.json                            |  50 ++++++++
 package.json                                 |   5 +
 webapp/src/components/CircularProgressBar.js |  29 +++++
 webapp/src/components/FirstGame.css          |  28 ++++-
 webapp/src/components/FirstGame.js           | 125 +++++++++++++++----
 5 files changed, 209 insertions(+), 28 deletions(-)
 create mode 100644 package-lock.json
 create mode 100644 package.json
 create mode 100644 webapp/src/components/CircularProgressBar.js

diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 00000000..f9ce8791
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,50 @@
+{
+  "name": "wiq_es6c",
+  "lockfileVersion": 3,
+  "requires": true,
+  "packages": {
+    "": {
+      "dependencies": {
+        "react-circular-progressbar": "^2.1.0"
+      }
+    },
+    "node_modules/js-tokens": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+      "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+      "peer": true
+    },
+    "node_modules/loose-envify": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+      "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+      "peer": true,
+      "dependencies": {
+        "js-tokens": "^3.0.0 || ^4.0.0"
+      },
+      "bin": {
+        "loose-envify": "cli.js"
+      }
+    },
+    "node_modules/react": {
+      "version": "18.2.0",
+      "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
+      "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
+      "peer": true,
+      "dependencies": {
+        "loose-envify": "^1.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/react-circular-progressbar": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/react-circular-progressbar/-/react-circular-progressbar-2.1.0.tgz",
+      "integrity": "sha512-xp4THTrod4aLpGy68FX/k1Q3nzrfHUjUe5v6FsdwXBl3YVMwgeXYQKDrku7n/D6qsJA9CuunarAboC2xCiKs1g==",
+      "peerDependencies": {
+        "react": "^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0"
+      }
+    }
+  }
+}
diff --git a/package.json b/package.json
new file mode 100644
index 00000000..5ba66912
--- /dev/null
+++ b/package.json
@@ -0,0 +1,5 @@
+{
+  "dependencies": {
+    "react-circular-progressbar": "^2.1.0"
+  }
+}
diff --git a/webapp/src/components/CircularProgressBar.js b/webapp/src/components/CircularProgressBar.js
new file mode 100644
index 00000000..39336ba4
--- /dev/null
+++ b/webapp/src/components/CircularProgressBar.js
@@ -0,0 +1,29 @@
+import { CircularProgressbar } from 'react-circular-progressbar';
+import 'react-circular-progressbar/dist/styles.css';
+import React, { useState, useEffect } from 'react';
+import { Container, Typography } from '@mui/material';
+
+
+function CircularProgress() {
+    const [percentage, setPercentage] = useState(100);
+    var control = 100
+    useEffect(() => {
+      const intervalId = setInterval(() => {
+        // Generar un nuevo porcentaje de progreso aleatorio (solo para propósitos de demostración)
+        control = control - 1
+        setPercentage(control); // Actualizar el estado con el nuevo porcentaje
+      }, 100); // Intervalo de 1000 milisegundos (1 segundo)
+  
+      // Limpiar el intervalo cuando el componente se desmonte
+      return () => clearInterval(intervalId);
+    }, []); // La dependencia vacía asegura que useEffect solo se ejecute una vez al montar el componente
+  
+    return (
+      <div style={{ width: '100px' }}>
+        <CircularProgressbar value={percentage}/>
+      </div>
+    );
+  }
+
+
+  export default CircularProgress();
\ No newline at end of file
diff --git a/webapp/src/components/FirstGame.css b/webapp/src/components/FirstGame.css
index f56cd259..0f620ae0 100644
--- a/webapp/src/components/FirstGame.css
+++ b/webapp/src/components/FirstGame.css
@@ -12,4 +12,30 @@ button {
     align-items: center; / Alinea los elementos en el centro vertical /
     height: 100vh; / Ajusta la altura al 100% del viewport */
 }
-  
\ No newline at end of file
+
+.allAnswers {
+    width:100%;
+    display: block;
+}
+
+.asnwers {
+    width:100%;
+}
+.progressBar {
+    height: 100%; 
+    margin-top: 10;
+    width:10%;
+    display: inline-block;
+}  
+
+.question {
+    height: 100%;
+    width: 90%;
+    display: inline-block;
+}
+
+.questionText {
+    display: flex;
+    margin-bottom: 25px;
+    
+}
\ No newline at end of file
diff --git a/webapp/src/components/FirstGame.js b/webapp/src/components/FirstGame.js
index dbfa99c0..ebe3abf6 100644
--- a/webapp/src/components/FirstGame.js
+++ b/webapp/src/components/FirstGame.js
@@ -1,45 +1,116 @@
-import React, { useState } from 'react';
-import { Container, Typography, TextField, Button, Snackbar } from '@mui/material';
+import React, { useState, useEffect } from 'react';
+import { Container, Typography } from '@mui/material';
 import './FirstGame.css';
+import { CircularProgressbar } from 'react-circular-progressbar';
+import 'react-circular-progressbar/dist/styles.css';
+import CircularProgress from './CircularProgressBar';
 
 const Quiz = () => {
-  const question = '¿Cuál es la capital de España?';
-  const options = ['Madrid', 'Barcelona', 'Valencia', 'Sevilla'];
-  const correctAnswer = 'Madrid';
+  const questions = [
+    {
+      question: '¿Cuál es la capital de España?',
+      options: ['Madrid', 'Barcelona', 'Valencia', 'Sevilla'],
+      correctAnswer: 'Madrid',
+    },
+    {
+      question: '¿Cual es la capital de Francia?',
+      options: ['Touluse', 'Paris', 'Lyon', 'Marseille'],
+      correctAnswer: 'Paris'
+    }
+    // Agrega más preguntas aquí
+  ];
 
+  const [currentQuestionIndex, setCurrentQuestionIndex] = useState(0);
   const [selectedOption, setSelectedOption] = useState(null);
   const [isCorrect, setIsCorrect] = useState(null);
 
+  const esperar = (ms) => {
+    return new Promise(resolve => setTimeout(resolve, ms));
+  };
+
+  function ProgressComponent({ initialPercentage }) {
+    const [percentage, setPercentage] = useState(initialPercentage);
+  
+    useEffect(() => {
+      const intervalId = setInterval(() => {
+        // Simulando un progreso que cambia dinámicamente
+        const newPercentage = percentage < 100 ? percentage + 1 : 0;
+        setPercentage(newPercentage);
+      }, 100); // Cambia el progreso cada 100 milisegundos
+  
+      return () => clearInterval(intervalId);
+    }, [percentage]); // El efecto se ejecuta cada vez que 'percentage' cambia
+  }
+  const checkAnswer = async (option) => {
+    setIsCorrect(option === questions[currentQuestionIndex].correctAnswer);
+    setSelectedOption(option);
+
+    const botonIncorrecta = document.getElementById('option-' + questions[currentQuestionIndex].options.indexOf(option))
+    if (!isCorrect) {
+      
+      botonIncorrecta.style.backgroundColor = 'red'
 
-  const checkAnswer = () => {
-    setIsCorrect(selectedOption === correctAnswer);
+    }
+    const numberAnswer = questions[currentQuestionIndex].options.indexOf(questions[currentQuestionIndex].correctAnswer)
+    const botonCorrecta = document.getElementById('option-' + numberAnswer)
+    botonCorrecta.style.backgroundColor = 'green' 
+    // Pasar a la siguiente pregunta después de responder
+
+    await esperar(2000); // Espera 2000 milisegundos (2 segundos)
+    botonIncorrecta.style.backgroundColor = 'lightgrey'
+    botonCorrecta.style.backgroundColor = 'lightgrey' 
+    console.log(questions.length-1)
+    console.log(currentQuestionIndex)
+    if (questions.length-1 !== currentQuestionIndex) {
+      
+      setCurrentQuestionIndex((prevIndex) => prevIndex + 1);
+    }
+
+    
   };
 
   return (
-    
-    <Container component="main" maxWidth="xs" sx={{ marginTop: 4 }}>
-      <div class="questionStructure">
-      <Typography component="h1" variant="h5" sx={{ textAlign: 'center' }}>
-        {question}
-      </Typography>
-      {options.map((option, index) => (
-        <div key={index} class="answers">
-          <button
-            id={`option-${index}`}
-            name="quiz"
-            value={option}
-            onClick={checkAnswer}
-          >
-            {option}
-          </button>
-        </div> 
-      ))}
+    <Container component="main" maxWidth="sm" sx={{ marginTop: 4 }}>
+      
+      
+      <div className="questionStructure">
+        <div class="question">
+        <Typography class="questionText" component="h1" variant="h5" sx={{ textAlign: 'center' }}>
+          {questions[currentQuestionIndex].question}
+        </Typography>
+        </div>
+        
+        <div class="progressBar">
+          <CircularProgress defaultValue="100"/>
+        </div>
+        <div class="allAnswers">
+        {questions[currentQuestionIndex].options.map((option, index) => (
+          <div key={index} className="answers">
+            <button
+              id={`option-${index}`}
+              name="quiz"
+              value={option}
+              onClick={() => checkAnswer(option)}
+              style={{backgroundColor: 'lightgrey'}}
+            >
+              {option}
+            </button>
+          </div>
+
+
+          
+        )
+        
+        )}
+        </div>
       </div>
-      {isCorrect !== null && (
+      {/* {isCorrect !== null && (
         <p>{isCorrect ? '¡Respuesta correcta!' : 'Respuesta incorrecta.'}</p>
-      )}
+      )} */}
     </Container>
   );
 };
 
+
+
 export default Quiz;

From ff3891c059c2cee9ef51b684989a2d905fe785a0 Mon Sep 17 00:00:00 2001
From: Alex <uo283076@uniovi.es>
Date: Sat, 24 Feb 2024 13:44:28 +0100
Subject: [PATCH 06/94] Commit antes de una probable explosion

---
 webapp/src/components/CircularProgressBar.js | 23 +++++++++-----------
 webapp/src/components/FirstGame.js           |  8 +++++--
 2 files changed, 16 insertions(+), 15 deletions(-)

diff --git a/webapp/src/components/CircularProgressBar.js b/webapp/src/components/CircularProgressBar.js
index 39336ba4..79bbab03 100644
--- a/webapp/src/components/CircularProgressBar.js
+++ b/webapp/src/components/CircularProgressBar.js
@@ -4,26 +4,23 @@ import React, { useState, useEffect } from 'react';
 import { Container, Typography } from '@mui/material';
 
 
-function CircularProgress() {
-    const [percentage, setPercentage] = useState(100);
-    var control = 100
+
+function CircularProgress(initialValue) {
+    const [percentage, setPercentage] = useState(initialValue);
+
     useEffect(() => {
       const intervalId = setInterval(() => {
-        // Generar un nuevo porcentaje de progreso aleatorio (solo para propósitos de demostración)
-        control = control - 1
-        setPercentage(control); // Actualizar el estado con el nuevo porcentaje
-      }, 100); // Intervalo de 1000 milisegundos (1 segundo)
+        setPercentage(prevPercentage => prevPercentage - 1); // Actualizar el estado con el nuevo porcentaje
+      }, 100); // Intervalo de 100 milisegundos (0.1 segundo)
   
       // Limpiar el intervalo cuando el componente se desmonte
       return () => clearInterval(intervalId);
     }, []); // La dependencia vacía asegura que useEffect solo se ejecute una vez al montar el componente
-  
+    
+    var listaDevolver = [<CircularProgressbar value={percentage}/>, percentage]
     return (
-      <div style={{ width: '100px' }}>
-        <CircularProgressbar value={percentage}/>
-      </div>
+        listaDevolver
     );
   }
 
-
-  export default CircularProgress();
\ No newline at end of file
+  export default CircularProgress;
\ No newline at end of file
diff --git a/webapp/src/components/FirstGame.js b/webapp/src/components/FirstGame.js
index ebe3abf6..c1277977 100644
--- a/webapp/src/components/FirstGame.js
+++ b/webapp/src/components/FirstGame.js
@@ -23,6 +23,10 @@ const Quiz = () => {
   const [currentQuestionIndex, setCurrentQuestionIndex] = useState(0);
   const [selectedOption, setSelectedOption] = useState(null);
   const [isCorrect, setIsCorrect] = useState(null);
+  const MiComponente = CircularProgress(100);
+  const MiCircularProgressbar = MiComponente[0];
+  const MiPercentage = MiComponente[1];
+
 
   const esperar = (ms) => {
     return new Promise(resolve => setTimeout(resolve, ms));
@@ -81,7 +85,7 @@ const Quiz = () => {
         </div>
         
         <div class="progressBar">
-          <CircularProgress defaultValue="100"/>
+          {MiCircularProgressbar}
         </div>
         <div class="allAnswers">
         {questions[currentQuestionIndex].options.map((option, index) => (
@@ -108,7 +112,7 @@ const Quiz = () => {
         <p>{isCorrect ? '¡Respuesta correcta!' : 'Respuesta incorrecta.'}</p>
       )} */}
     </Container>
-  );
+  );)
 };
 
 

From 3c528d969fcbe697c306cba504dcd921db7b378c Mon Sep 17 00:00:00 2001
From: Alex <uo283076@uniovi.es>
Date: Sat, 24 Feb 2024 13:55:29 +0100
Subject: [PATCH 07/94] Intento numero 1 de aprobar

---
 webapp/src/components/FirstGame.js | 45 +++++++++++++++++++-----------
 1 file changed, 28 insertions(+), 17 deletions(-)

diff --git a/webapp/src/components/FirstGame.js b/webapp/src/components/FirstGame.js
index c1277977..3b0a3c2b 100644
--- a/webapp/src/components/FirstGame.js
+++ b/webapp/src/components/FirstGame.js
@@ -3,7 +3,6 @@ import { Container, Typography } from '@mui/material';
 import './FirstGame.css';
 import { CircularProgressbar } from 'react-circular-progressbar';
 import 'react-circular-progressbar/dist/styles.css';
-import CircularProgress from './CircularProgressBar';
 
 const Quiz = () => {
   const questions = [
@@ -22,29 +21,43 @@ const Quiz = () => {
 
   const [currentQuestionIndex, setCurrentQuestionIndex] = useState(0);
   const [selectedOption, setSelectedOption] = useState(null);
-  const [isCorrect, setIsCorrect] = useState(null);
-  const MiComponente = CircularProgress(100);
-  const MiCircularProgressbar = MiComponente[0];
-  const MiPercentage = MiComponente[1];
-
+  const [isCorrect, setIsCorrect] = useState(true);
 
   const esperar = (ms) => {
     return new Promise(resolve => setTimeout(resolve, ms));
   };
 
-  function ProgressComponent({ initialPercentage }) {
-    const [percentage, setPercentage] = useState(initialPercentage);
-  
+  function CircularProgress(valorInicial) {
+    const [percentage, setPercentage] = useState(valorInicial);
+
     useEffect(() => {
       const intervalId = setInterval(() => {
-        // Simulando un progreso que cambia dinámicamente
-        const newPercentage = percentage < 100 ? percentage + 1 : 0;
-        setPercentage(newPercentage);
-      }, 100); // Cambia el progreso cada 100 milisegundos
+        if (percentage <= 0) {
+          clearInterval(intervalId); // Detener el intervalo
+          return 0; // Mantener percentage en 0
+        } else {
+          setPercentage(prevPercentage => prevPercentage - 1); // Actualizar el estado con el nuevo porcentaje
+        }
+      }, 100); // Intervalo de 100 milisegundos (0.1 segundo)
   
+      // Limpiar el intervalo cuando el componente se desmonte
       return () => clearInterval(intervalId);
-    }, [percentage]); // El efecto se ejecuta cada vez que 'percentage' cambia
+    }, []); // La dependencia vacía asegura que useEffect solo se ejecute una vez al montar el componente
+    
+    var listaDevolver = [<CircularProgressbar value={percentage}/>, percentage]
+    return (
+        listaDevolver
+    );
   }
+
+  const [MiCircularProgressbar, MiPercentage] = CircularProgress(100);
+
+  useEffect(() => {
+    if (MiPercentage === 0) {
+      // Realizar alguna acción cuando MiPercentage llegue a 0
+    }
+  }, [MiPercentage]); // Este efecto se ejecuta cada vez que 'MiPercentage' cambia
+
   const checkAnswer = async (option) => {
     setIsCorrect(option === questions[currentQuestionIndex].correctAnswer);
     setSelectedOption(option);
@@ -112,9 +125,7 @@ const Quiz = () => {
         <p>{isCorrect ? '¡Respuesta correcta!' : 'Respuesta incorrecta.'}</p>
       )} */}
     </Container>
-  );)
+  );
 };
 
-
-
 export default Quiz;

From 47d84bed78af1d91179fb1c7e7f7781afcf42f5e Mon Sep 17 00:00:00 2001
From: Abel <abelmhov7l@gmail.com>
Date: Sat, 24 Feb 2024 16:26:16 +0100
Subject: [PATCH 08/94] The arrow direction has been removed and the image
 insertion has been replaced by the code that generates it

---
 docs/images/08_domain_model.png | Bin 24220 -> 0 bytes
 docs/src/08_concepts.adoc       |  38 +++++++++++++++++++++++++++++++-
 2 files changed, 37 insertions(+), 1 deletion(-)
 delete mode 100644 docs/images/08_domain_model.png

diff --git a/docs/images/08_domain_model.png b/docs/images/08_domain_model.png
deleted file mode 100644
index 1fcf2a76ad948c158185394c4f56202fd702fc42..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 24220
zcmagGcRZGF_&;pV>=lu{S5`^(h$1WFMrKGNWXs;8Y?90nq1>Tlb5oJx&Wb1_6_R9c
z&vDV`^Z9;%&+mCXe|f!b*L9ueb)Ls~AMfLRUUB-mniOO#WH>lD6c@DA4RLUAlW}nH
z*h%o<mk$GM<nTwxO9SO~)y>`C#lg`FN7Lb^!!27c2YU`Xe-0-vFLzHladCGS+nZkA
zt}bF%-CTWo-?GDF3a=ZXy#Dze2N#~>m*Z_Xru+32b<l?Co$bMDvQH1IRm~z_iZB(L
z;Po#zuo%)c@qD#QvM^>i=pB)MDEdjBXZgM-v)=bXDLKkZPj)K`ndMyCR;q`WeIDsB
z7!S`X=rsAD4LSO#%0!LN5`^t%&;6D`#qwY%vICeN#J$4EO|{fTe;k?3*p{0h{xym+
z|D`oC?04g=bY7BD0)OZX)2FS^FZ<<6wH398?!G(m!Mx6e`<Mr1uaUU?i#uzhFU-ot
za;|tcHh4#br|kK*9+<l}R5pg`w&K4r%WUy@_bg<&&~aCH^k?9!^Hx$d#TPV0QmPkt
zQa)Y(-gZ9CWNyQi_90hHh>GdUqD40iqlZ3ax-yprPLB_1$um>fihWGRnf=YaD}Q`}
zDo^^Wt*>g8JyW`zRJEoH%je6Ve>QUZow)MY)_MA-Lez+*-sfr7DNg;FZ`699|CABG
zav;a>zQ3#U^h4+Ty2t8;@Dn|+-reFlV6p!ZU5M2U2!E5ZU6gO|n!mqacR*F=wdrUI
z3zspjFllOvC5qHt`!T~j{+YqG*d#&!lQ=k6LNBPR82MTK%JmPV__(uKM6W_)SLI}P
zT_aqb`i6)`k-=bUypXwhxVh>t-sk7ddDXQ<Rm!wfEp}4%Z@glpeHNWcB9xgRWWIbm
z_$>QMZjO}H#uxkVU+Sg$c9NPL^E@5v&-69@KI_@1aP?jU2Z<f`$Ol{k73$~V7**;{
zM`c@15<95^G&R99W_=V%_{cE<5dsw#BKpkr(K@$@clV{PamKQ~%Tw6d`Q3Wv_%W|M
zGXna|*KtWn6E8iAa8+iwxw)_I?{0aOAO3#-oUd5!O%g*Jj;dLs8WI7KyAc@GbeyOt
z0X#Bt13Y@hhwz&^sXi)}3&!My(c?ogpI*2=$j$vcRAD-YSBwL{YhWYLDBhH=yC=@r
zY%P9nyeDQEu(>pK;F`=7?9i!xboU)Q6Nk*(8;c(}*+Ma@^te&4#4XV_D$kvV$e6^g
zlw8aht+|%=*2kYy1&bYdcD2If$@cdLZo}oqH$FVnsM^?TWqbYVm485h>h&tC=K0|#
zJsEhH9-Q8ruc+Fj`4x8b#EeJ9#q>f(PTQ+<j~_qY+4wzyw#9$U%Em^)pqnS}FUUm8
zD(#e9RKz`a)_3s=3Wa)R_X^X|v31VZ*Efc6WGIDOvn@0(F0OdBGmcK5Or^Tq7@7R6
zCW_aOUfe2&fl=$CKCjEYQ{3G6*}6TMqF=d+&fhJ!Y&>now{~^{H&@P^Mb@3ebfBXn
zLbzWDmX2nXyE15JJvaEhp3+_?8F_#|Hcr^Gp|-X4V1B6L_e5*oM2>i6WF$eX@>qOA
z=j+$1GgYno)AQCZ-NS?}TZ0uA*4KZHq5Ixu2p?>IO}dg|q5^wRz;4U@ixzXs$HzxU
z=iOv`1We`Uj~{PL__DY}_NSDiCLecoX*v0fj*VS&biAcuPI$PZ38I7rQG_Z^bnVND
zZ0BsY`jif4F1E|M+(YZ;%GsN_$6S4V=lW1NgBDsZUvc;4;ZUKN>5Fu9bZTm9N$g6L
zL9g``w~C#I%I)15Yl{mosl3|#0|WKB%EFbZQDj(FZEbCfS|^&@1G%)rV2WS-zTV~1
zh<BN2$z}g|xE%VZE7uJTX{Ez2W(W~J;TIPdU%ahgGe7tkTZ;d6<WIB=0U@DB2MY#+
zdHHr>iUhrqEpx+A<p~%+y$Th^ko5VDkCc>@kBV51-lzvp*?KvKJs4eA*Lv$4ndKvc
zBV!Z6S*7l|C(ceoqr&9G^nW+w{|`G?wtHg!JU%!;Je)qXtV{s8cjW)yCypMb+8)Jw
z`a%3cmLCUQg&8eFUTQz$9s)1XcNAmO+w#MOLbAL$RL-G)*zi-jox>fmywH}{ABIoN
z(O-N0vX$s1#EuImF_JVjPu&>@*frmN3KN>n$M?U*q^!`Ba69MT@r9>6HhOaj;w?+7
ztAStdo=Htj^<#JvH}@MY_;;vHQ*N^_P5zz{L=^FiqVrQz9@CwqhQC67WqzC)jiR<U
z9sjCz)y{5{IDFW|#>QrA`P;8wzxH-_O)62g_k4*AJo{Aim1*^~8ODv()gvD~IKf)0
zb6>Lg_Qv=1^Q1q)8cVeACEmU3I`HUyEDg6-vi0SqnbDZ0*Kgk36ERDT{k}Rkfacsd
zB_Zp|&dy%VN=u8!PbH3P)pcefP)&g%_JFb`rt1vi8a$B<51RUf?ND=OpC`pd23}R!
zMiDCH!bm5Tf}1?Pz81B3!81evt8iLDR*Pms*08LjYIo~LzUk8|%ulyGfAor4HNCWZ
z74PF8<*<EriAs}Hd;0q0@J90&E~A;E7XAJGHf~R!KHcBn=h1D}DI>D-TbgVKx3fJM
z9UbNA9kSQ6TH>rSGc(hOrw_|UA1fu^{+@St_SY{3hqv^otW&ml1nn1p^yMF{eYDQa
z$q5e+-+VLu#dfx&I%cw*bU%p)iH96~BBzY*vMYYh4&V{qq1=sfkht~?^QpmGSTH_5
zK3q6n8kgX1a#j|}y)>IQ@q<5<64TF7`#Ze{kFJ0Cp-A&GMskmp#3e-#S#bv2&kf$Z
z7t=X>$IEV<WF<H$F{5aVxYmu~%BdH$=lq|=GzIwkL*S!eEKoTEJ3IX<!Me$h#@rn%
zH&*Y-FQQED)t9GmCCDjWPF6PAVV;fgTx92g)?p~O!-Sg*xe3O+G)6^}RP7$vM7_F1
zpkp%i_DANWzT1ZR2eO8X$}`VGvB^{MT~~3pFp?XrBV3nHDr)_5{`k}qOA~RPZgsG$
zqr~k?Q@1gn8_nwHg1%S37<o4LcYb@`raqh==KHTt&m#zD7sJeyqY8MOE`*g9d~9-?
zP&`+tX{9!BXYA|-Wda*l2x6_&bSC%BKHqelm@=_t=4x6#h+ts+m_BJe6mI&GVDRZC
z%|qJRukISyZ-tchi)Yaq-^s``wKIemsHt&8voDwGidr@pEu||<ps#GoxXoa?O{ZrF
z*_T<^*{N7AUc4Ca^GThu1lIlMM5~f7enJz0le0%s6Q8nMx<cj%=Q1&5I06Y<hT<q*
zzvgF2+!@i$IWI}(DiQY=W|4BdQ^5Apxadb4nb!98#|uw=et&U&b7SLumPCXCuhT1|
za--{zW;Fd@Ha6;IOUJqJdMvZ<#x$jlp&;J>8hOV3`1kZQ=5t%Pp_8GgbxTg`S>hc^
z&n2o9B_u?}l2&kRpb4tZw7*HYIL>Y>&L2Fp(x+5qSVAUUsZ32nLt}&6*tDlO&=>aP
zHRqpNBOg<2T{z=FR|@xKL&M=G7N$?kWp2id3qG-KJ-K`9*C&~MgYbw5uu_8GJ|5S2
z*ON`v7F|U~_%~@Xe~;JWM~4rDnlK3F%6dGEh`@I`BO}A`g0Lr{+hCe{3rY9kS?FVg
zo0-YYU%G^LWDSQevbxYH-P&0ET&Na<DRFXhJ7_0n50zb5_8HbuB5rpkh$}5&iS&8y
z_s1?aRI)&mh~=A4S8i%mmD|`0*R6A4w)CIGd<F1Z`2?qXFHUn-6(`k)90XT?s&>%6
zg`ZG?cAvrotj#lsn$ycA-DQ!Pwj%Tvd8URwAh~?#RGcCwrpMe`pI9}^v1!cUuw;1u
z9OkWS)*(jbdYA0y(o{!EN=kQkH})W$55Jaebw%HSeBk*F)7kERgR6*bp)GCw{ro~p
z<LL#br>F5=NY;^t3Xmateu9DV;jN=Q@eic=H+*NbRyEUvn@lJmai5SW(`;p)G?B)b
z-)9<Yyka*j>=0FQw|)<~nf?lj&u-WuhiWD_q&L)a=TFz0+X+YEd)oRIWYhh#PyJQ9
zYRHK$KYGOdX1Y&_Ut%J!Gw#AW!mf!-HUe><O8KhGRh~PAFxg~kla`R|j$Wl})c5}+
zx>{4~+|N#Q>B*ncvuja^qf5&oPi__E6^Xk_+G5!J{#Oi=4s}q3TYsd^9k80JTdvb8
z1!v}E_bvs*jK8}2Ht_aB+=V_uEt|gabht$z{N(p_wZm9d8LlG^!@LnC=d0uBzdXQf
z^*i}NNN@UF#Ry$m9(l6$eRhd&s6pYOvGHIeMt4R!tdZ^(mp+m@^+r;I>*%q@-?<*K
zCRiUt@BjDMS~P*Ukk9LL*Wp@jn*C?RKgQ_JNzB#bJbrsceH*nPJT&#s6OEH^qr#aO
z&V9{QS>}sv9~tyo(BS=dZA`u=%QEg<^p>q-KXOoJvL#W@+XgAd@N^ToKzRPux{NG0
zz3EP#?|AmYo?5Iu9IF@CP9I%QYCA`lLyq<0IhtB122+o-a<}tnY<-k0Qvoev9bjY^
zk6>t&04_2P>^A}O!W_>`z_Z8!C<_UZA*kuazqt4R12Dkj4uSD0&+j^NAE}GmA|oTQ
zj~!|BQ7k`x<cEBD>A{UaY#d2R$?tvndZpPg`1O1U67K=qyvRE)<4n(HnELGMn|{t;
zlGl23ezzW+tkw8&ADN^1)qzKsbai#Tj4oWca>emomWn0~A^e_gw>Vz!*1G5O?QO;!
z9&cEO@ngdh0M~%qN_wcx03)(YwI1xBIAw$LEaO|0Mvif7@LmFwc>k-|K$x%S(&nG9
zFI>mMC1cN3a*2f3)OhOX9J9nvA*E-uTd}vde_3B2CQ@!%W%b<I_y#Gt*M-Ez>FH%i
zgI727k!rxzb7AC}?-ze!>8ZInW)_zDnHhUg+o2~G8=rkATt7F+T%SdNePc{D)DtdQ
zZ0CFiA78%KmCRWnilU&TJP9b=_+|q>9iPr|g#a%U>iDW2<k<;WgpDt^sTyOJ0r0tG
zbar-r>$#`ow-j3Gc<q|ni60R6mOd^cS?qJ8@8!#vPslj0!g8g`W(l7@?E_)=U~j|v
zi)eBna(gOF-yp@T#!=-2F=Lk+{$oRpunw8){gEQRKZjj^4nOhlp&3Qi80V827Tw^#
z!e{nksm*|TIGm8YYx(>82YY*aE1BHYfXQl=wY0jRD5)Qs>WEn(V<<g;mnG?>0#{F8
zzEYKG)t9xOA6HCNW^kjTMtJVuzu(f*0w5K@ImAy-Z|`sCrjwNRCx?v5_RqR+JPAei
ztvBavQ+%uo?8O5fVPRoONeJQ3ITEl~tU=NF4>IX7A(Vl(B_$>P{{GK=N0Y-3m+|YH
zqzI7$fA6(<<A!&J$)1zs<W3VUdjKM~Xw(^DTPW1*CA?<!8`{E2$b{wPb3*heQpjOT
zJ6PrYsO>$bFoZ|{l9H;iY7UUyz37A7Bo(~tXTr#MULVy)%pQoNSQ4&<3l{X^t<u5n
z<whS@6*CmAgl$w*)FsGsWL$&<@R~wXQ&Yjg!5j(vdU>HuvvvtMZxjMI(UWI$ltR9Y
zjXhvjA)_QCe|8~H;kM&FriN&ZWJO{ss-)FbFQHg^f^E_B)DLXHcK3ERN{fW9zRQvj
zHmNKq(!z!Pc<}}dl|{xmJts$psqD@~@XoIRJ*AR={s~UAz5YvEbLdS+4AqT~Pxp4W
zJR5Mj#RWt<Ux$7-{`&f^UY`5~rm|Eq%LZ0i_s~SHEvOYnj(_;@AwO`Ll+9Qefa5E6
z)gBU<AMgI&#suG`Y#v_T4}{Ky*{0a8hecY!$lG^9bu`}S>n2xjm!}vs59UA9O$P%p
z!9b3o-!tm!&iH?cr1<kell|93Yd#Ev2g4kbkdRQgy<S{YPV9EI8ySKEuu&^m6Z_d)
zkz)D^ekZhHp<`XCnV3E{-}aSrCYKM|u62B$J-q$A=rz3l={6`_posFA#d0>ZonKm6
zsd@FHkPN1DS~)N<5OCOB*{>yVvpuK>z33&_A#(W?_z#sES4@N)<cgt5>>DcZd}e(X
z$FHkJSPmV7=ytAkcR7K<&D;|s6kESI(P~|)%a$WiKMCe%yfQx|3_x8t@oK6DN*UY&
z@Wrfv9Ulb4q22W{H}>F7PNijt7o2L*MwO^%_T8y~sY~_pqbGCE`8N3e-XFGb%MiB?
zhKk=loZw;B%a<>~iTl2M`7$uDvM^d>&%g4cugc^J3jtEo!+LvWoMrc*V^513t8-Ix
zKndK}_Vbe+jEjv8Rk$Z)Tn@#C`>I9V%@kKc=5sy^%intDj;7PByi)Eu_JWj@beE&7
z(73{cnVA_K2=&W}GdE{u6p5*)Vdrsc2CJ+?b~pc=ttz3TrUt+tajh>895m^jSs=iq
z*x#QUnKCJeI-op#`PL3Y>tgFVS`DTse73$Jk}i3%F8mCvmbP4c7AdTpIKY{ewY6`W
z``bUo(L^%d?9#3rS(%yVP0qNC=-1!+mh-WH>ZEPRWLp>%x-g4p^?+=^fRW|+88oAb
z3Z$i@D<nOy=^u(ZaoR;olST@*QV20M7hpW7lt{{}dxEC%l}MUZgO_GM6h)CSyruEg
z*Iks2JMH>O+3hJrFo<kvWg?s+BNreYu(7gUyeCG{7;ZQ>Hh=Qu$&mdmem0GF5PZtg
zA<%j)jHHmIGBVC}dgzN*W@Q}@CQtCDuH#&#E4}o<q$SWFrFeT?B>hYC?R)ePsWWJY
z<LLM|Z*#w|%@5gU_Q9*bx|R6!O4@fN1D(@v(8&tc$`bb7IEIo9OzHyD%uL|!pEp=p
z2$+tPzfYPp`uqx5o&B>h5i(KlNgQAW4%kD(Gz{!e;ne!>*2+C`>*(lcC@v-VH^M9(
z-lmgMQbwE5F3_1<rK7uYtH2vmnoCMcJA_aSnS~$czJ9%Ggc3G=dW?+hVNvW^Fj1Lm
zaC3M*d#whHE+4S!1iPA;n205Z;L5vEQ;;$Qv_RdLfQl>ix5C20iif!QDq#y$O(})O
z#>Ujn-1Q>$yw#fG<>Mn}@Q@&Ve|11F9bJI8P_HAVohj1Yof};UC6+r2yl`S{>?xtj
z!9k-XmcMJ70^Eoz5EzM{WD9D{pF4-S&*632!=lWG?wiBL5I!({p$mcj$=V5SSAY~o
zF;!K+AyLhh@og?P{$><GDQnWC!Jf}^Nk}{c`^|Q-`Zkj&^7CUAJDY|M5o{Z|l2WU6
z$X-UGa}?NpeSQ50gToQxM_NN#lal%%Ak5)WK&FlB&|IMatE91P@EUFMmtq@Ygew12
z?R7eM5<WaB3ZIy=)@9Ui?7gr}cPj7YM>>T?vDaY@pJSg`)NOA1$(5hohq%$3dv3s>
zQyShvNEQ-C0;6bgh<qhQS4~0p9n08yBrYuddBgtZ_3M6vyZulDr19&4EfByBYiD5t
zR=&Sq!!~i<0eb`2fhdFvStbYo{d3z6BDr$Q;is18oCgKKiEtnUO1?>CTUlSv%=@8y
zHRr77Bg;mgqgx)*|C=rQSDtR}>{MB|<|R63Gl^S46p4NR;*J)qXgb$nhNNv!qQ%I0
zOsl8yU7EyuL|&^4kNwkfTM>fhTa2#GJAMuhoIB?=z1tvDLwTg3NrMyu4k^?ow{G16
zp3ZBe32(U4ObX^N7k?a<OCTW<y}j|fYRqjzW%$=vU1?FQ1iWE&EUB=J47^FS{jxXP
zGUS(Q*RFkT*$qUvQ4JlGb>JTjdwU*+K?XKCFIn$-dNvIn*k7_`$QZ1Ofg@rYf~C7|
ze*hay6sX|mhE%cB)6+9Bz<e&i)5Ax;MI}%%OGe5IYWGz_8iwTOMV|sm6_pJe-PqU&
zAZEfVtXCFZwNy8ER)7lv(KG3eXbOv$?wo8x>;*1NOiX*bGZsk7*QgIzb8Ze;1Ik2)
zX*LxSjdg=pTq4&ryn2G9^I+N5%8vnqW=SV3$NN58aU@ONy3!i_d1z?J<`kANfN&hr
zm5W?_EWDh^8(29tRn^(D#L;@sYZEO&a{^pQ8mB(v_NCIIZZU$GY8H<zEhPoAKOj*L
z7(WVV5=^C8&1~7?<IAPJkkH{CAdjCB)ZP3X{@vKe=d@+P?FR3kK1-7-FbwRcNIQVR
zh=_<efz&i9|K%Bnp3Dyh>Iedt1?u9)2zm+<%PbxbKfjz@z)V+)7d;Jb6fZv2N%<_8
z2V|6MoLqqbG`+MgAqjrJ)I5HmRL^%78<xlgG_^g4w6rugcSq=mh=+#<<m1(YA+BWh
z*`~m)R59g9W!r9?K=lDr9J?F9mdEV3n#ThGxY8Vuk;tVAcjH8r;I<s>-`+lO7TjL@
zS$FjfrCdBo7$y~$K9dOj5Dg$aY``>&giM<V5Pn-c=F>}$t2Q<qY#N7;Cey}88K3~h
zxAV{bkBb7fS0C5ZNcGNKBNGr|Mr+tYAb8)~y9jKQ(ah_+Cz{OVF!30??9;B<d3m~;
zG(hMdD?keXnXVaQl;j<?HhL|8iYe+*D9qy*>5cYqLP+?+S6;ej2pK!}<-H$*toYct
zV)%huiy0tqx0bE%`+GaPu3x98<rNePrTO@x$2v{WPthDvlM1CpB=|6WX}-$z^mK@P
zm+}=AWMsS#_V*w|aWL@dWa$I!L-&K}gzT-E^7EG#6maanSX^90<5>Lhy&;S;MLm1=
zY*V8UI7fTss~Efs?HJ(B{e~!@2l1k=ZUPb;li4%7DBv2*_{MHI*JxA<SJqtXoBsO>
zcS(Oj0>ak(M}=Q#bpw0THxJkRGyRG)H6!Dd>utcRH{DLhct>dj8*Bnh0rW)<^L8;n
zHTwQ0dZqj$F`@I#8#MxRLv&7VE*l-46cBvX4n5mjTPi%9oVXW#7svhO#KCY*k<9gd
zhquSsOz!IH0-$N7kCL=Wz%&GI-GbN;1i{NL;4LeR9%Cw&55gE3pB)E!`@(bhcR3zz
zl(Boj#v(<ohg|#&Az0!I0TG;R-QO)ci@=5!=03mqS&o=E=0X~uiaeN`wDc;VC2Z*S
zOqyOfAfBZuwOG9zS(<qfix(omyTn6*sWE>-A9V}IO+4@<)_@0`k{NAa>)_}}$tsJ6
z4FNv#u~qZ-Om|xMukzyJVz>kLdH(&GiPhz0ybzBEB3E9bA#`X!;5K-u4zUdgb1hbw
zXPe2S$lqC>77~d}8j2#^Q<-JxKN<uIPn-&JVQ`LtfwV*}e--cr#9%E^&{KhK0s>X%
z@FI!-+V(sK?^B&y$ohhrT>KK^H*js43d%Zo>)WGC4`u~0_^=oPA`}Hgwoy>@Mo0G>
z{By4|1tvZziCxZ1fK9{iuU8FnRMPS5Zf<Y?y-XPefG|61M8v?rz?pg&N;*qR%ekYc
z)}W&tc3>=JVB=0I1gLAKeEj<qBd$uHU!O`IJ?b}@k%5In-YJ9RMq4N@K((Txt{bqk
zp_qOgA)4XZ>jRl0W~%?|-V9;WM0TaTM6N1$d1c(FlCXL+9hGT^TQyPxgpBIEn2TCk
zo3L}U0?RCiKBzNw)Y0Pd#5F8H%RaqQ-w))vTznJJ;ma#-`Na#7C42>6k#Qbudo!GX
zgbL;;Leri9R~O6Z`TGZF&NyKUoIX4R;Kr|;!=ZuoBRzIZ#JZ)axw$z%e<Gei_>R><
zI`7t7{aL~C!5&r#JA$*e*47iy&ne=slop~fp;Wx9N()odA`w3ApKscU?yqTRw?;im
z@SL*l1~_ob%WE8M+fncN1B?Qm$9VE&Zxyl@|C?CX0J!H5$@}WntF{%d5|~UYQ7Mi4
zud?0jFouhQ<-6RJ%#y`mi!%;lS6))Tb6AbcIIn=2|I)kza9~y-74gK*NW$pyKOLnO
zmy_%rCc;|LBC{fkv{8M=PK99XcZ8veqjw6oMv85F86lx^trRY-QTMxdkxxvXUg>s~
zflR!(t*4_Cser!ABw;JKL2tYm>yE*y&a}RRHrS_GQsKJ+k%R}U!2W$O;9-KdjwK~G
zH*PIqo&L)hw_A44jD}!mC*un~5Tvy3Zzog$Bw^S$nUt+IHaBN^p0O$;&L{FM@8MfE
znslB`$r3%(^+E1R_K;l<D8jwyyAhAJ!w5-LjJ;ntH!dWi7HPV#^p2LX;&?T~K}s3c
zLn>hJ^6jx|2lBc&RXu}}NQbAk$WnlP$B0R>Y1{%s3e7^lbG1$BWgFtHyj)6Ye7BX1
z>Fk`=Q=pQ^oFT!VuR4I-shSHFeA-ZQGPMt#fBwU_A@{MockbMoi9esn+I{jfrc4th
z+kFRUC}wK9%=!(q4f7`%1|g$RB1&mxMp5(5FJ9N89J-q4tV%92IHB52fF*{oP~G!O
zl%>;+^mFs=I;e&K3tYT#AuP!YKuh%*<h`rbzumJ201h3MyV#t_dvmk1v6$($3y#pg
zKxTgIdx*B*?=Q^|<Zq(zH;N6*S?Vr|-O~C48y&8{@avb-=41q~cIHT&7tfZ<mnLR;
zLR}Z&c(P&_F4dQoEmx>id5)lM!ImQE7O{o+A*hJB+i7fTB;;jgHGH~~+(@qEiF9CS
z*;^ljgg0Pt0@pkpA#{D;h{TmgMy0)rMVzLB9HDiwS{HP6qxadQ0}BZ0Sy^>Vt7#g1
zel-N|1;~}lm(w!B^N8SigB&7MR8&hwDO?)BjJ26$x)r)FX)3v6GX`V+=OeX^_0`x(
zym;3Ng>0vIr0o8QBD^9w_UDfsdbo7x|Gc5cTn$$zG9;i}!PuDeC*mYOa(!n7!ZE2)
zcx1w7&(;G(2UbcPaxavB=FshAXV;70jCjJ6oOMEvVo8rG%7F`BuG#nZNwy&c*i3;~
zG_ZA-AuUs~$?@>;07bHoEmY&=<OI@#qvR2ZFgx9MGaCBLxLUV~lQDMBV2%YGm`{zq
z;#b-P1qHoS#E`c5t@kVZ@2>7#fxp-MnmeEeB;zuIh8DJ!l@*qUpc#{A%dnp(=N&(I
zCpOmI(=#F>Q}FU5-``)x^F{~MY?;3Si}D!~^U<V|sWU(1e{U;wg7gQC1Huy*fgo}B
z&zJXKHWcI0dg{L)>0e1Rll>z}IDD^d4Sz90A)?+Ue^R7+{_9sYXEBQxF3@zoe*HQ+
zuA-u%wN)vEsuImZ>FhtqR|$sp#H=PdasK3?!}fHtE2*(lXUl^PxeQm1Lf3Hp_e38<
zigva$K?+9*Mt&IY=%v(7(U|dGmIZDx!Xj$VbAZ<qQ0G(iINF6E;r;4P715+mk!xR*
zl%RaM_utd!96}$Qal1MG(&KHqpzEjFFrtr8WoTVdMeUNVpt!qa`tnumV~{dAB;(z&
zXE#2IIk}#dlM4^*J{Gdn@KUZ4Z4~t>l8{}CTQjk^sDbz}9!PrNDaCiE@plmR<)6^g
zNA2FQ!jO!gTs{L23yc{Q(l0l992$x<dlpvQd9J_YicH+VWh!SnM(JAMVJ~TVQys=f
zhXC?~K7f&hDH?n+VR`r1s?Ms}RQZ!~yQ_9j$cGU9VKb}%F!SQ;^GO6)VuVOQJmEZA
z&3m*<5C;S|&;=)kiZqjEXJ-NCc7PFee0qMv7s~wfymP*kV!vToi%Ux{zddD&iVg(h
zNFL`5VQ46eB4>)W(z$r?Er4$zhoa%x(832gf$!gEw@12>id!|2ob(4coxmVWBw7F=
zn}CSO5mW;Vk92d*!Nkve@#_%#jgAf^5e`||y|9pMZrS7~k>d<FEhsQhIre-MuZMn5
z(P>*;dmk6MayQ7o9GoIDSJ(XaD`iacIfUpL{SJT#@G_bJ!)`N)EP3(oe=<P_(Gs*X
zTh@XEQ3_IRg_YgM6bxiHR%btKsvDDm{fxw;sY#6lD*ac!KVGV=MA8o6ZsjQF*u+Fi
zgd^BS60r$WW_ioa%M63Q*|cT)C_uwO+pC2~|0AT&{Qje(nv1U`jL4WwSXA^0_|DO6
zz|H!{0#Wgp7KTSnVFV0h<ceV+Mo`mSqkwV9xI`@OQ~msC9pc(wd;zo~Ux16mV)dUI
zxlmRTk~11rm{5GWV_a@@U*Yx(6!j-iLuB$iJR7tv&FTb%Q1LP#fbLEieX^eM0W_1S
zxw_Et$S-7N@^+mh%Pc`bL0f(4ndhT0co4uqouaDgeGCSLK<QQ7_~cy-p=ob4#R;1Z
zH2M_Q1Q;?wh8%qIU2<_}Xgj(GfVhQUYKnxYrn(wBTzI8qJ?LxHmw-g>&I2S-s&gNY
z{0Ixs%ggPU96QS8#mkr|a@&|kP3I%bqlO-8BtRS+Fkp*-;45K!f7wDc;x3G9H;t%T
zxLR2XC%?Ca-@|#p3e=^w&~bvMrY69BMC4fI2eKY^u>W8?emm=~PS1ah*Qf0|K9G~+
zmzjSO`jN!qk1$jYAO8*nz#n)C?7sskT10IB=m;kwXW~4O%FapF8%7u$sb~&fRM`F;
z%2~<gd>d@CZ~@@Fc08}`HbLyk$QGehWtC}c3~#BZj~9&bo>2Hi&|RYEuw!in`PxTo
z*BMz-vV}$sgh}3v?F-Au&80B?^shQb^ECZ25GklNiU<nMJ*oSGmvAZTRAI=${y2rm
z<;YjfC@zt8qq{B0(h#y+k~4}F6v-i`WrvY$j(Vk;yJD+x{`@VPr`iG%#EiuE4VfGK
z>{M=@sDQe~-jGc;Cn13xy3DKgujGmc6L>9E_a7&+o=sKYRT&f%nZ>A`xt}<H{3sr#
z-$uQVWH*8S&(ye02VgI?k4b^X{HKW-7etS$hoy&#TQhXCKY>%%Kcz)E_3ayBFWv<6
ztvCK{`?huGd>462uv``Tg?Q5MCuiNStUo$;@MLqjM;sCgNhz5dn^AO2`6cq7brZoS
zq@AeQh9r(K1>*0n4vLikLnBNkdD<^R4!ZJqk`;w*y#czPRmLfXc9R03GQs0K%0;B7
zXIfmHAQaVyX_z3aDLs8B#SId2@~@}u^-cuj0wDo39qR(11j=1o3Ks{(dHP}KMKpT<
z1QO=RluI0Sa;UVo<?1+#OD7CV(PGvu;}12+<;t%j^_MW_?L;6dn<jI0)ncBWaW%Ve
z4FV@}r;8S9D~n273X^(17wHpcq@@i2qc@A!40#yWf`*YROfHI0+GXUFuy8`+Jj35S
z?i@7)vjKDKH#ocyDt7%RXz-V`<YZ;dHL}04<2hz~`)Adkk7rq7S#WHj#BgS`t5Mg`
zcx-~22->g&XJZ=@hW}+niHeMAKF7qz#%3u7$sPTO6dXfjNW%#zUN57ne-MQ*BJ|qY
z*#Wi%ndH&fhL<k`%dPkC*uYJs@3)pm0Em!r!iFAAJrun}V{!UDlqOu<+;ayNa(;iN
zHP+^btf9hVnnkewE>vc~au<u^b)J9eHP;XFw0xxy-2-c5H4uz|j7(3{o0LrZ<TT{w
z=h}e8=8~gPFI?`w4Y3@D*bhtBZ(s>cu{-#fhib8eTR;I)u`B8zH<3$FlJ!6x{Ouml
z-sAvafgzF=5cw$y%nab1fus8(Fx6s8z#NX(d(M@K0o(Oj#n$W|q$B{1a^>1U1OXW|
z>;Q}$cse9eptFt>M>$v~o>cgRv^oC0<QqgFh*CxWT>{wXD?%szJC`QEKbTjqq7vt6
z=^0aF-o4YYwzeiFCO&trG2~$H9)SVMq!bEb=l$nJuYmgV?|S<-{?45%jXt7e+Q!m1
z$B)ZJdl@0}5?m<s5;2AdOV>7`^aFlT(MLIVOiU;V3dSYQQ_(YWK}G8dvC$s7Du3^R
zE3RT9Ns+}a+6Io0Bot$K0^FoLw{tWV9+3?=;s?M~j!Ni!wcVm5(<Tgk0<4>+<{Ah}
z3ZM08BR>H!vxSs#^vtgX=*nIY+~MKl&z0@Nl##V#n=K|LAix^zL3{BItgajg7Lis9
z@OwuaPysaC2c*(0M+76Vx+Xusxxgxl4(Elet~XEs-)3easVX%OANn{9>7ITv^D?>y
zGlgLXL+k1`fYqKY>pdFwaTv@4M3Pv8+@o;~@u6OjbDzXv8)7~hS7r$mR-odzn>c?A
zNL^O?OcrQS4?-&XA5Q_QZ~B-Na)UYwI7%V2>KX95S-Vay-~ry{E9L*a*~Rv87$ijk
zV&Z}SMg%q=cw>>jBdVk9zs$g*##nHa>~5vAD+EZpPqy6x8wT_W(HZvq%wuFNo?152
z@?M0_G;|_8*0{O2zTE!ZY*=zpWe*DU2>>}EG3v)pyM2+j@1nlB_UG#xwD~hTjoH%1
zh6ZTh$?<O#t}mT#SsS(ht7caWl=WX1+9G}hic6VICTZuvSs)e>57-rlibp|S9z3_+
z8S-P5K@rie=H$eiy#!vL6HH9R2Pz{;rKS7}nS)F^_;K5hfH=K#wE+!HkPlBR&P251
z2#x`yq2WHCET^cb2t{{vXVl=v`ug{Iw|^Q<_Xq}m_m_}APC_qyZUoA#WnAcZF*LN6
zF5tk3)_f6@Qwourz`5U?XaN!E9=yztrhVd|<!*k^v;rZ+e4HSipmEv+`h@MqKZh!q
zTqyHd(f<1S)Mqn0Z{p+Oos{>(*_neD!|t^ULG9AXWo~lFZt;=*gvEju({$cOebA1N
zrluw;bRmZ93ajG$S=&DspcJRF5{h+ag~nS^k|I|RWO1gZ7|_}5lFbC^YHM>>07W=?
z@b#&6tL`*0)yc>qfZn$%fUue>fA-+P%Q0~O<h|IEFjP<tVsa7&DEGZK)%zdQp&bih
zP29RA@=LtsBDbj49>kLfIuqz=9yPTJB)!x)_MwN_tSFL7tWV@s(Jkp;QD2v?+}x*`
zbdu0xW@+Dpr`L^U#k3o*vA({MK^y<sw*3&IFZK|y%~iO~$T%61o_-UWTJ|SbnHK!m
zKeK|k&!>se<jNJ+$5ekH^c?K2^x2oGtE#FhN}`mMe^)`RVt>CD4OBo!m9k8fot<4-
z2y2`+c|xl{Xp(Qen|Oj^i5=>*=m8;gr>s#p-cmO+E9<c*g%Ba6Zw%k*k)N$0ARvHF
zu{i&k4;u@kYU^0AMa7_P=<Cu;zZufg(~F4$dsil$72Mq1oZ*gG>wwPn#O>b-H<4QA
z=D;J0KX|@W<k>a~0jnGvWU#=pP|UDieN+(n?e}l0yMonQ&=<VG=IJY(MMS%H2{cg0
zWA@bde$`C??WvtEfXmj9AG{scBOlRz%5TXAHg$Gl=<(&46SE|W;S~vi+7RxQRP)2%
zX`BH@l#D@0*}>_Yy1M$|Tp%}q(4+T>V!&$b?FwMvy7xrTY7h`7KtBg=NJvDK`lzB-
zP{20DjTG8tTXUuPx2%`58!i4bD|OU`3m1}Y-AA#n9PxsbSw}LIa&mIIlJR&8A|L7^
z`x9#osjb4e;{3h)=grMO0Xbze1yu}C%CHutH#qq8p<Mu&cEI31m<<bVBtm!tvK9p5
zT1@ILRA$Ly#Ssx5ZDIJ2tLmuf{wyzZ;a4F_bti&__QwS5?D^zOVps!(zhR9OS_q2%
z%RFpDbVp$=BeaI6=rAZ6VM1~7yU;S9k$e~dnqp`f{`vFA%Si7iXc}Q&dVGaG5flLg
zhuKk^R|g1kF0Syzc|;!r5%D4k1;yS}4Et<Z-ru+y2`H{F=WN=4mmu15AaLjYy98-M
zGfP2P3{T<0S*wwR2aPoOuK*Wtbd`T>Y%B`$7|k%0d*6F=8^J@7Yhblt%149wZ$c-u
zqoV`rZ&J+i%E}lBhbdp6jXFRF^W{*kz^{+eI;o6;twOZiBo*5C#IVHODz=ZKi;H=3
zl}IU~qGoVio;$v0d8#dYt(SFywmfEVa1b5~QTuReU%X8D=jP^S3QHS6Isuucgtof6
z8u|$T<7Hs4K0dL4Djd0^4MOTxMLN37u+t9AesFXY!0zEc`b)HvSkGdfEJqP~2z)c4
z(O!mrJ|L3*!<{1N>h1LbflSUTQgSZpnEr!`coZYF8^V=X`h5UoV2+)XKOVr|X{L^v
zF|edAt>9uThITASZypvkK*O8FbFQCv$p`>k+hsIPh%GZChpwrHNNi){4zS5{WjA4W
z9@c_nJlhBu8A3gvNux<DNuP-TWdfZ?FQYTC<p#90v{2Z&nwpx<Mz{TQg{XP0mY!be
z;V@dbY{_q{!W<foKa+(vp_1<+E87qS2qfa+y`j^{;6fN;dtdCli0+TxT)kX54NY%+
zGV+vZ;Dp7*#5hDY$$Pvc>^wj#5xhEUAXg6De=H4D*JPORRxeyTiru}vjbCG$hj&S+
zLdQ(H${k&Hadx8h0GN)$*SOBQDV=xL^Lu5uMBt{ooIM|;+kF6q6h!zz!Lj#`u}C`s
z9dr0XwK{=;yU<dinCCb;>#-`x<w$${ILU#@;n3!efVgT;SCZvW1;xkSzXKINK>4Fv
z0ej!R1Cb37+J8Uj<jI@$;ZN(M%!#5(6dvj2p9EPwGFk1O0(9*g;93~Pu4w)D!$v*U
z;4@J0l9g!CyuD6hw}$Qlq;7gq^VMA6FLMBh?d-UWFLCOl2#K>z;Y}VP%Ut3hU~Bo(
zy&bgKV`Jy!<hG$b2kSWoz5U_~X>#84omG!m1uDboXlNvYw!MztC7N~^<o_ek^Z|oh
ziD-jp(v5fJ*v*?avCBfx{svmpZTzLmH1q~)YHAQ?fp-O_<NLR784#k9lP9O9a4VKJ
zpd&f{1+oGhZCHb2Cx9>4pp`boP6<7gOmS;P5QP67P`na4_pN_kpMd7#l}LxtY6oz|
z3)<TFYV{2b+dDgHvNR?@v_dBEobHT+dO5tlE$AQGOcyFnsA}EQK@xKSH3&%iR8&;P
z_YF{l{Gd0KTl>4})+jiI!ojvg!t`flMfgwlojb?GbWwFT**Y(LO&}q^az5Uq%8H@_
zvh<`$0+j!vk6}?k>ku*cG8Z&DnD+KC3k_Qa*4f^UYXI%QRz<l*5lsXjq3zQA;BeWw
zJ=kONPZvQ)0RT<Js!6sJRNdG8L@S}FOQz_a2j;Wen(!OgI~AiWDV{w)q|#zOvWiIr
z+ag_A#Cd9uS)(SQM5%6#;%lf+(FPSF9v)snoEMNNa7^G97q|CQtLBTYs!vp@Xc$31
za@3CFkU?HpQ85@E_4hg61I?fW0nrd_|1L-A1MuGtRp9UA`m!WCuGp$*lVuwLHsbeS
zq&I1YV#T^;dtUe-8(>@|2IVu*6A-r3a&nGUV6*0dD+6j%Qc4P#TK$*qwzD^(k%rKT
zQ0*Z)a_GLyPEMj-Myo;X;begnfq>Ynl9Hfy^Q&v!oQ5hD9MwFUmJ!FC`OM86pgEhH
zgCMFy(%o76xdFYhw0@*<0;dtoF96g7I)00q@jqpAEfAL=Z6+fp=k@?+p)7dwxiuu@
z?^78vy;W=(asVy^SnNOY7Xgu9&p;#{^3O$xyHT<$ju&ZC9o>cefXFuh3jcRYN_zTW
zi8j-JSHMxHEl5uP<BFV|U6618^-37UV|`&1xahw>aKr-i{Gez1f)*Na;9zOl*`Hd1
zZvTCt1?tmRVDEreEj;p4efR;wI_OFMx-I;`t)S2h&B*^^29#q!0XzPWA6kQ(p+oxL
z51=xIVl69i9$MX*Dz?{?pwNTkKz~Pl13v(=JncLfdvrxRW9B+kddo{o1^-P0WHuBh
zPD8ngL=R+M(2s?%`~V3{001B;D*qRjKw<N3aZ&f^2S7hpKqoOAo#D5+#0geC-hBJx
z`}a`vAk*=O6LMJ+S4Dn{%)Y>KMsSLWEdq^%#L?8;T+1peg`-*W2?}=i^azWHxa1Mu
zm$_jA$G;%%Y7)Zfn%Nb#cYxEJ(!jWUeK$ZBF+ljX29yqPK}U%O69*v(f1HxR*QA}W
zHc&Qug_V$ylFki389U@Tifte>JwZA)AT@;|rJs;-1|(JZM8`rCIW0r!k2TFDI>iGK
z1Q^r>qyS!Fub^JP@ZhxTpgW&AC=s1v0G-#mj`>VsqP)T~HsNpq#I2CcCEFvhq&l~J
z@b1XRkG|jE-S-MJKI=70E&CIQYA@VWara4qhlEHk7=lIFN}hp{5&bGfdnu$UMOa;O
zoos2+NWxDK$p_n^(XF(zPy;nfKVj^BnDT>bpvS{T`mfH?SQfA#>PqO|zRQ+L5L13f
z5J_kW1Ti?(X*~$F5QwEDC1>$6JP!8vAWi}|H$WJBcDyC%#I+mBE*Z78(r3=pLB|+N
zILsj>HSqD{$M*L2-d;%NULLx=KyOdF97;Vo_#)^wIbRSPs6jARp_sp3WAESqTpf6c
zi4Lj_B&d@C5!o<%mZf1hKzQgE)fYH!0E#NS!BI$b!((^TW3I-$+WrEF+#o_;Wa8k%
z$v57lChJ^3F6ZS0>8p6ihT#qwIZ_ETf&S-Ej35Dfd1k3TGWPB>NE?8k4uBUpKV;*t
zLo*DUsJJ~_1g*XX9EsO}{9tD;BBs}~uBEH%<LL>qxokmav^-xPNMw9K(gc;O4iiUe
z+d=a`e&cc{hKe2I4e?=}HEqboR!2#AnSnp}x)URSGobJe!HI)*Q@~m|)X7jpaaTO5
zXt#q3M+vwKP^&^un7Qj-G>B%3$*F0O&h;Vp1{?4~-OtYtIt^Wwe&5U6B|(xT#%Kqt
z2hl#pRE3E{6`TX)BqrdlS?PwcEV4cesJ-pAdK#TA{Rn4LGP3YY?)`o&eJ^O79$h*C
zo9c4z!&(OfZK#~V2{oCV@SLO|%1Ft|W{D{uhhn-=<>>uSlaP>L*VXn;f>H{=FD%Uf
zp_Wx|p2Aq68u5{JD0_K%0jpr-?P*C0#|sPlZX;S)oGFj()$70o9bV+je<Wgtv!ey%
zwQwv(bNusXs4ig*tIm2%N9O0VALczo-&z4$6LIs}STU>^U>lcDwStNR`gg9rNeo*3
zpm`XPjNZdlO1n#HL%rPP)SzyQINym78hAW)G)MduEZY1x@DD6=6LQe7z`MYb`S|h8
zAyezAsv<MWlky`q*Ypl&CPesj2=v~5Kxcb}Df;d2p7ja@CsSjZ&4VzogAjy(jtm7M
zo5cv5^j#GM`fdUgRFH7*i($_|>jD=S_i$E&$cfqlDL+K-t$Zyxj1o)wklgDX*fpru
zfboN*ayM{$uGH2RvgkedKkVp3^3}JX>{mS41?C7QU5+o=|K?51E`}M`?&?*K0{l1P
zz;eK}KOD}22|VcfVA%&~hpRBn+=8?XO^o@aonY44HfU@rxs04Te9Sy@8ix(q`E?f^
zn+*FFBusctom%P<Z|w}D1kKA)=M17S7wj|=XMTTC5DUjl!`u5qDLJ&h;3O+7S9}V3
zjDUBJmYm>9a&qGMJRmkWf2e}u^(3XD`mys9NG{+IL?El)mvn&lJOIb~(ZmQnl5yaB
zh{pl~0>Gm)7cQY&T>n5+hJ$_pF|x&MK-l91W5v<(j*pLn^kKoOuSaN;FKg#f$~GLI
zdkm^WI7w{V2WcAZ3P7d698{ZbpBrACW4a#~AJ3u`EPrS*&#BqjCmvtscb;Sz!c14K
zL+uT0El~unSUFgB(s7CK3Tilj_Hi8y1PtQGuV0s5FjTsELjMsW%2jx%mx>jz8i-^l
z7)m$FCj1;U!32TlgtXzr#02~F%v?M`MouNI&<>U7K#RCv<2nb%kT2;#c4V^1=?vi8
zs`YZ1=nz>9IfIZFFv7GTkZOd(%cfH>EKl%1lH=Y3e$)gb6yP4dzIwX4kI1d?DOmmJ
zUNW6HaY8$icl~Gu>@HvA;p0=4x|{g+4P<Z7Zy#ks2H@saen0mFU4@t_N?;`${t5C+
zR`YA&Yg6V76$c@j)q>EjrTQhJD?typz39oE&#T-Ab!fj^c)c5ou@Zls_c#D+plHkR
z+0+D#7dPgy9mZpK<+Z~x)r!~$Wu{dp1M>z5>(khueWb1Y0s)?JB<6jr<!!q)*Lzu6
zS+Iqw{E1>+-Q92BR)2kt202#o;d+%TvOWblwbH?^6ti~<aQLVDYVHQ^E_G0Wivop=
z8|4rLCW0LE)%2|Q`Nd*?01MtFbYQqOTa*Myw97OeOZo|#-o{}Tyi7?pK@YyaVGoI9
z;+2)HfQk@$g#O#Bf`P{%i|TA&I<;}BXucGr$n(IG-nzv<vh?SVff35{`#UqV4esII
z2zx>(a&vQw^Z11*jkT-oyJ`1J>`omgqB^-SJ4+Ij42231ph_|InVTQ;Y=SJVK{p!=
z+J5H+M<NKilif($ZvX+uh5z!%Cdw60{Uv2`5o~ZR=^-Xt;_CUs9t7a_8+fLO${5%Y
z$V!j?K#~bsAHCLZy`pvvVQ0Js9q&T}8sw;l)4PH9F*UEWF@tb+!+UX@Ion{@1~BxT
zrds}|&!2;!U$JZWz!B(e0D6Z`SV^=hC@(Lso3D6@i30&Qm)_@i&vem%c4U@TPF7Yq
z-#|Ml1KO<9Nn*n%1Vkzj`M-F}W;k-(!Q7C7MS28?FUx|n=kFYU=JECXVXPRQ0w0D7
zO!j@+9c7E>KvFMETHKWYML8(PfYt|u<qb;Cyh$yCVh%9MhQ`JlJIslIZ8+2fR!PZv
z$n39O19IUEH+O`XG8vS!O))WV5E>ir33y&I(#t_IDcL(HJrS0jJ|zyEAI?ya?%z_z
zUtJiz+?O_9gcf-ZnwtXuSNoIrDJf7pHy!Nn5JiNEp@SN{=2Fws)eoQ2|L(yVy*@g$
z*&R|kKChp{mzHAAoxTL=hsUuTD=#3DfS11otosgR)j2%%n^rA>NZbc@N^nD%xdIEZ
z7J$m(dowzKEE7<s44XzeuF+7HwGx(b=c?LR3AC;uV;?TK$Q!8qpeNUM>2^2@XO?z-
zeu#W~GTT2O>fSw5M@MMQ!=Cs2LD1S3=hxwBV09MzOA;I(G5GlUew=42Kop>KKGQUc
zARq<WU}8?-p*&GUAtW;}(?W8WWMI{lfXX{uW_f_Qm6nZ}B;?E2q3DMi@rNmB%0s}Q
zwrDz2$3b2Wt#FpC?WfRVqpc~u4uTE&T>yTd?}fwH1h!jSTLApy%CX@1aFjqO7L|%%
zPPZ?+P((f?cZmVyXHsDTu$dI@3`K+7t{-%%)FzOL0MNV>=dF=6+b?`Tq5+Bm069AT
z)rE54a*v@|dPvRr<5(b4k)O1^pv9fwJw{0hEC*keoSh6X%!}W?A==7@Hpb9III7@%
zNI!MQO<vl7BOM@<pRzGn!=bPOhSg%B5IO)o@Y#jKnM`-SdbKt;5R=Gd!V8rND7g`W
zFRTI4O4m5PKV;GbF_81xMSbV`9e`zMQdMUF%tM;9_Oq(BpHPSoR06QVhom5V*zNgt
zV0xy?^%u{!X{pGD><2<`9d`b;2Gp0($cG~t^g%}V%$9yj<;eS2Lm}%$0ZgP}BycOq
zF|>WzGURS`759N<gUIbUk^CP%rNGz`Z|p%pgULu(>H!5wUkGlUyn#iBe`nAge|jsn
zW^;vdCBMX3W28L@(KYO>m;9WA<>m@So7dgU&C2R>Yg2n541@`!Cpc6lq;=uK)H!Vh
z%tN9LST*AxdgiLOf_NmbIz_N<_IIY?m>q<xT{xX^5<2@&<I5r-m4(-IedHFRVLbQJ
z4Nf`%I4}BVlme;QnHhRU#$kYKa6ZSV%8Jdk<Q6dIUl$i!Zg1SoAW3Lzoud?8Mb0qF
ztP+rE(+K@o?mhQg`g(scl+|c=r0Sr3sF<3T)@}x-HBZBs4-N}Wq(d6ekbp}>6$)jj
zNYy_o50b4;K)NQy1T4>xp1YjvUFrkTH|#WDcQ<@BKx5K{uvxV>!`1d4Q@OO5SYkYi
z7M(%l*d<7^dVrro*lR*e$y(4uZ7~Uq4)%;ayV)nOcOknA1;_y#xpE*!<8fY;!?EIC
zapwWpEZUq5SV1aP;)(cXOhG}x?5xw#Rg((~I=pgr386IrClI}o#$-_!T+`O3{9vd3
zMH316&-Msn$U_f6Krg~$t!(#!^GVTA?{8?<w3}VI${gwN%4!OD+fD9e?^rZiRZR`b
zons_+lGsJ`E9OT!oPvU+Io@!TCFhDQRB%1!&8krO2Yc$pK#yJV)LfuC^;M_M6C2>#
zVKqPl9K%4Bk?}kr3J!nZ-aaBw?Z1MvmP%bvV^s*Kg=&#Q1ioZ)V~q?*Ge|0D58ou#
z#pyf>lt1vz214PXGJ~&cu?_Nrm1YA%&8m>ea{Hd&#i-h=NnxfrzR!==@MraOcgN9X
z-n)0tI3No9at9pZh<dIrRIv33tv~HDf`zREZ9yY^#A9g#Ih-dfNL9N4d?cKfgB4z`
zaUDAi?b-^{s(wOq%?`{ojwgf@M8X4nDB~hS3zRHi7)!uR(`7T5I6FHlD=S00<xAko
zC8s_hjKQtao*LQ2K7d9@I~Bn94S*%kv7RAb3w;$?673NV<<1VAPJ_b+?BU!ywSpkK
z)P+-ME#P~%*B9XPF5^&AvYd9A{r=tO=dfslb2~MC=FMkWX!o3glhmxErI&1hSbPfM
zZ}+sWiAg313;^g+=-j)Ts;i}?1$0n>rOAIvdY%@Wc08wKs5V|AFFmRozMH>>zsr`o
zHvyzOq<FOO2<HL<FpDWoUBN0KH42#5mO<iz<5e#WEjsNm)oZ)zI+1Lnr7E_7MW5&w
zsuo-mItk6BUP&#o8<3S@LeZ{pY~%ozTy+mR>#?Q9#chfZdnpy(L+#);f(~;z0bjEj
z1Gx~$^pN4HSfsl?e4v?EQxg{v0qV~V{A<@4UJGy|Vv11kjKi6GL;E7A&i!qrE=C{<
zXB?VPk1|;&l4)Su>@W>MJ1?4>6;`?GFM&*SYH|{XoI|k86L7%OSdJ0inRTkqj7})n
z!6QX4Ny`6L^m2U_8e??{5RAO^gWpch<@}s3%7$0M_K-QexFi77qI$tO(vyEyS4IB)
z@=bm4!&-FLefa2&aQxl7QC*NWUl}(-Wfda)phc$R(LL1>uVAi69ggWlQ5p@A1w=xW
zmKf+8uw;o%0bGprinaciO$>F$N+-m{G0Xe8LkSCCGU<9j$i(>b($nhq?f>gR4%Dr4
zia?*E6#bSs%BBEi7Yp$4L}ua5E2lXFZ!vBXu1ww|R#!sQ1I%jZH^7}~)?rcxkeA2)
z(e=h-Bnd70^g7i??({!GccG)Hly=?W*a|2ip{`1ZiO~epiKSfp(o9}*B*leqFZufT
zeAkhH^E`l&^>v(`g=(Jw!whGUd1CpY!4(}H{*`01n?GM!`|b#}xgPr0(RXzO*OHB$
zQjE*=akCxWSwQP==hje!UJhefrjz>(QsOE&;SA*teC1^uqV4LhF{b6nr=>X1t%YP6
z!3wteSE7o0T_^tCTdo=*3&PVywSppQiyHw@WHJbwL@sjfn!@)|{P(uKpL&7aP6}c*
zL9VT$w;M7B{ZdYHPC`x^IA;y<pQ!!cqX=Z?I?zJdZOQ@c37z^0zpoVMQfw&@E*ni$
zedYyAUHSI~39<)PWVUO&P3}{8Gf8!IzFuCdaO!f>6a3C{X>=HBtcLP&P?Qk&KL!mE
z<Tf}1t^`Ds7Y&%9%EkBp%vf4jL=m|BXLWTyT9VZ0!!L<Pp#y?dzp^Rf)&I7Vec6b7
zF9QJQ(lgUXI`<)3cp7pfa&X_DTA@|kEvP4$4?BrdiLst#b-zu=O8e6Hx77%K;7QM+
zP2fEUUg@4kS5Nw>-Dr1A7mFm^g~NeTj_=TOD){p;$UrxPRWGx#3@#`uDPmnFz?A?{
zAAbwSrzR%yJLAwSXKpq@Rt1_$+VvCtJHkc$YbnNXp4RZPi<S-Sv=<Aau1zy@w<#Fu
zMrXWweZrjlbkQo8NGBe8u7rB{eP3s%dSla9$KBoCmxZSm+7My1N{)0(ELxepI5se>
z1`Z(Ie2ysRQ&W%AI(51Ft6YbpeGg=AoCY1?DRR^IPU1-l%)t)N{zMOlzlRSNah*V%
z(R(G0VHoIX_#^<u6TijniRU+%YBS(lSSrHy(i1=*QB<+1P_%q)ap0>ckdNaGE9P5p
z1-=m$`Z~0vYvX{k=$OFg6`4z$GG#pB<|I0DN7a_I8gVJq8Krh{EH8nzzQ^J=F$6^9
zi!7IlkG{x~zJm9dd;Jo5osa@gvK?Rv8!p36xvtr6eIGj3|NR&RB|wuPx1jiVTB*zO
z03ud&6rgF^e2J^k^%zMHEe=~?ov>Y8MJc0UVYK`mCf_^Q|IbGhDgiv10jLNC0DOi3
z6}7INuLw<OXz)R}7P#_q>3@AR#WTu*nw^$pukr9$iKZI0Gyz5PUqS6c7~63H4@sB*
zb1lK)o^C;Ug$~cBu`woLlXs(|_13Mytq1$(1VIh!0X|TeG4u5+^rlj%Y?;-g2|yW%
zp!g6F)=m}J-+BwMVSgrlp-uT&nys+*oinv$F6ZOO$nPkUtLX3v3B`k{WtHIBax#X#
z7cj8>@PI2;Vr12j<egq_n<G6m6DdwN)8nmN=0`I}LAH*7%iDGbNnOsv*F#2a2DCX(
zDS6{PFaUb?^uM>IUyRZS+Nq$B-g>x+*qRB1ElD(UNi3R7u|4aFQi9Qv!>8>8NyJSJ
z+IH1lAUMo0nY8mCr^`9h@#54s2WKi6)s8WdZV(reEc{QA?>P58-z!&gN=tu0e~g)q
zuH&~tibFebqUr<QQ>Uo2Z>_Jd!*>A+G|tgU<EkR3S4Q7{{CGxEGS!7wfy~VPv`j=-
z<h7=In+H?y;gL9_+f*nAm_1o)ek=tz;3y{k(w83$5|yi!H<y?)=cWTMojNaO0H6jH
z`hF_aF^YGy?E@UM1P<;koInHMZUL+RDxTq&dN6)F@_`9BFTp`|2KtDcSqUz@oFdOg
z2Rr%X)BNt+A8g%jEALD&#7DeCJ($ZJoMq+za)8B?|2VhG{%Uk3dW1MJ^;&=BmHN~%
zXHfTy_rizJR3uz(kiQ6bBtN)t8j{xYS~QR2Wx5ATI@1nTqHXvludLE9BKy&~O!wiq
z%lZ5KB2LD8nYUssq8wtE-X2iZzzVj5R6(Dn<?#7uBVPJT9jnUU<_}Ux8~r$PjqoCg
zw%uu&XQX{RR^N>W@=Uv0te#do+y2jIR!Y`1e16x`@dP8O?)MF&rFZHz;g$lM393?a
zgkL`G+PMc@A}a3<h%v;K+2pXhoSFHtuWh8>%G=)mf|=%4XwM3(SAQHkLZ~AL)!UQl
z7s%(1KHPZVMGBt>tnUJU={DI69m2zaug88XjYDreqUJl<)#)r3iL9B!TLlqVB`K1<
z4jr0I&W%U6;TTGREg>=JB+HB*r+)tVC9U&U9uSSy@O3VCJ9kOQU2rUk=UgXoB_lQ1
zl&Xl*rOr-V55kZi@8yyU&^*0UpzQFex9-IfvK;P<!>K6?OrXxG*ZUnh^o;*c8P^`q
zblb)$wmCDkj2MeTqS=~tPz{MhcvkPC!)B7oIVq8tuoXF!T2!V`s`trM4jqV=LwKUp
zGpQUB9ri{~qGeCs>t`L_=kxx*{eJg-|E~MGzSnhqudlfnND_1lFfKy;h%%<$tB7+S
zy(AK{6oi5r0<2GT7&DpvS%;as&u3>M+>WfKb@=S86e~=Ehb>QByS{&R4Yc$iRdieE
z=5(`ljo@33Cv4_gN^#K7u@sKmz@cY}8<-G1RSR5%D7Z<yX@m17A}wj}+HCD&W6V^#
zawQQ?d{VNEmIm20WVuVI)Cxdbb6nGV`%%qzL>yG%JRj&J5Dnj0+)ahTk9jV1cUm0H
zeL{4J6FFVZGgPSOL;RUg+D{$xiHfq1?iXfH3oYpFW!=mn0q+%{A)@<dyk1LTr-uJg
zHaK+10#@*bwM5<5oO-(bje!36VO`cl2xDYgd^BhzJ?rSmo}_7t?x-Ebw?24a?OTND
zJhZKfd-uZg5ySBCVPMi3h|y+Ijs08fM}51TBc7=AP<BYt%VXJfXv{wKm(eg$T(*9>
zAAxFalZ&7)`07^UOf9E+?Cj5T1qRr0SD=yg9eTt;wK<}dri95}_FVKXtOq%cDx&BP
zKLZb=iFwpeLz~eLFXEu{4WXxY-$&y0Ug4gK-9uh{IuA8yam3iE-}6{%n`Ji+cg`B|
zR3bU$qkqT-CinbHaiAHh)Q)!Adw;92dPwPj!<*fa_X42*^%;6myNd(j^o_`v{7Rs6
z;Doo(LCQ0^IYJB7v)r&NVpEr}q30gBr7ksWGN|@6p%g|x_o#kgip9s7Y1Q@pd*dzH
zuu97K?3E;48+o2XR9}dt$f1su47CAaAwU~Y5YU)0U8@oXXLmc46`{?_?KY0+%3!rW
zVk$FX@D`|r#cF7m980{jznV8HpkMn#*^dPFp9jq{9}^%n1)k0reM$SmK{bb7f!<Ay
zXtj3_&{=OKSvX>{4>Zp%UzV2JW_d*2qyP2BSx?RiLXn8dd%eA8n60+uB{%u4d01oF
zMscQFI-c@=_S36dbrO)$=H3~mG@1lbGtDp9?tF=WKBez9l#VBBRzG%5Dirpi{%!4R
zO~qt)FP?1ETk7(SMP8%F7ELbZc0@*V3sA0gvT5t5AqSIPAe#WGuiMR+M!}>icm&dc
zR^jMkn9PKl#@IphzBYhq(x^0h1M&D=Qc%_?soGr~K%#pXD-!C(W`+U|-<W$~`&zg_
zN7P#^=YCC5s&Tj&RI@V5zT${YIPww*D2(YcBXaQhfjGHoz7K9DZiOxFZYx|PYC;=y
zed@*mgV-@HX3-aYQmt=Z*`mEXw&=B6qDc}+4oYu-mmH*K(<l=$r4da8#WSy~m#5>e
z`~2mYkcC{{ZDGg!7uwQN+f0|Q)lO_6ACG~q3nW1is$PPHeNX~GJ!zeVnK%6c<64j>
z&5`C#v#nj_DT1ayWHUv@#dV@hn>T~bkNYNRJ2(8KdYW7Wff6e#^$Wz4FFHul?bk77
zRi#!2vy51-*4`P%A*lfdCc$uysYY<Gw0kwdN9&Vn)XLfeZ`upN2(0}pq>%E*NF{Z4
z+cpAU!<;l3V-*)Hs`LnT{-&^Z7YZuhXHacEVXKiw!+n%M?W-!0rT%5)q(NFqg=|_M
z18R@z7eeQCie3O@i|#@oTX~>?$?00UygeZN<g?VNMFz<D!J5?bt@<05qXzl+Rnf?U
zZnpzhpbF!@PWS6xxi9YhAG7wsRfIIqIiKKF1voY0FS)PMJCIqi2C;-^%iFV|=w(%@
zFLE|=d1-q?OUC)%Fk@5g$CL{@Vuvy9wm?lwL@}V54D>|I_NH*+N6~}$B-3)R6l!q0
zlGjzJmI=)sWwE<p4AJ;%F_qJx2~!n?gJuU2KgLYR<B4~zW~d@tZ@Ci392wWu`NA5)
zt_n%SFI{`|HRu=$QP3$zrj3Moa14R({=BL)Y;@YB(w~0!n&}Pb@Bwl8JAuPB#bPW5
z&!7%uf~(hUS*K5ml$_~Br+NxcRsTKp)lj=@EQ%6!;y)1ej95Xe)Mobxsf3igb5Mh_
z3wr~c(><%CO~PSR|En>(m|%XT$9l#0;meQf6$8w;Q(+Sv6t)5m7>BDbOcNapQXG!D
zpg=lwtXJZ2>-IpGYO>Y6{wC2EPS1ze?_+ObUny%n%j?brhj9Y`CPG@U@y9bMchGld
z;g*iInJ(sKhDPPt+km<oK}k?M^ma`;ni9MVd6PFYD3LQ+q=@v7uf$!6XNx#JRm4j$
zak9{JKl60oXYJ};iw-_~yl9Dux5w@Y(N8R>+ww3z{)p#^E>ZaNa>)%b(a~l~3$C)e
zWZBsqN7CDmi5G4xswDhEh$4AwBaQyezVgAOwm6#Yu5)Bc;f)CjZ<**$$@7E|*HQ*k
zdU;i+j>4D9!oWS<<0gMG&oaTSCdxUlho^Qtydw-*{0u#um-jXzb~tr`cClg$<Q_!f
zkX=WQe>A?SDDA%J&xmhlFU+T!c*h}Yx2P>+*wb^*m2Gcwg$e8zW%mmyijX%r?C&&Y
zIQMdiX8)@>jy6YMjBTm;|39j<H>PG9L#Kj<E1ENYiWTjx8J8;O(c{-1mgvdCQ_d_{
zHusqLJ_5!7UOu~5(l~vM&M1fcAcT$oTjjTAmG#)cRGkc<jzMP}>(@Ebp`5W3>#)Q!
z)zLY@B>;JfYL8a3U)m$@$yqoAv=CQ(PCU`@{V9N@_GPZr(r55r?5YCsFagG|gYo=0
zog~Fa>G4Tc0jnvz+eWAx+QlSZ?PV1O=-I<fXqaA(-*&catsK`NtWmo}>&>~=GO^jd
z?)b2vi#$NYa(u-{gLPvaye{vt%<%b#%V-ft+Rk`-MtIn1EujSCA=T8%`SI({Wyf6&
z74Oi?03aPZHMG=d4a+loN+<8~)-=jCI7W<dNp8Qzp6|Rv<sW#`=C=>*(m<{?|JDK)
z5o#0*jrV9gAElGHij4&JXf4tyo=WGHWoko<H99EJK$-%#$!a~=OYqN_g4yjory%@W
zD*f(XRaTwURHAcOFWo@gSj02#xO>}Zr^%W*27L&$a2uF+&I0bJKXYe83A#w4GI%u4
z2V>N>PP_>aNho{Aj+KW!SsyOqQ_6DXF6x+kAF7?r8BI5l8gdx^&FhL1%kbN}L1{-7
zEHg<~s{bo7WhJ~z0<QS4ivdJki{yXlYUvXQwIEpZZfhoFPxk`q5q)YXXG4xlHtMiN
zYQ~cvvGw&yvAm5K?N83Sv3fIcf4}9MB8ps4GII(<<YGX2CtC|-N+?L01su*tP*UrH
zHx!fA=z*&k%#vk?&~!v00E@@FZ^v?*4wscBfSL=mt{z$OO^M)ZcYr&FBFBZPe=wPd
zq8DgyHh>XA!bl&|<u+wp1aWVACrVv|uA2`WS5saaXr}y>{+6$hn!Q!?AJ|?GGVx08
MtGrx(cVcn>3+DCr#{d8T

diff --git a/docs/src/08_concepts.adoc b/docs/src/08_concepts.adoc
index e12e3995..a60c985c 100644
--- a/docs/src/08_concepts.adoc
+++ b/docs/src/08_concepts.adoc
@@ -57,4 +57,40 @@ See https://docs.arc42.org/section-8/[Concepts] in the arc42 documentation.
 
 
 === Domain model
-image::08_domain_model.png["Domain model"]
\ No newline at end of file
+
+[plantuml,"domain model",png]
+----
+!pragma layout smetana
+skinparam style strictuml
+
+class User {
+    + long: user_id;
+    + String: username;
+    + String: password;
+}
+
+class Game{
+}
+
+class Question{
+    + String: question;
+    + List<String> answers;
+    + String: correctAnswer;
+}
+
+class History{
+    + int: rightTotalAnswers;
+    + int: wrongTotalAnswers;
+}
+
+class GameStats{
+    + int: rightAnswers;
+    + int: wrongAnswers;
+}
+
+History "1" -- "1" User: consulta
+History "1" -- "*" GameStats: componen
+Game "1" -- "*" Question: tiene
+User "1" -- "*" Game: juega
+Game "1" -- "1" GameStats: genera
+----
\ No newline at end of file

From 0e5b801c42036b0d1eb911a844bde025318e8193 Mon Sep 17 00:00:00 2001
From: Marcos Barril Villaverde <marcos.barrilvillaverde@mycit.ie>
Date: Sat, 24 Feb 2024 20:45:49 +0100
Subject: [PATCH 09/94] first version of the backend for the question stororage
 microservice

---
 storeQuestionService/.dockerignore      |    2 +
 storeQuestionService/Dockerfile         |   20 +
 storeQuestionService/package-lock.json  | 5487 +++++++++++++++++++++++
 storeQuestionService/package.json       |   32 +
 storeQuestionService/store-q-model.js   |   13 +
 storeQuestionService/store-q-service.js |   90 +
 storeQuestionService/store-q.test.js    |   59 +
 7 files changed, 5703 insertions(+)
 create mode 100644 storeQuestionService/.dockerignore
 create mode 100644 storeQuestionService/Dockerfile
 create mode 100644 storeQuestionService/package-lock.json
 create mode 100644 storeQuestionService/package.json
 create mode 100644 storeQuestionService/store-q-model.js
 create mode 100644 storeQuestionService/store-q-service.js
 create mode 100644 storeQuestionService/store-q.test.js

diff --git a/storeQuestionService/.dockerignore b/storeQuestionService/.dockerignore
new file mode 100644
index 00000000..3091757a
--- /dev/null
+++ b/storeQuestionService/.dockerignore
@@ -0,0 +1,2 @@
+node_modules
+coverage
\ No newline at end of file
diff --git a/storeQuestionService/Dockerfile b/storeQuestionService/Dockerfile
new file mode 100644
index 00000000..f43e2df7
--- /dev/null
+++ b/storeQuestionService/Dockerfile
@@ -0,0 +1,20 @@
+# Use an official Node.js runtime as a parent image
+FROM node:20
+
+# Set the working directory in the container
+WORKDIR /usr/src/userservice
+
+# Copy package.json and package-lock.json to the working directory
+COPY package*.json ./
+
+# Install app dependencies
+RUN npm install
+
+# Copy the app source code to the working directory
+COPY . .
+
+# Expose the port the app runs on
+EXPOSE 8001
+
+# Define the command to run your app
+CMD ["node", "user-service.js"]
diff --git a/storeQuestionService/package-lock.json b/storeQuestionService/package-lock.json
new file mode 100644
index 00000000..a9495291
--- /dev/null
+++ b/storeQuestionService/package-lock.json
@@ -0,0 +1,5487 @@
+{
+    "name": "store-question-service",
+    "version": "1.0.0",
+    "lockfileVersion": 3,
+    "requires": true,
+    "packages": {
+        "": {
+            "name": "store-question-service",
+            "version": "1.0.0",
+            "license": "ISC",
+            "dependencies": {
+                "bcrypt": "^5.1.1",
+                "body-parser": "^1.20.2",
+                "express": "^4.18.2",
+                "jsonwebtoken": "^9.0.2",
+                "mongoose": "^8.0.4"
+            },
+            "devDependencies": {
+                "jest": "^29.7.0",
+                "mongodb-memory-server": "^9.1.5",
+                "supertest": "^6.3.4"
+            }
+        },
+        "node_modules/@ampproject/remapping": {
+            "version": "2.2.1",
+            "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz",
+            "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==",
+            "dev": true,
+            "dependencies": {
+                "@jridgewell/gen-mapping": "^0.3.0",
+                "@jridgewell/trace-mapping": "^0.3.9"
+            },
+            "engines": {
+                "node": ">=6.0.0"
+            }
+        },
+        "node_modules/@babel/code-frame": {
+            "version": "7.23.5",
+            "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz",
+            "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==",
+            "dev": true,
+            "dependencies": {
+                "@babel/highlight": "^7.23.4",
+                "chalk": "^2.4.2"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            }
+        },
+        "node_modules/@babel/code-frame/node_modules/ansi-styles": {
+            "version": "3.2.1",
+            "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+            "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+            "dev": true,
+            "dependencies": {
+                "color-convert": "^1.9.0"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/@babel/code-frame/node_modules/chalk": {
+            "version": "2.4.2",
+            "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+            "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+            "dev": true,
+            "dependencies": {
+                "ansi-styles": "^3.2.1",
+                "escape-string-regexp": "^1.0.5",
+                "supports-color": "^5.3.0"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/@babel/code-frame/node_modules/color-convert": {
+            "version": "1.9.3",
+            "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+            "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+            "dev": true,
+            "dependencies": {
+                "color-name": "1.1.3"
+            }
+        },
+        "node_modules/@babel/code-frame/node_modules/color-name": {
+            "version": "1.1.3",
+            "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+            "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+            "dev": true
+        },
+        "node_modules/@babel/code-frame/node_modules/escape-string-regexp": {
+            "version": "1.0.5",
+            "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+            "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.8.0"
+            }
+        },
+        "node_modules/@babel/code-frame/node_modules/has-flag": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+            "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+            "dev": true,
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/@babel/code-frame/node_modules/supports-color": {
+            "version": "5.5.0",
+            "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+            "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+            "dev": true,
+            "dependencies": {
+                "has-flag": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/@babel/compat-data": {
+            "version": "7.23.5",
+            "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz",
+            "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==",
+            "dev": true,
+            "engines": {
+                "node": ">=6.9.0"
+            }
+        },
+        "node_modules/@babel/core": {
+            "version": "7.23.7",
+            "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.7.tgz",
+            "integrity": "sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw==",
+            "dev": true,
+            "dependencies": {
+                "@ampproject/remapping": "^2.2.0",
+                "@babel/code-frame": "^7.23.5",
+                "@babel/generator": "^7.23.6",
+                "@babel/helper-compilation-targets": "^7.23.6",
+                "@babel/helper-module-transforms": "^7.23.3",
+                "@babel/helpers": "^7.23.7",
+                "@babel/parser": "^7.23.6",
+                "@babel/template": "^7.22.15",
+                "@babel/traverse": "^7.23.7",
+                "@babel/types": "^7.23.6",
+                "convert-source-map": "^2.0.0",
+                "debug": "^4.1.0",
+                "gensync": "^1.0.0-beta.2",
+                "json5": "^2.2.3",
+                "semver": "^6.3.1"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "funding": {
+                "type": "opencollective",
+                "url": "https://opencollective.com/babel"
+            }
+        },
+        "node_modules/@babel/core/node_modules/debug": {
+            "version": "4.3.4",
+            "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+            "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+            "dev": true,
+            "dependencies": {
+                "ms": "2.1.2"
+            },
+            "engines": {
+                "node": ">=6.0"
+            },
+            "peerDependenciesMeta": {
+                "supports-color": {
+                    "optional": true
+                }
+            }
+        },
+        "node_modules/@babel/core/node_modules/ms": {
+            "version": "2.1.2",
+            "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+            "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+            "dev": true
+        },
+        "node_modules/@babel/core/node_modules/semver": {
+            "version": "6.3.1",
+            "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+            "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+            "dev": true,
+            "bin": {
+                "semver": "bin/semver.js"
+            }
+        },
+        "node_modules/@babel/generator": {
+            "version": "7.23.6",
+            "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz",
+            "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==",
+            "dev": true,
+            "dependencies": {
+                "@babel/types": "^7.23.6",
+                "@jridgewell/gen-mapping": "^0.3.2",
+                "@jridgewell/trace-mapping": "^0.3.17",
+                "jsesc": "^2.5.1"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            }
+        },
+        "node_modules/@babel/helper-compilation-targets": {
+            "version": "7.23.6",
+            "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz",
+            "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==",
+            "dev": true,
+            "dependencies": {
+                "@babel/compat-data": "^7.23.5",
+                "@babel/helper-validator-option": "^7.23.5",
+                "browserslist": "^4.22.2",
+                "lru-cache": "^5.1.1",
+                "semver": "^6.3.1"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            }
+        },
+        "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": {
+            "version": "5.1.1",
+            "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+            "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+            "dev": true,
+            "dependencies": {
+                "yallist": "^3.0.2"
+            }
+        },
+        "node_modules/@babel/helper-compilation-targets/node_modules/semver": {
+            "version": "6.3.1",
+            "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+            "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+            "dev": true,
+            "bin": {
+                "semver": "bin/semver.js"
+            }
+        },
+        "node_modules/@babel/helper-compilation-targets/node_modules/yallist": {
+            "version": "3.1.1",
+            "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+            "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+            "dev": true
+        },
+        "node_modules/@babel/helper-environment-visitor": {
+            "version": "7.22.20",
+            "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
+            "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==",
+            "dev": true,
+            "engines": {
+                "node": ">=6.9.0"
+            }
+        },
+        "node_modules/@babel/helper-function-name": {
+            "version": "7.23.0",
+            "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz",
+            "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==",
+            "dev": true,
+            "dependencies": {
+                "@babel/template": "^7.22.15",
+                "@babel/types": "^7.23.0"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            }
+        },
+        "node_modules/@babel/helper-hoist-variables": {
+            "version": "7.22.5",
+            "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz",
+            "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==",
+            "dev": true,
+            "dependencies": {
+                "@babel/types": "^7.22.5"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            }
+        },
+        "node_modules/@babel/helper-module-imports": {
+            "version": "7.22.15",
+            "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz",
+            "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==",
+            "dev": true,
+            "dependencies": {
+                "@babel/types": "^7.22.15"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            }
+        },
+        "node_modules/@babel/helper-module-transforms": {
+            "version": "7.23.3",
+            "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz",
+            "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==",
+            "dev": true,
+            "dependencies": {
+                "@babel/helper-environment-visitor": "^7.22.20",
+                "@babel/helper-module-imports": "^7.22.15",
+                "@babel/helper-simple-access": "^7.22.5",
+                "@babel/helper-split-export-declaration": "^7.22.6",
+                "@babel/helper-validator-identifier": "^7.22.20"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0"
+            }
+        },
+        "node_modules/@babel/helper-plugin-utils": {
+            "version": "7.22.5",
+            "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz",
+            "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==",
+            "dev": true,
+            "engines": {
+                "node": ">=6.9.0"
+            }
+        },
+        "node_modules/@babel/helper-simple-access": {
+            "version": "7.22.5",
+            "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz",
+            "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==",
+            "dev": true,
+            "dependencies": {
+                "@babel/types": "^7.22.5"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            }
+        },
+        "node_modules/@babel/helper-split-export-declaration": {
+            "version": "7.22.6",
+            "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz",
+            "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==",
+            "dev": true,
+            "dependencies": {
+                "@babel/types": "^7.22.5"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            }
+        },
+        "node_modules/@babel/helper-string-parser": {
+            "version": "7.23.4",
+            "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz",
+            "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==",
+            "dev": true,
+            "engines": {
+                "node": ">=6.9.0"
+            }
+        },
+        "node_modules/@babel/helper-validator-identifier": {
+            "version": "7.22.20",
+            "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
+            "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
+            "dev": true,
+            "engines": {
+                "node": ">=6.9.0"
+            }
+        },
+        "node_modules/@babel/helper-validator-option": {
+            "version": "7.23.5",
+            "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz",
+            "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==",
+            "dev": true,
+            "engines": {
+                "node": ">=6.9.0"
+            }
+        },
+        "node_modules/@babel/helpers": {
+            "version": "7.23.7",
+            "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.7.tgz",
+            "integrity": "sha512-6AMnjCoC8wjqBzDHkuqpa7jAKwvMo4dC+lr/TFBz+ucfulO1XMpDnwWPGBNwClOKZ8h6xn5N81W/R5OrcKtCbQ==",
+            "dev": true,
+            "dependencies": {
+                "@babel/template": "^7.22.15",
+                "@babel/traverse": "^7.23.7",
+                "@babel/types": "^7.23.6"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            }
+        },
+        "node_modules/@babel/highlight": {
+            "version": "7.23.4",
+            "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz",
+            "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==",
+            "dev": true,
+            "dependencies": {
+                "@babel/helper-validator-identifier": "^7.22.20",
+                "chalk": "^2.4.2",
+                "js-tokens": "^4.0.0"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            }
+        },
+        "node_modules/@babel/highlight/node_modules/ansi-styles": {
+            "version": "3.2.1",
+            "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+            "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+            "dev": true,
+            "dependencies": {
+                "color-convert": "^1.9.0"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/@babel/highlight/node_modules/chalk": {
+            "version": "2.4.2",
+            "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+            "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+            "dev": true,
+            "dependencies": {
+                "ansi-styles": "^3.2.1",
+                "escape-string-regexp": "^1.0.5",
+                "supports-color": "^5.3.0"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/@babel/highlight/node_modules/color-convert": {
+            "version": "1.9.3",
+            "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+            "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+            "dev": true,
+            "dependencies": {
+                "color-name": "1.1.3"
+            }
+        },
+        "node_modules/@babel/highlight/node_modules/color-name": {
+            "version": "1.1.3",
+            "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+            "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+            "dev": true
+        },
+        "node_modules/@babel/highlight/node_modules/escape-string-regexp": {
+            "version": "1.0.5",
+            "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+            "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.8.0"
+            }
+        },
+        "node_modules/@babel/highlight/node_modules/has-flag": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+            "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+            "dev": true,
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/@babel/highlight/node_modules/supports-color": {
+            "version": "5.5.0",
+            "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+            "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+            "dev": true,
+            "dependencies": {
+                "has-flag": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/@babel/parser": {
+            "version": "7.23.6",
+            "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz",
+            "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==",
+            "dev": true,
+            "bin": {
+                "parser": "bin/babel-parser.js"
+            },
+            "engines": {
+                "node": ">=6.0.0"
+            }
+        },
+        "node_modules/@babel/plugin-syntax-async-generators": {
+            "version": "7.8.4",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
+            "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
+            "dev": true,
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.8.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-syntax-bigint": {
+            "version": "7.8.3",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz",
+            "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==",
+            "dev": true,
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.8.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-syntax-class-properties": {
+            "version": "7.12.13",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
+            "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
+            "dev": true,
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.12.13"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-syntax-import-meta": {
+            "version": "7.10.4",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
+            "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
+            "dev": true,
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.10.4"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-syntax-json-strings": {
+            "version": "7.8.3",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
+            "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
+            "dev": true,
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.8.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-syntax-jsx": {
+            "version": "7.23.3",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz",
+            "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==",
+            "dev": true,
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.22.5"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-syntax-logical-assignment-operators": {
+            "version": "7.10.4",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
+            "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
+            "dev": true,
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.10.4"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": {
+            "version": "7.8.3",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
+            "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
+            "dev": true,
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.8.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-syntax-numeric-separator": {
+            "version": "7.10.4",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
+            "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
+            "dev": true,
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.10.4"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-syntax-object-rest-spread": {
+            "version": "7.8.3",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
+            "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
+            "dev": true,
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.8.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-syntax-optional-catch-binding": {
+            "version": "7.8.3",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
+            "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
+            "dev": true,
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.8.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-syntax-optional-chaining": {
+            "version": "7.8.3",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
+            "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
+            "dev": true,
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.8.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-syntax-top-level-await": {
+            "version": "7.14.5",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
+            "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
+            "dev": true,
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.14.5"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-syntax-typescript": {
+            "version": "7.23.3",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz",
+            "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==",
+            "dev": true,
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.22.5"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/template": {
+            "version": "7.22.15",
+            "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz",
+            "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==",
+            "dev": true,
+            "dependencies": {
+                "@babel/code-frame": "^7.22.13",
+                "@babel/parser": "^7.22.15",
+                "@babel/types": "^7.22.15"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            }
+        },
+        "node_modules/@babel/traverse": {
+            "version": "7.23.7",
+            "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.7.tgz",
+            "integrity": "sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg==",
+            "dev": true,
+            "dependencies": {
+                "@babel/code-frame": "^7.23.5",
+                "@babel/generator": "^7.23.6",
+                "@babel/helper-environment-visitor": "^7.22.20",
+                "@babel/helper-function-name": "^7.23.0",
+                "@babel/helper-hoist-variables": "^7.22.5",
+                "@babel/helper-split-export-declaration": "^7.22.6",
+                "@babel/parser": "^7.23.6",
+                "@babel/types": "^7.23.6",
+                "debug": "^4.3.1",
+                "globals": "^11.1.0"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            }
+        },
+        "node_modules/@babel/traverse/node_modules/debug": {
+            "version": "4.3.4",
+            "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+            "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+            "dev": true,
+            "dependencies": {
+                "ms": "2.1.2"
+            },
+            "engines": {
+                "node": ">=6.0"
+            },
+            "peerDependenciesMeta": {
+                "supports-color": {
+                    "optional": true
+                }
+            }
+        },
+        "node_modules/@babel/traverse/node_modules/ms": {
+            "version": "2.1.2",
+            "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+            "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+            "dev": true
+        },
+        "node_modules/@babel/types": {
+            "version": "7.23.6",
+            "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz",
+            "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==",
+            "dev": true,
+            "dependencies": {
+                "@babel/helper-string-parser": "^7.23.4",
+                "@babel/helper-validator-identifier": "^7.22.20",
+                "to-fast-properties": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            }
+        },
+        "node_modules/@bcoe/v8-coverage": {
+            "version": "0.2.3",
+            "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz",
+            "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
+            "dev": true
+        },
+        "node_modules/@istanbuljs/load-nyc-config": {
+            "version": "1.1.0",
+            "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz",
+            "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==",
+            "dev": true,
+            "dependencies": {
+                "camelcase": "^5.3.1",
+                "find-up": "^4.1.0",
+                "get-package-type": "^0.1.0",
+                "js-yaml": "^3.13.1",
+                "resolve-from": "^5.0.0"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/@istanbuljs/schema": {
+            "version": "0.1.3",
+            "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz",
+            "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==",
+            "dev": true,
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/@jest/console": {
+            "version": "29.7.0",
+            "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz",
+            "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==",
+            "dev": true,
+            "dependencies": {
+                "@jest/types": "^29.6.3",
+                "@types/node": "*",
+                "chalk": "^4.0.0",
+                "jest-message-util": "^29.7.0",
+                "jest-util": "^29.7.0",
+                "slash": "^3.0.0"
+            },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+            }
+        },
+        "node_modules/@jest/core": {
+            "version": "29.7.0",
+            "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz",
+            "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==",
+            "dev": true,
+            "dependencies": {
+                "@jest/console": "^29.7.0",
+                "@jest/reporters": "^29.7.0",
+                "@jest/test-result": "^29.7.0",
+                "@jest/transform": "^29.7.0",
+                "@jest/types": "^29.6.3",
+                "@types/node": "*",
+                "ansi-escapes": "^4.2.1",
+                "chalk": "^4.0.0",
+                "ci-info": "^3.2.0",
+                "exit": "^0.1.2",
+                "graceful-fs": "^4.2.9",
+                "jest-changed-files": "^29.7.0",
+                "jest-config": "^29.7.0",
+                "jest-haste-map": "^29.7.0",
+                "jest-message-util": "^29.7.0",
+                "jest-regex-util": "^29.6.3",
+                "jest-resolve": "^29.7.0",
+                "jest-resolve-dependencies": "^29.7.0",
+                "jest-runner": "^29.7.0",
+                "jest-runtime": "^29.7.0",
+                "jest-snapshot": "^29.7.0",
+                "jest-util": "^29.7.0",
+                "jest-validate": "^29.7.0",
+                "jest-watcher": "^29.7.0",
+                "micromatch": "^4.0.4",
+                "pretty-format": "^29.7.0",
+                "slash": "^3.0.0",
+                "strip-ansi": "^6.0.0"
+            },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+            },
+            "peerDependencies": {
+                "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+            },
+            "peerDependenciesMeta": {
+                "node-notifier": {
+                    "optional": true
+                }
+            }
+        },
+        "node_modules/@jest/environment": {
+            "version": "29.7.0",
+            "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz",
+            "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==",
+            "dev": true,
+            "dependencies": {
+                "@jest/fake-timers": "^29.7.0",
+                "@jest/types": "^29.6.3",
+                "@types/node": "*",
+                "jest-mock": "^29.7.0"
+            },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+            }
+        },
+        "node_modules/@jest/expect": {
+            "version": "29.7.0",
+            "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz",
+            "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==",
+            "dev": true,
+            "dependencies": {
+                "expect": "^29.7.0",
+                "jest-snapshot": "^29.7.0"
+            },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+            }
+        },
+        "node_modules/@jest/expect-utils": {
+            "version": "29.7.0",
+            "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz",
+            "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==",
+            "dev": true,
+            "dependencies": {
+                "jest-get-type": "^29.6.3"
+            },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+            }
+        },
+        "node_modules/@jest/fake-timers": {
+            "version": "29.7.0",
+            "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz",
+            "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==",
+            "dev": true,
+            "dependencies": {
+                "@jest/types": "^29.6.3",
+                "@sinonjs/fake-timers": "^10.0.2",
+                "@types/node": "*",
+                "jest-message-util": "^29.7.0",
+                "jest-mock": "^29.7.0",
+                "jest-util": "^29.7.0"
+            },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+            }
+        },
+        "node_modules/@jest/globals": {
+            "version": "29.7.0",
+            "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz",
+            "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==",
+            "dev": true,
+            "dependencies": {
+                "@jest/environment": "^29.7.0",
+                "@jest/expect": "^29.7.0",
+                "@jest/types": "^29.6.3",
+                "jest-mock": "^29.7.0"
+            },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+            }
+        },
+        "node_modules/@jest/reporters": {
+            "version": "29.7.0",
+            "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz",
+            "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==",
+            "dev": true,
+            "dependencies": {
+                "@bcoe/v8-coverage": "^0.2.3",
+                "@jest/console": "^29.7.0",
+                "@jest/test-result": "^29.7.0",
+                "@jest/transform": "^29.7.0",
+                "@jest/types": "^29.6.3",
+                "@jridgewell/trace-mapping": "^0.3.18",
+                "@types/node": "*",
+                "chalk": "^4.0.0",
+                "collect-v8-coverage": "^1.0.0",
+                "exit": "^0.1.2",
+                "glob": "^7.1.3",
+                "graceful-fs": "^4.2.9",
+                "istanbul-lib-coverage": "^3.0.0",
+                "istanbul-lib-instrument": "^6.0.0",
+                "istanbul-lib-report": "^3.0.0",
+                "istanbul-lib-source-maps": "^4.0.0",
+                "istanbul-reports": "^3.1.3",
+                "jest-message-util": "^29.7.0",
+                "jest-util": "^29.7.0",
+                "jest-worker": "^29.7.0",
+                "slash": "^3.0.0",
+                "string-length": "^4.0.1",
+                "strip-ansi": "^6.0.0",
+                "v8-to-istanbul": "^9.0.1"
+            },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+            },
+            "peerDependencies": {
+                "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+            },
+            "peerDependenciesMeta": {
+                "node-notifier": {
+                    "optional": true
+                }
+            }
+        },
+        "node_modules/@jest/schemas": {
+            "version": "29.6.3",
+            "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz",
+            "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==",
+            "dev": true,
+            "dependencies": {
+                "@sinclair/typebox": "^0.27.8"
+            },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+            }
+        },
+        "node_modules/@jest/source-map": {
+            "version": "29.6.3",
+            "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz",
+            "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==",
+            "dev": true,
+            "dependencies": {
+                "@jridgewell/trace-mapping": "^0.3.18",
+                "callsites": "^3.0.0",
+                "graceful-fs": "^4.2.9"
+            },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+            }
+        },
+        "node_modules/@jest/test-result": {
+            "version": "29.7.0",
+            "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz",
+            "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==",
+            "dev": true,
+            "dependencies": {
+                "@jest/console": "^29.7.0",
+                "@jest/types": "^29.6.3",
+                "@types/istanbul-lib-coverage": "^2.0.0",
+                "collect-v8-coverage": "^1.0.0"
+            },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+            }
+        },
+        "node_modules/@jest/test-sequencer": {
+            "version": "29.7.0",
+            "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz",
+            "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==",
+            "dev": true,
+            "dependencies": {
+                "@jest/test-result": "^29.7.0",
+                "graceful-fs": "^4.2.9",
+                "jest-haste-map": "^29.7.0",
+                "slash": "^3.0.0"
+            },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+            }
+        },
+        "node_modules/@jest/transform": {
+            "version": "29.7.0",
+            "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz",
+            "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==",
+            "dev": true,
+            "dependencies": {
+                "@babel/core": "^7.11.6",
+                "@jest/types": "^29.6.3",
+                "@jridgewell/trace-mapping": "^0.3.18",
+                "babel-plugin-istanbul": "^6.1.1",
+                "chalk": "^4.0.0",
+                "convert-source-map": "^2.0.0",
+                "fast-json-stable-stringify": "^2.1.0",
+                "graceful-fs": "^4.2.9",
+                "jest-haste-map": "^29.7.0",
+                "jest-regex-util": "^29.6.3",
+                "jest-util": "^29.7.0",
+                "micromatch": "^4.0.4",
+                "pirates": "^4.0.4",
+                "slash": "^3.0.0",
+                "write-file-atomic": "^4.0.2"
+            },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+            }
+        },
+        "node_modules/@jest/types": {
+            "version": "29.6.3",
+            "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz",
+            "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==",
+            "dev": true,
+            "dependencies": {
+                "@jest/schemas": "^29.6.3",
+                "@types/istanbul-lib-coverage": "^2.0.0",
+                "@types/istanbul-reports": "^3.0.0",
+                "@types/node": "*",
+                "@types/yargs": "^17.0.8",
+                "chalk": "^4.0.0"
+            },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+            }
+        },
+        "node_modules/@jridgewell/gen-mapping": {
+            "version": "0.3.3",
+            "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
+            "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
+            "dev": true,
+            "dependencies": {
+                "@jridgewell/set-array": "^1.0.1",
+                "@jridgewell/sourcemap-codec": "^1.4.10",
+                "@jridgewell/trace-mapping": "^0.3.9"
+            },
+            "engines": {
+                "node": ">=6.0.0"
+            }
+        },
+        "node_modules/@jridgewell/resolve-uri": {
+            "version": "3.1.1",
+            "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz",
+            "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==",
+            "dev": true,
+            "engines": {
+                "node": ">=6.0.0"
+            }
+        },
+        "node_modules/@jridgewell/set-array": {
+            "version": "1.1.2",
+            "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
+            "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
+            "dev": true,
+            "engines": {
+                "node": ">=6.0.0"
+            }
+        },
+        "node_modules/@jridgewell/sourcemap-codec": {
+            "version": "1.4.15",
+            "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
+            "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
+            "dev": true
+        },
+        "node_modules/@jridgewell/trace-mapping": {
+            "version": "0.3.20",
+            "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz",
+            "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==",
+            "dev": true,
+            "dependencies": {
+                "@jridgewell/resolve-uri": "^3.1.0",
+                "@jridgewell/sourcemap-codec": "^1.4.14"
+            }
+        },
+        "node_modules/@mapbox/node-pre-gyp": {
+            "version": "1.0.11",
+            "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz",
+            "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==",
+            "dependencies": {
+                "detect-libc": "^2.0.0",
+                "https-proxy-agent": "^5.0.0",
+                "make-dir": "^3.1.0",
+                "node-fetch": "^2.6.7",
+                "nopt": "^5.0.0",
+                "npmlog": "^5.0.1",
+                "rimraf": "^3.0.2",
+                "semver": "^7.3.5",
+                "tar": "^6.1.11"
+            },
+            "bin": {
+                "node-pre-gyp": "bin/node-pre-gyp"
+            }
+        },
+        "node_modules/@mongodb-js/saslprep": {
+            "version": "1.1.1",
+            "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.1.tgz",
+            "integrity": "sha512-t7c5K033joZZMspnHg/gWPE4kandgc2OxE74aYOtGKfgB9VPuVJPix0H6fhmm2erj5PBJ21mqcx34lpIGtUCsQ==",
+            "dependencies": {
+                "sparse-bitfield": "^3.0.3"
+            }
+        },
+        "node_modules/@sinclair/typebox": {
+            "version": "0.27.8",
+            "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz",
+            "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==",
+            "dev": true
+        },
+        "node_modules/@sinonjs/commons": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz",
+            "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==",
+            "dev": true,
+            "dependencies": {
+                "type-detect": "4.0.8"
+            }
+        },
+        "node_modules/@sinonjs/fake-timers": {
+            "version": "10.3.0",
+            "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz",
+            "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==",
+            "dev": true,
+            "dependencies": {
+                "@sinonjs/commons": "^3.0.0"
+            }
+        },
+        "node_modules/@types/babel__core": {
+            "version": "7.20.5",
+            "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
+            "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==",
+            "dev": true,
+            "dependencies": {
+                "@babel/parser": "^7.20.7",
+                "@babel/types": "^7.20.7",
+                "@types/babel__generator": "*",
+                "@types/babel__template": "*",
+                "@types/babel__traverse": "*"
+            }
+        },
+        "node_modules/@types/babel__generator": {
+            "version": "7.6.8",
+            "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz",
+            "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==",
+            "dev": true,
+            "dependencies": {
+                "@babel/types": "^7.0.0"
+            }
+        },
+        "node_modules/@types/babel__template": {
+            "version": "7.4.4",
+            "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz",
+            "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==",
+            "dev": true,
+            "dependencies": {
+                "@babel/parser": "^7.1.0",
+                "@babel/types": "^7.0.0"
+            }
+        },
+        "node_modules/@types/babel__traverse": {
+            "version": "7.20.5",
+            "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.5.tgz",
+            "integrity": "sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==",
+            "dev": true,
+            "dependencies": {
+                "@babel/types": "^7.20.7"
+            }
+        },
+        "node_modules/@types/graceful-fs": {
+            "version": "4.1.9",
+            "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz",
+            "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==",
+            "dev": true,
+            "dependencies": {
+                "@types/node": "*"
+            }
+        },
+        "node_modules/@types/istanbul-lib-coverage": {
+            "version": "2.0.6",
+            "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz",
+            "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==",
+            "dev": true
+        },
+        "node_modules/@types/istanbul-lib-report": {
+            "version": "3.0.3",
+            "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz",
+            "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==",
+            "dev": true,
+            "dependencies": {
+                "@types/istanbul-lib-coverage": "*"
+            }
+        },
+        "node_modules/@types/istanbul-reports": {
+            "version": "3.0.4",
+            "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz",
+            "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==",
+            "dev": true,
+            "dependencies": {
+                "@types/istanbul-lib-report": "*"
+            }
+        },
+        "node_modules/@types/node": {
+            "version": "20.10.7",
+            "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.7.tgz",
+            "integrity": "sha512-fRbIKb8C/Y2lXxB5eVMj4IU7xpdox0Lh8bUPEdtLysaylsml1hOOx1+STloRs/B9nf7C6kPRmmg/V7aQW7usNg==",
+            "dependencies": {
+                "undici-types": "~5.26.4"
+            }
+        },
+        "node_modules/@types/stack-utils": {
+            "version": "2.0.3",
+            "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz",
+            "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==",
+            "dev": true
+        },
+        "node_modules/@types/webidl-conversions": {
+            "version": "7.0.3",
+            "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz",
+            "integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA=="
+        },
+        "node_modules/@types/whatwg-url": {
+            "version": "8.2.2",
+            "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz",
+            "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==",
+            "dependencies": {
+                "@types/node": "*",
+                "@types/webidl-conversions": "*"
+            }
+        },
+        "node_modules/@types/yargs": {
+            "version": "17.0.32",
+            "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz",
+            "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==",
+            "dev": true,
+            "dependencies": {
+                "@types/yargs-parser": "*"
+            }
+        },
+        "node_modules/@types/yargs-parser": {
+            "version": "21.0.3",
+            "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz",
+            "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==",
+            "dev": true
+        },
+        "node_modules/abbrev": {
+            "version": "1.1.1",
+            "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
+            "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
+        },
+        "node_modules/accepts": {
+            "version": "1.3.8",
+            "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
+            "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
+            "dependencies": {
+                "mime-types": "~2.1.34",
+                "negotiator": "0.6.3"
+            },
+            "engines": {
+                "node": ">= 0.6"
+            }
+        },
+        "node_modules/agent-base": {
+            "version": "6.0.2",
+            "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+            "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+            "dependencies": {
+                "debug": "4"
+            },
+            "engines": {
+                "node": ">= 6.0.0"
+            }
+        },
+        "node_modules/agent-base/node_modules/debug": {
+            "version": "4.3.4",
+            "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+            "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+            "dependencies": {
+                "ms": "2.1.2"
+            },
+            "engines": {
+                "node": ">=6.0"
+            },
+            "peerDependenciesMeta": {
+                "supports-color": {
+                    "optional": true
+                }
+            }
+        },
+        "node_modules/agent-base/node_modules/ms": {
+            "version": "2.1.2",
+            "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+            "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+        },
+        "node_modules/ansi-escapes": {
+            "version": "4.3.2",
+            "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
+            "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
+            "dev": true,
+            "dependencies": {
+                "type-fest": "^0.21.3"
+            },
+            "engines": {
+                "node": ">=8"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
+            }
+        },
+        "node_modules/ansi-regex": {
+            "version": "5.0.1",
+            "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+            "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/ansi-styles": {
+            "version": "4.3.0",
+            "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+            "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+            "dev": true,
+            "dependencies": {
+                "color-convert": "^2.0.1"
+            },
+            "engines": {
+                "node": ">=8"
+            },
+            "funding": {
+                "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+            }
+        },
+        "node_modules/anymatch": {
+            "version": "3.1.3",
+            "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+            "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+            "dev": true,
+            "dependencies": {
+                "normalize-path": "^3.0.0",
+                "picomatch": "^2.0.4"
+            },
+            "engines": {
+                "node": ">= 8"
+            }
+        },
+        "node_modules/aproba": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz",
+            "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ=="
+        },
+        "node_modules/are-we-there-yet": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz",
+            "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==",
+            "dependencies": {
+                "delegates": "^1.0.0",
+                "readable-stream": "^3.6.0"
+            },
+            "engines": {
+                "node": ">=10"
+            }
+        },
+        "node_modules/argparse": {
+            "version": "1.0.10",
+            "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+            "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+            "dev": true,
+            "dependencies": {
+                "sprintf-js": "~1.0.2"
+            }
+        },
+        "node_modules/array-flatten": {
+            "version": "1.1.1",
+            "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+            "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
+        },
+        "node_modules/asap": {
+            "version": "2.0.6",
+            "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
+            "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==",
+            "dev": true
+        },
+        "node_modules/async-mutex": {
+            "version": "0.4.0",
+            "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.4.0.tgz",
+            "integrity": "sha512-eJFZ1YhRR8UN8eBLoNzcDPcy/jqjsg6I1AP+KvWQX80BqOSW1oJPJXDylPUEeMr2ZQvHgnQ//Lp6f3RQ1zI7HA==",
+            "dev": true,
+            "dependencies": {
+                "tslib": "^2.4.0"
+            }
+        },
+        "node_modules/asynckit": {
+            "version": "0.4.0",
+            "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+            "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
+            "dev": true
+        },
+        "node_modules/b4a": {
+            "version": "1.6.4",
+            "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz",
+            "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==",
+            "dev": true
+        },
+        "node_modules/babel-jest": {
+            "version": "29.7.0",
+            "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz",
+            "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==",
+            "dev": true,
+            "dependencies": {
+                "@jest/transform": "^29.7.0",
+                "@types/babel__core": "^7.1.14",
+                "babel-plugin-istanbul": "^6.1.1",
+                "babel-preset-jest": "^29.6.3",
+                "chalk": "^4.0.0",
+                "graceful-fs": "^4.2.9",
+                "slash": "^3.0.0"
+            },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.8.0"
+            }
+        },
+        "node_modules/babel-plugin-istanbul": {
+            "version": "6.1.1",
+            "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz",
+            "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==",
+            "dev": true,
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.0.0",
+                "@istanbuljs/load-nyc-config": "^1.0.0",
+                "@istanbuljs/schema": "^0.1.2",
+                "istanbul-lib-instrument": "^5.0.4",
+                "test-exclude": "^6.0.0"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": {
+            "version": "5.2.1",
+            "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz",
+            "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==",
+            "dev": true,
+            "dependencies": {
+                "@babel/core": "^7.12.3",
+                "@babel/parser": "^7.14.7",
+                "@istanbuljs/schema": "^0.1.2",
+                "istanbul-lib-coverage": "^3.2.0",
+                "semver": "^6.3.0"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/babel-plugin-istanbul/node_modules/semver": {
+            "version": "6.3.1",
+            "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+            "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+            "dev": true,
+            "bin": {
+                "semver": "bin/semver.js"
+            }
+        },
+        "node_modules/babel-plugin-jest-hoist": {
+            "version": "29.6.3",
+            "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz",
+            "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==",
+            "dev": true,
+            "dependencies": {
+                "@babel/template": "^7.3.3",
+                "@babel/types": "^7.3.3",
+                "@types/babel__core": "^7.1.14",
+                "@types/babel__traverse": "^7.0.6"
+            },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+            }
+        },
+        "node_modules/babel-preset-current-node-syntax": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz",
+            "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==",
+            "dev": true,
+            "dependencies": {
+                "@babel/plugin-syntax-async-generators": "^7.8.4",
+                "@babel/plugin-syntax-bigint": "^7.8.3",
+                "@babel/plugin-syntax-class-properties": "^7.8.3",
+                "@babel/plugin-syntax-import-meta": "^7.8.3",
+                "@babel/plugin-syntax-json-strings": "^7.8.3",
+                "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3",
+                "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
+                "@babel/plugin-syntax-numeric-separator": "^7.8.3",
+                "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+                "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
+                "@babel/plugin-syntax-optional-chaining": "^7.8.3",
+                "@babel/plugin-syntax-top-level-await": "^7.8.3"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0"
+            }
+        },
+        "node_modules/babel-preset-jest": {
+            "version": "29.6.3",
+            "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz",
+            "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==",
+            "dev": true,
+            "dependencies": {
+                "babel-plugin-jest-hoist": "^29.6.3",
+                "babel-preset-current-node-syntax": "^1.0.0"
+            },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0"
+            }
+        },
+        "node_modules/balanced-match": {
+            "version": "1.0.2",
+            "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+            "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
+        },
+        "node_modules/bcrypt": {
+            "version": "5.1.1",
+            "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.1.1.tgz",
+            "integrity": "sha512-AGBHOG5hPYZ5Xl9KXzU5iKq9516yEmvCKDg3ecP5kX2aB6UqTeXZxk2ELnDgDm6BQSMlLt9rDB4LoSMx0rYwww==",
+            "hasInstallScript": true,
+            "dependencies": {
+                "@mapbox/node-pre-gyp": "^1.0.11",
+                "node-addon-api": "^5.0.0"
+            },
+            "engines": {
+                "node": ">= 10.0.0"
+            }
+        },
+        "node_modules/body-parser": {
+            "version": "1.20.2",
+            "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz",
+            "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==",
+            "dependencies": {
+                "bytes": "3.1.2",
+                "content-type": "~1.0.5",
+                "debug": "2.6.9",
+                "depd": "2.0.0",
+                "destroy": "1.2.0",
+                "http-errors": "2.0.0",
+                "iconv-lite": "0.4.24",
+                "on-finished": "2.4.1",
+                "qs": "6.11.0",
+                "raw-body": "2.5.2",
+                "type-is": "~1.6.18",
+                "unpipe": "1.0.0"
+            },
+            "engines": {
+                "node": ">= 0.8",
+                "npm": "1.2.8000 || >= 1.4.16"
+            }
+        },
+        "node_modules/brace-expansion": {
+            "version": "1.1.11",
+            "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+            "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+            "dependencies": {
+                "balanced-match": "^1.0.0",
+                "concat-map": "0.0.1"
+            }
+        },
+        "node_modules/braces": {
+            "version": "3.0.2",
+            "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+            "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+            "dev": true,
+            "dependencies": {
+                "fill-range": "^7.0.1"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/browserslist": {
+            "version": "4.22.2",
+            "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz",
+            "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==",
+            "dev": true,
+            "funding": [
+                {
+                    "type": "opencollective",
+                    "url": "https://opencollective.com/browserslist"
+                },
+                {
+                    "type": "tidelift",
+                    "url": "https://tidelift.com/funding/github/npm/browserslist"
+                },
+                {
+                    "type": "github",
+                    "url": "https://github.com/sponsors/ai"
+                }
+            ],
+            "dependencies": {
+                "caniuse-lite": "^1.0.30001565",
+                "electron-to-chromium": "^1.4.601",
+                "node-releases": "^2.0.14",
+                "update-browserslist-db": "^1.0.13"
+            },
+            "bin": {
+                "browserslist": "cli.js"
+            },
+            "engines": {
+                "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+            }
+        },
+        "node_modules/bser": {
+            "version": "2.1.1",
+            "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz",
+            "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==",
+            "dev": true,
+            "dependencies": {
+                "node-int64": "^0.4.0"
+            }
+        },
+        "node_modules/bson": {
+            "version": "6.2.0",
+            "resolved": "https://registry.npmjs.org/bson/-/bson-6.2.0.tgz",
+            "integrity": "sha512-ID1cI+7bazPDyL9wYy9GaQ8gEEohWvcUl/Yf0dIdutJxnmInEEyCsb4awy/OiBfall7zBA179Pahi3vCdFze3Q==",
+            "engines": {
+                "node": ">=16.20.1"
+            }
+        },
+        "node_modules/buffer-crc32": {
+            "version": "0.2.13",
+            "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
+            "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
+            "dev": true,
+            "engines": {
+                "node": "*"
+            }
+        },
+        "node_modules/buffer-equal-constant-time": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
+            "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA=="
+        },
+        "node_modules/buffer-from": {
+            "version": "1.1.2",
+            "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+            "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+            "dev": true
+        },
+        "node_modules/bytes": {
+            "version": "3.1.2",
+            "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
+            "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+            "engines": {
+                "node": ">= 0.8"
+            }
+        },
+        "node_modules/call-bind": {
+            "version": "1.0.5",
+            "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz",
+            "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==",
+            "dependencies": {
+                "function-bind": "^1.1.2",
+                "get-intrinsic": "^1.2.1",
+                "set-function-length": "^1.1.1"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
+        },
+        "node_modules/callsites": {
+            "version": "3.1.0",
+            "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+            "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+            "dev": true,
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/camelcase": {
+            "version": "5.3.1",
+            "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+            "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+            "dev": true,
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/caniuse-lite": {
+            "version": "1.0.30001576",
+            "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001576.tgz",
+            "integrity": "sha512-ff5BdakGe2P3SQsMsiqmt1Lc8221NR1VzHj5jXN5vBny9A6fpze94HiVV/n7XRosOlsShJcvMv5mdnpjOGCEgg==",
+            "dev": true,
+            "funding": [
+                {
+                    "type": "opencollective",
+                    "url": "https://opencollective.com/browserslist"
+                },
+                {
+                    "type": "tidelift",
+                    "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+                },
+                {
+                    "type": "github",
+                    "url": "https://github.com/sponsors/ai"
+                }
+            ]
+        },
+        "node_modules/chalk": {
+            "version": "4.1.2",
+            "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+            "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+            "dev": true,
+            "dependencies": {
+                "ansi-styles": "^4.1.0",
+                "supports-color": "^7.1.0"
+            },
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "url": "https://github.com/chalk/chalk?sponsor=1"
+            }
+        },
+        "node_modules/char-regex": {
+            "version": "1.0.2",
+            "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz",
+            "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==",
+            "dev": true,
+            "engines": {
+                "node": ">=10"
+            }
+        },
+        "node_modules/chownr": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
+            "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
+            "engines": {
+                "node": ">=10"
+            }
+        },
+        "node_modules/ci-info": {
+            "version": "3.9.0",
+            "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz",
+            "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==",
+            "dev": true,
+            "funding": [
+                {
+                    "type": "github",
+                    "url": "https://github.com/sponsors/sibiraj-s"
+                }
+            ],
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/cjs-module-lexer": {
+            "version": "1.2.3",
+            "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz",
+            "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==",
+            "dev": true
+        },
+        "node_modules/cliui": {
+            "version": "8.0.1",
+            "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+            "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
+            "dev": true,
+            "dependencies": {
+                "string-width": "^4.2.0",
+                "strip-ansi": "^6.0.1",
+                "wrap-ansi": "^7.0.0"
+            },
+            "engines": {
+                "node": ">=12"
+            }
+        },
+        "node_modules/co": {
+            "version": "4.6.0",
+            "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+            "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==",
+            "dev": true,
+            "engines": {
+                "iojs": ">= 1.0.0",
+                "node": ">= 0.12.0"
+            }
+        },
+        "node_modules/collect-v8-coverage": {
+            "version": "1.0.2",
+            "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz",
+            "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==",
+            "dev": true
+        },
+        "node_modules/color-convert": {
+            "version": "2.0.1",
+            "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+            "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+            "dev": true,
+            "dependencies": {
+                "color-name": "~1.1.4"
+            },
+            "engines": {
+                "node": ">=7.0.0"
+            }
+        },
+        "node_modules/color-name": {
+            "version": "1.1.4",
+            "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+            "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+            "dev": true
+        },
+        "node_modules/color-support": {
+            "version": "1.1.3",
+            "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
+            "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
+            "bin": {
+                "color-support": "bin.js"
+            }
+        },
+        "node_modules/combined-stream": {
+            "version": "1.0.8",
+            "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+            "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+            "dev": true,
+            "dependencies": {
+                "delayed-stream": "~1.0.0"
+            },
+            "engines": {
+                "node": ">= 0.8"
+            }
+        },
+        "node_modules/commondir": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
+            "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==",
+            "dev": true
+        },
+        "node_modules/component-emitter": {
+            "version": "1.3.1",
+            "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz",
+            "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==",
+            "dev": true,
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
+            }
+        },
+        "node_modules/concat-map": {
+            "version": "0.0.1",
+            "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+            "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
+        },
+        "node_modules/console-control-strings": {
+            "version": "1.1.0",
+            "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
+            "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ=="
+        },
+        "node_modules/content-disposition": {
+            "version": "0.5.4",
+            "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
+            "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
+            "dependencies": {
+                "safe-buffer": "5.2.1"
+            },
+            "engines": {
+                "node": ">= 0.6"
+            }
+        },
+        "node_modules/content-type": {
+            "version": "1.0.5",
+            "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
+            "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
+            "engines": {
+                "node": ">= 0.6"
+            }
+        },
+        "node_modules/convert-source-map": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+            "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
+            "dev": true
+        },
+        "node_modules/cookie": {
+            "version": "0.5.0",
+            "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
+            "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
+            "engines": {
+                "node": ">= 0.6"
+            }
+        },
+        "node_modules/cookie-signature": {
+            "version": "1.0.6",
+            "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+            "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
+        },
+        "node_modules/cookiejar": {
+            "version": "2.1.4",
+            "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz",
+            "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==",
+            "dev": true
+        },
+        "node_modules/create-jest": {
+            "version": "29.7.0",
+            "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz",
+            "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==",
+            "dev": true,
+            "dependencies": {
+                "@jest/types": "^29.6.3",
+                "chalk": "^4.0.0",
+                "exit": "^0.1.2",
+                "graceful-fs": "^4.2.9",
+                "jest-config": "^29.7.0",
+                "jest-util": "^29.7.0",
+                "prompts": "^2.0.1"
+            },
+            "bin": {
+                "create-jest": "bin/create-jest.js"
+            },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+            }
+        },
+        "node_modules/cross-spawn": {
+            "version": "7.0.3",
+            "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+            "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+            "dev": true,
+            "dependencies": {
+                "path-key": "^3.1.0",
+                "shebang-command": "^2.0.0",
+                "which": "^2.0.1"
+            },
+            "engines": {
+                "node": ">= 8"
+            }
+        },
+        "node_modules/debug": {
+            "version": "2.6.9",
+            "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+            "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+            "dependencies": {
+                "ms": "2.0.0"
+            }
+        },
+        "node_modules/dedent": {
+            "version": "1.5.1",
+            "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz",
+            "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==",
+            "dev": true,
+            "peerDependencies": {
+                "babel-plugin-macros": "^3.1.0"
+            },
+            "peerDependenciesMeta": {
+                "babel-plugin-macros": {
+                    "optional": true
+                }
+            }
+        },
+        "node_modules/deepmerge": {
+            "version": "4.3.1",
+            "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
+            "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/define-data-property": {
+            "version": "1.1.1",
+            "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz",
+            "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==",
+            "dependencies": {
+                "get-intrinsic": "^1.2.1",
+                "gopd": "^1.0.1",
+                "has-property-descriptors": "^1.0.0"
+            },
+            "engines": {
+                "node": ">= 0.4"
+            }
+        },
+        "node_modules/delayed-stream": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+            "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.4.0"
+            }
+        },
+        "node_modules/delegates": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
+            "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ=="
+        },
+        "node_modules/depd": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+            "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+            "engines": {
+                "node": ">= 0.8"
+            }
+        },
+        "node_modules/destroy": {
+            "version": "1.2.0",
+            "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
+            "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
+            "engines": {
+                "node": ">= 0.8",
+                "npm": "1.2.8000 || >= 1.4.16"
+            }
+        },
+        "node_modules/detect-libc": {
+            "version": "2.0.2",
+            "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz",
+            "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==",
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/detect-newline": {
+            "version": "3.1.0",
+            "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz",
+            "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==",
+            "dev": true,
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/dezalgo": {
+            "version": "1.0.4",
+            "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz",
+            "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==",
+            "dev": true,
+            "dependencies": {
+                "asap": "^2.0.0",
+                "wrappy": "1"
+            }
+        },
+        "node_modules/diff-sequences": {
+            "version": "29.6.3",
+            "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz",
+            "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==",
+            "dev": true,
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+            }
+        },
+        "node_modules/ecdsa-sig-formatter": {
+            "version": "1.0.11",
+            "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
+            "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
+            "dependencies": {
+                "safe-buffer": "^5.0.1"
+            }
+        },
+        "node_modules/ee-first": {
+            "version": "1.1.1",
+            "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+            "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
+        },
+        "node_modules/electron-to-chromium": {
+            "version": "1.4.623",
+            "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.623.tgz",
+            "integrity": "sha512-lKoz10iCYlP1WtRYdh5MvocQPWVRoI7ysp6qf18bmeBgR8abE6+I2CsfyNKztRDZvhdWc+krKT6wS7Neg8sw3A==",
+            "dev": true
+        },
+        "node_modules/emittery": {
+            "version": "0.13.1",
+            "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz",
+            "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==",
+            "dev": true,
+            "engines": {
+                "node": ">=12"
+            },
+            "funding": {
+                "url": "https://github.com/sindresorhus/emittery?sponsor=1"
+            }
+        },
+        "node_modules/emoji-regex": {
+            "version": "8.0.0",
+            "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+            "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
+        },
+        "node_modules/encodeurl": {
+            "version": "1.0.2",
+            "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+            "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
+            "engines": {
+                "node": ">= 0.8"
+            }
+        },
+        "node_modules/error-ex": {
+            "version": "1.3.2",
+            "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+            "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+            "dev": true,
+            "dependencies": {
+                "is-arrayish": "^0.2.1"
+            }
+        },
+        "node_modules/escalade": {
+            "version": "3.1.1",
+            "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
+            "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+            "dev": true,
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/escape-html": {
+            "version": "1.0.3",
+            "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+            "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
+        },
+        "node_modules/escape-string-regexp": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
+            "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
+            "dev": true,
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/esprima": {
+            "version": "4.0.1",
+            "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+            "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+            "dev": true,
+            "bin": {
+                "esparse": "bin/esparse.js",
+                "esvalidate": "bin/esvalidate.js"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/etag": {
+            "version": "1.8.1",
+            "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+            "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
+            "engines": {
+                "node": ">= 0.6"
+            }
+        },
+        "node_modules/execa": {
+            "version": "5.1.1",
+            "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+            "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+            "dev": true,
+            "dependencies": {
+                "cross-spawn": "^7.0.3",
+                "get-stream": "^6.0.0",
+                "human-signals": "^2.1.0",
+                "is-stream": "^2.0.0",
+                "merge-stream": "^2.0.0",
+                "npm-run-path": "^4.0.1",
+                "onetime": "^5.1.2",
+                "signal-exit": "^3.0.3",
+                "strip-final-newline": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "url": "https://github.com/sindresorhus/execa?sponsor=1"
+            }
+        },
+        "node_modules/exit": {
+            "version": "0.1.2",
+            "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
+            "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==",
+            "dev": true,
+            "engines": {
+                "node": ">= 0.8.0"
+            }
+        },
+        "node_modules/expect": {
+            "version": "29.7.0",
+            "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz",
+            "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==",
+            "dev": true,
+            "dependencies": {
+                "@jest/expect-utils": "^29.7.0",
+                "jest-get-type": "^29.6.3",
+                "jest-matcher-utils": "^29.7.0",
+                "jest-message-util": "^29.7.0",
+                "jest-util": "^29.7.0"
+            },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+            }
+        },
+        "node_modules/express": {
+            "version": "4.18.2",
+            "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
+            "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
+            "dependencies": {
+                "accepts": "~1.3.8",
+                "array-flatten": "1.1.1",
+                "body-parser": "1.20.1",
+                "content-disposition": "0.5.4",
+                "content-type": "~1.0.4",
+                "cookie": "0.5.0",
+                "cookie-signature": "1.0.6",
+                "debug": "2.6.9",
+                "depd": "2.0.0",
+                "encodeurl": "~1.0.2",
+                "escape-html": "~1.0.3",
+                "etag": "~1.8.1",
+                "finalhandler": "1.2.0",
+                "fresh": "0.5.2",
+                "http-errors": "2.0.0",
+                "merge-descriptors": "1.0.1",
+                "methods": "~1.1.2",
+                "on-finished": "2.4.1",
+                "parseurl": "~1.3.3",
+                "path-to-regexp": "0.1.7",
+                "proxy-addr": "~2.0.7",
+                "qs": "6.11.0",
+                "range-parser": "~1.2.1",
+                "safe-buffer": "5.2.1",
+                "send": "0.18.0",
+                "serve-static": "1.15.0",
+                "setprototypeof": "1.2.0",
+                "statuses": "2.0.1",
+                "type-is": "~1.6.18",
+                "utils-merge": "1.0.1",
+                "vary": "~1.1.2"
+            },
+            "engines": {
+                "node": ">= 0.10.0"
+            }
+        },
+        "node_modules/express/node_modules/body-parser": {
+            "version": "1.20.1",
+            "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz",
+            "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==",
+            "dependencies": {
+                "bytes": "3.1.2",
+                "content-type": "~1.0.4",
+                "debug": "2.6.9",
+                "depd": "2.0.0",
+                "destroy": "1.2.0",
+                "http-errors": "2.0.0",
+                "iconv-lite": "0.4.24",
+                "on-finished": "2.4.1",
+                "qs": "6.11.0",
+                "raw-body": "2.5.1",
+                "type-is": "~1.6.18",
+                "unpipe": "1.0.0"
+            },
+            "engines": {
+                "node": ">= 0.8",
+                "npm": "1.2.8000 || >= 1.4.16"
+            }
+        },
+        "node_modules/express/node_modules/raw-body": {
+            "version": "2.5.1",
+            "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
+            "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
+            "dependencies": {
+                "bytes": "3.1.2",
+                "http-errors": "2.0.0",
+                "iconv-lite": "0.4.24",
+                "unpipe": "1.0.0"
+            },
+            "engines": {
+                "node": ">= 0.8"
+            }
+        },
+        "node_modules/fast-fifo": {
+            "version": "1.3.2",
+            "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz",
+            "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==",
+            "dev": true
+        },
+        "node_modules/fast-json-stable-stringify": {
+            "version": "2.1.0",
+            "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+            "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+            "dev": true
+        },
+        "node_modules/fast-safe-stringify": {
+            "version": "2.1.1",
+            "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz",
+            "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==",
+            "dev": true
+        },
+        "node_modules/fb-watchman": {
+            "version": "2.0.2",
+            "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz",
+            "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==",
+            "dev": true,
+            "dependencies": {
+                "bser": "2.1.1"
+            }
+        },
+        "node_modules/fd-slicer": {
+            "version": "1.1.0",
+            "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
+            "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
+            "dev": true,
+            "dependencies": {
+                "pend": "~1.2.0"
+            }
+        },
+        "node_modules/fill-range": {
+            "version": "7.0.1",
+            "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+            "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+            "dev": true,
+            "dependencies": {
+                "to-regex-range": "^5.0.1"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/finalhandler": {
+            "version": "1.2.0",
+            "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
+            "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
+            "dependencies": {
+                "debug": "2.6.9",
+                "encodeurl": "~1.0.2",
+                "escape-html": "~1.0.3",
+                "on-finished": "2.4.1",
+                "parseurl": "~1.3.3",
+                "statuses": "2.0.1",
+                "unpipe": "~1.0.0"
+            },
+            "engines": {
+                "node": ">= 0.8"
+            }
+        },
+        "node_modules/find-cache-dir": {
+            "version": "3.3.2",
+            "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz",
+            "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==",
+            "dev": true,
+            "dependencies": {
+                "commondir": "^1.0.1",
+                "make-dir": "^3.0.2",
+                "pkg-dir": "^4.1.0"
+            },
+            "engines": {
+                "node": ">=8"
+            },
+            "funding": {
+                "url": "https://github.com/avajs/find-cache-dir?sponsor=1"
+            }
+        },
+        "node_modules/find-up": {
+            "version": "4.1.0",
+            "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+            "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+            "dev": true,
+            "dependencies": {
+                "locate-path": "^5.0.0",
+                "path-exists": "^4.0.0"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/follow-redirects": {
+            "version": "1.15.5",
+            "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz",
+            "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==",
+            "dev": true,
+            "funding": [
+                {
+                    "type": "individual",
+                    "url": "https://github.com/sponsors/RubenVerborgh"
+                }
+            ],
+            "engines": {
+                "node": ">=4.0"
+            },
+            "peerDependenciesMeta": {
+                "debug": {
+                    "optional": true
+                }
+            }
+        },
+        "node_modules/form-data": {
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
+            "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+            "dev": true,
+            "dependencies": {
+                "asynckit": "^0.4.0",
+                "combined-stream": "^1.0.8",
+                "mime-types": "^2.1.12"
+            },
+            "engines": {
+                "node": ">= 6"
+            }
+        },
+        "node_modules/formidable": {
+            "version": "2.1.2",
+            "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.2.tgz",
+            "integrity": "sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g==",
+            "dev": true,
+            "dependencies": {
+                "dezalgo": "^1.0.4",
+                "hexoid": "^1.0.0",
+                "once": "^1.4.0",
+                "qs": "^6.11.0"
+            },
+            "funding": {
+                "url": "https://ko-fi.com/tunnckoCore/commissions"
+            }
+        },
+        "node_modules/forwarded": {
+            "version": "0.2.0",
+            "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
+            "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
+            "engines": {
+                "node": ">= 0.6"
+            }
+        },
+        "node_modules/fresh": {
+            "version": "0.5.2",
+            "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+            "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
+            "engines": {
+                "node": ">= 0.6"
+            }
+        },
+        "node_modules/fs-minipass": {
+            "version": "2.1.0",
+            "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
+            "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
+            "dependencies": {
+                "minipass": "^3.0.0"
+            },
+            "engines": {
+                "node": ">= 8"
+            }
+        },
+        "node_modules/fs-minipass/node_modules/minipass": {
+            "version": "3.3.6",
+            "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+            "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+            "dependencies": {
+                "yallist": "^4.0.0"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/fs.realpath": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+            "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
+        },
+        "node_modules/fsevents": {
+            "version": "2.3.3",
+            "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+            "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+            "dev": true,
+            "hasInstallScript": true,
+            "optional": true,
+            "os": [
+                "darwin"
+            ],
+            "engines": {
+                "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+            }
+        },
+        "node_modules/function-bind": {
+            "version": "1.1.2",
+            "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+            "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
+        },
+        "node_modules/gauge": {
+            "version": "3.0.2",
+            "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz",
+            "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==",
+            "dependencies": {
+                "aproba": "^1.0.3 || ^2.0.0",
+                "color-support": "^1.1.2",
+                "console-control-strings": "^1.0.0",
+                "has-unicode": "^2.0.1",
+                "object-assign": "^4.1.1",
+                "signal-exit": "^3.0.0",
+                "string-width": "^4.2.3",
+                "strip-ansi": "^6.0.1",
+                "wide-align": "^1.1.2"
+            },
+            "engines": {
+                "node": ">=10"
+            }
+        },
+        "node_modules/gensync": {
+            "version": "1.0.0-beta.2",
+            "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+            "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+            "dev": true,
+            "engines": {
+                "node": ">=6.9.0"
+            }
+        },
+        "node_modules/get-caller-file": {
+            "version": "2.0.5",
+            "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+            "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+            "dev": true,
+            "engines": {
+                "node": "6.* || 8.* || >= 10.*"
+            }
+        },
+        "node_modules/get-intrinsic": {
+            "version": "1.2.2",
+            "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz",
+            "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==",
+            "dependencies": {
+                "function-bind": "^1.1.2",
+                "has-proto": "^1.0.1",
+                "has-symbols": "^1.0.3",
+                "hasown": "^2.0.0"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
+        },
+        "node_modules/get-package-type": {
+            "version": "0.1.0",
+            "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz",
+            "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==",
+            "dev": true,
+            "engines": {
+                "node": ">=8.0.0"
+            }
+        },
+        "node_modules/get-stream": {
+            "version": "6.0.1",
+            "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+            "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+            "dev": true,
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
+            }
+        },
+        "node_modules/glob": {
+            "version": "7.2.3",
+            "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+            "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+            "dependencies": {
+                "fs.realpath": "^1.0.0",
+                "inflight": "^1.0.4",
+                "inherits": "2",
+                "minimatch": "^3.1.1",
+                "once": "^1.3.0",
+                "path-is-absolute": "^1.0.0"
+            },
+            "engines": {
+                "node": "*"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/isaacs"
+            }
+        },
+        "node_modules/globals": {
+            "version": "11.12.0",
+            "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+            "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+            "dev": true,
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/gopd": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
+            "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+            "dependencies": {
+                "get-intrinsic": "^1.1.3"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
+        },
+        "node_modules/graceful-fs": {
+            "version": "4.2.11",
+            "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+            "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+            "dev": true
+        },
+        "node_modules/has-flag": {
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+            "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+            "dev": true,
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/has-property-descriptors": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz",
+            "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==",
+            "dependencies": {
+                "get-intrinsic": "^1.2.2"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
+        },
+        "node_modules/has-proto": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
+            "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
+            "engines": {
+                "node": ">= 0.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
+        },
+        "node_modules/has-symbols": {
+            "version": "1.0.3",
+            "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+            "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+            "engines": {
+                "node": ">= 0.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
+        },
+        "node_modules/has-unicode": {
+            "version": "2.0.1",
+            "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
+            "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ=="
+        },
+        "node_modules/hasown": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
+            "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
+            "dependencies": {
+                "function-bind": "^1.1.2"
+            },
+            "engines": {
+                "node": ">= 0.4"
+            }
+        },
+        "node_modules/hexoid": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz",
+            "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==",
+            "dev": true,
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/html-escaper": {
+            "version": "2.0.2",
+            "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
+            "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
+            "dev": true
+        },
+        "node_modules/http-errors": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
+            "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+            "dependencies": {
+                "depd": "2.0.0",
+                "inherits": "2.0.4",
+                "setprototypeof": "1.2.0",
+                "statuses": "2.0.1",
+                "toidentifier": "1.0.1"
+            },
+            "engines": {
+                "node": ">= 0.8"
+            }
+        },
+        "node_modules/https-proxy-agent": {
+            "version": "5.0.1",
+            "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
+            "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+            "dependencies": {
+                "agent-base": "6",
+                "debug": "4"
+            },
+            "engines": {
+                "node": ">= 6"
+            }
+        },
+        "node_modules/https-proxy-agent/node_modules/debug": {
+            "version": "4.3.4",
+            "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+            "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+            "dependencies": {
+                "ms": "2.1.2"
+            },
+            "engines": {
+                "node": ">=6.0"
+            },
+            "peerDependenciesMeta": {
+                "supports-color": {
+                    "optional": true
+                }
+            }
+        },
+        "node_modules/https-proxy-agent/node_modules/ms": {
+            "version": "2.1.2",
+            "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+            "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+        },
+        "node_modules/human-signals": {
+            "version": "2.1.0",
+            "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
+            "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
+            "dev": true,
+            "engines": {
+                "node": ">=10.17.0"
+            }
+        },
+        "node_modules/iconv-lite": {
+            "version": "0.4.24",
+            "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+            "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+            "dependencies": {
+                "safer-buffer": ">= 2.1.2 < 3"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/import-local": {
+            "version": "3.1.0",
+            "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz",
+            "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==",
+            "dev": true,
+            "dependencies": {
+                "pkg-dir": "^4.2.0",
+                "resolve-cwd": "^3.0.0"
+            },
+            "bin": {
+                "import-local-fixture": "fixtures/cli.js"
+            },
+            "engines": {
+                "node": ">=8"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
+            }
+        },
+        "node_modules/imurmurhash": {
+            "version": "0.1.4",
+            "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+            "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.8.19"
+            }
+        },
+        "node_modules/inflight": {
+            "version": "1.0.6",
+            "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+            "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+            "dependencies": {
+                "once": "^1.3.0",
+                "wrappy": "1"
+            }
+        },
+        "node_modules/inherits": {
+            "version": "2.0.4",
+            "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+            "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+        },
+        "node_modules/ip": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz",
+            "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==",
+            "devOptional": true
+        },
+        "node_modules/ipaddr.js": {
+            "version": "1.9.1",
+            "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
+            "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
+            "engines": {
+                "node": ">= 0.10"
+            }
+        },
+        "node_modules/is-arrayish": {
+            "version": "0.2.1",
+            "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+            "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
+            "dev": true
+        },
+        "node_modules/is-core-module": {
+            "version": "2.13.1",
+            "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz",
+            "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==",
+            "dev": true,
+            "dependencies": {
+                "hasown": "^2.0.0"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
+        },
+        "node_modules/is-fullwidth-code-point": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+            "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/is-generator-fn": {
+            "version": "2.1.0",
+            "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz",
+            "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==",
+            "dev": true,
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/is-number": {
+            "version": "7.0.0",
+            "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+            "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.12.0"
+            }
+        },
+        "node_modules/is-stream": {
+            "version": "2.0.1",
+            "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+            "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+            "dev": true,
+            "engines": {
+                "node": ">=8"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
+            }
+        },
+        "node_modules/isexe": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+            "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+            "dev": true
+        },
+        "node_modules/istanbul-lib-coverage": {
+            "version": "3.2.2",
+            "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz",
+            "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==",
+            "dev": true,
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/istanbul-lib-instrument": {
+            "version": "6.0.1",
+            "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz",
+            "integrity": "sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==",
+            "dev": true,
+            "dependencies": {
+                "@babel/core": "^7.12.3",
+                "@babel/parser": "^7.14.7",
+                "@istanbuljs/schema": "^0.1.2",
+                "istanbul-lib-coverage": "^3.2.0",
+                "semver": "^7.5.4"
+            },
+            "engines": {
+                "node": ">=10"
+            }
+        },
+        "node_modules/istanbul-lib-report": {
+            "version": "3.0.1",
+            "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz",
+            "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==",
+            "dev": true,
+            "dependencies": {
+                "istanbul-lib-coverage": "^3.0.0",
+                "make-dir": "^4.0.0",
+                "supports-color": "^7.1.0"
+            },
+            "engines": {
+                "node": ">=10"
+            }
+        },
+        "node_modules/istanbul-lib-report/node_modules/make-dir": {
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz",
+            "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==",
+            "dev": true,
+            "dependencies": {
+                "semver": "^7.5.3"
+            },
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
+            }
+        },
+        "node_modules/istanbul-lib-source-maps": {
+            "version": "4.0.1",
+            "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz",
+            "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==",
+            "dev": true,
+            "dependencies": {
+                "debug": "^4.1.1",
+                "istanbul-lib-coverage": "^3.0.0",
+                "source-map": "^0.6.1"
+            },
+            "engines": {
+                "node": ">=10"
+            }
+        },
+        "node_modules/istanbul-lib-source-maps/node_modules/debug": {
+            "version": "4.3.4",
+            "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+            "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+            "dev": true,
+            "dependencies": {
+                "ms": "2.1.2"
+            },
+            "engines": {
+                "node": ">=6.0"
+            },
+            "peerDependenciesMeta": {
+                "supports-color": {
+                    "optional": true
+                }
+            }
+        },
+        "node_modules/istanbul-lib-source-maps/node_modules/ms": {
+            "version": "2.1.2",
+            "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+            "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+            "dev": true
+        },
+        "node_modules/istanbul-reports": {
+            "version": "3.1.6",
+            "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz",
+            "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==",
+            "dev": true,
+            "dependencies": {
+                "html-escaper": "^2.0.0",
+                "istanbul-lib-report": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/jest": {
+            "version": "29.7.0",
+            "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz",
+            "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==",
+            "dev": true,
+            "dependencies": {
+                "@jest/core": "^29.7.0",
+                "@jest/types": "^29.6.3",
+                "import-local": "^3.0.2",
+                "jest-cli": "^29.7.0"
+            },
+            "bin": {
+                "jest": "bin/jest.js"
+            },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+            },
+            "peerDependencies": {
+                "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+            },
+            "peerDependenciesMeta": {
+                "node-notifier": {
+                    "optional": true
+                }
+            }
+        },
+        "node_modules/jest-changed-files": {
+            "version": "29.7.0",
+            "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz",
+            "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==",
+            "dev": true,
+            "dependencies": {
+                "execa": "^5.0.0",
+                "jest-util": "^29.7.0",
+                "p-limit": "^3.1.0"
+            },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+            }
+        },
+        "node_modules/jest-circus": {
+            "version": "29.7.0",
+            "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz",
+            "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==",
+            "dev": true,
+            "dependencies": {
+                "@jest/environment": "^29.7.0",
+                "@jest/expect": "^29.7.0",
+                "@jest/test-result": "^29.7.0",
+                "@jest/types": "^29.6.3",
+                "@types/node": "*",
+                "chalk": "^4.0.0",
+                "co": "^4.6.0",
+                "dedent": "^1.0.0",
+                "is-generator-fn": "^2.0.0",
+                "jest-each": "^29.7.0",
+                "jest-matcher-utils": "^29.7.0",
+                "jest-message-util": "^29.7.0",
+                "jest-runtime": "^29.7.0",
+                "jest-snapshot": "^29.7.0",
+                "jest-util": "^29.7.0",
+                "p-limit": "^3.1.0",
+                "pretty-format": "^29.7.0",
+                "pure-rand": "^6.0.0",
+                "slash": "^3.0.0",
+                "stack-utils": "^2.0.3"
+            },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+            }
+        },
+        "node_modules/jest-cli": {
+            "version": "29.7.0",
+            "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz",
+            "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==",
+            "dev": true,
+            "dependencies": {
+                "@jest/core": "^29.7.0",
+                "@jest/test-result": "^29.7.0",
+                "@jest/types": "^29.6.3",
+                "chalk": "^4.0.0",
+                "create-jest": "^29.7.0",
+                "exit": "^0.1.2",
+                "import-local": "^3.0.2",
+                "jest-config": "^29.7.0",
+                "jest-util": "^29.7.0",
+                "jest-validate": "^29.7.0",
+                "yargs": "^17.3.1"
+            },
+            "bin": {
+                "jest": "bin/jest.js"
+            },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+            },
+            "peerDependencies": {
+                "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+            },
+            "peerDependenciesMeta": {
+                "node-notifier": {
+                    "optional": true
+                }
+            }
+        },
+        "node_modules/jest-config": {
+            "version": "29.7.0",
+            "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz",
+            "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==",
+            "dev": true,
+            "dependencies": {
+                "@babel/core": "^7.11.6",
+                "@jest/test-sequencer": "^29.7.0",
+                "@jest/types": "^29.6.3",
+                "babel-jest": "^29.7.0",
+                "chalk": "^4.0.0",
+                "ci-info": "^3.2.0",
+                "deepmerge": "^4.2.2",
+                "glob": "^7.1.3",
+                "graceful-fs": "^4.2.9",
+                "jest-circus": "^29.7.0",
+                "jest-environment-node": "^29.7.0",
+                "jest-get-type": "^29.6.3",
+                "jest-regex-util": "^29.6.3",
+                "jest-resolve": "^29.7.0",
+                "jest-runner": "^29.7.0",
+                "jest-util": "^29.7.0",
+                "jest-validate": "^29.7.0",
+                "micromatch": "^4.0.4",
+                "parse-json": "^5.2.0",
+                "pretty-format": "^29.7.0",
+                "slash": "^3.0.0",
+                "strip-json-comments": "^3.1.1"
+            },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+            },
+            "peerDependencies": {
+                "@types/node": "*",
+                "ts-node": ">=9.0.0"
+            },
+            "peerDependenciesMeta": {
+                "@types/node": {
+                    "optional": true
+                },
+                "ts-node": {
+                    "optional": true
+                }
+            }
+        },
+        "node_modules/jest-diff": {
+            "version": "29.7.0",
+            "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz",
+            "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==",
+            "dev": true,
+            "dependencies": {
+                "chalk": "^4.0.0",
+                "diff-sequences": "^29.6.3",
+                "jest-get-type": "^29.6.3",
+                "pretty-format": "^29.7.0"
+            },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+            }
+        },
+        "node_modules/jest-docblock": {
+            "version": "29.7.0",
+            "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz",
+            "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==",
+            "dev": true,
+            "dependencies": {
+                "detect-newline": "^3.0.0"
+            },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+            }
+        },
+        "node_modules/jest-each": {
+            "version": "29.7.0",
+            "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz",
+            "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==",
+            "dev": true,
+            "dependencies": {
+                "@jest/types": "^29.6.3",
+                "chalk": "^4.0.0",
+                "jest-get-type": "^29.6.3",
+                "jest-util": "^29.7.0",
+                "pretty-format": "^29.7.0"
+            },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+            }
+        },
+        "node_modules/jest-environment-node": {
+            "version": "29.7.0",
+            "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz",
+            "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==",
+            "dev": true,
+            "dependencies": {
+                "@jest/environment": "^29.7.0",
+                "@jest/fake-timers": "^29.7.0",
+                "@jest/types": "^29.6.3",
+                "@types/node": "*",
+                "jest-mock": "^29.7.0",
+                "jest-util": "^29.7.0"
+            },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+            }
+        },
+        "node_modules/jest-get-type": {
+            "version": "29.6.3",
+            "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz",
+            "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==",
+            "dev": true,
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+            }
+        },
+        "node_modules/jest-haste-map": {
+            "version": "29.7.0",
+            "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz",
+            "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==",
+            "dev": true,
+            "dependencies": {
+                "@jest/types": "^29.6.3",
+                "@types/graceful-fs": "^4.1.3",
+                "@types/node": "*",
+                "anymatch": "^3.0.3",
+                "fb-watchman": "^2.0.0",
+                "graceful-fs": "^4.2.9",
+                "jest-regex-util": "^29.6.3",
+                "jest-util": "^29.7.0",
+                "jest-worker": "^29.7.0",
+                "micromatch": "^4.0.4",
+                "walker": "^1.0.8"
+            },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+            },
+            "optionalDependencies": {
+                "fsevents": "^2.3.2"
+            }
+        },
+        "node_modules/jest-leak-detector": {
+            "version": "29.7.0",
+            "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz",
+            "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==",
+            "dev": true,
+            "dependencies": {
+                "jest-get-type": "^29.6.3",
+                "pretty-format": "^29.7.0"
+            },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+            }
+        },
+        "node_modules/jest-matcher-utils": {
+            "version": "29.7.0",
+            "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz",
+            "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==",
+            "dev": true,
+            "dependencies": {
+                "chalk": "^4.0.0",
+                "jest-diff": "^29.7.0",
+                "jest-get-type": "^29.6.3",
+                "pretty-format": "^29.7.0"
+            },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+            }
+        },
+        "node_modules/jest-message-util": {
+            "version": "29.7.0",
+            "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz",
+            "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==",
+            "dev": true,
+            "dependencies": {
+                "@babel/code-frame": "^7.12.13",
+                "@jest/types": "^29.6.3",
+                "@types/stack-utils": "^2.0.0",
+                "chalk": "^4.0.0",
+                "graceful-fs": "^4.2.9",
+                "micromatch": "^4.0.4",
+                "pretty-format": "^29.7.0",
+                "slash": "^3.0.0",
+                "stack-utils": "^2.0.3"
+            },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+            }
+        },
+        "node_modules/jest-mock": {
+            "version": "29.7.0",
+            "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz",
+            "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==",
+            "dev": true,
+            "dependencies": {
+                "@jest/types": "^29.6.3",
+                "@types/node": "*",
+                "jest-util": "^29.7.0"
+            },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+            }
+        },
+        "node_modules/jest-pnp-resolver": {
+            "version": "1.2.3",
+            "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz",
+            "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==",
+            "dev": true,
+            "engines": {
+                "node": ">=6"
+            },
+            "peerDependencies": {
+                "jest-resolve": "*"
+            },
+            "peerDependenciesMeta": {
+                "jest-resolve": {
+                    "optional": true
+                }
+            }
+        },
+        "node_modules/jest-regex-util": {
+            "version": "29.6.3",
+            "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz",
+            "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==",
+            "dev": true,
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+            }
+        },
+        "node_modules/jest-resolve": {
+            "version": "29.7.0",
+            "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz",
+            "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==",
+            "dev": true,
+            "dependencies": {
+                "chalk": "^4.0.0",
+                "graceful-fs": "^4.2.9",
+                "jest-haste-map": "^29.7.0",
+                "jest-pnp-resolver": "^1.2.2",
+                "jest-util": "^29.7.0",
+                "jest-validate": "^29.7.0",
+                "resolve": "^1.20.0",
+                "resolve.exports": "^2.0.0",
+                "slash": "^3.0.0"
+            },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+            }
+        },
+        "node_modules/jest-resolve-dependencies": {
+            "version": "29.7.0",
+            "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz",
+            "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==",
+            "dev": true,
+            "dependencies": {
+                "jest-regex-util": "^29.6.3",
+                "jest-snapshot": "^29.7.0"
+            },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+            }
+        },
+        "node_modules/jest-runner": {
+            "version": "29.7.0",
+            "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz",
+            "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==",
+            "dev": true,
+            "dependencies": {
+                "@jest/console": "^29.7.0",
+                "@jest/environment": "^29.7.0",
+                "@jest/test-result": "^29.7.0",
+                "@jest/transform": "^29.7.0",
+                "@jest/types": "^29.6.3",
+                "@types/node": "*",
+                "chalk": "^4.0.0",
+                "emittery": "^0.13.1",
+                "graceful-fs": "^4.2.9",
+                "jest-docblock": "^29.7.0",
+                "jest-environment-node": "^29.7.0",
+                "jest-haste-map": "^29.7.0",
+                "jest-leak-detector": "^29.7.0",
+                "jest-message-util": "^29.7.0",
+                "jest-resolve": "^29.7.0",
+                "jest-runtime": "^29.7.0",
+                "jest-util": "^29.7.0",
+                "jest-watcher": "^29.7.0",
+                "jest-worker": "^29.7.0",
+                "p-limit": "^3.1.0",
+                "source-map-support": "0.5.13"
+            },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+            }
+        },
+        "node_modules/jest-runtime": {
+            "version": "29.7.0",
+            "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz",
+            "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==",
+            "dev": true,
+            "dependencies": {
+                "@jest/environment": "^29.7.0",
+                "@jest/fake-timers": "^29.7.0",
+                "@jest/globals": "^29.7.0",
+                "@jest/source-map": "^29.6.3",
+                "@jest/test-result": "^29.7.0",
+                "@jest/transform": "^29.7.0",
+                "@jest/types": "^29.6.3",
+                "@types/node": "*",
+                "chalk": "^4.0.0",
+                "cjs-module-lexer": "^1.0.0",
+                "collect-v8-coverage": "^1.0.0",
+                "glob": "^7.1.3",
+                "graceful-fs": "^4.2.9",
+                "jest-haste-map": "^29.7.0",
+                "jest-message-util": "^29.7.0",
+                "jest-mock": "^29.7.0",
+                "jest-regex-util": "^29.6.3",
+                "jest-resolve": "^29.7.0",
+                "jest-snapshot": "^29.7.0",
+                "jest-util": "^29.7.0",
+                "slash": "^3.0.0",
+                "strip-bom": "^4.0.0"
+            },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+            }
+        },
+        "node_modules/jest-snapshot": {
+            "version": "29.7.0",
+            "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz",
+            "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==",
+            "dev": true,
+            "dependencies": {
+                "@babel/core": "^7.11.6",
+                "@babel/generator": "^7.7.2",
+                "@babel/plugin-syntax-jsx": "^7.7.2",
+                "@babel/plugin-syntax-typescript": "^7.7.2",
+                "@babel/types": "^7.3.3",
+                "@jest/expect-utils": "^29.7.0",
+                "@jest/transform": "^29.7.0",
+                "@jest/types": "^29.6.3",
+                "babel-preset-current-node-syntax": "^1.0.0",
+                "chalk": "^4.0.0",
+                "expect": "^29.7.0",
+                "graceful-fs": "^4.2.9",
+                "jest-diff": "^29.7.0",
+                "jest-get-type": "^29.6.3",
+                "jest-matcher-utils": "^29.7.0",
+                "jest-message-util": "^29.7.0",
+                "jest-util": "^29.7.0",
+                "natural-compare": "^1.4.0",
+                "pretty-format": "^29.7.0",
+                "semver": "^7.5.3"
+            },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+            }
+        },
+        "node_modules/jest-util": {
+            "version": "29.7.0",
+            "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz",
+            "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==",
+            "dev": true,
+            "dependencies": {
+                "@jest/types": "^29.6.3",
+                "@types/node": "*",
+                "chalk": "^4.0.0",
+                "ci-info": "^3.2.0",
+                "graceful-fs": "^4.2.9",
+                "picomatch": "^2.2.3"
+            },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+            }
+        },
+        "node_modules/jest-validate": {
+            "version": "29.7.0",
+            "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz",
+            "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==",
+            "dev": true,
+            "dependencies": {
+                "@jest/types": "^29.6.3",
+                "camelcase": "^6.2.0",
+                "chalk": "^4.0.0",
+                "jest-get-type": "^29.6.3",
+                "leven": "^3.1.0",
+                "pretty-format": "^29.7.0"
+            },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+            }
+        },
+        "node_modules/jest-validate/node_modules/camelcase": {
+            "version": "6.3.0",
+            "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
+            "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
+            "dev": true,
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
+            }
+        },
+        "node_modules/jest-watcher": {
+            "version": "29.7.0",
+            "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz",
+            "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==",
+            "dev": true,
+            "dependencies": {
+                "@jest/test-result": "^29.7.0",
+                "@jest/types": "^29.6.3",
+                "@types/node": "*",
+                "ansi-escapes": "^4.2.1",
+                "chalk": "^4.0.0",
+                "emittery": "^0.13.1",
+                "jest-util": "^29.7.0",
+                "string-length": "^4.0.1"
+            },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+            }
+        },
+        "node_modules/jest-worker": {
+            "version": "29.7.0",
+            "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz",
+            "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==",
+            "dev": true,
+            "dependencies": {
+                "@types/node": "*",
+                "jest-util": "^29.7.0",
+                "merge-stream": "^2.0.0",
+                "supports-color": "^8.0.0"
+            },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+            }
+        },
+        "node_modules/jest-worker/node_modules/supports-color": {
+            "version": "8.1.1",
+            "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+            "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+            "dev": true,
+            "dependencies": {
+                "has-flag": "^4.0.0"
+            },
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "url": "https://github.com/chalk/supports-color?sponsor=1"
+            }
+        },
+        "node_modules/js-tokens": {
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+            "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+            "dev": true
+        },
+        "node_modules/js-yaml": {
+            "version": "3.14.1",
+            "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+            "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+            "dev": true,
+            "dependencies": {
+                "argparse": "^1.0.7",
+                "esprima": "^4.0.0"
+            },
+            "bin": {
+                "js-yaml": "bin/js-yaml.js"
+            }
+        },
+        "node_modules/jsesc": {
+            "version": "2.5.2",
+            "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+            "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+            "dev": true,
+            "bin": {
+                "jsesc": "bin/jsesc"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/json-parse-even-better-errors": {
+            "version": "2.3.1",
+            "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+            "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
+            "dev": true
+        },
+        "node_modules/json5": {
+            "version": "2.2.3",
+            "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+            "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+            "dev": true,
+            "bin": {
+                "json5": "lib/cli.js"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/jsonwebtoken": {
+            "version": "9.0.2",
+            "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz",
+            "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==",
+            "dependencies": {
+                "jws": "^3.2.2",
+                "lodash.includes": "^4.3.0",
+                "lodash.isboolean": "^3.0.3",
+                "lodash.isinteger": "^4.0.4",
+                "lodash.isnumber": "^3.0.3",
+                "lodash.isplainobject": "^4.0.6",
+                "lodash.isstring": "^4.0.1",
+                "lodash.once": "^4.0.0",
+                "ms": "^2.1.1",
+                "semver": "^7.5.4"
+            },
+            "engines": {
+                "node": ">=12",
+                "npm": ">=6"
+            }
+        },
+        "node_modules/jsonwebtoken/node_modules/ms": {
+            "version": "2.1.3",
+            "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+            "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
+        },
+        "node_modules/jwa": {
+            "version": "1.4.1",
+            "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz",
+            "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==",
+            "dependencies": {
+                "buffer-equal-constant-time": "1.0.1",
+                "ecdsa-sig-formatter": "1.0.11",
+                "safe-buffer": "^5.0.1"
+            }
+        },
+        "node_modules/jws": {
+            "version": "3.2.2",
+            "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz",
+            "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
+            "dependencies": {
+                "jwa": "^1.4.1",
+                "safe-buffer": "^5.0.1"
+            }
+        },
+        "node_modules/kareem": {
+            "version": "2.5.1",
+            "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.5.1.tgz",
+            "integrity": "sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA==",
+            "engines": {
+                "node": ">=12.0.0"
+            }
+        },
+        "node_modules/kleur": {
+            "version": "3.0.3",
+            "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
+            "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
+            "dev": true,
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/leven": {
+            "version": "3.1.0",
+            "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
+            "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
+            "dev": true,
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/lines-and-columns": {
+            "version": "1.2.4",
+            "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+            "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
+            "dev": true
+        },
+        "node_modules/locate-path": {
+            "version": "5.0.0",
+            "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+            "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+            "dev": true,
+            "dependencies": {
+                "p-locate": "^4.1.0"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/lodash.includes": {
+            "version": "4.3.0",
+            "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
+            "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w=="
+        },
+        "node_modules/lodash.isboolean": {
+            "version": "3.0.3",
+            "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
+            "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg=="
+        },
+        "node_modules/lodash.isinteger": {
+            "version": "4.0.4",
+            "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
+            "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA=="
+        },
+        "node_modules/lodash.isnumber": {
+            "version": "3.0.3",
+            "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
+            "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw=="
+        },
+        "node_modules/lodash.isplainobject": {
+            "version": "4.0.6",
+            "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
+            "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA=="
+        },
+        "node_modules/lodash.isstring": {
+            "version": "4.0.1",
+            "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
+            "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw=="
+        },
+        "node_modules/lodash.once": {
+            "version": "4.1.1",
+            "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
+            "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg=="
+        },
+        "node_modules/lru-cache": {
+            "version": "6.0.0",
+            "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+            "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+            "dependencies": {
+                "yallist": "^4.0.0"
+            },
+            "engines": {
+                "node": ">=10"
+            }
+        },
+        "node_modules/make-dir": {
+            "version": "3.1.0",
+            "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
+            "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+            "dependencies": {
+                "semver": "^6.0.0"
+            },
+            "engines": {
+                "node": ">=8"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
+            }
+        },
+        "node_modules/make-dir/node_modules/semver": {
+            "version": "6.3.1",
+            "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+            "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+            "bin": {
+                "semver": "bin/semver.js"
+            }
+        },
+        "node_modules/makeerror": {
+            "version": "1.0.12",
+            "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz",
+            "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==",
+            "dev": true,
+            "dependencies": {
+                "tmpl": "1.0.5"
+            }
+        },
+        "node_modules/media-typer": {
+            "version": "0.3.0",
+            "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+            "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
+            "engines": {
+                "node": ">= 0.6"
+            }
+        },
+        "node_modules/memory-pager": {
+            "version": "1.5.0",
+            "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
+            "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg=="
+        },
+        "node_modules/merge-descriptors": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
+            "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
+        },
+        "node_modules/merge-stream": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+            "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+            "dev": true
+        },
+        "node_modules/methods": {
+            "version": "1.1.2",
+            "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
+            "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
+            "engines": {
+                "node": ">= 0.6"
+            }
+        },
+        "node_modules/micromatch": {
+            "version": "4.0.5",
+            "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
+            "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+            "dev": true,
+            "dependencies": {
+                "braces": "^3.0.2",
+                "picomatch": "^2.3.1"
+            },
+            "engines": {
+                "node": ">=8.6"
+            }
+        },
+        "node_modules/mime": {
+            "version": "1.6.0",
+            "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+            "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+            "bin": {
+                "mime": "cli.js"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/mime-db": {
+            "version": "1.52.0",
+            "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+            "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+            "engines": {
+                "node": ">= 0.6"
+            }
+        },
+        "node_modules/mime-types": {
+            "version": "2.1.35",
+            "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+            "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+            "dependencies": {
+                "mime-db": "1.52.0"
+            },
+            "engines": {
+                "node": ">= 0.6"
+            }
+        },
+        "node_modules/mimic-fn": {
+            "version": "2.1.0",
+            "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+            "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+            "dev": true,
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/minimatch": {
+            "version": "3.1.2",
+            "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+            "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+            "dependencies": {
+                "brace-expansion": "^1.1.7"
+            },
+            "engines": {
+                "node": "*"
+            }
+        },
+        "node_modules/minipass": {
+            "version": "5.0.0",
+            "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz",
+            "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==",
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/minizlib": {
+            "version": "2.1.2",
+            "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
+            "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
+            "dependencies": {
+                "minipass": "^3.0.0",
+                "yallist": "^4.0.0"
+            },
+            "engines": {
+                "node": ">= 8"
+            }
+        },
+        "node_modules/minizlib/node_modules/minipass": {
+            "version": "3.3.6",
+            "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+            "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+            "dependencies": {
+                "yallist": "^4.0.0"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/mkdirp": {
+            "version": "1.0.4",
+            "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+            "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+            "bin": {
+                "mkdirp": "bin/cmd.js"
+            },
+            "engines": {
+                "node": ">=10"
+            }
+        },
+        "node_modules/mongodb": {
+            "version": "6.2.0",
+            "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.2.0.tgz",
+            "integrity": "sha512-d7OSuGjGWDZ5usZPqfvb36laQ9CPhnWkAGHT61x5P95p/8nMVeH8asloMwW6GcYFeB0Vj4CB/1wOTDG2RA9BFA==",
+            "dependencies": {
+                "@mongodb-js/saslprep": "^1.1.0",
+                "bson": "^6.2.0",
+                "mongodb-connection-string-url": "^2.6.0"
+            },
+            "engines": {
+                "node": ">=16.20.1"
+            },
+            "peerDependencies": {
+                "@aws-sdk/credential-providers": "^3.188.0",
+                "@mongodb-js/zstd": "^1.1.0",
+                "gcp-metadata": "^5.2.0",
+                "kerberos": "^2.0.1",
+                "mongodb-client-encryption": ">=6.0.0 <7",
+                "snappy": "^7.2.2",
+                "socks": "^2.7.1"
+            },
+            "peerDependenciesMeta": {
+                "@aws-sdk/credential-providers": {
+                    "optional": true
+                },
+                "@mongodb-js/zstd": {
+                    "optional": true
+                },
+                "gcp-metadata": {
+                    "optional": true
+                },
+                "kerberos": {
+                    "optional": true
+                },
+                "mongodb-client-encryption": {
+                    "optional": true
+                },
+                "snappy": {
+                    "optional": true
+                },
+                "socks": {
+                    "optional": true
+                }
+            }
+        },
+        "node_modules/mongodb-connection-string-url": {
+            "version": "2.6.0",
+            "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz",
+            "integrity": "sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==",
+            "dependencies": {
+                "@types/whatwg-url": "^8.2.1",
+                "whatwg-url": "^11.0.0"
+            }
+        },
+        "node_modules/mongodb-memory-server": {
+            "version": "9.1.5",
+            "resolved": "https://registry.npmjs.org/mongodb-memory-server/-/mongodb-memory-server-9.1.5.tgz",
+            "integrity": "sha512-m7yewXoyctu2lwISq/sazwOV/LBkPmAm4ulwoP6J4zzv78ESlAIuQEHoL2+45CTlwxiRM5hfVBQe9HIYEFaBWw==",
+            "dev": true,
+            "hasInstallScript": true,
+            "dependencies": {
+                "mongodb-memory-server-core": "9.1.5",
+                "tslib": "^2.6.2"
+            },
+            "engines": {
+                "node": ">=14.20.1"
+            }
+        },
+        "node_modules/mongodb-memory-server-core": {
+            "version": "9.1.5",
+            "resolved": "https://registry.npmjs.org/mongodb-memory-server-core/-/mongodb-memory-server-core-9.1.5.tgz",
+            "integrity": "sha512-mevjdWrxym+MzMoNsFfCtrXwK3ndb0xHKj+fHT1xoT4l+uflEqvLHt+aRdJrTW5GTGYeVlYHQpQ8hLKMeEL6cg==",
+            "dev": true,
+            "dependencies": {
+                "async-mutex": "^0.4.0",
+                "camelcase": "^6.3.0",
+                "debug": "^4.3.4",
+                "find-cache-dir": "^3.3.2",
+                "follow-redirects": "^1.15.3",
+                "https-proxy-agent": "^7.0.2",
+                "mongodb": "^5.9.1",
+                "new-find-package-json": "^2.0.0",
+                "semver": "^7.5.4",
+                "tar-stream": "^3.0.0",
+                "tslib": "^2.6.2",
+                "yauzl": "^2.10.0"
+            },
+            "engines": {
+                "node": ">=14.20.1"
+            }
+        },
+        "node_modules/mongodb-memory-server-core/node_modules/agent-base": {
+            "version": "7.1.0",
+            "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz",
+            "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==",
+            "dev": true,
+            "dependencies": {
+                "debug": "^4.3.4"
+            },
+            "engines": {
+                "node": ">= 14"
+            }
+        },
+        "node_modules/mongodb-memory-server-core/node_modules/bson": {
+            "version": "5.5.1",
+            "resolved": "https://registry.npmjs.org/bson/-/bson-5.5.1.tgz",
+            "integrity": "sha512-ix0EwukN2EpC0SRWIj/7B5+A6uQMQy6KMREI9qQqvgpkV2frH63T0UDVd1SYedL6dNCmDBYB3QtXi4ISk9YT+g==",
+            "dev": true,
+            "engines": {
+                "node": ">=14.20.1"
+            }
+        },
+        "node_modules/mongodb-memory-server-core/node_modules/camelcase": {
+            "version": "6.3.0",
+            "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
+            "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
+            "dev": true,
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
+            }
+        },
+        "node_modules/mongodb-memory-server-core/node_modules/debug": {
+            "version": "4.3.4",
+            "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+            "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+            "dev": true,
+            "dependencies": {
+                "ms": "2.1.2"
+            },
+            "engines": {
+                "node": ">=6.0"
+            },
+            "peerDependenciesMeta": {
+                "supports-color": {
+                    "optional": true
+                }
+            }
+        },
+        "node_modules/mongodb-memory-server-core/node_modules/https-proxy-agent": {
+            "version": "7.0.2",
+            "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz",
+            "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==",
+            "dev": true,
+            "dependencies": {
+                "agent-base": "^7.0.2",
+                "debug": "4"
+            },
+            "engines": {
+                "node": ">= 14"
+            }
+        },
+        "node_modules/mongodb-memory-server-core/node_modules/mongodb": {
+            "version": "5.9.2",
+            "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.9.2.tgz",
+            "integrity": "sha512-H60HecKO4Bc+7dhOv4sJlgvenK4fQNqqUIlXxZYQNbfEWSALGAwGoyJd/0Qwk4TttFXUOHJ2ZJQe/52ScaUwtQ==",
+            "dev": true,
+            "dependencies": {
+                "bson": "^5.5.0",
+                "mongodb-connection-string-url": "^2.6.0",
+                "socks": "^2.7.1"
+            },
+            "engines": {
+                "node": ">=14.20.1"
+            },
+            "optionalDependencies": {
+                "@mongodb-js/saslprep": "^1.1.0"
+            },
+            "peerDependencies": {
+                "@aws-sdk/credential-providers": "^3.188.0",
+                "@mongodb-js/zstd": "^1.0.0",
+                "kerberos": "^1.0.0 || ^2.0.0",
+                "mongodb-client-encryption": ">=2.3.0 <3",
+                "snappy": "^7.2.2"
+            },
+            "peerDependenciesMeta": {
+                "@aws-sdk/credential-providers": {
+                    "optional": true
+                },
+                "@mongodb-js/zstd": {
+                    "optional": true
+                },
+                "kerberos": {
+                    "optional": true
+                },
+                "mongodb-client-encryption": {
+                    "optional": true
+                },
+                "snappy": {
+                    "optional": true
+                }
+            }
+        },
+        "node_modules/mongodb-memory-server-core/node_modules/ms": {
+            "version": "2.1.2",
+            "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+            "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+            "dev": true
+        },
+        "node_modules/mongoose": {
+            "version": "8.0.4",
+            "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.0.4.tgz",
+            "integrity": "sha512-wN9qvdevX3+922VnLT7CpaZRT3jmVCBOK2QMHMGeScQxDRnFMPpkuI9StEPpZo/3x8t+kbzH7F8RMPsyNwyM4w==",
+            "dependencies": {
+                "bson": "^6.2.0",
+                "kareem": "2.5.1",
+                "mongodb": "6.2.0",
+                "mpath": "0.9.0",
+                "mquery": "5.0.0",
+                "ms": "2.1.3",
+                "sift": "16.0.1"
+            },
+            "engines": {
+                "node": ">=16.20.1"
+            },
+            "funding": {
+                "type": "opencollective",
+                "url": "https://opencollective.com/mongoose"
+            }
+        },
+        "node_modules/mongoose/node_modules/ms": {
+            "version": "2.1.3",
+            "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+            "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
+        },
+        "node_modules/mpath": {
+            "version": "0.9.0",
+            "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz",
+            "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==",
+            "engines": {
+                "node": ">=4.0.0"
+            }
+        },
+        "node_modules/mquery": {
+            "version": "5.0.0",
+            "resolved": "https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz",
+            "integrity": "sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==",
+            "dependencies": {
+                "debug": "4.x"
+            },
+            "engines": {
+                "node": ">=14.0.0"
+            }
+        },
+        "node_modules/mquery/node_modules/debug": {
+            "version": "4.3.4",
+            "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+            "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+            "dependencies": {
+                "ms": "2.1.2"
+            },
+            "engines": {
+                "node": ">=6.0"
+            },
+            "peerDependenciesMeta": {
+                "supports-color": {
+                    "optional": true
+                }
+            }
+        },
+        "node_modules/mquery/node_modules/ms": {
+            "version": "2.1.2",
+            "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+            "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+        },
+        "node_modules/ms": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+            "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+        },
+        "node_modules/natural-compare": {
+            "version": "1.4.0",
+            "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+            "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+            "dev": true
+        },
+        "node_modules/negotiator": {
+            "version": "0.6.3",
+            "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
+            "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
+            "engines": {
+                "node": ">= 0.6"
+            }
+        },
+        "node_modules/new-find-package-json": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/new-find-package-json/-/new-find-package-json-2.0.0.tgz",
+            "integrity": "sha512-lDcBsjBSMlj3LXH2v/FW3txlh2pYTjmbOXPYJD93HI5EwuLzI11tdHSIpUMmfq/IOsldj4Ps8M8flhm+pCK4Ew==",
+            "dev": true,
+            "dependencies": {
+                "debug": "^4.3.4"
+            },
+            "engines": {
+                "node": ">=12.22.0"
+            }
+        },
+        "node_modules/new-find-package-json/node_modules/debug": {
+            "version": "4.3.4",
+            "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+            "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+            "dev": true,
+            "dependencies": {
+                "ms": "2.1.2"
+            },
+            "engines": {
+                "node": ">=6.0"
+            },
+            "peerDependenciesMeta": {
+                "supports-color": {
+                    "optional": true
+                }
+            }
+        },
+        "node_modules/new-find-package-json/node_modules/ms": {
+            "version": "2.1.2",
+            "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+            "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+            "dev": true
+        },
+        "node_modules/node-addon-api": {
+            "version": "5.1.0",
+            "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz",
+            "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA=="
+        },
+        "node_modules/node-fetch": {
+            "version": "2.7.0",
+            "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
+            "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
+            "dependencies": {
+                "whatwg-url": "^5.0.0"
+            },
+            "engines": {
+                "node": "4.x || >=6.0.0"
+            },
+            "peerDependencies": {
+                "encoding": "^0.1.0"
+            },
+            "peerDependenciesMeta": {
+                "encoding": {
+                    "optional": true
+                }
+            }
+        },
+        "node_modules/node-fetch/node_modules/tr46": {
+            "version": "0.0.3",
+            "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+            "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
+        },
+        "node_modules/node-fetch/node_modules/webidl-conversions": {
+            "version": "3.0.1",
+            "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+            "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
+        },
+        "node_modules/node-fetch/node_modules/whatwg-url": {
+            "version": "5.0.0",
+            "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+            "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+            "dependencies": {
+                "tr46": "~0.0.3",
+                "webidl-conversions": "^3.0.0"
+            }
+        },
+        "node_modules/node-int64": {
+            "version": "0.4.0",
+            "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
+            "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==",
+            "dev": true
+        },
+        "node_modules/node-releases": {
+            "version": "2.0.14",
+            "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
+            "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==",
+            "dev": true
+        },
+        "node_modules/nopt": {
+            "version": "5.0.0",
+            "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz",
+            "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==",
+            "dependencies": {
+                "abbrev": "1"
+            },
+            "bin": {
+                "nopt": "bin/nopt.js"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/normalize-path": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+            "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/npm-run-path": {
+            "version": "4.0.1",
+            "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+            "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+            "dev": true,
+            "dependencies": {
+                "path-key": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/npmlog": {
+            "version": "5.0.1",
+            "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz",
+            "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==",
+            "dependencies": {
+                "are-we-there-yet": "^2.0.0",
+                "console-control-strings": "^1.1.0",
+                "gauge": "^3.0.0",
+                "set-blocking": "^2.0.0"
+            }
+        },
+        "node_modules/object-assign": {
+            "version": "4.1.1",
+            "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+            "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/object-inspect": {
+            "version": "1.13.1",
+            "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
+            "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
+        },
+        "node_modules/on-finished": {
+            "version": "2.4.1",
+            "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
+            "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
+            "dependencies": {
+                "ee-first": "1.1.1"
+            },
+            "engines": {
+                "node": ">= 0.8"
+            }
+        },
+        "node_modules/once": {
+            "version": "1.4.0",
+            "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+            "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+            "dependencies": {
+                "wrappy": "1"
+            }
+        },
+        "node_modules/onetime": {
+            "version": "5.1.2",
+            "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+            "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+            "dev": true,
+            "dependencies": {
+                "mimic-fn": "^2.1.0"
+            },
+            "engines": {
+                "node": ">=6"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
+            }
+        },
+        "node_modules/p-limit": {
+            "version": "3.1.0",
+            "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+            "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+            "dev": true,
+            "dependencies": {
+                "yocto-queue": "^0.1.0"
+            },
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
+            }
+        },
+        "node_modules/p-locate": {
+            "version": "4.1.0",
+            "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+            "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+            "dev": true,
+            "dependencies": {
+                "p-limit": "^2.2.0"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/p-locate/node_modules/p-limit": {
+            "version": "2.3.0",
+            "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+            "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+            "dev": true,
+            "dependencies": {
+                "p-try": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=6"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
+            }
+        },
+        "node_modules/p-try": {
+            "version": "2.2.0",
+            "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+            "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+            "dev": true,
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/parse-json": {
+            "version": "5.2.0",
+            "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+            "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+            "dev": true,
+            "dependencies": {
+                "@babel/code-frame": "^7.0.0",
+                "error-ex": "^1.3.1",
+                "json-parse-even-better-errors": "^2.3.0",
+                "lines-and-columns": "^1.1.6"
+            },
+            "engines": {
+                "node": ">=8"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
+            }
+        },
+        "node_modules/parseurl": {
+            "version": "1.3.3",
+            "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+            "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+            "engines": {
+                "node": ">= 0.8"
+            }
+        },
+        "node_modules/path-exists": {
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+            "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+            "dev": true,
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/path-is-absolute": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+            "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/path-key": {
+            "version": "3.1.1",
+            "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+            "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+            "dev": true,
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/path-parse": {
+            "version": "1.0.7",
+            "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+            "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+            "dev": true
+        },
+        "node_modules/path-to-regexp": {
+            "version": "0.1.7",
+            "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
+            "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
+        },
+        "node_modules/pend": {
+            "version": "1.2.0",
+            "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
+            "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
+            "dev": true
+        },
+        "node_modules/picocolors": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
+            "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
+            "dev": true
+        },
+        "node_modules/picomatch": {
+            "version": "2.3.1",
+            "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+            "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+            "dev": true,
+            "engines": {
+                "node": ">=8.6"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/jonschlinkert"
+            }
+        },
+        "node_modules/pirates": {
+            "version": "4.0.6",
+            "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz",
+            "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==",
+            "dev": true,
+            "engines": {
+                "node": ">= 6"
+            }
+        },
+        "node_modules/pkg-dir": {
+            "version": "4.2.0",
+            "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
+            "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
+            "dev": true,
+            "dependencies": {
+                "find-up": "^4.0.0"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/pretty-format": {
+            "version": "29.7.0",
+            "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz",
+            "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==",
+            "dev": true,
+            "dependencies": {
+                "@jest/schemas": "^29.6.3",
+                "ansi-styles": "^5.0.0",
+                "react-is": "^18.0.0"
+            },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+            }
+        },
+        "node_modules/pretty-format/node_modules/ansi-styles": {
+            "version": "5.2.0",
+            "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+            "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
+            "dev": true,
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+            }
+        },
+        "node_modules/prompts": {
+            "version": "2.4.2",
+            "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
+            "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
+            "dev": true,
+            "dependencies": {
+                "kleur": "^3.0.3",
+                "sisteransi": "^1.0.5"
+            },
+            "engines": {
+                "node": ">= 6"
+            }
+        },
+        "node_modules/proxy-addr": {
+            "version": "2.0.7",
+            "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
+            "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
+            "dependencies": {
+                "forwarded": "0.2.0",
+                "ipaddr.js": "1.9.1"
+            },
+            "engines": {
+                "node": ">= 0.10"
+            }
+        },
+        "node_modules/punycode": {
+            "version": "2.3.1",
+            "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+            "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/pure-rand": {
+            "version": "6.0.4",
+            "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.4.tgz",
+            "integrity": "sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==",
+            "dev": true,
+            "funding": [
+                {
+                    "type": "individual",
+                    "url": "https://github.com/sponsors/dubzzz"
+                },
+                {
+                    "type": "opencollective",
+                    "url": "https://opencollective.com/fast-check"
+                }
+            ]
+        },
+        "node_modules/qs": {
+            "version": "6.11.0",
+            "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
+            "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
+            "dependencies": {
+                "side-channel": "^1.0.4"
+            },
+            "engines": {
+                "node": ">=0.6"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
+        },
+        "node_modules/queue-tick": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz",
+            "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==",
+            "dev": true
+        },
+        "node_modules/range-parser": {
+            "version": "1.2.1",
+            "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+            "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
+            "engines": {
+                "node": ">= 0.6"
+            }
+        },
+        "node_modules/raw-body": {
+            "version": "2.5.2",
+            "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
+            "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
+            "dependencies": {
+                "bytes": "3.1.2",
+                "http-errors": "2.0.0",
+                "iconv-lite": "0.4.24",
+                "unpipe": "1.0.0"
+            },
+            "engines": {
+                "node": ">= 0.8"
+            }
+        },
+        "node_modules/react-is": {
+            "version": "18.2.0",
+            "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
+            "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==",
+            "dev": true
+        },
+        "node_modules/readable-stream": {
+            "version": "3.6.2",
+            "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+            "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+            "dependencies": {
+                "inherits": "^2.0.3",
+                "string_decoder": "^1.1.1",
+                "util-deprecate": "^1.0.1"
+            },
+            "engines": {
+                "node": ">= 6"
+            }
+        },
+        "node_modules/require-directory": {
+            "version": "2.1.1",
+            "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+            "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/resolve": {
+            "version": "1.22.8",
+            "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
+            "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
+            "dev": true,
+            "dependencies": {
+                "is-core-module": "^2.13.0",
+                "path-parse": "^1.0.7",
+                "supports-preserve-symlinks-flag": "^1.0.0"
+            },
+            "bin": {
+                "resolve": "bin/resolve"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
+        },
+        "node_modules/resolve-cwd": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
+            "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
+            "dev": true,
+            "dependencies": {
+                "resolve-from": "^5.0.0"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/resolve-from": {
+            "version": "5.0.0",
+            "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
+            "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
+            "dev": true,
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/resolve.exports": {
+            "version": "2.0.2",
+            "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz",
+            "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==",
+            "dev": true,
+            "engines": {
+                "node": ">=10"
+            }
+        },
+        "node_modules/rimraf": {
+            "version": "3.0.2",
+            "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+            "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+            "dependencies": {
+                "glob": "^7.1.3"
+            },
+            "bin": {
+                "rimraf": "bin.js"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/isaacs"
+            }
+        },
+        "node_modules/safe-buffer": {
+            "version": "5.2.1",
+            "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+            "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+            "funding": [
+                {
+                    "type": "github",
+                    "url": "https://github.com/sponsors/feross"
+                },
+                {
+                    "type": "patreon",
+                    "url": "https://www.patreon.com/feross"
+                },
+                {
+                    "type": "consulting",
+                    "url": "https://feross.org/support"
+                }
+            ]
+        },
+        "node_modules/safer-buffer": {
+            "version": "2.1.2",
+            "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+            "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+        },
+        "node_modules/semver": {
+            "version": "7.5.4",
+            "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+            "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+            "dependencies": {
+                "lru-cache": "^6.0.0"
+            },
+            "bin": {
+                "semver": "bin/semver.js"
+            },
+            "engines": {
+                "node": ">=10"
+            }
+        },
+        "node_modules/send": {
+            "version": "0.18.0",
+            "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
+            "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
+            "dependencies": {
+                "debug": "2.6.9",
+                "depd": "2.0.0",
+                "destroy": "1.2.0",
+                "encodeurl": "~1.0.2",
+                "escape-html": "~1.0.3",
+                "etag": "~1.8.1",
+                "fresh": "0.5.2",
+                "http-errors": "2.0.0",
+                "mime": "1.6.0",
+                "ms": "2.1.3",
+                "on-finished": "2.4.1",
+                "range-parser": "~1.2.1",
+                "statuses": "2.0.1"
+            },
+            "engines": {
+                "node": ">= 0.8.0"
+            }
+        },
+        "node_modules/send/node_modules/ms": {
+            "version": "2.1.3",
+            "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+            "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
+        },
+        "node_modules/serve-static": {
+            "version": "1.15.0",
+            "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
+            "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
+            "dependencies": {
+                "encodeurl": "~1.0.2",
+                "escape-html": "~1.0.3",
+                "parseurl": "~1.3.3",
+                "send": "0.18.0"
+            },
+            "engines": {
+                "node": ">= 0.8.0"
+            }
+        },
+        "node_modules/set-blocking": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+            "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
+        },
+        "node_modules/set-function-length": {
+            "version": "1.1.1",
+            "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz",
+            "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==",
+            "dependencies": {
+                "define-data-property": "^1.1.1",
+                "get-intrinsic": "^1.2.1",
+                "gopd": "^1.0.1",
+                "has-property-descriptors": "^1.0.0"
+            },
+            "engines": {
+                "node": ">= 0.4"
+            }
+        },
+        "node_modules/setprototypeof": {
+            "version": "1.2.0",
+            "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
+            "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
+        },
+        "node_modules/shebang-command": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+            "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+            "dev": true,
+            "dependencies": {
+                "shebang-regex": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/shebang-regex": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+            "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+            "dev": true,
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/side-channel": {
+            "version": "1.0.4",
+            "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
+            "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+            "dependencies": {
+                "call-bind": "^1.0.0",
+                "get-intrinsic": "^1.0.2",
+                "object-inspect": "^1.9.0"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
+        },
+        "node_modules/sift": {
+            "version": "16.0.1",
+            "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.1.tgz",
+            "integrity": "sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ=="
+        },
+        "node_modules/signal-exit": {
+            "version": "3.0.7",
+            "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+            "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
+        },
+        "node_modules/sisteransi": {
+            "version": "1.0.5",
+            "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
+            "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
+            "dev": true
+        },
+        "node_modules/slash": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+            "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+            "dev": true,
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/smart-buffer": {
+            "version": "4.2.0",
+            "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
+            "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
+            "devOptional": true,
+            "engines": {
+                "node": ">= 6.0.0",
+                "npm": ">= 3.0.0"
+            }
+        },
+        "node_modules/socks": {
+            "version": "2.7.1",
+            "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz",
+            "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==",
+            "devOptional": true,
+            "dependencies": {
+                "ip": "^2.0.0",
+                "smart-buffer": "^4.2.0"
+            },
+            "engines": {
+                "node": ">= 10.13.0",
+                "npm": ">= 3.0.0"
+            }
+        },
+        "node_modules/source-map": {
+            "version": "0.6.1",
+            "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+            "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/source-map-support": {
+            "version": "0.5.13",
+            "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz",
+            "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==",
+            "dev": true,
+            "dependencies": {
+                "buffer-from": "^1.0.0",
+                "source-map": "^0.6.0"
+            }
+        },
+        "node_modules/sparse-bitfield": {
+            "version": "3.0.3",
+            "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz",
+            "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==",
+            "dependencies": {
+                "memory-pager": "^1.0.2"
+            }
+        },
+        "node_modules/sprintf-js": {
+            "version": "1.0.3",
+            "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+            "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
+            "dev": true
+        },
+        "node_modules/stack-utils": {
+            "version": "2.0.6",
+            "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz",
+            "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==",
+            "dev": true,
+            "dependencies": {
+                "escape-string-regexp": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=10"
+            }
+        },
+        "node_modules/statuses": {
+            "version": "2.0.1",
+            "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+            "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+            "engines": {
+                "node": ">= 0.8"
+            }
+        },
+        "node_modules/streamx": {
+            "version": "2.15.6",
+            "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.6.tgz",
+            "integrity": "sha512-q+vQL4AAz+FdfT137VF69Cc/APqUbxy+MDOImRrMvchJpigHj9GksgDU2LYbO9rx7RX6osWgxJB2WxhYv4SZAw==",
+            "dev": true,
+            "dependencies": {
+                "fast-fifo": "^1.1.0",
+                "queue-tick": "^1.0.1"
+            }
+        },
+        "node_modules/string_decoder": {
+            "version": "1.3.0",
+            "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
+            "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
+            "dependencies": {
+                "safe-buffer": "~5.2.0"
+            }
+        },
+        "node_modules/string-length": {
+            "version": "4.0.2",
+            "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz",
+            "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==",
+            "dev": true,
+            "dependencies": {
+                "char-regex": "^1.0.2",
+                "strip-ansi": "^6.0.0"
+            },
+            "engines": {
+                "node": ">=10"
+            }
+        },
+        "node_modules/string-width": {
+            "version": "4.2.3",
+            "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+            "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+            "dependencies": {
+                "emoji-regex": "^8.0.0",
+                "is-fullwidth-code-point": "^3.0.0",
+                "strip-ansi": "^6.0.1"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/strip-ansi": {
+            "version": "6.0.1",
+            "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+            "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+            "dependencies": {
+                "ansi-regex": "^5.0.1"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/strip-bom": {
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz",
+            "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==",
+            "dev": true,
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/strip-final-newline": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+            "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
+            "dev": true,
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/strip-json-comments": {
+            "version": "3.1.1",
+            "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+            "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+            "dev": true,
+            "engines": {
+                "node": ">=8"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
+            }
+        },
+        "node_modules/superagent": {
+            "version": "8.1.2",
+            "resolved": "https://registry.npmjs.org/superagent/-/superagent-8.1.2.tgz",
+            "integrity": "sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA==",
+            "dev": true,
+            "dependencies": {
+                "component-emitter": "^1.3.0",
+                "cookiejar": "^2.1.4",
+                "debug": "^4.3.4",
+                "fast-safe-stringify": "^2.1.1",
+                "form-data": "^4.0.0",
+                "formidable": "^2.1.2",
+                "methods": "^1.1.2",
+                "mime": "2.6.0",
+                "qs": "^6.11.0",
+                "semver": "^7.3.8"
+            },
+            "engines": {
+                "node": ">=6.4.0 <13 || >=14"
+            }
+        },
+        "node_modules/superagent/node_modules/debug": {
+            "version": "4.3.4",
+            "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+            "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+            "dev": true,
+            "dependencies": {
+                "ms": "2.1.2"
+            },
+            "engines": {
+                "node": ">=6.0"
+            },
+            "peerDependenciesMeta": {
+                "supports-color": {
+                    "optional": true
+                }
+            }
+        },
+        "node_modules/superagent/node_modules/mime": {
+            "version": "2.6.0",
+            "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz",
+            "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==",
+            "dev": true,
+            "bin": {
+                "mime": "cli.js"
+            },
+            "engines": {
+                "node": ">=4.0.0"
+            }
+        },
+        "node_modules/superagent/node_modules/ms": {
+            "version": "2.1.2",
+            "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+            "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+            "dev": true
+        },
+        "node_modules/supertest": {
+            "version": "6.3.4",
+            "resolved": "https://registry.npmjs.org/supertest/-/supertest-6.3.4.tgz",
+            "integrity": "sha512-erY3HFDG0dPnhw4U+udPfrzXa4xhSG+n4rxfRuZWCUvjFWwKl+OxWf/7zk50s84/fAAs7vf5QAb9uRa0cCykxw==",
+            "dev": true,
+            "dependencies": {
+                "methods": "^1.1.2",
+                "superagent": "^8.1.2"
+            },
+            "engines": {
+                "node": ">=6.4.0"
+            }
+        },
+        "node_modules/supports-color": {
+            "version": "7.2.0",
+            "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+            "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+            "dev": true,
+            "dependencies": {
+                "has-flag": "^4.0.0"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/supports-preserve-symlinks-flag": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+            "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+            "dev": true,
+            "engines": {
+                "node": ">= 0.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
+        },
+        "node_modules/tar": {
+            "version": "6.2.0",
+            "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz",
+            "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==",
+            "dependencies": {
+                "chownr": "^2.0.0",
+                "fs-minipass": "^2.0.0",
+                "minipass": "^5.0.0",
+                "minizlib": "^2.1.1",
+                "mkdirp": "^1.0.3",
+                "yallist": "^4.0.0"
+            },
+            "engines": {
+                "node": ">=10"
+            }
+        },
+        "node_modules/tar-stream": {
+            "version": "3.1.6",
+            "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz",
+            "integrity": "sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==",
+            "dev": true,
+            "dependencies": {
+                "b4a": "^1.6.4",
+                "fast-fifo": "^1.2.0",
+                "streamx": "^2.15.0"
+            }
+        },
+        "node_modules/test-exclude": {
+            "version": "6.0.0",
+            "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz",
+            "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==",
+            "dev": true,
+            "dependencies": {
+                "@istanbuljs/schema": "^0.1.2",
+                "glob": "^7.1.4",
+                "minimatch": "^3.0.4"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/tmpl": {
+            "version": "1.0.5",
+            "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",
+            "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==",
+            "dev": true
+        },
+        "node_modules/to-fast-properties": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+            "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
+            "dev": true,
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/to-regex-range": {
+            "version": "5.0.1",
+            "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+            "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+            "dev": true,
+            "dependencies": {
+                "is-number": "^7.0.0"
+            },
+            "engines": {
+                "node": ">=8.0"
+            }
+        },
+        "node_modules/toidentifier": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
+            "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
+            "engines": {
+                "node": ">=0.6"
+            }
+        },
+        "node_modules/tr46": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz",
+            "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==",
+            "dependencies": {
+                "punycode": "^2.1.1"
+            },
+            "engines": {
+                "node": ">=12"
+            }
+        },
+        "node_modules/tslib": {
+            "version": "2.6.2",
+            "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+            "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==",
+            "dev": true
+        },
+        "node_modules/type-detect": {
+            "version": "4.0.8",
+            "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
+            "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
+            "dev": true,
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/type-fest": {
+            "version": "0.21.3",
+            "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
+            "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
+            "dev": true,
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
+            }
+        },
+        "node_modules/type-is": {
+            "version": "1.6.18",
+            "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+            "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+            "dependencies": {
+                "media-typer": "0.3.0",
+                "mime-types": "~2.1.24"
+            },
+            "engines": {
+                "node": ">= 0.6"
+            }
+        },
+        "node_modules/undici-types": {
+            "version": "5.26.5",
+            "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
+            "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="
+        },
+        "node_modules/unpipe": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+            "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
+            "engines": {
+                "node": ">= 0.8"
+            }
+        },
+        "node_modules/update-browserslist-db": {
+            "version": "1.0.13",
+            "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",
+            "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==",
+            "dev": true,
+            "funding": [
+                {
+                    "type": "opencollective",
+                    "url": "https://opencollective.com/browserslist"
+                },
+                {
+                    "type": "tidelift",
+                    "url": "https://tidelift.com/funding/github/npm/browserslist"
+                },
+                {
+                    "type": "github",
+                    "url": "https://github.com/sponsors/ai"
+                }
+            ],
+            "dependencies": {
+                "escalade": "^3.1.1",
+                "picocolors": "^1.0.0"
+            },
+            "bin": {
+                "update-browserslist-db": "cli.js"
+            },
+            "peerDependencies": {
+                "browserslist": ">= 4.21.0"
+            }
+        },
+        "node_modules/util-deprecate": {
+            "version": "1.0.2",
+            "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+            "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
+        },
+        "node_modules/utils-merge": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+            "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
+            "engines": {
+                "node": ">= 0.4.0"
+            }
+        },
+        "node_modules/v8-to-istanbul": {
+            "version": "9.2.0",
+            "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz",
+            "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==",
+            "dev": true,
+            "dependencies": {
+                "@jridgewell/trace-mapping": "^0.3.12",
+                "@types/istanbul-lib-coverage": "^2.0.1",
+                "convert-source-map": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=10.12.0"
+            }
+        },
+        "node_modules/vary": {
+            "version": "1.1.2",
+            "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+            "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
+            "engines": {
+                "node": ">= 0.8"
+            }
+        },
+        "node_modules/walker": {
+            "version": "1.0.8",
+            "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz",
+            "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==",
+            "dev": true,
+            "dependencies": {
+                "makeerror": "1.0.12"
+            }
+        },
+        "node_modules/webidl-conversions": {
+            "version": "7.0.0",
+            "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
+            "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==",
+            "engines": {
+                "node": ">=12"
+            }
+        },
+        "node_modules/whatwg-url": {
+            "version": "11.0.0",
+            "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz",
+            "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==",
+            "dependencies": {
+                "tr46": "^3.0.0",
+                "webidl-conversions": "^7.0.0"
+            },
+            "engines": {
+                "node": ">=12"
+            }
+        },
+        "node_modules/which": {
+            "version": "2.0.2",
+            "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+            "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+            "dev": true,
+            "dependencies": {
+                "isexe": "^2.0.0"
+            },
+            "bin": {
+                "node-which": "bin/node-which"
+            },
+            "engines": {
+                "node": ">= 8"
+            }
+        },
+        "node_modules/wide-align": {
+            "version": "1.1.5",
+            "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz",
+            "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==",
+            "dependencies": {
+                "string-width": "^1.0.2 || 2 || 3 || 4"
+            }
+        },
+        "node_modules/wrap-ansi": {
+            "version": "7.0.0",
+            "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+            "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+            "dev": true,
+            "dependencies": {
+                "ansi-styles": "^4.0.0",
+                "string-width": "^4.1.0",
+                "strip-ansi": "^6.0.0"
+            },
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+            }
+        },
+        "node_modules/wrappy": {
+            "version": "1.0.2",
+            "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+            "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
+        },
+        "node_modules/write-file-atomic": {
+            "version": "4.0.2",
+            "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz",
+            "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==",
+            "dev": true,
+            "dependencies": {
+                "imurmurhash": "^0.1.4",
+                "signal-exit": "^3.0.7"
+            },
+            "engines": {
+                "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+            }
+        },
+        "node_modules/y18n": {
+            "version": "5.0.8",
+            "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+            "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+            "dev": true,
+            "engines": {
+                "node": ">=10"
+            }
+        },
+        "node_modules/yallist": {
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+            "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+        },
+        "node_modules/yargs": {
+            "version": "17.7.2",
+            "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
+            "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
+            "dev": true,
+            "dependencies": {
+                "cliui": "^8.0.1",
+                "escalade": "^3.1.1",
+                "get-caller-file": "^2.0.5",
+                "require-directory": "^2.1.1",
+                "string-width": "^4.2.3",
+                "y18n": "^5.0.5",
+                "yargs-parser": "^21.1.1"
+            },
+            "engines": {
+                "node": ">=12"
+            }
+        },
+        "node_modules/yargs-parser": {
+            "version": "21.1.1",
+            "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+            "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+            "dev": true,
+            "engines": {
+                "node": ">=12"
+            }
+        },
+        "node_modules/yauzl": {
+            "version": "2.10.0",
+            "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
+            "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==",
+            "dev": true,
+            "dependencies": {
+                "buffer-crc32": "~0.2.3",
+                "fd-slicer": "~1.1.0"
+            }
+        },
+        "node_modules/yocto-queue": {
+            "version": "0.1.0",
+            "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+            "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+            "dev": true,
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
+            }
+        }
+    }
+}
diff --git a/storeQuestionService/package.json b/storeQuestionService/package.json
new file mode 100644
index 00000000..94ccdbe2
--- /dev/null
+++ b/storeQuestionService/package.json
@@ -0,0 +1,32 @@
+{
+    "name": "store-question-service",
+    "version": "1.0.0",
+    "description": "Service incharge of storing the questions generated by the system",
+    "main": "service.js",
+    "scripts": {
+        "start": "node store-q-service.js",
+        "test": "jest"
+    },
+    "repository": {
+        "type": "git",
+        "url": "git+https://github.com/arquisoft/wiq_es6c.git"
+    },
+    "author": "",
+    "license": "ISC",
+    "bugs": {
+        "url": "https://github.com/arquisoft/wiq_es6c/issues"
+    },
+    "homepage": "https://github.com/arquisoft/wiq_es6c#readme",
+    "dependencies": {
+        "bcrypt": "^5.1.1",
+        "body-parser": "^1.20.2",
+        "express": "^4.18.2",
+        "jsonwebtoken": "^9.0.2",
+        "mongoose": "^8.0.4"
+    },
+    "devDependencies": {
+        "jest": "^29.7.0",
+        "mongodb-memory-server": "^9.1.5",
+        "supertest": "^6.3.4"
+    }
+}
diff --git a/storeQuestionService/store-q-model.js b/storeQuestionService/store-q-model.js
new file mode 100644
index 00000000..77ddfe45
--- /dev/null
+++ b/storeQuestionService/store-q-model.js
@@ -0,0 +1,13 @@
+const mongoose = require('mongoose');
+
+const questionStorageSchema = new mongoose.Schema({
+    question: {
+        type: String,
+        required: true,
+    },
+    answers: [{ type: String, required: true }],
+});
+
+const Question = mongoose.model('Question', questionStorageSchema);
+
+module.exports = Question;
diff --git a/storeQuestionService/store-q-service.js b/storeQuestionService/store-q-service.js
new file mode 100644
index 00000000..219f2ed2
--- /dev/null
+++ b/storeQuestionService/store-q-service.js
@@ -0,0 +1,90 @@
+const express = require('express');
+const mongoose = require('mongoose');
+const bodyParser = require('body-parser');
+const Question = require('./store-q-model');
+
+const app = express();
+const port = 8004;
+
+// Middleware to parse JSON in request body
+app.use(bodyParser.json());
+
+// Connect to MongoDB
+const mongoUri = process.env.MONGODB_URI || 'mongodb://localhost:27017/userdb';
+mongoose.connect(mongoUri);
+
+// Function to validate required fields in the request body
+function validateRequiredFields(req, requiredFields) {
+    for (const field of requiredFields) {
+        if (!(field in req.body)) {
+            throw new Error(`Missing required field: ${field}`);
+        }
+    }
+}
+
+app.post('/addquestion', async (req, res) => {
+    try {
+        // Check if required fields are present in the request body
+        validateRequiredFields(req, ['question', 'answers']);
+
+        const newQuestion = new Question({
+            question: req.body.question,
+            answers: req.body.answers,
+        });
+
+        await newQuestion.save();
+        res.json(newQuestion);
+    } catch (error) {
+        res.status(400).json({ error: error.message });
+    }
+});
+
+app.post('/addquestions', async (req, res) => {
+  try {
+      // Check if required fields are present in the request body
+      if (!Array.isArray(req.body)) {
+          throw new Error('Invalid request format. Expected an array of questions.');
+      }
+      for (const question of req.body) {
+          validateRequiredFields(question, ['question', 'answers']);
+      }
+
+      const newQuestions = [];
+
+      for (const questionData of req.body) {
+          const newQuestion = new Question({
+              question: questionData.question,
+              answers: questionData.answers,
+          });
+
+          await newQuestion.save();
+          newQuestions.push(newQuestion);
+      }
+      
+      res.json(newQuestions);
+  } catch (error) {
+      res.status(400).json({ error: error.message });
+  }
+});
+
+
+app.get('/questions', async (req, res) => {
+    try {
+        const questions = await Question.find({}); // Get all questions
+        res.json(questions);
+    } catch (error) {
+        res.status(500).json({ error: error.message });
+    }
+});
+
+const server = app.listen(port, () => {
+    console.log(`Store questions service listening at http://localhost:${port}`);
+});
+
+// Listen for the 'close' event on the Express.js server
+server.on('close', () => {
+    // Close the Mongoose connection
+    mongoose.connection.close();
+});
+
+module.exports = server;
diff --git a/storeQuestionService/store-q.test.js b/storeQuestionService/store-q.test.js
new file mode 100644
index 00000000..425849a5
--- /dev/null
+++ b/storeQuestionService/store-q.test.js
@@ -0,0 +1,59 @@
+const request = require('supertest');
+const { MongoMemoryServer } = require('mongodb-memory-server');
+
+let mongoServer;
+let app;
+
+beforeAll(async () => {
+  mongoServer = await MongoMemoryServer.create();
+  const mongoUri = mongoServer.getUri();
+  process.env.MONGODB_URI = mongoUri;
+  app = require('./store-q-service'); 
+});
+
+afterAll(async () => {
+    app.close();
+    await mongoServer.stop();
+});
+
+describe('Store questions service', () => {
+  it('should add a new question on POST /addquestion', async () => {
+    const newQuestion = {
+      question: '¿Cuál es la capital de la comunidad autónoma de Castilla y León?',
+      answers: ['Segovia','León','Valladolid','Ninguna'],
+    };
+
+    const response = await request(app).post('/addquestion').send(newQuestion);
+    expect(response.status).toBe(200);
+    expect(response.body).toHaveProperty('question', 'answers');
+  });
+});
+
+describe('Store questions service', () => {
+  it('should get all questions on GET /questions', async () => {
+    const newQuestion1 = {
+      question: '¿Cuál es la capital de la comunidad autónoma de Castilla y León?',
+      answers: ['Segovia','León','Valladolid','Ninguna'],
+    };
+    const newQuestion2 = {
+      question: '¿Cuál es la capital Italia?',
+      answers: ['Roma','Nápoles','Florencia','Milán'],
+    };
+    const newQuestion3 = {
+      question: '¿Cuál es el país mas poblado de la tierra?',
+      answers: ['China','Estados Unidos','Brazil','India'],
+    };
+
+    request(app).post('/addquestion').send(newQuestion1);
+    request(app).post('/addquestion').send(newQuestion2);
+    request(app).post('/addquestion').send(newQuestion3);
+
+    const response = await request(app).get('/questions');
+
+    expect(response.status).toBe(200);
+    expect(response.body).toEqual(
+      expect.arrayContaining([newQuestion1, newQuestion2, newQuestion3])
+    );
+  });
+});
+

From a0ad56cc87d8202c6b8aa6dd2519a3d8680138bf Mon Sep 17 00:00:00 2001
From: Marcos Barril Villaverde <marcos.barrilvillaverde@mycit.ie>
Date: Sat, 24 Feb 2024 20:49:19 +0100
Subject: [PATCH 10/94] Minor fix dokerfile

---
 storeQuestionService/Dockerfile | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/storeQuestionService/Dockerfile b/storeQuestionService/Dockerfile
index f43e2df7..cc024411 100644
--- a/storeQuestionService/Dockerfile
+++ b/storeQuestionService/Dockerfile
@@ -2,7 +2,7 @@
 FROM node:20
 
 # Set the working directory in the container
-WORKDIR /usr/src/userservice
+WORKDIR /usr/src/storequestionservice
 
 # Copy package.json and package-lock.json to the working directory
 COPY package*.json ./
@@ -14,7 +14,7 @@ RUN npm install
 COPY . .
 
 # Expose the port the app runs on
-EXPOSE 8001
+EXPOSE 8004
 
 # Define the command to run your app
-CMD ["node", "user-service.js"]
+CMD ["node", "store-q-service.js"]

From b8eb19908e074dd14f94aa6a9a60d1872185d0d2 Mon Sep 17 00:00:00 2001
From: Marcos Barril Villaverde <marcos.barrilvillaverde@mycit.ie>
Date: Sun, 25 Feb 2024 19:00:02 +0100
Subject: [PATCH 11/94] Added timestampt to stored questions model

---
 storeQuestionService/store-q-model.js | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/storeQuestionService/store-q-model.js b/storeQuestionService/store-q-model.js
index 77ddfe45..f3423c9a 100644
--- a/storeQuestionService/store-q-model.js
+++ b/storeQuestionService/store-q-model.js
@@ -6,6 +6,10 @@ const questionStorageSchema = new mongoose.Schema({
         required: true,
     },
     answers: [{ type: String, required: true }],
+    createdAt: {
+        type: Date,
+        default: Date.now, 
+      },
 });
 
 const Question = mongoose.model('Question', questionStorageSchema);

From e7510d0a09159865fa8546f608fc5bc8b88741d1 Mon Sep 17 00:00:00 2001
From: Abel <abelmhov7l@gmail.com>
Date: Sun, 25 Feb 2024 19:54:36 +0100
Subject: [PATCH 12/94] Added ports, the gateway container and the new
 relations between components in the deployment view. Also changed the import
 of the diagram for its generating plantUML code

---
 docs/src/07_deployment_view.adoc | 56 +++++++++++++++++++++++++++++++-
 1 file changed, 55 insertions(+), 1 deletion(-)

diff --git a/docs/src/07_deployment_view.adoc b/docs/src/07_deployment_view.adoc
index 84766759..ec5469dd 100644
--- a/docs/src/07_deployment_view.adoc
+++ b/docs/src/07_deployment_view.adoc
@@ -55,7 +55,61 @@ Describe (usually in a combination of diagrams, tables, and text):
 For multiple environments or alternative deployments please copy and adapt this section of arc42 for all relevant environments.
 ****
 
-image::deployment.png["Deployment View"]
+[plantuml,"Deployment View",png]
+----
+!pragma layout smetana
+
+cloud "Azure Cloud" {
+    node "Virtual Machine" {
+        node "Docker" {
+            node "App Container"{
+                node "Web App"
+            }
+            node "Gateway Container"{
+                node "Gateway Service"
+            }
+            node "User Container"{
+                node "User Service"
+            }
+            node "Auth Container"{
+                node "Auth Service"
+            }
+            node "Game Container"{
+                node "Game Generator Service"
+            }
+            node "Questions History Container"{
+                node "Questions History Service"
+            }
+            node "User Stats Container"{
+                node "User Stats Service"
+            }
+            node "Questions Generator Container"{
+                node "Questions Generator Service"
+            }
+        }
+    }
+}
+
+cloud "Wikidata"
+actor "User"
+
+
+"User" -left- "Web App" : "\t\tHTTP/port:3000\t\t"
+
+"Web App" -- "Gateway Service" : "port: 8000"
+
+"Gateway Service" -- "Questions History Service" : "port: 8004             "
+"Gateway Service" -- "User Stats Service" : "port: 8003"
+"Gateway Service" -up- "Auth Service" : "port: 8002         "
+"Gateway Service" -up- "User Service" : "port: 8001"
+"Gateway Service" -right- "Game Generator Service"  : "           port: 8005     "
+
+"Game Generator Service" -- "User Stats Service" : "port: 8003"
+"Game Generator Service" -- "Questions Generator Service" : " port: 8006"
+
+"Questions Generator Service" -- "Questions History Service" : "port: 8004"
+"Questions Generator Service" -- "Wikidata" : "HTTPS"
+----
 
 In addition to what is shown in the diagram, we will also use Graphana and Prometheus during the production stage as code monitoring systems.
 

From cf7530aaafa9199738f7a9a307d9928589ea3ba8 Mon Sep 17 00:00:00 2001
From: Abel <abelmhov7l@gmail.com>
Date: Sun, 25 Feb 2024 19:55:45 +0100
Subject: [PATCH 13/94] Diagrams theme removed in order for them to be more
 cohesive with the rest of the diagrams in the documentation

---
 docs/src/06_runtime_view.adoc | 18 ------------------
 1 file changed, 18 deletions(-)

diff --git a/docs/src/06_runtime_view.adoc b/docs/src/06_runtime_view.adoc
index 5fe3e4e2..024bf5a2 100644
--- a/docs/src/06_runtime_view.adoc
+++ b/docs/src/06_runtime_view.adoc
@@ -41,9 +41,6 @@ See https://docs.arc42.org/section-6/[Runtime View] in the arc42 documentation.
 
 [plantuml,"Question generation 1",png]
 ----
-
-@startuml
-!theme vibrant
 autonumber
 
 actor "User" as user
@@ -63,8 +60,6 @@ end
 
 "Game Service" -> "Question Historic Service" : Sends the shown questions
 "Game Service" -> "Player Statistics Service" : Sends the  user's match data
-@enduml 
-
 ----
 
 In circumstances in which few questions are needed for the game, it may be possible to extract all of them in a batch without affecting performance and response times. Besides, extracting them this way opens up the possibility of using multiple threads to gather the data, greatly increasing performance. However, if the querying times are too high, this strategy may cause great delays while loading the game. A possible alternative is explained below:
@@ -73,9 +68,6 @@ In circumstances in which few questions are needed for the game, it may be possi
 
 [plantuml,"Question generation 2",png]
 ----
-
-@startuml
-!theme vibrant
 autonumber
 
 actor "User" as user
@@ -108,8 +100,6 @@ end
 
 "Game Service" -> "Question Historic Service" : Sends the shown questions
 "Game Service" -> "Player Statistics Service" : Sends the  user's match data
-@enduml 
-
 ----
 
 In cases where a lot of questions are needed, or wikidata querying has a great impact on performance, this alternative may prove to be convenient. By distributing the data fetching along the entire match, bottlenecks on performance will be reduced. Depending on the system load (or, optionally client device's specifications!) batch sizes may vary, adapting to maintain responsiveness.
@@ -118,9 +108,6 @@ In cases where a lot of questions are needed, or wikidata querying has a great i
 
 [plantuml,"Consult Statistics",png]
 ----
-
-@startuml
-!theme vibrant
 autonumber
 
 actor "User" as user
@@ -129,16 +116,12 @@ user -> "Player Statistics Service" : Requests user data
 "Player Statistics Service" -> "MongoDB Server" : Makes petition through REST API
 "MongoDB Server" -> "Player Statistics Service" : Returns information
 "Player Statistics Service" -> user : Shows data
-@enduml 
-
 ----
 
 === User consults questions used in games.
 
 [plantuml,"Consult questions",png]
 ----
-@startuml
-!theme vibrant
 autonumber
 
 actor "User" as user
@@ -147,5 +130,4 @@ user -> "Question Historic Service" : Requests user data
 "Question Historic Service" -> "MongoDB Server" : Makes petition through REST API
 "MongoDB Server" -> "Question Historic Service" : Returns information
 "Question Historic Service" -> user : Shows data
-@enduml 
 ----

From 185511581e8b029a1e66b3871a44c6ac59cc6c9d Mon Sep 17 00:00:00 2001
From: Abel <abelmhov7l@gmail.com>
Date: Sun, 25 Feb 2024 20:02:41 +0100
Subject: [PATCH 14/94] Changed the imports of the diagrams for its generating
 plantUML code. Also added the Gateway Service to them, the new relations
 between components and updated the tables accordingly.

---
 docs/images/05_Level_3_Diagram.png   | Bin 72515 -> 0 bytes
 docs/images/05_level1Diagram.png     | Bin 5225 -> 0 bytes
 docs/images/05_level2Diagram.png     | Bin 29778 -> 0 bytes
 docs/src/05_building_block_view.adoc | 118 +++++++++++++++++++++++----
 4 files changed, 104 insertions(+), 14 deletions(-)
 delete mode 100644 docs/images/05_Level_3_Diagram.png
 delete mode 100644 docs/images/05_level1Diagram.png
 delete mode 100644 docs/images/05_level2Diagram.png

diff --git a/docs/images/05_Level_3_Diagram.png b/docs/images/05_Level_3_Diagram.png
deleted file mode 100644
index 4c654c4307202b208c80a2bec17bcb1f1262d124..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 72515
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
MzjR*WH*3E8U+6woVE_OC

diff --git a/docs/images/05_level1Diagram.png b/docs/images/05_level1Diagram.png
deleted file mode 100644
index eb2fdd2956a3a168a645d9924894ed87af207f7c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 5225
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
N(ooY;EmgL9^*>_g78(Em

diff --git a/docs/images/05_level2Diagram.png b/docs/images/05_level2Diagram.png
deleted file mode 100644
index 6e4ddedbd985d62bbf8b0a6b5c73f5b48af94895..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 29778
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

diff --git a/docs/src/05_building_block_view.adoc b/docs/src/05_building_block_view.adoc
index 9b7f3678..7d9d2e6b 100644
--- a/docs/src/05_building_block_view.adoc
+++ b/docs/src/05_building_block_view.adoc
@@ -45,8 +45,13 @@ In the best case you will get away with examples or simple signatures.
 
 === Level 1: Overall System's whitebox
 
-image::05_level1Diagram.png[Level 1 Diagram]
+[plantuml,"Level 1 Diagram",png]
+----
+!pragma layout smetana
 
+:User: -> [WIQ App] : "Interacts with"
+[WIQ App] <.> [WikiData] : "Gets data"
+----
 
 ==== Motivation
 
@@ -110,8 +115,24 @@ according the the following black box template:
 ****
 
 
-image::05_level2Diagram.png[Level 2 Diagram]
-
+[plantuml,"Level 2 Diagram",png]
+----
+!pragma layout smetana
+
+:User:
+package "WIQ App" {
+:User: -> [WebApp] : " Interacts    "
+[WebApp] <-> [Gateway Service] : Redirects Requests
+[Gateway Service] <--down-> [Game Service] : Plays
+[Gateway Service] <-- [Question Historic Service] : Loads data
+[Gateway Service] <-- [User Statistics Service] : Loads data
+[Gateway Service] <-> [UserAuth Service] : Logs in / Registers
+[Game Service] -> [User Statistics Service] : Stores data
+[Game Service] <-left-> [Questions Service] : Gets questions
+[Questions Service] -up-> [Question Historic Service] : Stores data
+}
+[Questions Service] <.left.> [WikiData] : "  Gets data  "
+----
 
 ==== Motivation
 
@@ -123,20 +144,86 @@ image::05_level2Diagram.png[Level 2 Diagram]
 |===
 |Name |Description
 |Web App |Layer in which the user will interact directly and which will connect with the different services.
+|Gateway Service |Microservice that redirects the requests from the WebApp to its corresponding microservices
 |Questions Service |Microservice to generate the questions used by the application from WikiData
 |Game Service |Microservice that implements the quiz game
 |Question Historic Service |Microservice that stores the generated questions for later consultation
 |User Statistics Service |Microservice that stores the statistics of the games played by the user.
-|Authentification Service |Authentication microservice that allows the user to register and log in.
+|UserAuth Service |Authentication microservices that allows the user to register and log in.
 |===
 
 === Level 3
 
-image::05_Level_3_Diagram.png[Level 3 Diagram]
+[plantuml,"Level 3 Diagram",png]
+----
+!pragma layout smetana
+
+actor "User"
+rectangle "Wikidata"
+
+package "WIQ App"{
+
+    component "WebApp"
+    component "Gateway Service" as GatewayS
+
+    package "Game Service" {
+        component "Game Controller"
+    }
+
+    package "User Statistics Service" as USS {
+        component "Statistics Controller"
+        database "Database" as USDB
+    }
+
+    package "Questions Historic Service" as QHS{
+        component "Question Historic Controller" as QHController
+        database "Database" as QhDB
+    }
+    package "Questions Service"{
+        component "Wikidata Extractor"
+        component "Questions Generator"
+        database "Database" as QSDB
+    }
+    package "UserAuth Service" {
+        component "Auth Service"
+        component "User Service"
+        database "Database" as UADB
+    }
+}
+
+User -right-> WebApp : Uses
+WebApp <-right-> GatewayS: Redirects requests
+
+GatewayS <--up--> "UserAuth Service" : "Handles user\nlogin/registry"
+GatewayS <-down-> "Game Service" : "Handles user current game\n"
+GatewayS <--up-- "QHS" : "\nReceives generated\nquestions"
+GatewayS <--- "USS" : "Receives\t\t\t\nuser statistics\t\t\t"
+
+"Game Service" <---> "Questions Service" : "Receives question petitions,\nsends questions\n\n"
+"Game Service" ---> "USS" : "Sends user\t\nstatistics\t\t"
+"Questions Service" -up-> "QHS" : "Sends\ngenerated\nquestions"
+
+"Wikidata" .up.> "Wikidata Extractor" : "Returns data"
+"Wikidata" <.up. "Wikidata Extractor" : "Queries"
+"Wikidata Extractor" --> QSDB
+"Questions Generator" <-- QSDB
+"Questions Generator" --> QSDB
+
+"QHController" --> QhDB
+"QHController" <-- QhDB
+
+"Statistics Controller" --> USDB
+"Statistics Controller" <-- USDB
+
+"Auth Service" --> UADB
+"Auth Service" <-- UADB
+"User Service" --> UADB
+"User Service" <-- UADB
+----
 
 ==== Motivation
 
-To display the inner architecture of the different microservices, as well as how do their components interact with themselves and with other components from other microsystems. All microservices follow the MVC architectural pattern, to the exception of the questions generator service. (since it has no UI to handle)
+To display the inner architecture of the different microservices, as well as how do their components interact with themselves and with other components from other microsystems. All microservices follow the MVC architectural pattern, to the exception of those who have no UI to handle.
 
 ==== Contained Building Blocks
 
@@ -144,11 +231,14 @@ To display the inner architecture of the different microservices, as well as how
 |===
 |Name |Description
 
-|Questions Generator
-|Contains the required templates and proceedings to construct questions. In order to do so, it delegates the Wikidata querying to the Wikidata extractor. When the data is returned, the question is formulated through templates. 
+|User Service
+|It retrieves the data from new users and registers them in the database.
 
-|Wikidata Extractor
-|Handles extraction and formatting of Wikidata’s output. It’s queries must cover all necessary information in order to construct the question(s), including not only the correct response, but also believable and coherent “decoy responses”.
+|Auth Service
+|It retrieves the data from returning users and checks if they are in the database.
+
+|Game Controller
+|Handles all the game’s logic; where the user input’s processing takes place. It can request questions to the Questions Microservice, and also gather user statistics, to later be sent to the User Statistics Controller.
 
 |Questions Historic Controller
 |Receives the generated questions, and sends them to the database. Besides, it also handles recovering them from the database and sending them where they are needed. (e.g: as response from an API call, or to the UI)
@@ -156,9 +246,9 @@ To display the inner architecture of the different microservices, as well as how
 |User Statistics Controller
 |Receives various information about the player’s performance in the match. There, some processing may occur before storing it in the database. Also handles retrieving the information and sending it where it’s needed (e.g: as response from an API call, or to the UI).
 
-|Game Controller
-|Handles all the game’s logic; where the user input’s processing takes place. It can request questions to the Questions Microservice, and also gather user statistics, to later be set to the User Statistics Controller.
+|Questions Generator
+|Contains the required templates and proceedings to construct questions. In order to do so, it delegates the Wikidata querying to the Wikidata extractor. It gets the data through the database so when the data is returned, the question is formulated through templates. 
 
-|UI for the game and statistics
-|Handles appeareance and presentation. Actions taken by the user are communicated to their respective controllers, that may respond accordingly.
+|Wikidata Extractor
+|Handles extraction and formatting of Wikidata’s output. It’s queries must cover all necessary information in order to construct the question(s), including not only the correct response, but also believable and coherent “decoy responses”. It stores the data retrieved on the database.
 |===

From 36dd1b37484b2ac9c5659ca63780e6fad7148d20 Mon Sep 17 00:00:00 2001
From: Abel <abelmhov7l@gmail.com>
Date: Sun, 25 Feb 2024 20:21:40 +0100
Subject: [PATCH 15/94] Changed the import of the Technical Context diagram for
 its generating plantUML code

---
 docs/images/03_Technical_Context.png      | Bin 12074 -> 0 bytes
 docs/src/03_system_scope_and_context.adoc |  18 +++++++++++++++++-
 2 files changed, 17 insertions(+), 1 deletion(-)
 delete mode 100644 docs/images/03_Technical_Context.png

diff --git a/docs/images/03_Technical_Context.png b/docs/images/03_Technical_Context.png
deleted file mode 100644
index 9b2025517fc2284be650679658492474ae6b6b26..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 12074
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

diff --git a/docs/src/03_system_scope_and_context.adoc b/docs/src/03_system_scope_and_context.adoc
index 3fc2a647..66c70cc1 100644
--- a/docs/src/03_system_scope_and_context.adoc
+++ b/docs/src/03_system_scope_and_context.adoc
@@ -69,5 +69,21 @@ together with a mapping table showing the relationships between channels and inp
 
 ****
 
-image::03_Technical_Context.png[]
+[plantuml,"Technical_Context Diagram",png]
+----
+!pragma layout smetana
+
+actor "User"
+node "\t\t\tApp\t\t\t\t"{
+    rectangle "Web App"
+    rectangle "REST API"
+}
+rectangle "Wikidata" #lightblue
+database "\nMongoDB\n" as MongoDB #white
+
+User -right- "Web App" : "HTTPS\t"
+"Web App" -right- "REST API" : HTTPS (REST)
+"REST API" -right-- "MongoDB" : "\tHTTPS"
+"Web App" -down- "Wikidata" : " HTTPS (REST)"
+----
 

From fbe030d7ed61bfc24392ac5c4c21c10c64acb0a5 Mon Sep 17 00:00:00 2001
From: Abel <abelmhov7l@gmail.com>
Date: Sun, 25 Feb 2024 20:44:13 +0100
Subject: [PATCH 16/94] Added whitespaces to improve the formatting of the
 diagram

---
 docs/src/07_deployment_view.adoc | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/docs/src/07_deployment_view.adoc b/docs/src/07_deployment_view.adoc
index ec5469dd..86631271 100644
--- a/docs/src/07_deployment_view.adoc
+++ b/docs/src/07_deployment_view.adoc
@@ -59,7 +59,7 @@ For multiple environments or alternative deployments please copy and adapt this
 ----
 !pragma layout smetana
 
-cloud "Azure Cloud" {
+cloud "Azure Cloud\n" {
     node "Virtual Machine" {
         node "Docker" {
             node "App Container"{
@@ -68,19 +68,19 @@ cloud "Azure Cloud" {
             node "Gateway Container"{
                 node "Gateway Service"
             }
-            node "User Container"{
+            node "  User Container  "{
                 node "User Service"
             }
-            node "Auth Container"{
+            node "  Auth Container  "{
                 node "Auth Service"
             }
-            node "Game Container"{
+            node "\tGame Container\t"{
                 node "Game Generator Service"
             }
             node "Questions History Container"{
                 node "Questions History Service"
             }
-            node "User Stats Container"{
+            node "User Stats Container\t"{
                 node "User Stats Service"
             }
             node "Questions Generator Container"{

From e2e6f3b6ee1b91d687974c6cd7c3091b655d4cd1 Mon Sep 17 00:00:00 2001
From: Liliana <uo288574@uniovi.es>
Date: Mon, 26 Feb 2024 19:47:40 +0100
Subject: [PATCH 17/94] =?UTF-8?q?Correcci=C3=B3n=20documentaci=C3=B3n?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 docs/src/10_quality_requirements.adoc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/docs/src/10_quality_requirements.adoc b/docs/src/10_quality_requirements.adoc
index 13134a57..b315bfa6 100644
--- a/docs/src/10_quality_requirements.adoc
+++ b/docs/src/10_quality_requirements.adoc
@@ -96,7 +96,7 @@ occurs.
 |The user must correctly answer questions on different topics. This will improve the user experience and maintain the interest of the participants.
 |High
 
-|Integrity
+|Reliability
 |The game must be played without errors.
 |The answer determined as correct for each question by the system shall be the one that is actually correct.
 |Medium

From b2941cf28892ce3944599e9cf535735318db0135 Mon Sep 17 00:00:00 2001
From: Marco Quintana <UO287872@uniovi.es>
Date: Thu, 29 Feb 2024 23:41:16 +0100
Subject: [PATCH 18/94] Inicio del prototipo del almacen de preguntas

---
 webapp/src/storeQuestion/App.jsx              |  32 ++++++
 .../src/storeQuestion/components/Question.jsx |  18 +++
 webapp/src/storeQuestion/css/questions.css    | 105 ++++++++++++++++++
 webapp/src/storeQuestion/main.jsx             |  10 ++
 4 files changed, 165 insertions(+)
 create mode 100644 webapp/src/storeQuestion/App.jsx
 create mode 100644 webapp/src/storeQuestion/components/Question.jsx
 create mode 100644 webapp/src/storeQuestion/css/questions.css
 create mode 100644 webapp/src/storeQuestion/main.jsx

diff --git a/webapp/src/storeQuestion/App.jsx b/webapp/src/storeQuestion/App.jsx
new file mode 100644
index 00000000..052b0e24
--- /dev/null
+++ b/webapp/src/storeQuestion/App.jsx
@@ -0,0 +1,32 @@
+import Question from './components/Question';
+
+function App(){
+    const newQuestion = {
+        question: '¿Cuál es tu pregunta?',
+        answers: ['Respuesta 1', 'Respuesta 2', 'Respuesta 3', 'Respuesta 4']
+    };
+
+    const newQuestion1 = {
+        question: '¿Cuál es la capital de la comunidad autónoma de Castilla y León?',
+        answers: ['Segovia','León','Valladolid','Ninguna'],
+      };
+      const newQuestion2 = {
+        question: '¿Cuál es la capital Italia?',
+        answers: ['Roma','Nápoles','Florencia','Milán'],
+      };
+      const newQuestion3 = {
+        question: '¿Cuál es el país mas poblado de la tierra?',
+        answers: ['China','Estados Unidos','Brazil','India'],
+      };
+    
+    return (
+        <>
+          <Question newQuestion={newQuestion} />
+          <Question newQuestion={newQuestion2} />
+          <Question newQuestion={newQuestion1} />
+          <Question newQuestion={newQuestion3} />
+        </>
+    );
+}
+
+export default App;
\ No newline at end of file
diff --git a/webapp/src/storeQuestion/components/Question.jsx b/webapp/src/storeQuestion/components/Question.jsx
new file mode 100644
index 00000000..cd14a5bc
--- /dev/null
+++ b/webapp/src/storeQuestion/components/Question.jsx
@@ -0,0 +1,18 @@
+import React from 'react';
+
+function Question(props) {
+  const { newQuestion } = props;
+
+  return (
+    <div className='question'>
+      <h3>{newQuestion.question}</h3>
+        <div className='grid'>
+        {newQuestion.answers.map((answer, index) => (
+            <p>{answer}</p>
+        ))}
+        </div>
+    </div>
+  );
+}
+
+export default Question;
diff --git a/webapp/src/storeQuestion/css/questions.css b/webapp/src/storeQuestion/css/questions.css
new file mode 100644
index 00000000..bb400f08
--- /dev/null
+++ b/webapp/src/storeQuestion/css/questions.css
@@ -0,0 +1,105 @@
+/* Right Answers */
+/*{
+    /* RGB & HSL params *//*
+    --label-r: 0;
+    --label-g: 255;
+    --label-b: 0;
+    --label-h: 120;
+    --label-s: 100;
+    --label-l: 50;
+
+    --perceived-lightness: calc( ((var(--label-r) * 0.2126) + (var(--label-g) * 0.7152) + (var(--label-b) * 0.0722)) / 255 );
+    --lightness-switch: max(0, min(calc((1/(var(--lightness-threshold) - var(--perceived-lightness)))), 1));
+    --lightness-threshold: 0.6;
+    --background-alpha: 0.18;
+    --border-alpha: 0.3;
+    --lighten-by: calc(((var(--lightness-threshold) - var(--perceived-lightness)) * 100) * var(--lightness-switch));
+    color: hsl(var(--label-h), calc(var(--label-s) * 1%), calc((var(--label-l) + var(--lighten-by)) * 1%));
+    background: rgba(var(--label-r), var(--label-g), var(--label-b), var(--background-alpha));
+    border-color: hsla(var(--label-h), calc(var(--label-s) * 1%), calc((var(--label-l) + var(--lighten-by)) * 1%), var(--border-alpha));
+}*/
+
+/* Wrong Answers */
+/*{
+    /* RGB & HSL params *//*
+    --label-r: 255;
+    --label-g: 0;
+    --label-b: 0;
+    --label-h: 0;
+    --label-s: 100;
+    --label-l: 50;
+
+    --perceived-lightness: calc( ((var(--label-r) * 0.2126) + (var(--label-g) * 0.7152) + (var(--label-b) * 0.0722)) / 255 );
+    --lightness-switch: max(0, min(calc((1/(var(--lightness-threshold) - var(--perceived-lightness)))), 1));
+    --lightness-threshold: 0.6;
+    --background-alpha: 0.18;
+    --border-alpha: 0.3;
+    --lighten-by: calc(((var(--lightness-threshold) - var(--perceived-lightness)) * 100) * var(--lightness-switch));
+    color: hsl(var(--label-h), calc(var(--label-s) * 1%), calc((var(--label-l) + var(--lighten-by)) * 1%));
+    background: rgba(var(--label-r), var(--label-g), var(--label-b), var(--background-alpha));
+    border-color: hsla(var(--label-h), calc(var(--label-s) * 1%), calc((var(--label-l) + var(--lighten-by)) * 1%), var(--border-alpha));
+}*/
+
+.question{
+    /* RGB & HSL params */
+    --label-r: 128;
+    --label-g: 128;
+    --label-b: 128;
+    --label-h: 0;
+    --label-s: 0;
+    --label-l: 50;
+
+    --perceived-lightness: calc( ((var(--label-r) * 0.2126) + (var(--label-g) * 0.7152) + (var(--label-b) * 0.0722)) / 255 );
+    --lightness-switch: max(0, min(calc((1/(var(--lightness-threshold) - var(--perceived-lightness)))), 1));
+    --lightness-threshold: 0.6;
+    --background-alpha: 0.18;
+    --border-alpha: 0.3;
+    --lighten-by: calc(((var(--lightness-threshold) - var(--perceived-lightness)) * 100) * var(--lightness-switch));
+    color: hsl(var(--label-h), calc(var(--label-s) * 1%), calc((var(--label-l) + var(--lighten-by)) * 1%));
+    background: rgba(var(--label-r), var(--label-g), var(--label-b), var(--background-alpha));
+    border-color: hsla(var(--label-h), calc(var(--label-s) * 1%), calc((var(--label-l) + var(--lighten-by)) * 1%), var(--border-alpha));
+    
+}
+
+body{
+    background-color: #0d1117;
+}
+
+.question .grid p{
+    width: max-content;
+    border-style: dashed;
+    border-radius: 15%;
+    border-width: 1px;
+    padding: 1rem;
+
+    /* RGB & HSL params */
+    --label-r: 128;
+    --label-g: 128;
+    --label-b: 128;
+    --label-h: 0;
+    --label-s: 0;
+    --label-l: 50;
+
+    --perceived-lightness: calc( ((var(--label-r) * 0.2126) + (var(--label-g) * 0.7152) + (var(--label-b) * 0.0722)) / 255 );
+    --lightness-switch: max(0, min(calc((1/(var(--lightness-threshold) - var(--perceived-lightness)))), 1));
+    --lightness-threshold: 0.6;
+    --background-alpha: 0.18;
+    --border-alpha: 0.3;
+    --lighten-by: calc(((var(--lightness-threshold) - var(--perceived-lightness)) * 100) * var(--lightness-switch));
+    color: hsl(var(--label-h), calc(var(--label-s) * 1%), calc((var(--label-l) + var(--lighten-by)) * 1%));
+    background: rgba(var(--label-r), var(--label-g), var(--label-b), var(--background-alpha));
+    border-color: hsla(var(--label-h), calc(var(--label-s) * 1%), calc((var(--label-l) + var(--lighten-by)) * 1%), var(--border-alpha));
+}
+
+.question .grid{
+    display: grid;
+    grid-template-columns: auto auto;
+    padding: 5px;
+}
+
+#root {
+    display: grid;
+    grid-template-columns: repeat(auto-fit, minmax(40%, 1fr));
+    padding: 5px;
+    grid-gap: 10px;
+}
diff --git a/webapp/src/storeQuestion/main.jsx b/webapp/src/storeQuestion/main.jsx
new file mode 100644
index 00000000..883ef991
--- /dev/null
+++ b/webapp/src/storeQuestion/main.jsx
@@ -0,0 +1,10 @@
+import React from 'react'
+import ReactDOM from 'react-dom/client'
+import App from './App.jsx'
+//import 'bootstrap/dist/css/bootstrap.css'
+
+ReactDOM.createRoot(document.getElementById('root')).render(
+  <React.StrictMode>
+    <App />
+  </React.StrictMode>,
+)

From f2cea6626734c731d2ec5b3f0d259a656e2b8fea Mon Sep 17 00:00:00 2001
From: Abel <abelmhov7l@gmail.com>
Date: Fri, 1 Mar 2024 01:30:35 +0100
Subject: [PATCH 19/94] First version for the question service API

---
 .../questionsgenerator/Dockerfile             |   20 +
 .../questionsgenerator/package-lock.json      | 1297 +++++++++++++++++
 .../questionsgenerator/package.json           |   28 +
 .../questionsgenerator/questions-model.js     |   43 +
 .../questionsgenerator/questions-service.js   |   57 +
 5 files changed, 1445 insertions(+)
 create mode 100644 questionsservice/questionsgenerator/Dockerfile
 create mode 100644 questionsservice/questionsgenerator/package-lock.json
 create mode 100644 questionsservice/questionsgenerator/package.json
 create mode 100644 questionsservice/questionsgenerator/questions-model.js
 create mode 100644 questionsservice/questionsgenerator/questions-service.js

diff --git a/questionsservice/questionsgenerator/Dockerfile b/questionsservice/questionsgenerator/Dockerfile
new file mode 100644
index 00000000..6faf38d4
--- /dev/null
+++ b/questionsservice/questionsgenerator/Dockerfile
@@ -0,0 +1,20 @@
+# Use an official Node.js runtime as a parent image
+FROM node:20
+
+# Set the working directory in the container
+WORKDIR /usr/src/questionsservice/questionsgenerator
+
+# Copy package.json and package-lock.json to the working directory
+COPY package*.json ./
+
+# Install app dependencies
+RUN npm install
+
+# Copy the app source code to the working directory
+COPY . .
+
+# Expose the port the app runs on
+EXPOSE 8006
+
+# Define the command to run your app
+CMD ["node", "questions-service.js"]
diff --git a/questionsservice/questionsgenerator/package-lock.json b/questionsservice/questionsgenerator/package-lock.json
new file mode 100644
index 00000000..1e7651d8
--- /dev/null
+++ b/questionsservice/questionsgenerator/package-lock.json
@@ -0,0 +1,1297 @@
+{
+  "name": "questionsgenerator",
+  "version": "1.0.0",
+  "lockfileVersion": 3,
+  "requires": true,
+  "packages": {
+    "": {
+      "name": "questionsgenerator",
+      "version": "1.0.0",
+      "license": "ISC",
+      "dependencies": {
+        "express": "^4.18.2",
+        "mongoose": "^8.2.0"
+      },
+      "devDependencies": {
+        "nodemon": "^3.1.0"
+      }
+    },
+    "node_modules/@mongodb-js/saslprep": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.4.tgz",
+      "integrity": "sha512-8zJ8N1x51xo9hwPh6AWnKdLGEC5N3lDa6kms1YHmFBoRhTpJR6HG8wWk0td1MVCu9cD4YBrvjZEtd5Obw0Fbnw==",
+      "dependencies": {
+        "sparse-bitfield": "^3.0.3"
+      }
+    },
+    "node_modules/@types/webidl-conversions": {
+      "version": "7.0.3",
+      "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz",
+      "integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA=="
+    },
+    "node_modules/@types/whatwg-url": {
+      "version": "11.0.4",
+      "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-11.0.4.tgz",
+      "integrity": "sha512-lXCmTWSHJvf0TRSO58nm978b8HJ/EdsSsEKLd3ODHFjo+3VGAyyTp4v50nWvwtzBxSMQrVOK7tcuN0zGPLICMw==",
+      "dependencies": {
+        "@types/webidl-conversions": "*"
+      }
+    },
+    "node_modules/abbrev": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
+      "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
+      "dev": true
+    },
+    "node_modules/accepts": {
+      "version": "1.3.8",
+      "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
+      "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
+      "dependencies": {
+        "mime-types": "~2.1.34",
+        "negotiator": "0.6.3"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/anymatch": {
+      "version": "3.1.3",
+      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+      "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+      "dev": true,
+      "dependencies": {
+        "normalize-path": "^3.0.0",
+        "picomatch": "^2.0.4"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/array-flatten": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+      "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
+    },
+    "node_modules/balanced-match": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+      "dev": true
+    },
+    "node_modules/binary-extensions": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
+      "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/body-parser": {
+      "version": "1.20.1",
+      "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz",
+      "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==",
+      "dependencies": {
+        "bytes": "3.1.2",
+        "content-type": "~1.0.4",
+        "debug": "2.6.9",
+        "depd": "2.0.0",
+        "destroy": "1.2.0",
+        "http-errors": "2.0.0",
+        "iconv-lite": "0.4.24",
+        "on-finished": "2.4.1",
+        "qs": "6.11.0",
+        "raw-body": "2.5.1",
+        "type-is": "~1.6.18",
+        "unpipe": "1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8",
+        "npm": "1.2.8000 || >= 1.4.16"
+      }
+    },
+    "node_modules/brace-expansion": {
+      "version": "1.1.11",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+      "dev": true,
+      "dependencies": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "node_modules/braces": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+      "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+      "dev": true,
+      "dependencies": {
+        "fill-range": "^7.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/bson": {
+      "version": "6.3.0",
+      "resolved": "https://registry.npmjs.org/bson/-/bson-6.3.0.tgz",
+      "integrity": "sha512-balJfqwwTBddxfnidJZagCBPP/f48zj9Sdp3OJswREOgsJzHiQSaOIAtApSgDQFYgHqAvFkp53AFSqjMDZoTFw==",
+      "engines": {
+        "node": ">=16.20.1"
+      }
+    },
+    "node_modules/bytes": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
+      "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/call-bind": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
+      "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
+      "dependencies": {
+        "es-define-property": "^1.0.0",
+        "es-errors": "^1.3.0",
+        "function-bind": "^1.1.2",
+        "get-intrinsic": "^1.2.4",
+        "set-function-length": "^1.2.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/chokidar": {
+      "version": "3.6.0",
+      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
+      "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
+      "dev": true,
+      "dependencies": {
+        "anymatch": "~3.1.2",
+        "braces": "~3.0.2",
+        "glob-parent": "~5.1.2",
+        "is-binary-path": "~2.1.0",
+        "is-glob": "~4.0.1",
+        "normalize-path": "~3.0.0",
+        "readdirp": "~3.6.0"
+      },
+      "engines": {
+        "node": ">= 8.10.0"
+      },
+      "funding": {
+        "url": "https://paulmillr.com/funding/"
+      },
+      "optionalDependencies": {
+        "fsevents": "~2.3.2"
+      }
+    },
+    "node_modules/concat-map": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+      "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+      "dev": true
+    },
+    "node_modules/content-disposition": {
+      "version": "0.5.4",
+      "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
+      "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
+      "dependencies": {
+        "safe-buffer": "5.2.1"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/content-type": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
+      "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/cookie": {
+      "version": "0.5.0",
+      "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
+      "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/cookie-signature": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+      "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
+    },
+    "node_modules/debug": {
+      "version": "2.6.9",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/define-data-property": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
+      "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
+      "dependencies": {
+        "es-define-property": "^1.0.0",
+        "es-errors": "^1.3.0",
+        "gopd": "^1.0.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/depd": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+      "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/destroy": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
+      "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
+      "engines": {
+        "node": ">= 0.8",
+        "npm": "1.2.8000 || >= 1.4.16"
+      }
+    },
+    "node_modules/ee-first": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+      "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
+    },
+    "node_modules/encodeurl": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+      "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/es-define-property": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
+      "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
+      "dependencies": {
+        "get-intrinsic": "^1.2.4"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/es-errors": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+      "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/escape-html": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+      "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
+    },
+    "node_modules/etag": {
+      "version": "1.8.1",
+      "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+      "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/express": {
+      "version": "4.18.2",
+      "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
+      "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
+      "dependencies": {
+        "accepts": "~1.3.8",
+        "array-flatten": "1.1.1",
+        "body-parser": "1.20.1",
+        "content-disposition": "0.5.4",
+        "content-type": "~1.0.4",
+        "cookie": "0.5.0",
+        "cookie-signature": "1.0.6",
+        "debug": "2.6.9",
+        "depd": "2.0.0",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "etag": "~1.8.1",
+        "finalhandler": "1.2.0",
+        "fresh": "0.5.2",
+        "http-errors": "2.0.0",
+        "merge-descriptors": "1.0.1",
+        "methods": "~1.1.2",
+        "on-finished": "2.4.1",
+        "parseurl": "~1.3.3",
+        "path-to-regexp": "0.1.7",
+        "proxy-addr": "~2.0.7",
+        "qs": "6.11.0",
+        "range-parser": "~1.2.1",
+        "safe-buffer": "5.2.1",
+        "send": "0.18.0",
+        "serve-static": "1.15.0",
+        "setprototypeof": "1.2.0",
+        "statuses": "2.0.1",
+        "type-is": "~1.6.18",
+        "utils-merge": "1.0.1",
+        "vary": "~1.1.2"
+      },
+      "engines": {
+        "node": ">= 0.10.0"
+      }
+    },
+    "node_modules/fill-range": {
+      "version": "7.0.1",
+      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+      "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+      "dev": true,
+      "dependencies": {
+        "to-regex-range": "^5.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/finalhandler": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
+      "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
+      "dependencies": {
+        "debug": "2.6.9",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "on-finished": "2.4.1",
+        "parseurl": "~1.3.3",
+        "statuses": "2.0.1",
+        "unpipe": "~1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/forwarded": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
+      "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/fresh": {
+      "version": "0.5.2",
+      "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+      "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/fsevents": {
+      "version": "2.3.3",
+      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+      "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+      "dev": true,
+      "hasInstallScript": true,
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+      }
+    },
+    "node_modules/function-bind": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+      "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/get-intrinsic": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
+      "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
+      "dependencies": {
+        "es-errors": "^1.3.0",
+        "function-bind": "^1.1.2",
+        "has-proto": "^1.0.1",
+        "has-symbols": "^1.0.3",
+        "hasown": "^2.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/glob-parent": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+      "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+      "dev": true,
+      "dependencies": {
+        "is-glob": "^4.0.1"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/gopd": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
+      "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+      "dependencies": {
+        "get-intrinsic": "^1.1.3"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/has-flag": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+      "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/has-property-descriptors": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
+      "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
+      "dependencies": {
+        "es-define-property": "^1.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/has-proto": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz",
+      "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/has-symbols": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+      "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/hasown": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.1.tgz",
+      "integrity": "sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==",
+      "dependencies": {
+        "function-bind": "^1.1.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/http-errors": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
+      "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+      "dependencies": {
+        "depd": "2.0.0",
+        "inherits": "2.0.4",
+        "setprototypeof": "1.2.0",
+        "statuses": "2.0.1",
+        "toidentifier": "1.0.1"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/iconv-lite": {
+      "version": "0.4.24",
+      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+      "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+      "dependencies": {
+        "safer-buffer": ">= 2.1.2 < 3"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/ignore-by-default": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz",
+      "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==",
+      "dev": true
+    },
+    "node_modules/inherits": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+    },
+    "node_modules/ipaddr.js": {
+      "version": "1.9.1",
+      "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
+      "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
+      "engines": {
+        "node": ">= 0.10"
+      }
+    },
+    "node_modules/is-binary-path": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+      "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+      "dev": true,
+      "dependencies": {
+        "binary-extensions": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/is-extglob": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+      "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-glob": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+      "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+      "dev": true,
+      "dependencies": {
+        "is-extglob": "^2.1.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-number": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+      "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.12.0"
+      }
+    },
+    "node_modules/kareem": {
+      "version": "2.5.1",
+      "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.5.1.tgz",
+      "integrity": "sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA==",
+      "engines": {
+        "node": ">=12.0.0"
+      }
+    },
+    "node_modules/lru-cache": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+      "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+      "dev": true,
+      "dependencies": {
+        "yallist": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/media-typer": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+      "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/memory-pager": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
+      "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg=="
+    },
+    "node_modules/merge-descriptors": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
+      "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
+    },
+    "node_modules/methods": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
+      "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/mime": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+      "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+      "bin": {
+        "mime": "cli.js"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/mime-db": {
+      "version": "1.52.0",
+      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+      "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/mime-types": {
+      "version": "2.1.35",
+      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+      "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+      "dependencies": {
+        "mime-db": "1.52.0"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/minimatch": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+      "dev": true,
+      "dependencies": {
+        "brace-expansion": "^1.1.7"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/mongodb": {
+      "version": "6.3.0",
+      "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.3.0.tgz",
+      "integrity": "sha512-tt0KuGjGtLUhLoU263+xvQmPHEGTw5LbcNC73EoFRYgSHwZt5tsoJC110hDyO1kjQzpgNrpdcSza9PknWN4LrA==",
+      "dependencies": {
+        "@mongodb-js/saslprep": "^1.1.0",
+        "bson": "^6.2.0",
+        "mongodb-connection-string-url": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=16.20.1"
+      },
+      "peerDependencies": {
+        "@aws-sdk/credential-providers": "^3.188.0",
+        "@mongodb-js/zstd": "^1.1.0",
+        "gcp-metadata": "^5.2.0",
+        "kerberos": "^2.0.1",
+        "mongodb-client-encryption": ">=6.0.0 <7",
+        "snappy": "^7.2.2",
+        "socks": "^2.7.1"
+      },
+      "peerDependenciesMeta": {
+        "@aws-sdk/credential-providers": {
+          "optional": true
+        },
+        "@mongodb-js/zstd": {
+          "optional": true
+        },
+        "gcp-metadata": {
+          "optional": true
+        },
+        "kerberos": {
+          "optional": true
+        },
+        "mongodb-client-encryption": {
+          "optional": true
+        },
+        "snappy": {
+          "optional": true
+        },
+        "socks": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/mongodb-connection-string-url": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.0.tgz",
+      "integrity": "sha512-t1Vf+m1I5hC2M5RJx/7AtxgABy1cZmIPQRMXw+gEIPn/cZNF3Oiy+l0UIypUwVB5trcWHq3crg2g3uAR9aAwsQ==",
+      "dependencies": {
+        "@types/whatwg-url": "^11.0.2",
+        "whatwg-url": "^13.0.0"
+      }
+    },
+    "node_modules/mongoose": {
+      "version": "8.2.0",
+      "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.2.0.tgz",
+      "integrity": "sha512-la93n6zCYRbPS+c5N9oTDAktvREy5OT9OCljp1Tah0y3+p8UPMTAoabWaLZMdzYruOtF9/9GRf6MasaZjiZP1A==",
+      "dependencies": {
+        "bson": "^6.2.0",
+        "kareem": "2.5.1",
+        "mongodb": "6.3.0",
+        "mpath": "0.9.0",
+        "mquery": "5.0.0",
+        "ms": "2.1.3",
+        "sift": "16.0.1"
+      },
+      "engines": {
+        "node": ">=16.20.1"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/mongoose"
+      }
+    },
+    "node_modules/mongoose/node_modules/ms": {
+      "version": "2.1.3",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+      "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
+    },
+    "node_modules/mpath": {
+      "version": "0.9.0",
+      "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz",
+      "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==",
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
+    "node_modules/mquery": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz",
+      "integrity": "sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==",
+      "dependencies": {
+        "debug": "4.x"
+      },
+      "engines": {
+        "node": ">=14.0.0"
+      }
+    },
+    "node_modules/mquery/node_modules/debug": {
+      "version": "4.3.4",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+      "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+      "dependencies": {
+        "ms": "2.1.2"
+      },
+      "engines": {
+        "node": ">=6.0"
+      },
+      "peerDependenciesMeta": {
+        "supports-color": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/mquery/node_modules/ms": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+    },
+    "node_modules/ms": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+      "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+    },
+    "node_modules/negotiator": {
+      "version": "0.6.3",
+      "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
+      "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/nodemon": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.0.tgz",
+      "integrity": "sha512-xqlktYlDMCepBJd43ZQhjWwMw2obW/JRvkrLxq5RCNcuDDX1DbcPT+qT1IlIIdf+DhnWs90JpTMe+Y5KxOchvA==",
+      "dev": true,
+      "dependencies": {
+        "chokidar": "^3.5.2",
+        "debug": "^4",
+        "ignore-by-default": "^1.0.1",
+        "minimatch": "^3.1.2",
+        "pstree.remy": "^1.1.8",
+        "semver": "^7.5.3",
+        "simple-update-notifier": "^2.0.0",
+        "supports-color": "^5.5.0",
+        "touch": "^3.1.0",
+        "undefsafe": "^2.0.5"
+      },
+      "bin": {
+        "nodemon": "bin/nodemon.js"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/nodemon"
+      }
+    },
+    "node_modules/nodemon/node_modules/debug": {
+      "version": "4.3.4",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+      "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+      "dev": true,
+      "dependencies": {
+        "ms": "2.1.2"
+      },
+      "engines": {
+        "node": ">=6.0"
+      },
+      "peerDependenciesMeta": {
+        "supports-color": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/nodemon/node_modules/ms": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+      "dev": true
+    },
+    "node_modules/nopt": {
+      "version": "1.0.10",
+      "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
+      "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==",
+      "dev": true,
+      "dependencies": {
+        "abbrev": "1"
+      },
+      "bin": {
+        "nopt": "bin/nopt.js"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/normalize-path": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+      "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/object-inspect": {
+      "version": "1.13.1",
+      "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
+      "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/on-finished": {
+      "version": "2.4.1",
+      "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
+      "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
+      "dependencies": {
+        "ee-first": "1.1.1"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/parseurl": {
+      "version": "1.3.3",
+      "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+      "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/path-to-regexp": {
+      "version": "0.1.7",
+      "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
+      "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
+    },
+    "node_modules/picomatch": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+      "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+      "dev": true,
+      "engines": {
+        "node": ">=8.6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/jonschlinkert"
+      }
+    },
+    "node_modules/proxy-addr": {
+      "version": "2.0.7",
+      "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
+      "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
+      "dependencies": {
+        "forwarded": "0.2.0",
+        "ipaddr.js": "1.9.1"
+      },
+      "engines": {
+        "node": ">= 0.10"
+      }
+    },
+    "node_modules/pstree.remy": {
+      "version": "1.1.8",
+      "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz",
+      "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==",
+      "dev": true
+    },
+    "node_modules/punycode": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+      "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/qs": {
+      "version": "6.11.0",
+      "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
+      "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
+      "dependencies": {
+        "side-channel": "^1.0.4"
+      },
+      "engines": {
+        "node": ">=0.6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/range-parser": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+      "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/raw-body": {
+      "version": "2.5.1",
+      "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
+      "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
+      "dependencies": {
+        "bytes": "3.1.2",
+        "http-errors": "2.0.0",
+        "iconv-lite": "0.4.24",
+        "unpipe": "1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/readdirp": {
+      "version": "3.6.0",
+      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+      "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+      "dev": true,
+      "dependencies": {
+        "picomatch": "^2.2.1"
+      },
+      "engines": {
+        "node": ">=8.10.0"
+      }
+    },
+    "node_modules/safe-buffer": {
+      "version": "5.2.1",
+      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+      "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ]
+    },
+    "node_modules/safer-buffer": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+    },
+    "node_modules/semver": {
+      "version": "7.6.0",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
+      "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
+      "dev": true,
+      "dependencies": {
+        "lru-cache": "^6.0.0"
+      },
+      "bin": {
+        "semver": "bin/semver.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/send": {
+      "version": "0.18.0",
+      "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
+      "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
+      "dependencies": {
+        "debug": "2.6.9",
+        "depd": "2.0.0",
+        "destroy": "1.2.0",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "etag": "~1.8.1",
+        "fresh": "0.5.2",
+        "http-errors": "2.0.0",
+        "mime": "1.6.0",
+        "ms": "2.1.3",
+        "on-finished": "2.4.1",
+        "range-parser": "~1.2.1",
+        "statuses": "2.0.1"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/send/node_modules/ms": {
+      "version": "2.1.3",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+      "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
+    },
+    "node_modules/serve-static": {
+      "version": "1.15.0",
+      "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
+      "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
+      "dependencies": {
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "parseurl": "~1.3.3",
+        "send": "0.18.0"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/set-function-length": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.1.tgz",
+      "integrity": "sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==",
+      "dependencies": {
+        "define-data-property": "^1.1.2",
+        "es-errors": "^1.3.0",
+        "function-bind": "^1.1.2",
+        "get-intrinsic": "^1.2.3",
+        "gopd": "^1.0.1",
+        "has-property-descriptors": "^1.0.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/setprototypeof": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
+      "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
+    },
+    "node_modules/side-channel": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.5.tgz",
+      "integrity": "sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ==",
+      "dependencies": {
+        "call-bind": "^1.0.6",
+        "es-errors": "^1.3.0",
+        "get-intrinsic": "^1.2.4",
+        "object-inspect": "^1.13.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/sift": {
+      "version": "16.0.1",
+      "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.1.tgz",
+      "integrity": "sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ=="
+    },
+    "node_modules/simple-update-notifier": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz",
+      "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==",
+      "dev": true,
+      "dependencies": {
+        "semver": "^7.5.3"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/sparse-bitfield": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz",
+      "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==",
+      "dependencies": {
+        "memory-pager": "^1.0.2"
+      }
+    },
+    "node_modules/statuses": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+      "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/supports-color": {
+      "version": "5.5.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+      "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+      "dev": true,
+      "dependencies": {
+        "has-flag": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/to-regex-range": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+      "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+      "dev": true,
+      "dependencies": {
+        "is-number": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=8.0"
+      }
+    },
+    "node_modules/toidentifier": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
+      "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
+      "engines": {
+        "node": ">=0.6"
+      }
+    },
+    "node_modules/touch": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz",
+      "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==",
+      "dev": true,
+      "dependencies": {
+        "nopt": "~1.0.10"
+      },
+      "bin": {
+        "nodetouch": "bin/nodetouch.js"
+      }
+    },
+    "node_modules/tr46": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz",
+      "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==",
+      "dependencies": {
+        "punycode": "^2.3.0"
+      },
+      "engines": {
+        "node": ">=14"
+      }
+    },
+    "node_modules/type-is": {
+      "version": "1.6.18",
+      "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+      "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+      "dependencies": {
+        "media-typer": "0.3.0",
+        "mime-types": "~2.1.24"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/undefsafe": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz",
+      "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==",
+      "dev": true
+    },
+    "node_modules/unpipe": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+      "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/utils-merge": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+      "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
+      "engines": {
+        "node": ">= 0.4.0"
+      }
+    },
+    "node_modules/vary": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+      "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/webidl-conversions": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
+      "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==",
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/whatwg-url": {
+      "version": "13.0.0",
+      "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-13.0.0.tgz",
+      "integrity": "sha512-9WWbymnqj57+XEuqADHrCJ2eSXzn8WXIW/YSGaZtb2WKAInQ6CHfaUUcTyyver0p8BDg5StLQq8h1vtZuwmOig==",
+      "dependencies": {
+        "tr46": "^4.1.1",
+        "webidl-conversions": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=16"
+      }
+    },
+    "node_modules/yallist": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+      "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+      "dev": true
+    }
+  }
+}
diff --git a/questionsservice/questionsgenerator/package.json b/questionsservice/questionsgenerator/package.json
new file mode 100644
index 00000000..01986053
--- /dev/null
+++ b/questionsservice/questionsgenerator/package.json
@@ -0,0 +1,28 @@
+{
+  "name": "questionsgenerator",
+  "version": "1.0.0",
+  "description": "Questions service, in charge of generating and returning random questions in the application",
+  "main": "questions-model.js",
+  "scripts": {
+    "devStart": "nodemon questions-service.js",
+    "start": "node questions-service.js"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/arquisoft/wiq_es6c.git"
+  },
+  "keywords": [],
+  "author": "",
+  "license": "ISC",
+  "bugs": {
+    "url": "https://github.com/arquisoft/wiq_es6c/issues"
+  },
+  "homepage": "https://github.com/arquisoft/wiq_es6c#readme",
+  "dependencies": {
+    "express": "^4.18.2",
+    "mongoose": "^8.2.0"
+  },
+  "devDependencies": {
+    "nodemon": "^3.1.0"
+  }
+}
diff --git a/questionsservice/questionsgenerator/questions-model.js b/questionsservice/questionsgenerator/questions-model.js
new file mode 100644
index 00000000..621f61bf
--- /dev/null
+++ b/questionsservice/questionsgenerator/questions-model.js
@@ -0,0 +1,43 @@
+const mongoose = require('mongoose');
+
+const questionSchema = new mongoose.Schema({
+    pregunta: {
+        type: String,
+        required: true
+    },
+    respuestas: {
+        type: [String],
+        required: true
+    },
+    createdAt: {
+        type: Date,
+        required: true,
+        default: Date.now
+    }
+});
+
+const requestSchema = new mongoose.Schema({
+    n_preguntas: {
+        type: Number,
+        required: true,
+        default: 1
+    },
+    n_respuestas: {
+        type: Number,
+        required: true,
+        default: 4
+    },
+    tema: {
+        type: String,
+        required: true,
+        default: "todos"
+    }
+});
+
+const Question = mongoose.model('Question', questionSchema);
+const Request = mongoose.model('Request', requestSchema);
+
+module.exports = {
+    Question,
+    Request
+};
\ No newline at end of file
diff --git a/questionsservice/questionsgenerator/questions-service.js b/questionsservice/questionsgenerator/questions-service.js
new file mode 100644
index 00000000..6b97c119
--- /dev/null
+++ b/questionsservice/questionsgenerator/questions-service.js
@@ -0,0 +1,57 @@
+const express = require('express');
+const mongoose = require('mongoose');
+const {Question} = require('./questions-model')
+const {Request} = require('./questions-model')
+
+const app = express();
+const port = 8006; 
+
+// Connect to MongoDB
+const mongoUri = process.env.MONGODB_URI || 'mongodb://localhost/questions';
+mongoose.connect(mongoUri);
+const db = mongoose.connection;
+db.on('error', (error) => console.error(`MongoDB connection error: ${error}`));
+db.once('open', () => console.log("Connected to MongoDB"));
+
+// Middleware to parse JSON in request body
+app.use(express.json());
+
+// Route for getting questions
+app.get('/questions', async (req, res) => {
+  try {
+    const request = new Request({
+      n_preguntas: Number(req.body.n_preguntas),
+      n_respuestas: Number(req.body.n_respuestas),
+      tema: req.body.tema
+    });
+
+    // TODO: Implement logic to fetch questions from MongoDB and send response 
+    // const questions = await Question.find()
+    // res.json(questions)
+    const defaultQuestion = new Question({
+      pregunta: "¿Cómo me llamo?",
+      respuestas: ["Abel", "Federico", "Eusebio", "Gervasio"]
+    });
+    res.json(defaultQuestion);
+  } catch (error) {
+    // res.status(500).json({ message: error.message })
+    res.status(500).json({ error: 'Internal Server Error' });
+  }
+});
+
+app.use((err, req, res, next) => {
+  console.error(`An error occurred: ${err}`);
+  res.status(500).send(`An error occurred: ${err.message}`);
+});
+
+// Start the server
+const server = app.listen(port, () => {
+  console.log(`Questions Service listening at http://localhost:${port}`);
+});
+
+server.on('close', () => {
+    // Close the Mongoose connection
+    mongoose.connection.close();
+  });
+
+module.exports = server

From 494e137f89934a3af1d8725b62070b6a22f60f9a Mon Sep 17 00:00:00 2001
From: Liliana <uo288574@uniovi.es>
Date: Fri, 1 Mar 2024 09:28:38 +0100
Subject: [PATCH 20/94] imagen arbol actualizada

---
 docs/images/QualityTree.png | Bin 80328 -> 83428 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)

diff --git a/docs/images/QualityTree.png b/docs/images/QualityTree.png
index 6266b73f273723ffec6e08b42122a8b78058c596..e562dda5278faf0311450742ae7f1854cf299a2f 100644
GIT binary patch
literal 83428
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
Svw*(I@j3U|;SkfW>Hi12{EAKh

literal 80328
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


From b52653e794680dd29b64f89c12e5677af3b45a5c Mon Sep 17 00:00:00 2001
From: Liliana <uo288574@uniovi.es>
Date: Fri, 1 Mar 2024 09:33:10 +0100
Subject: [PATCH 21/94] =?UTF-8?q?cambio=20documentaci=C3=B3n=20apartado=20?=
 =?UTF-8?q?10?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 docs/src/10_quality_requirements.adoc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/docs/src/10_quality_requirements.adoc b/docs/src/10_quality_requirements.adoc
index b315bfa6..f48e10c7 100644
--- a/docs/src/10_quality_requirements.adoc
+++ b/docs/src/10_quality_requirements.adoc
@@ -96,7 +96,7 @@ occurs.
 |The user must correctly answer questions on different topics. This will improve the user experience and maintain the interest of the participants.
 |High
 
-|Reliability
+|Fiability
 |The game must be played without errors.
 |The answer determined as correct for each question by the system shall be the one that is actually correct.
 |Medium

From fc4b0d97fef9a82f5193353b3710d778d9465cbf Mon Sep 17 00:00:00 2001
From: Marcos Barril Villaverde <marcos.barrilvillaverde@mycit.ie>
Date: Fri, 1 Mar 2024 11:10:39 +0100
Subject: [PATCH 22/94] Fixes on structured of the data stored

---
 storeQuestionService/package-lock.json  | 16 ----------------
 storeQuestionService/package.json       |  2 --
 storeQuestionService/store-q-model.js   |  3 ++-
 storeQuestionService/store-q-service.js | 20 +++++++++++---------
 storeQuestionService/store-q.test.js    | 16 ++++++++++------
 5 files changed, 23 insertions(+), 34 deletions(-)

diff --git a/storeQuestionService/package-lock.json b/storeQuestionService/package-lock.json
index a9495291..a66be16a 100644
--- a/storeQuestionService/package-lock.json
+++ b/storeQuestionService/package-lock.json
@@ -9,8 +9,6 @@
             "version": "1.0.0",
             "license": "ISC",
             "dependencies": {
-                "bcrypt": "^5.1.1",
-                "body-parser": "^1.20.2",
                 "express": "^4.18.2",
                 "jsonwebtoken": "^9.0.2",
                 "mongoose": "^8.0.4"
@@ -2465,20 +2463,6 @@
             "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
             "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
         },
-        "node_modules/fsevents": {
-            "version": "2.3.3",
-            "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
-            "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
-            "dev": true,
-            "hasInstallScript": true,
-            "optional": true,
-            "os": [
-                "darwin"
-            ],
-            "engines": {
-                "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
-            }
-        },
         "node_modules/function-bind": {
             "version": "1.1.2",
             "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
diff --git a/storeQuestionService/package.json b/storeQuestionService/package.json
index 94ccdbe2..97f314fc 100644
--- a/storeQuestionService/package.json
+++ b/storeQuestionService/package.json
@@ -18,8 +18,6 @@
     },
     "homepage": "https://github.com/arquisoft/wiq_es6c#readme",
     "dependencies": {
-        "bcrypt": "^5.1.1",
-        "body-parser": "^1.20.2",
         "express": "^4.18.2",
         "jsonwebtoken": "^9.0.2",
         "mongoose": "^8.0.4"
diff --git a/storeQuestionService/store-q-model.js b/storeQuestionService/store-q-model.js
index f3423c9a..ffa1730a 100644
--- a/storeQuestionService/store-q-model.js
+++ b/storeQuestionService/store-q-model.js
@@ -5,7 +5,8 @@ const questionStorageSchema = new mongoose.Schema({
         type: String,
         required: true,
     },
-    answers: [{ type: String, required: true }],
+    c_answer: { type: String, required: true },
+    w_answers: [{ type: String, required: true }],
     createdAt: {
         type: Date,
         default: Date.now, 
diff --git a/storeQuestionService/store-q-service.js b/storeQuestionService/store-q-service.js
index 219f2ed2..35332720 100644
--- a/storeQuestionService/store-q-service.js
+++ b/storeQuestionService/store-q-service.js
@@ -25,11 +25,12 @@ function validateRequiredFields(req, requiredFields) {
 app.post('/addquestion', async (req, res) => {
     try {
         // Check if required fields are present in the request body
-        validateRequiredFields(req, ['question', 'answers']);
+        validateRequiredFields(req, ['question', 'c_answer','w_answers']);
 
         const newQuestion = new Question({
             question: req.body.question,
-            answers: req.body.answers,
+            c_answer: req.body.answers,
+            w_answers: req.body.answers,
         });
 
         await newQuestion.save();
@@ -46,19 +47,20 @@ app.post('/addquestions', async (req, res) => {
           throw new Error('Invalid request format. Expected an array of questions.');
       }
       for (const question of req.body) {
-          validateRequiredFields(question, ['question', 'answers']);
+          validateRequiredFields(question, ['question', 'c_answer','w_answers']);
       }
 
       const newQuestions = [];
 
       for (const questionData of req.body) {
-          const newQuestion = new Question({
-              question: questionData.question,
-              answers: questionData.answers,
-          });
+        const newQuestion = new Question({
+            question: req.body.question,
+            c_answer: req.body.answers,
+            w_answers: req.body.answers,
+        });
 
-          await newQuestion.save();
-          newQuestions.push(newQuestion);
+        await newQuestion.save();
+        newQuestions.push(newQuestion);
       }
       
       res.json(newQuestions);
diff --git a/storeQuestionService/store-q.test.js b/storeQuestionService/store-q.test.js
index 425849a5..1609a694 100644
--- a/storeQuestionService/store-q.test.js
+++ b/storeQuestionService/store-q.test.js
@@ -20,12 +20,13 @@ describe('Store questions service', () => {
   it('should add a new question on POST /addquestion', async () => {
     const newQuestion = {
       question: '¿Cuál es la capital de la comunidad autónoma de Castilla y León?',
-      answers: ['Segovia','León','Valladolid','Ninguna'],
+      c_answer: 'Ninguna',
+      w_answers: ['Segovia','León','Valladolid'],
     };
 
     const response = await request(app).post('/addquestion').send(newQuestion);
     expect(response.status).toBe(200);
-    expect(response.body).toHaveProperty('question', 'answers');
+    expect(response.body).toHaveProperty('question', 'c_answer', 'w_answers');
   });
 });
 
@@ -33,17 +34,20 @@ describe('Store questions service', () => {
   it('should get all questions on GET /questions', async () => {
     const newQuestion1 = {
       question: '¿Cuál es la capital de la comunidad autónoma de Castilla y León?',
-      answers: ['Segovia','León','Valladolid','Ninguna'],
+      c_answer: 'Ninguna',
+      w_answers: ['Segovia','León','Valladolid'],
     };
     const newQuestion2 = {
       question: '¿Cuál es la capital Italia?',
-      answers: ['Roma','Nápoles','Florencia','Milán'],
+      c_answer: 'Roma',
+      w_answers: ['Nápoles','Florencia','Milán'],
     };
     const newQuestion3 = {
       question: '¿Cuál es el país mas poblado de la tierra?',
-      answers: ['China','Estados Unidos','Brazil','India'],
+      c_answer: 'India',
+      w_answers: ['China','Estados Unidos','Brazil'],
     };
-
+  
     request(app).post('/addquestion').send(newQuestion1);
     request(app).post('/addquestion').send(newQuestion2);
     request(app).post('/addquestion').send(newQuestion3);

From 97c355b880ca9f824716b5365b644f4ebe44e50a Mon Sep 17 00:00:00 2001
From: Abel <abelmhov7l@gmail.com>
Date: Sat, 2 Mar 2024 00:48:16 +0100
Subject: [PATCH 23/94] Added new mongodb_wiki database container and a
 container for the questiongenerator-service

---
 docker-compose.yml                            | 26 +++++++++++++++++++
 .../Dockerfile                                |  4 +--
 .../package-lock.json                         |  4 +--
 .../package.json                              |  8 +++---
 .../questiongenerator-model.js}               |  0
 .../questiongenerator-service.js}             |  8 +++---
 6 files changed, 38 insertions(+), 12 deletions(-)
 rename questionsservice/{questionsgenerator => questiongeneratorservice}/Dockerfile (79%)
 rename questionsservice/{questionsgenerator => questiongeneratorservice}/package-lock.json (99%)
 rename questionsservice/{questionsgenerator => questiongeneratorservice}/package.json (75%)
 rename questionsservice/{questionsgenerator/questions-model.js => questiongeneratorservice/questiongenerator-model.js} (100%)
 rename questionsservice/{questionsgenerator/questions-service.js => questiongeneratorservice/questiongenerator-service.js} (88%)

diff --git a/docker-compose.yml b/docker-compose.yml
index 6d256c2a..0fd03c84 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -11,6 +11,17 @@ services:
     networks:
       - mynetwork
 
+  mongodb_wiki:
+    container_name: mongodb-wiki-${teamname:-defaultASW}
+    image: mongo
+    profiles: ["dev", "prod"]
+    volumes:
+      - mongodb_wiki_data:/data/db
+    ports:
+      - "27018:27017"
+    networks:
+      - mynetwork
+
   authservice:
     container_name: authservice-${teamname:-defaultASW}
     image: ghcr.io/arquisoft/wiq_es6c/authservice:latest
@@ -39,6 +50,20 @@ services:
     environment:
       MONGODB_URI: mongodb://mongodb:27017/userdb
 
+  questiongeneratorservice:
+    container_name: questiongeneratorservice-${teamname:-defaultASW}
+    image: ghcr.io/arquisoft/wiq_es6c/questiongeneratorservice:latest
+    profiles: ["dev", "prod"]
+    build: ./questionsservice/questiongeneratorservice
+    depends_on:
+      - mongodb_wiki
+    ports:
+      - "8007:8006"
+    networks:
+      - mynetwork
+    environment:
+      MONGODB_URI: mongodb://mongodb_wiki:27017/questions
+
   gatewayservice:
     container_name: gatewayservice-${teamname:-defaultASW}
     image: ghcr.io/arquisoft/wiq_es6c/gatewayservice:latest
@@ -102,6 +127,7 @@ services:
 
 volumes:
   mongodb_data:
+  mongodb_wiki_data:
   prometheus_data: 
   grafana_data: 
 
diff --git a/questionsservice/questionsgenerator/Dockerfile b/questionsservice/questiongeneratorservice/Dockerfile
similarity index 79%
rename from questionsservice/questionsgenerator/Dockerfile
rename to questionsservice/questiongeneratorservice/Dockerfile
index 6faf38d4..1e9335e0 100644
--- a/questionsservice/questionsgenerator/Dockerfile
+++ b/questionsservice/questiongeneratorservice/Dockerfile
@@ -2,7 +2,7 @@
 FROM node:20
 
 # Set the working directory in the container
-WORKDIR /usr/src/questionsservice/questionsgenerator
+WORKDIR /usr/src/questionsservice/questiongeneratorservice
 
 # Copy package.json and package-lock.json to the working directory
 COPY package*.json ./
@@ -17,4 +17,4 @@ COPY . .
 EXPOSE 8006
 
 # Define the command to run your app
-CMD ["node", "questions-service.js"]
+CMD ["node", "questiongenerator-service.js"]
diff --git a/questionsservice/questionsgenerator/package-lock.json b/questionsservice/questiongeneratorservice/package-lock.json
similarity index 99%
rename from questionsservice/questionsgenerator/package-lock.json
rename to questionsservice/questiongeneratorservice/package-lock.json
index 1e7651d8..3dbf397a 100644
--- a/questionsservice/questionsgenerator/package-lock.json
+++ b/questionsservice/questiongeneratorservice/package-lock.json
@@ -1,11 +1,11 @@
 {
-  "name": "questionsgenerator",
+  "name": "questiongeneratorservice",
   "version": "1.0.0",
   "lockfileVersion": 3,
   "requires": true,
   "packages": {
     "": {
-      "name": "questionsgenerator",
+      "name": "questiongeneratorservice",
       "version": "1.0.0",
       "license": "ISC",
       "dependencies": {
diff --git a/questionsservice/questionsgenerator/package.json b/questionsservice/questiongeneratorservice/package.json
similarity index 75%
rename from questionsservice/questionsgenerator/package.json
rename to questionsservice/questiongeneratorservice/package.json
index 01986053..cf6a7e5b 100644
--- a/questionsservice/questionsgenerator/package.json
+++ b/questionsservice/questiongeneratorservice/package.json
@@ -1,11 +1,11 @@
 {
-  "name": "questionsgenerator",
+  "name": "questiongeneratorservice",
   "version": "1.0.0",
   "description": "Questions service, in charge of generating and returning random questions in the application",
-  "main": "questions-model.js",
+  "main": "questiongenerator-service.js",
   "scripts": {
-    "devStart": "nodemon questions-service.js",
-    "start": "node questions-service.js"
+    "devStart": "nodemon questiongenerator-service.js",
+    "start": "node questiongenerator-service.js"
   },
   "repository": {
     "type": "git",
diff --git a/questionsservice/questionsgenerator/questions-model.js b/questionsservice/questiongeneratorservice/questiongenerator-model.js
similarity index 100%
rename from questionsservice/questionsgenerator/questions-model.js
rename to questionsservice/questiongeneratorservice/questiongenerator-model.js
diff --git a/questionsservice/questionsgenerator/questions-service.js b/questionsservice/questiongeneratorservice/questiongenerator-service.js
similarity index 88%
rename from questionsservice/questionsgenerator/questions-service.js
rename to questionsservice/questiongeneratorservice/questiongenerator-service.js
index 6b97c119..ce6c2d26 100644
--- a/questionsservice/questionsgenerator/questions-service.js
+++ b/questionsservice/questiongeneratorservice/questiongenerator-service.js
@@ -1,17 +1,17 @@
 const express = require('express');
 const mongoose = require('mongoose');
-const {Question} = require('./questions-model')
-const {Request} = require('./questions-model')
+const {Question} = require('./questiongenerator-model')
+const {Request} = require('./questiongenerator-model')
 
 const app = express();
 const port = 8006; 
 
 // Connect to MongoDB
-const mongoUri = process.env.MONGODB_URI || 'mongodb://localhost/questions';
+const mongoUri = process.env.MONGODB_URI || 'mongodb://localhost:27017/questions';
 mongoose.connect(mongoUri);
 const db = mongoose.connection;
 db.on('error', (error) => console.error(`MongoDB connection error: ${error}`));
-db.once('open', () => console.log("Connected to MongoDB"));
+db.once('open', () => console.log("Connected to MongoDB: %s", mongoUri));
 
 // Middleware to parse JSON in request body
 app.use(express.json());

From 1fc1f56e8c5b73eaf569f8eaa30125e29d0fe032 Mon Sep 17 00:00:00 2001
From: alegarman2002 <116609314+alegarman2002@users.noreply.github.com>
Date: Sat, 2 Mar 2024 12:58:12 +0100
Subject: [PATCH 24/94] Fixed problem with buttons

---
 webapp/src/components/FirstGame.js | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/webapp/src/components/FirstGame.js b/webapp/src/components/FirstGame.js
index 3b0a3c2b..40d236f9 100644
--- a/webapp/src/components/FirstGame.js
+++ b/webapp/src/components/FirstGame.js
@@ -21,7 +21,7 @@ const Quiz = () => {
 
   const [currentQuestionIndex, setCurrentQuestionIndex] = useState(0);
   const [selectedOption, setSelectedOption] = useState(null);
-  const [isCorrect, setIsCorrect] = useState(true);
+  const [isCorrect, setIsCorrect] = useState(null);
 
   const esperar = (ms) => {
     return new Promise(resolve => setTimeout(resolve, ms));
@@ -52,11 +52,11 @@ const Quiz = () => {
 
   const [MiCircularProgressbar, MiPercentage] = CircularProgress(100);
 
-  useEffect(() => {
-    if (MiPercentage === 0) {
-      // Realizar alguna acción cuando MiPercentage llegue a 0
-    }
-  }, [MiPercentage]); // Este efecto se ejecuta cada vez que 'MiPercentage' cambia
+  // useEffect(() => {
+  //   if (MiPercentage === 0) {
+  //     // Realizar alguna acción cuando MiPercentage llegue a 0
+  //   }
+  // }, [MiPercentage]); // Este efecto se ejecuta cada vez que 'MiPercentage' cambia
 
   const checkAnswer = async (option) => {
     setIsCorrect(option === questions[currentQuestionIndex].correctAnswer);

From 0c4c976803605a4b015bf2d2cfe406e64f044d1a Mon Sep 17 00:00:00 2001
From: Abel <abelmhov7l@gmail.com>
Date: Sat, 2 Mar 2024 13:45:45 +0100
Subject: [PATCH 25/94] Added function to return the number of questions
 requested

---
 .../questiongenerator-model.js                |  6 +++-
 .../questiongenerator-service.js              | 29 +++++++++++++++----
 2 files changed, 29 insertions(+), 6 deletions(-)

diff --git a/questionsservice/questiongeneratorservice/questiongenerator-model.js b/questionsservice/questiongeneratorservice/questiongenerator-model.js
index 621f61bf..d51a3fbe 100644
--- a/questionsservice/questiongeneratorservice/questiongenerator-model.js
+++ b/questionsservice/questiongeneratorservice/questiongenerator-model.js
@@ -5,7 +5,11 @@ const questionSchema = new mongoose.Schema({
         type: String,
         required: true
     },
-    respuestas: {
+    respuesta_correcta: {
+        type: String,
+        required: true
+    },
+    respuestas_incorrectas: {
         type: [String],
         required: true
     },
diff --git a/questionsservice/questiongeneratorservice/questiongenerator-service.js b/questionsservice/questiongeneratorservice/questiongenerator-service.js
index ce6c2d26..099e87dd 100644
--- a/questionsservice/questiongeneratorservice/questiongenerator-service.js
+++ b/questionsservice/questiongeneratorservice/questiongenerator-service.js
@@ -16,6 +16,29 @@ db.once('open', () => console.log("Connected to MongoDB: %s", mongoUri));
 // Middleware to parse JSON in request body
 app.use(express.json());
 
+// Function to generate the required number of questions
+function getQuestions(req) {
+  const response = [];
+  if ('n_preguntas' in req.body) {
+    const n_preguntas = Number(req.body.n_preguntas);
+    for (let index = 0; index < n_preguntas; index++) {
+      response.push(new Question({
+        pregunta: "¿Cómo me llamo?",
+        respuesta_correcta: "Abel",
+        respuestas_incorrectas: ["Federico", "Eusebio", "Gervasio"]
+      }));
+    }
+  }
+  else {
+    response.push(new Question({
+      pregunta: "¿Cómo me llamo?",
+      respuesta_correcta: "Abel",
+      respuestas_incorrectas: ["Federico", "Eusebio", "Gervasio"]
+    }));
+  }
+  return response
+}
+
 // Route for getting questions
 app.get('/questions', async (req, res) => {
   try {
@@ -27,11 +50,7 @@ app.get('/questions', async (req, res) => {
 
     // TODO: Implement logic to fetch questions from MongoDB and send response 
     // const questions = await Question.find()
-    // res.json(questions)
-    const defaultQuestion = new Question({
-      pregunta: "¿Cómo me llamo?",
-      respuestas: ["Abel", "Federico", "Eusebio", "Gervasio"]
-    });
+    const defaultQuestion = getQuestions(req)
     res.json(defaultQuestion);
   } catch (error) {
     // res.status(500).json({ message: error.message })

From 301be1a2d44bd4467a62553e02615a1be8a5e2c1 Mon Sep 17 00:00:00 2001
From: alegarman2002 <uo283076@uniovi.es>
Date: Mon, 4 Mar 2024 14:47:47 +0100
Subject: [PATCH 26/94] First try to connect to questiongenerator api

---
 webapp/package-lock.json           | 40 ++++++++++++++++++++++++++++++
 webapp/package.json                |  2 ++
 webapp/src/components/FirstGame.js | 23 ++++++++++++++++-
 3 files changed, 64 insertions(+), 1 deletion(-)

diff --git a/webapp/package-lock.json b/webapp/package-lock.json
index a4595721..303e6b1d 100644
--- a/webapp/package-lock.json
+++ b/webapp/package-lock.json
@@ -15,6 +15,7 @@
         "@testing-library/react": "^14.1.2",
         "@testing-library/user-event": "^14.5.2",
         "axios": "^1.6.5",
+        "fetch": "^1.1.0",
         "react": "^18.2.0",
         "react-dom": "^18.2.0",
         "react-router-dom": "^6.22.1",
@@ -7432,6 +7433,17 @@
         "node": ">=8"
       }
     },
+    "node_modules/biskviit": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/biskviit/-/biskviit-1.0.1.tgz",
+      "integrity": "sha512-VGCXdHbdbpEkFgtjkeoBN8vRlbj1ZRX2/mxhE8asCCRalUx2nBzOomLJv8Aw/nRt5+ccDb+tPKidg4XxcfGW4w==",
+      "dependencies": {
+        "psl": "^1.1.7"
+      },
+      "engines": {
+        "node": ">=1.0.0"
+      }
+    },
     "node_modules/bluebird": {
       "version": "3.7.2",
       "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
@@ -9611,6 +9623,25 @@
         "node": ">= 0.8"
       }
     },
+    "node_modules/encoding": {
+      "version": "0.1.12",
+      "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz",
+      "integrity": "sha512-bl1LAgiQc4ZWr++pNYUdRe/alecaHFeHxIJ/pNciqGdKXghaTCOwKkbKp6ye7pKZGu/GcaSXFk8PBVhgs+dJdA==",
+      "dependencies": {
+        "iconv-lite": "~0.4.13"
+      }
+    },
+    "node_modules/encoding/node_modules/iconv-lite": {
+      "version": "0.4.24",
+      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+      "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+      "dependencies": {
+        "safer-buffer": ">= 2.1.2 < 3"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
     "node_modules/end-of-stream": {
       "version": "1.4.4",
       "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
@@ -11043,6 +11074,15 @@
         "pend": "~1.2.0"
       }
     },
+    "node_modules/fetch": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/fetch/-/fetch-1.1.0.tgz",
+      "integrity": "sha512-5O8TwrGzoNblBG/jtK4NFuZwNCkZX6s5GfRNOaGtm+QGJEuNakSC/i2RW0R93KX6E0jVjNXm6O3CRN4Ql3K+yA==",
+      "dependencies": {
+        "biskviit": "1.0.1",
+        "encoding": "0.1.12"
+      }
+    },
     "node_modules/file-entry-cache": {
       "version": "6.0.1",
       "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
diff --git a/webapp/package.json b/webapp/package.json
index 18a15f71..bf7583ba 100644
--- a/webapp/package.json
+++ b/webapp/package.json
@@ -10,9 +10,11 @@
     "@testing-library/react": "^14.1.2",
     "@testing-library/user-event": "^14.5.2",
     "axios": "^1.6.5",
+    "fetch": "^1.1.0",
     "react": "^18.2.0",
     "react-dom": "^18.2.0",
     "react-router-dom": "^6.22.1",
+    "react-circular-progressbar": "^2.1.0",
     "react-scripts": "5.0.1",
     "web-vitals": "^3.5.1"
   },
diff --git a/webapp/src/components/FirstGame.js b/webapp/src/components/FirstGame.js
index 40d236f9..56c577e7 100644
--- a/webapp/src/components/FirstGame.js
+++ b/webapp/src/components/FirstGame.js
@@ -3,9 +3,26 @@ import { Container, Typography } from '@mui/material';
 import './FirstGame.css';
 import { CircularProgressbar } from 'react-circular-progressbar';
 import 'react-circular-progressbar/dist/styles.css';
+import axios from 'axios';
+
+const apiEndpoint = 'http://localhost:8006';
+
+var jsonApi = ''
+
 
 const Quiz = () => {
-  const questions = [
+  
+  const getQuestions = async() => {
+    try {
+      jsonApi = await axios.get(`${apiEndpoint}/questions`);
+        
+    } catch (error) {
+      console.log(error.jsonApi.data.error);
+    }
+  };
+  
+
+  const questions = [    
     {
       question: '¿Cuál es la capital de España?',
       options: ['Madrid', 'Barcelona', 'Valencia', 'Sevilla'],
@@ -58,10 +75,14 @@ const Quiz = () => {
   //   }
   // }, [MiPercentage]); // Este efecto se ejecuta cada vez que 'MiPercentage' cambia
 
+
   const checkAnswer = async (option) => {
     setIsCorrect(option === questions[currentQuestionIndex].correctAnswer);
     setSelectedOption(option);
 
+    getQuestions()
+    console.log(jsonApi.data)
+
     const botonIncorrecta = document.getElementById('option-' + questions[currentQuestionIndex].options.indexOf(option))
     if (!isCorrect) {
       

From b76de84d811754d7284e5f4c1b8e92e36a1f5bf8 Mon Sep 17 00:00:00 2001
From: alegarman2002 <116609314+alegarman2002@users.noreply.github.com>
Date: Tue, 5 Mar 2024 20:58:16 +0100
Subject: [PATCH 27/94] Added the menu with navigation

---
 .../package-lock.json                         | 21 ++++
 .../questiongeneratorservice/package.json     |  1 +
 .../questiongenerator-service.js              |  1 +
 webapp/src/components/FirstGame.js            | 81 +++++++--------
 webapp/src/components/Login.js                |  3 +-
 webapp/src/components/Menu.js                 | 99 +++++++++++++++++++
 webapp/src/index.js                           |  2 +
 7 files changed, 168 insertions(+), 40 deletions(-)
 create mode 100644 webapp/src/components/Menu.js

diff --git a/questionsservice/questiongeneratorservice/package-lock.json b/questionsservice/questiongeneratorservice/package-lock.json
index 3dbf397a..ebaf8660 100644
--- a/questionsservice/questiongeneratorservice/package-lock.json
+++ b/questionsservice/questiongeneratorservice/package-lock.json
@@ -9,6 +9,7 @@
       "version": "1.0.0",
       "license": "ISC",
       "dependencies": {
+        "cors": "^2.8.5",
         "express": "^4.18.2",
         "mongoose": "^8.2.0"
       },
@@ -229,6 +230,18 @@
       "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
       "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
     },
+    "node_modules/cors": {
+      "version": "2.8.5",
+      "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
+      "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
+      "dependencies": {
+        "object-assign": "^4",
+        "vary": "^1"
+      },
+      "engines": {
+        "node": ">= 0.10"
+      }
+    },
     "node_modules/debug": {
       "version": "2.6.9",
       "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
@@ -900,6 +913,14 @@
         "node": ">=0.10.0"
       }
     },
+    "node_modules/object-assign": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+      "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
     "node_modules/object-inspect": {
       "version": "1.13.1",
       "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
diff --git a/questionsservice/questiongeneratorservice/package.json b/questionsservice/questiongeneratorservice/package.json
index cf6a7e5b..5685bd45 100644
--- a/questionsservice/questiongeneratorservice/package.json
+++ b/questionsservice/questiongeneratorservice/package.json
@@ -19,6 +19,7 @@
   },
   "homepage": "https://github.com/arquisoft/wiq_es6c#readme",
   "dependencies": {
+    "cors": "^2.8.5",
     "express": "^4.18.2",
     "mongoose": "^8.2.0"
   },
diff --git a/questionsservice/questiongeneratorservice/questiongenerator-service.js b/questionsservice/questiongeneratorservice/questiongenerator-service.js
index 099e87dd..b352941e 100644
--- a/questionsservice/questiongeneratorservice/questiongenerator-service.js
+++ b/questionsservice/questiongeneratorservice/questiongenerator-service.js
@@ -42,6 +42,7 @@ function getQuestions(req) {
 // Route for getting questions
 app.get('/questions', async (req, res) => {
   try {
+    res.setHeader("Access-Control-Allow-Origin", "*");
     const request = new Request({
       n_preguntas: Number(req.body.n_preguntas),
       n_respuestas: Number(req.body.n_respuestas),
diff --git a/webapp/src/components/FirstGame.js b/webapp/src/components/FirstGame.js
index 56c577e7..f1c88e8a 100644
--- a/webapp/src/components/FirstGame.js
+++ b/webapp/src/components/FirstGame.js
@@ -4,38 +4,52 @@ import './FirstGame.css';
 import { CircularProgressbar } from 'react-circular-progressbar';
 import 'react-circular-progressbar/dist/styles.css';
 import axios from 'axios';
+import { json } from 'react-router-dom';
+import { useLocation } from 'react-router-dom';
 
-const apiEndpoint = 'http://localhost:8006';
-
-var jsonApi = ''
 
+var questionsCalled = false
 
 const Quiz = () => {
   
-  const getQuestions = async() => {
-    try {
-      jsonApi = await axios.get(`${apiEndpoint}/questions`);
+  const questions = useLocation().state.questions;
+  console.log(questions)
+
+  //  useEffect (() => {
+  //   if (!isApiCalledRef) {
+  //     getQuestions();
+  //     isApiCalledRef = true;
+  //   }
+  // }, []); // Dependencia vacía para ejecutar solo al montar el componente
+
+  // const getQuestions = async () => {
+  //   try {
+  //     const response = await axios.get(`${apiEndpoint}/questions`);
+  //     for (var i = 0; i < response.data.length; i++) {
+  //       var possibleAnswers = [response.data[i].respuesta_correcta, response.data[i].respuestas_incorrectas[0], response.data[i].respuestas_incorrectas[1], response.data[i].respuestas_incorrectas[2]]
+  //       possibleAnswers = shuffleArray(possibleAnswers)
+  //       console.log(possibleAnswers)
+  //       questions.push({
+  //         question: response.data[0].pregunta,
+  //         options: possibleAnswers,
+  //         correctAnswer: response.data[i].respuesta_correcta
+  //       })
+  //     }
+  //     console.log(questions)
+      
+  //   } catch (error) {
+  //     console.error(error);
+  //   }
+  // };
+  // const getQuestions = async() => {
+  //   try {
+  //     jsonApi = await axios.get(`${apiEndpoint}/questions`);
         
-    } catch (error) {
-      console.log(error.jsonApi.data.error);
-    }
-  };
+  //   } catch (error) {
+  //     console.log(error.jsonApi.data.error);
+  //   }
+  // };
   
-
-  const questions = [    
-    {
-      question: '¿Cuál es la capital de España?',
-      options: ['Madrid', 'Barcelona', 'Valencia', 'Sevilla'],
-      correctAnswer: 'Madrid',
-    },
-    {
-      question: '¿Cual es la capital de Francia?',
-      options: ['Touluse', 'Paris', 'Lyon', 'Marseille'],
-      correctAnswer: 'Paris'
-    }
-    // Agrega más preguntas aquí
-  ];
-
   const [currentQuestionIndex, setCurrentQuestionIndex] = useState(0);
   const [selectedOption, setSelectedOption] = useState(null);
   const [isCorrect, setIsCorrect] = useState(null);
@@ -67,7 +81,7 @@ const Quiz = () => {
     );
   }
 
-  const [MiCircularProgressbar, MiPercentage] = CircularProgress(100);
+  // const [MiCircularProgressbar, MiPercentage] = CircularProgress(100);
 
   // useEffect(() => {
   //   if (MiPercentage === 0) {
@@ -80,9 +94,6 @@ const Quiz = () => {
     setIsCorrect(option === questions[currentQuestionIndex].correctAnswer);
     setSelectedOption(option);
 
-    getQuestions()
-    console.log(jsonApi.data)
-
     const botonIncorrecta = document.getElementById('option-' + questions[currentQuestionIndex].options.indexOf(option))
     if (!isCorrect) {
       
@@ -97,8 +108,6 @@ const Quiz = () => {
     await esperar(2000); // Espera 2000 milisegundos (2 segundos)
     botonIncorrecta.style.backgroundColor = 'lightgrey'
     botonCorrecta.style.backgroundColor = 'lightgrey' 
-    console.log(questions.length-1)
-    console.log(currentQuestionIndex)
     if (questions.length-1 !== currentQuestionIndex) {
       
       setCurrentQuestionIndex((prevIndex) => prevIndex + 1);
@@ -108,9 +117,7 @@ const Quiz = () => {
   };
 
   return (
-    <Container component="main" maxWidth="sm" sx={{ marginTop: 4 }}>
-      
-      
+    <Container component="main" maxWidth="xl" sx={{ marginTop: 4 }}>
       <div className="questionStructure">
         <div class="question">
         <Typography class="questionText" component="h1" variant="h5" sx={{ textAlign: 'center' }}>
@@ -119,7 +126,7 @@ const Quiz = () => {
         </div>
         
         <div class="progressBar">
-          {MiCircularProgressbar}
+          {/* {MiCircularProgressbar} */}
         </div>
         <div class="allAnswers">
         {questions[currentQuestionIndex].options.map((option, index) => (
@@ -134,11 +141,7 @@ const Quiz = () => {
               {option}
             </button>
           </div>
-
-
-          
         )
-        
         )}
         </div>
       </div>
diff --git a/webapp/src/components/Login.js b/webapp/src/components/Login.js
index b9d17bab..8937360d 100644
--- a/webapp/src/components/Login.js
+++ b/webapp/src/components/Login.js
@@ -27,7 +27,7 @@ const Login = () => {
       setLoginSuccess(true);
 
       setOpenSnackbar(true);
-      navigation("/firstGame")
+      navigation("/menu")
 
     } catch (error) {
       setError(error.response.data.error);
@@ -38,6 +38,7 @@ const Login = () => {
     setOpenSnackbar(false);
   };
 
+  
   return (
     <Container component="main" maxWidth="xs" sx={{ marginTop: 4 }}>
       {loginSuccess ? (
diff --git a/webapp/src/components/Menu.js b/webapp/src/components/Menu.js
new file mode 100644
index 00000000..0a759a3c
--- /dev/null
+++ b/webapp/src/components/Menu.js
@@ -0,0 +1,99 @@
+import React, { useState, useEffect } from 'react';
+import { Container, Typography } from '@mui/material';
+import './FirstGame.css';
+import 'react-circular-progressbar/dist/styles.css';
+import axios from 'axios';
+import { json } from 'react-router-dom';
+import { useNavigate } from 'react-router-dom'; // Importa useHistory
+
+const apiEndpoint = 'http://localhost:8006';
+
+var jsonApi = ''
+
+var isApiCalledRef = false;
+
+
+const DatosContext = React.createContext();
+
+var questions = []
+
+function shuffleArray(array) {
+  // Crea una copia del array original
+  const shuffledArray = [...array];
+
+  // Recorre el array desde el último elemento hasta el primero
+  for (let i = shuffledArray.length - 1; i > 0; i--) {
+    // Genera un índice aleatorio entre 0 y el índice actual
+    const randomIndex = Math.floor(Math.random() * (i + 1));
+
+    // Intercambia el elemento actual con el elemento del índice aleatorio
+    const temp = shuffledArray[i];
+    shuffledArray[i] = shuffledArray[randomIndex];
+    shuffledArray[randomIndex] = temp;
+  }
+
+  // Devuelve el array barajado
+  return shuffledArray;
+}
+
+// useEffect (() => {
+//     if (!isApiCalledRef) {
+//       getQuestions();
+//       isApiCalledRef = true;
+//     }
+//   }, []);
+
+
+
+
+const Menu = () => {
+
+    const [n_preguntas, setn_preguntas] = useState(5);
+
+    const navigation = useNavigate(); // Añade esto
+
+    const initiateGame = async () => {
+        if (!isApiCalledRef) {
+            await getQuestions()
+        }
+        isApiCalledRef = true
+        navigation("/firstGame", {state: {questions}})
+    }
+
+    const getQuestions = async () => {
+        try {
+            setn_preguntas(5)
+          const response = await axios.get(`${apiEndpoint}/questions`, {n_preguntas});
+          console.log(response.data.length)
+          for (var i = 0; i < response.data.length; i++) {
+            var possibleAnswers = [response.data[i].respuesta_correcta, response.data[i].respuestas_incorrectas[0], response.data[i].respuestas_incorrectas[1], response.data[i].respuestas_incorrectas[2]]
+            possibleAnswers = shuffleArray(possibleAnswers)
+            questions.push({
+              question: response.data[0].pregunta,
+              options: possibleAnswers,
+              correctAnswer: response.data[i].respuesta_correcta
+            })
+          }      
+        } catch (error) {
+          console.error(error);
+        }
+        console.log(questions)
+    };
+
+    return (
+        <Container component="main" maxWidth="xl" sx={{ marginTop: 4 }}>
+            <p>Bienvenido a wiq_06c por favor seleccione un modo de juego para comenzar partida:</p>
+            <button
+              name="quiz"
+              onClick={() => initiateGame()}
+              style={{backgroundColor: 'lightgrey'}}
+            >
+              Clasico
+            </button>
+        </Container>
+    );
+
+}
+
+
+export default Menu;
diff --git a/webapp/src/index.js b/webapp/src/index.js
index f0e61d85..da7de47c 100644
--- a/webapp/src/index.js
+++ b/webapp/src/index.js
@@ -15,6 +15,7 @@ import {
 } from "react-router-dom";
 
 import FirstGame from './components/FirstGame';
+import Menu from './components/Menu';
 
 
 const root = ReactDOM.createRoot(document.getElementById('root'));
@@ -24,6 +25,7 @@ root.render(
       <Routes>
         <Route path="/" element={<App/>}></Route>
         <Route path="/firstGame" element={<FirstGame/>}></Route>
+        <Route path="/menu" element={<Menu/>}></Route>
       </Routes>
     </Router>
   </React.StrictMode>

From e8417a700dda898d8907d459e95ce830cf05417c Mon Sep 17 00:00:00 2001
From: Marco Quintana <UO287872@uniovi.es>
Date: Thu, 7 Mar 2024 14:04:23 +0100
Subject: [PATCH 28/94] =?UTF-8?q?Avance=20conexi=C3=B3n?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 docker-compose.yml                     |  14 +
 storeQuestionService/package-lock.json | 417 ++-----------------------
 storeQuestionService/package.json      |   1 +
 webapp/src/storeQuestion/App.jsx       |  36 ++-
 4 files changed, 71 insertions(+), 397 deletions(-)

diff --git a/docker-compose.yml b/docker-compose.yml
index 6d256c2a..87efb266 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -99,6 +99,20 @@ services:
     depends_on: 
       - prometheus
 
+  storequestion:
+    container_name: storequestion-${teamname:-defaultASW}
+    image: ghcr.io/arquisoft/wiq_es6c/storequestionservice:latest
+    profiles: ["dev", "prod"]
+    build: ./storequestionservice
+    depends_on:
+      - mongodb
+    ports:
+      - "8004:8004"
+    networks:
+      - mynetwork
+    environment:
+      MONGODB_URI: mongodb://mongodb:27017/userdb
+
 
 volumes:
   mongodb_data:
diff --git a/storeQuestionService/package-lock.json b/storeQuestionService/package-lock.json
index a66be16a..78bc36fc 100644
--- a/storeQuestionService/package-lock.json
+++ b/storeQuestionService/package-lock.json
@@ -9,6 +9,7 @@
             "version": "1.0.0",
             "license": "ISC",
             "dependencies": {
+                "body-parser": "^1.20.2",
                 "express": "^4.18.2",
                 "jsonwebtoken": "^9.0.2",
                 "mongoose": "^8.0.4"
@@ -1084,25 +1085,6 @@
                 "@jridgewell/sourcemap-codec": "^1.4.14"
             }
         },
-        "node_modules/@mapbox/node-pre-gyp": {
-            "version": "1.0.11",
-            "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz",
-            "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==",
-            "dependencies": {
-                "detect-libc": "^2.0.0",
-                "https-proxy-agent": "^5.0.0",
-                "make-dir": "^3.1.0",
-                "node-fetch": "^2.6.7",
-                "nopt": "^5.0.0",
-                "npmlog": "^5.0.1",
-                "rimraf": "^3.0.2",
-                "semver": "^7.3.5",
-                "tar": "^6.1.11"
-            },
-            "bin": {
-                "node-pre-gyp": "bin/node-pre-gyp"
-            }
-        },
         "node_modules/@mongodb-js/saslprep": {
             "version": "1.1.1",
             "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.1.tgz",
@@ -1252,11 +1234,6 @@
             "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==",
             "dev": true
         },
-        "node_modules/abbrev": {
-            "version": "1.1.1",
-            "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
-            "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
-        },
         "node_modules/accepts": {
             "version": "1.3.8",
             "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
@@ -1269,38 +1246,6 @@
                 "node": ">= 0.6"
             }
         },
-        "node_modules/agent-base": {
-            "version": "6.0.2",
-            "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
-            "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
-            "dependencies": {
-                "debug": "4"
-            },
-            "engines": {
-                "node": ">= 6.0.0"
-            }
-        },
-        "node_modules/agent-base/node_modules/debug": {
-            "version": "4.3.4",
-            "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
-            "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
-            "dependencies": {
-                "ms": "2.1.2"
-            },
-            "engines": {
-                "node": ">=6.0"
-            },
-            "peerDependenciesMeta": {
-                "supports-color": {
-                    "optional": true
-                }
-            }
-        },
-        "node_modules/agent-base/node_modules/ms": {
-            "version": "2.1.2",
-            "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-            "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
-        },
         "node_modules/ansi-escapes": {
             "version": "4.3.2",
             "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
@@ -1320,6 +1265,7 @@
             "version": "5.0.1",
             "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
             "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+            "dev": true,
             "engines": {
                 "node": ">=8"
             }
@@ -1352,23 +1298,6 @@
                 "node": ">= 8"
             }
         },
-        "node_modules/aproba": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz",
-            "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ=="
-        },
-        "node_modules/are-we-there-yet": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz",
-            "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==",
-            "dependencies": {
-                "delegates": "^1.0.0",
-                "readable-stream": "^3.6.0"
-            },
-            "engines": {
-                "node": ">=10"
-            }
-        },
         "node_modules/argparse": {
             "version": "1.0.10",
             "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
@@ -1529,20 +1458,8 @@
         "node_modules/balanced-match": {
             "version": "1.0.2",
             "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
-            "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
-        },
-        "node_modules/bcrypt": {
-            "version": "5.1.1",
-            "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.1.1.tgz",
-            "integrity": "sha512-AGBHOG5hPYZ5Xl9KXzU5iKq9516yEmvCKDg3ecP5kX2aB6UqTeXZxk2ELnDgDm6BQSMlLt9rDB4LoSMx0rYwww==",
-            "hasInstallScript": true,
-            "dependencies": {
-                "@mapbox/node-pre-gyp": "^1.0.11",
-                "node-addon-api": "^5.0.0"
-            },
-            "engines": {
-                "node": ">= 10.0.0"
-            }
+            "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+            "dev": true
         },
         "node_modules/body-parser": {
             "version": "1.20.2",
@@ -1571,6 +1488,7 @@
             "version": "1.1.11",
             "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
             "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+            "dev": true,
             "dependencies": {
                 "balanced-match": "^1.0.0",
                 "concat-map": "0.0.1"
@@ -1741,14 +1659,6 @@
                 "node": ">=10"
             }
         },
-        "node_modules/chownr": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
-            "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
-            "engines": {
-                "node": ">=10"
-            }
-        },
         "node_modules/ci-info": {
             "version": "3.9.0",
             "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz",
@@ -1818,14 +1728,6 @@
             "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
             "dev": true
         },
-        "node_modules/color-support": {
-            "version": "1.1.3",
-            "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
-            "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
-            "bin": {
-                "color-support": "bin.js"
-            }
-        },
         "node_modules/combined-stream": {
             "version": "1.0.8",
             "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
@@ -1856,12 +1758,8 @@
         "node_modules/concat-map": {
             "version": "0.0.1",
             "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
-            "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
-        },
-        "node_modules/console-control-strings": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
-            "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ=="
+            "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+            "dev": true
         },
         "node_modules/content-disposition": {
             "version": "0.5.4",
@@ -1995,11 +1893,6 @@
                 "node": ">=0.4.0"
             }
         },
-        "node_modules/delegates": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
-            "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ=="
-        },
         "node_modules/depd": {
             "version": "2.0.0",
             "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
@@ -2017,14 +1910,6 @@
                 "npm": "1.2.8000 || >= 1.4.16"
             }
         },
-        "node_modules/detect-libc": {
-            "version": "2.0.2",
-            "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz",
-            "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==",
-            "engines": {
-                "node": ">=8"
-            }
-        },
         "node_modules/detect-newline": {
             "version": "3.1.0",
             "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz",
@@ -2087,7 +1972,8 @@
         "node_modules/emoji-regex": {
             "version": "8.0.0",
             "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
-            "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
+            "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+            "dev": true
         },
         "node_modules/encodeurl": {
             "version": "1.0.2",
@@ -2436,32 +2322,11 @@
                 "node": ">= 0.6"
             }
         },
-        "node_modules/fs-minipass": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
-            "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
-            "dependencies": {
-                "minipass": "^3.0.0"
-            },
-            "engines": {
-                "node": ">= 8"
-            }
-        },
-        "node_modules/fs-minipass/node_modules/minipass": {
-            "version": "3.3.6",
-            "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
-            "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
-            "dependencies": {
-                "yallist": "^4.0.0"
-            },
-            "engines": {
-                "node": ">=8"
-            }
-        },
         "node_modules/fs.realpath": {
             "version": "1.0.0",
             "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
-            "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
+            "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+            "dev": true
         },
         "node_modules/function-bind": {
             "version": "1.1.2",
@@ -2471,25 +2336,6 @@
                 "url": "https://github.com/sponsors/ljharb"
             }
         },
-        "node_modules/gauge": {
-            "version": "3.0.2",
-            "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz",
-            "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==",
-            "dependencies": {
-                "aproba": "^1.0.3 || ^2.0.0",
-                "color-support": "^1.1.2",
-                "console-control-strings": "^1.0.0",
-                "has-unicode": "^2.0.1",
-                "object-assign": "^4.1.1",
-                "signal-exit": "^3.0.0",
-                "string-width": "^4.2.3",
-                "strip-ansi": "^6.0.1",
-                "wide-align": "^1.1.2"
-            },
-            "engines": {
-                "node": ">=10"
-            }
-        },
         "node_modules/gensync": {
             "version": "1.0.0-beta.2",
             "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
@@ -2547,6 +2393,7 @@
             "version": "7.2.3",
             "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
             "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+            "dev": true,
             "dependencies": {
                 "fs.realpath": "^1.0.0",
                 "inflight": "^1.0.4",
@@ -2630,11 +2477,6 @@
                 "url": "https://github.com/sponsors/ljharb"
             }
         },
-        "node_modules/has-unicode": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
-            "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ=="
-        },
         "node_modules/hasown": {
             "version": "2.0.0",
             "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
@@ -2676,39 +2518,6 @@
                 "node": ">= 0.8"
             }
         },
-        "node_modules/https-proxy-agent": {
-            "version": "5.0.1",
-            "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
-            "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
-            "dependencies": {
-                "agent-base": "6",
-                "debug": "4"
-            },
-            "engines": {
-                "node": ">= 6"
-            }
-        },
-        "node_modules/https-proxy-agent/node_modules/debug": {
-            "version": "4.3.4",
-            "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
-            "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
-            "dependencies": {
-                "ms": "2.1.2"
-            },
-            "engines": {
-                "node": ">=6.0"
-            },
-            "peerDependenciesMeta": {
-                "supports-color": {
-                    "optional": true
-                }
-            }
-        },
-        "node_modules/https-proxy-agent/node_modules/ms": {
-            "version": "2.1.2",
-            "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-            "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
-        },
         "node_modules/human-signals": {
             "version": "2.1.0",
             "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
@@ -2761,6 +2570,7 @@
             "version": "1.0.6",
             "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
             "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+            "dev": true,
             "dependencies": {
                 "once": "^1.3.0",
                 "wrappy": "1"
@@ -2807,6 +2617,7 @@
             "version": "3.0.0",
             "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
             "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+            "dev": true,
             "engines": {
                 "node": ">=8"
             }
@@ -3694,6 +3505,7 @@
             "version": "3.1.0",
             "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
             "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+            "dev": true,
             "dependencies": {
                 "semver": "^6.0.0"
             },
@@ -3708,6 +3520,7 @@
             "version": "6.3.1",
             "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
             "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+            "dev": true,
             "bin": {
                 "semver": "bin/semver.js"
             }
@@ -3809,6 +3622,7 @@
             "version": "3.1.2",
             "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
             "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+            "dev": true,
             "dependencies": {
                 "brace-expansion": "^1.1.7"
             },
@@ -3816,48 +3630,6 @@
                 "node": "*"
             }
         },
-        "node_modules/minipass": {
-            "version": "5.0.0",
-            "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz",
-            "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==",
-            "engines": {
-                "node": ">=8"
-            }
-        },
-        "node_modules/minizlib": {
-            "version": "2.1.2",
-            "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
-            "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
-            "dependencies": {
-                "minipass": "^3.0.0",
-                "yallist": "^4.0.0"
-            },
-            "engines": {
-                "node": ">= 8"
-            }
-        },
-        "node_modules/minizlib/node_modules/minipass": {
-            "version": "3.3.6",
-            "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
-            "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
-            "dependencies": {
-                "yallist": "^4.0.0"
-            },
-            "engines": {
-                "node": ">=8"
-            }
-        },
-        "node_modules/mkdirp": {
-            "version": "1.0.4",
-            "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
-            "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
-            "bin": {
-                "mkdirp": "bin/cmd.js"
-            },
-            "engines": {
-                "node": ">=10"
-            }
-        },
         "node_modules/mongodb": {
             "version": "6.2.0",
             "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.2.0.tgz",
@@ -4179,49 +3951,6 @@
             "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
             "dev": true
         },
-        "node_modules/node-addon-api": {
-            "version": "5.1.0",
-            "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz",
-            "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA=="
-        },
-        "node_modules/node-fetch": {
-            "version": "2.7.0",
-            "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
-            "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
-            "dependencies": {
-                "whatwg-url": "^5.0.0"
-            },
-            "engines": {
-                "node": "4.x || >=6.0.0"
-            },
-            "peerDependencies": {
-                "encoding": "^0.1.0"
-            },
-            "peerDependenciesMeta": {
-                "encoding": {
-                    "optional": true
-                }
-            }
-        },
-        "node_modules/node-fetch/node_modules/tr46": {
-            "version": "0.0.3",
-            "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
-            "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
-        },
-        "node_modules/node-fetch/node_modules/webidl-conversions": {
-            "version": "3.0.1",
-            "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
-            "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
-        },
-        "node_modules/node-fetch/node_modules/whatwg-url": {
-            "version": "5.0.0",
-            "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
-            "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
-            "dependencies": {
-                "tr46": "~0.0.3",
-                "webidl-conversions": "^3.0.0"
-            }
-        },
         "node_modules/node-int64": {
             "version": "0.4.0",
             "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
@@ -4234,20 +3963,6 @@
             "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==",
             "dev": true
         },
-        "node_modules/nopt": {
-            "version": "5.0.0",
-            "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz",
-            "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==",
-            "dependencies": {
-                "abbrev": "1"
-            },
-            "bin": {
-                "nopt": "bin/nopt.js"
-            },
-            "engines": {
-                "node": ">=6"
-            }
-        },
         "node_modules/normalize-path": {
             "version": "3.0.0",
             "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
@@ -4269,25 +3984,6 @@
                 "node": ">=8"
             }
         },
-        "node_modules/npmlog": {
-            "version": "5.0.1",
-            "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz",
-            "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==",
-            "dependencies": {
-                "are-we-there-yet": "^2.0.0",
-                "console-control-strings": "^1.1.0",
-                "gauge": "^3.0.0",
-                "set-blocking": "^2.0.0"
-            }
-        },
-        "node_modules/object-assign": {
-            "version": "4.1.1",
-            "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
-            "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
-            "engines": {
-                "node": ">=0.10.0"
-            }
-        },
         "node_modules/object-inspect": {
             "version": "1.13.1",
             "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
@@ -4311,6 +4007,7 @@
             "version": "1.4.0",
             "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
             "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+            "dev": true,
             "dependencies": {
                 "wrappy": "1"
             }
@@ -4420,6 +4117,7 @@
             "version": "1.0.1",
             "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
             "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+            "dev": true,
             "engines": {
                 "node": ">=0.10.0"
             }
@@ -4612,19 +4310,6 @@
             "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==",
             "dev": true
         },
-        "node_modules/readable-stream": {
-            "version": "3.6.2",
-            "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
-            "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
-            "dependencies": {
-                "inherits": "^2.0.3",
-                "string_decoder": "^1.1.1",
-                "util-deprecate": "^1.0.1"
-            },
-            "engines": {
-                "node": ">= 6"
-            }
-        },
         "node_modules/require-directory": {
             "version": "2.1.1",
             "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
@@ -4681,20 +4366,6 @@
                 "node": ">=10"
             }
         },
-        "node_modules/rimraf": {
-            "version": "3.0.2",
-            "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
-            "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
-            "dependencies": {
-                "glob": "^7.1.3"
-            },
-            "bin": {
-                "rimraf": "bin.js"
-            },
-            "funding": {
-                "url": "https://github.com/sponsors/isaacs"
-            }
-        },
         "node_modules/safe-buffer": {
             "version": "5.2.1",
             "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
@@ -4775,11 +4446,6 @@
                 "node": ">= 0.8.0"
             }
         },
-        "node_modules/set-blocking": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
-            "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
-        },
         "node_modules/set-function-length": {
             "version": "1.1.1",
             "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz",
@@ -4841,7 +4507,8 @@
         "node_modules/signal-exit": {
             "version": "3.0.7",
             "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
-            "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
+            "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+            "dev": true
         },
         "node_modules/sisteransi": {
             "version": "1.0.5",
@@ -4945,14 +4612,6 @@
                 "queue-tick": "^1.0.1"
             }
         },
-        "node_modules/string_decoder": {
-            "version": "1.3.0",
-            "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
-            "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
-            "dependencies": {
-                "safe-buffer": "~5.2.0"
-            }
-        },
         "node_modules/string-length": {
             "version": "4.0.2",
             "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz",
@@ -4970,6 +4629,7 @@
             "version": "4.2.3",
             "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
             "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+            "dev": true,
             "dependencies": {
                 "emoji-regex": "^8.0.0",
                 "is-fullwidth-code-point": "^3.0.0",
@@ -4983,6 +4643,7 @@
             "version": "6.0.1",
             "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
             "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+            "dev": true,
             "dependencies": {
                 "ansi-regex": "^5.0.1"
             },
@@ -5113,22 +4774,6 @@
                 "url": "https://github.com/sponsors/ljharb"
             }
         },
-        "node_modules/tar": {
-            "version": "6.2.0",
-            "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz",
-            "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==",
-            "dependencies": {
-                "chownr": "^2.0.0",
-                "fs-minipass": "^2.0.0",
-                "minipass": "^5.0.0",
-                "minizlib": "^2.1.1",
-                "mkdirp": "^1.0.3",
-                "yallist": "^4.0.0"
-            },
-            "engines": {
-                "node": ">=10"
-            }
-        },
         "node_modules/tar-stream": {
             "version": "3.1.6",
             "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz",
@@ -5282,11 +4927,6 @@
                 "browserslist": ">= 4.21.0"
             }
         },
-        "node_modules/util-deprecate": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
-            "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
-        },
         "node_modules/utils-merge": {
             "version": "1.0.1",
             "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
@@ -5361,14 +5001,6 @@
                 "node": ">= 8"
             }
         },
-        "node_modules/wide-align": {
-            "version": "1.1.5",
-            "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz",
-            "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==",
-            "dependencies": {
-                "string-width": "^1.0.2 || 2 || 3 || 4"
-            }
-        },
         "node_modules/wrap-ansi": {
             "version": "7.0.0",
             "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
@@ -5389,7 +5021,8 @@
         "node_modules/wrappy": {
             "version": "1.0.2",
             "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
-            "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
+            "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+            "dev": true
         },
         "node_modules/write-file-atomic": {
             "version": "4.0.2",
diff --git a/storeQuestionService/package.json b/storeQuestionService/package.json
index 97f314fc..b320d87f 100644
--- a/storeQuestionService/package.json
+++ b/storeQuestionService/package.json
@@ -18,6 +18,7 @@
     },
     "homepage": "https://github.com/arquisoft/wiq_es6c#readme",
     "dependencies": {
+        "body-parser": "^1.20.2",
         "express": "^4.18.2",
         "jsonwebtoken": "^9.0.2",
         "mongoose": "^8.0.4"
diff --git a/webapp/src/storeQuestion/App.jsx b/webapp/src/storeQuestion/App.jsx
index 052b0e24..5c9194a5 100644
--- a/webapp/src/storeQuestion/App.jsx
+++ b/webapp/src/storeQuestion/App.jsx
@@ -1,7 +1,10 @@
 import Question from './components/Question';
+import React, { useState, useEffect } from 'react';
+import axios from 'axios';
+import './css/questions.css';
 
 function App(){
-    const newQuestion = {
+    /*const newQuestion = {
         question: '¿Cuál es tu pregunta?',
         answers: ['Respuesta 1', 'Respuesta 2', 'Respuesta 3', 'Respuesta 4']
     };
@@ -17,16 +20,39 @@ function App(){
       const newQuestion3 = {
         question: '¿Cuál es el país mas poblado de la tierra?',
         answers: ['China','Estados Unidos','Brazil','India'],
-      };
+      };*/
+      
+      const [preguntas, setPreguntas] = useState([]);
+
+      useEffect(() => {
+        const obtenerPreguntas = async () => {
+          try {
+            const response = await axios.get('http://localhost:8004/questions').then(setPreguntas(response.data)).error();
+            console.log(response)
+            //setPreguntas(response.data);
+          } catch (error) {
+            console.error('Error al obtener las preguntas:', error.response.data.error);
+          }
+        };
     
+        obtenerPreguntas();
+      }, []);
+
+
     return (
-        <>
+      <>
+        {preguntas.map(question => (
+          <Question key={question._id} newQuestion={question} />
+        ))}
+      </>
+    );
+
+    /*
           <Question newQuestion={newQuestion} />
           <Question newQuestion={newQuestion2} />
           <Question newQuestion={newQuestion1} />
           <Question newQuestion={newQuestion3} />
-        </>
-    );
+    */
 }
 
 export default App;
\ No newline at end of file

From e71ea923b63c4f1d94bc47a0bef05381bfe8c760 Mon Sep 17 00:00:00 2001
From: Marco Quintana <UO287872@uniovi.es>
Date: Thu, 7 Mar 2024 18:00:43 +0100
Subject: [PATCH 29/94] Unfortunately, light mode

---
 webapp/src/storeQuestion/css/questions.css | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/webapp/src/storeQuestion/css/questions.css b/webapp/src/storeQuestion/css/questions.css
index bb400f08..550dd804 100644
--- a/webapp/src/storeQuestion/css/questions.css
+++ b/webapp/src/storeQuestion/css/questions.css
@@ -62,7 +62,7 @@
 }
 
 body{
-    background-color: #0d1117;
+    background-color: #fff;
 }
 
 .question .grid p{

From e8e7da740eae09dbe67ee216ec890af3290bff35 Mon Sep 17 00:00:00 2001
From: Marco Quintana <UO287872@uniovi.es>
Date: Thu, 7 Mar 2024 18:02:38 +0100
Subject: [PATCH 30/94] added commented data for testing purpose

---
 webapp/src/storeQuestion/App.jsx | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/webapp/src/storeQuestion/App.jsx b/webapp/src/storeQuestion/App.jsx
index 5c9194a5..ec088a1c 100644
--- a/webapp/src/storeQuestion/App.jsx
+++ b/webapp/src/storeQuestion/App.jsx
@@ -20,7 +20,9 @@ function App(){
       const newQuestion3 = {
         question: '¿Cuál es el país mas poblado de la tierra?',
         answers: ['China','Estados Unidos','Brazil','India'],
-      };*/
+      };
+
+      let preguntas = [newQuestion, newQuestion1, newQuestion2, newQuestion3]*/
       
       const [preguntas, setPreguntas] = useState([]);
 

From 3534e7d9e24c558534bd23fea26c229b44edef02 Mon Sep 17 00:00:00 2001
From: Marcos Barril Villaverde <marcos.barrilvillaverde@mycit.ie>
Date: Fri, 8 Mar 2024 09:24:13 +0100
Subject: [PATCH 31/94] Minor fixes

---
 docker-compose.yml                      | 2 +-
 storeQuestionService/store-q-service.js | 2 +-
 webapp/src/storeQuestion/App.jsx        | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/docker-compose.yml b/docker-compose.yml
index 87efb266..ededb8ec 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -111,7 +111,7 @@ services:
     networks:
       - mynetwork
     environment:
-      MONGODB_URI: mongodb://mongodb:27017/userdb
+      MONGODB_URI: mongodb://mongodb:27017/storedquestion
 
 
 volumes:
diff --git a/storeQuestionService/store-q-service.js b/storeQuestionService/store-q-service.js
index 35332720..a51beaec 100644
--- a/storeQuestionService/store-q-service.js
+++ b/storeQuestionService/store-q-service.js
@@ -10,7 +10,7 @@ const port = 8004;
 app.use(bodyParser.json());
 
 // Connect to MongoDB
-const mongoUri = process.env.MONGODB_URI || 'mongodb://localhost:27017/userdb';
+const mongoUri = process.env.MONGODB_URI || 'mongodb://localhost:27017/storedquestion';
 mongoose.connect(mongoUri);
 
 // Function to validate required fields in the request body
diff --git a/webapp/src/storeQuestion/App.jsx b/webapp/src/storeQuestion/App.jsx
index 5c9194a5..cc10d10e 100644
--- a/webapp/src/storeQuestion/App.jsx
+++ b/webapp/src/storeQuestion/App.jsx
@@ -27,7 +27,7 @@ function App(){
       useEffect(() => {
         const obtenerPreguntas = async () => {
           try {
-            const response = await axios.get('http://localhost:8004/questions').then(setPreguntas(response.data)).error();
+            const response = await axios.get('http://localhost:8004').then(setPreguntas(response.data)).error();
             console.log(response)
             //setPreguntas(response.data);
           } catch (error) {

From d3104ab53aef3a68cd0813a61597eb1397be503d Mon Sep 17 00:00:00 2001
From: Marcos Barril Villaverde <marcos.barrilvillaverde@mycit.ie>
Date: Fri, 8 Mar 2024 09:48:17 +0100
Subject: [PATCH 32/94] Minor fix

---
 webapp/src/storeQuestion/App.jsx | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/webapp/src/storeQuestion/App.jsx b/webapp/src/storeQuestion/App.jsx
index 935d3845..94c6f683 100644
--- a/webapp/src/storeQuestion/App.jsx
+++ b/webapp/src/storeQuestion/App.jsx
@@ -26,12 +26,15 @@ function App(){
       
       const [preguntas, setPreguntas] = useState([]);
 
+      const apiEndpoint = process.env.REACT_APP_API_ENDPOINT || 'http://localhost:8000';
+
       useEffect(() => {
+        
         const obtenerPreguntas = async () => {
           try {
-            const response = await axios.get('http://localhost:8004').then(setPreguntas(response.data)).error();
+            const response = await axios.gets(`${apiEndpoint}/questions`).then(setPreguntas(response.data)).error();
             console.log(response)
-            //setPreguntas(response.data);
+            setPreguntas(response.data);
           } catch (error) {
             console.error('Error al obtener las preguntas:', error.response.data.error);
           }

From 2a058914265c5fa550f1e3e61bbcb7ebba1683e2 Mon Sep 17 00:00:00 2001
From: Abel <abelmhov7l@gmail.com>
Date: Sat, 9 Mar 2024 01:50:06 +0100
Subject: [PATCH 33/94] Changed the way the parameters were received and added
 more mocked questions

---
 .../questiongenerator-service.js              | 104 +++++++++++++-----
 1 file changed, 75 insertions(+), 29 deletions(-)

diff --git a/questionsservice/questiongeneratorservice/questiongenerator-service.js b/questionsservice/questiongeneratorservice/questiongenerator-service.js
index 099e87dd..a02ba53b 100644
--- a/questionsservice/questiongeneratorservice/questiongenerator-service.js
+++ b/questionsservice/questiongeneratorservice/questiongenerator-service.js
@@ -1,10 +1,10 @@
 const express = require('express');
 const mongoose = require('mongoose');
-const {Question} = require('./questiongenerator-model')
-const {Request} = require('./questiongenerator-model')
+const { Question } = require('./questiongenerator-model')
+const { Request } = require('./questiongenerator-model')
 
 const app = express();
-const port = 8006; 
+const port = 8006;
 
 // Connect to MongoDB
 const mongoUri = process.env.MONGODB_URI || 'mongodb://localhost:27017/questions';
@@ -16,38 +16,84 @@ db.once('open', () => console.log("Connected to MongoDB: %s", mongoUri));
 // Middleware to parse JSON in request body
 app.use(express.json());
 
+const mockedQuestions = [
+  {
+    pregunta: "¿Cómo me llamo?",
+    respuesta_correcta: "Abel",
+    respuestas_incorrectas: ["Federico", "Eusebio", "Gervasio"]
+  },
+  {
+    pregunta: "¿Cuál es el río más largo del mundo?",
+    respuesta_correcta: "Amazonas",
+    respuestas_incorrectas: ["Nilo", "Misisipi", "Yangtsé"]
+  },
+  {
+    pregunta: "¿En qué año comenzó la Segunda Guerra Mundial?",
+    respuesta_correcta: "1939",
+    respuestas_incorrectas: ["1941", "1942", "1945"]
+  },
+  {
+    pregunta: "¿Quién escribió 'El Quijote'?",
+    respuesta_correcta: "Miguel de Cervantes",
+    respuestas_incorrectas: ["Garcilaso de la Vega", "Federico García Lorca", "Pablo Neruda"]
+  },
+  {
+    pregunta: "¿Cuál es el símbolo químico del oro?",
+    respuesta_correcta: "Au",
+    respuestas_incorrectas: ["Ag", "Fe", "Cu"]
+  },
+  {
+    pregunta: "¿Cuál es el planeta más grande del sistema solar?",
+    respuesta_correcta: "Júpiter",
+    respuestas_incorrectas: ["Saturno", "Marte", "Venus"]
+  },
+  {
+    pregunta: "¿Quién pintó la 'Mona Lisa'?",
+    respuesta_correcta: "Leonardo da Vinci",
+    respuestas_incorrectas: ["Pablo Picasso", "Vincent van Gogh", "Rembrandt"]
+  },
+  {
+    pregunta: "¿En qué país se encuentra la Torre Eiffel?",
+    respuesta_correcta: "Francia",
+    respuestas_incorrectas: ["Italia", "España", "Alemania"]
+  },
+  {
+    pregunta: "¿Qué año marcó el fin de la Segunda Guerra Mundial?",
+    respuesta_correcta: "1945",
+    respuestas_incorrectas: ["1943", "1944", "1946"]
+  },
+  {
+    pregunta: "¿Quién escribió 'Romeo y Julieta'?",
+    respuesta_correcta: "William Shakespeare",
+    respuestas_incorrectas: ["Jane Austen", "Charles Dickens", "F. Scott Fitzgerald"]
+  },
+  {
+    pregunta: "¿Qué inventó Thomas Edison?",
+    respuesta_correcta: "Bombilla eléctrica",
+    respuestas_incorrectas: ["Teléfono", "Automóvil", "Avión"]
+  }
+]
+
 // Function to generate the required number of questions
 function getQuestions(req) {
+  const { n_preguntas, n_respuestas, tema } = req.query;
+  var preguntas = Number(n_preguntas);
+  var respuestas = Number(n_respuestas);
+  var temad = String(tema);
+
+  if (isNaN(preguntas)) {
+    return mockedQuestions.slice(0, 4);
+  }
   const response = [];
-  if ('n_preguntas' in req.body) {
-    const n_preguntas = Number(req.body.n_preguntas);
-    for (let index = 0; index < n_preguntas; index++) {
-      response.push(new Question({
-        pregunta: "¿Cómo me llamo?",
-        respuesta_correcta: "Abel",
-        respuestas_incorrectas: ["Federico", "Eusebio", "Gervasio"]
-      }));
+    for (let i = 0; i < preguntas; i++) {
+      response.push(mockedQuestions[i % 11]);
     }
-  }
-  else {
-    response.push(new Question({
-      pregunta: "¿Cómo me llamo?",
-      respuesta_correcta: "Abel",
-      respuestas_incorrectas: ["Federico", "Eusebio", "Gervasio"]
-    }));
-  }
-  return response
+    return response
 }
 
 // Route for getting questions
 app.get('/questions', async (req, res) => {
   try {
-    const request = new Request({
-      n_preguntas: Number(req.body.n_preguntas),
-      n_respuestas: Number(req.body.n_respuestas),
-      tema: req.body.tema
-    });
-
     // TODO: Implement logic to fetch questions from MongoDB and send response 
     // const questions = await Question.find()
     const defaultQuestion = getQuestions(req)
@@ -69,8 +115,8 @@ const server = app.listen(port, () => {
 });
 
 server.on('close', () => {
-    // Close the Mongoose connection
-    mongoose.connection.close();
-  });
+  // Close the Mongoose connection
+  mongoose.connection.close();
+});
 
 module.exports = server

From 24df8f232493b96f659a18d1956febc78a784fb8 Mon Sep 17 00:00:00 2001
From: Abel <abelmhov7l@gmail.com>
Date: Sat, 9 Mar 2024 21:04:12 +0100
Subject: [PATCH 34/94] Added Cors dependency to let the webapp temporaly make
 request to the service directly (without passing through the gateway)

---
 questionsservice/questiongeneratorservice/package.json        | 1 +
 .../questiongeneratorservice/questiongenerator-service.js     | 4 ++++
 2 files changed, 5 insertions(+)

diff --git a/questionsservice/questiongeneratorservice/package.json b/questionsservice/questiongeneratorservice/package.json
index cf6a7e5b..a55addc6 100644
--- a/questionsservice/questiongeneratorservice/package.json
+++ b/questionsservice/questiongeneratorservice/package.json
@@ -20,6 +20,7 @@
   "homepage": "https://github.com/arquisoft/wiq_es6c#readme",
   "dependencies": {
     "express": "^4.18.2",
+    "cors": "^2.8.5",
     "mongoose": "^8.2.0"
   },
   "devDependencies": {
diff --git a/questionsservice/questiongeneratorservice/questiongenerator-service.js b/questionsservice/questiongeneratorservice/questiongenerator-service.js
index a02ba53b..ffaec5f4 100644
--- a/questionsservice/questiongeneratorservice/questiongenerator-service.js
+++ b/questionsservice/questiongeneratorservice/questiongenerator-service.js
@@ -1,4 +1,5 @@
 const express = require('express');
+const cors = require('cors');
 const mongoose = require('mongoose');
 const { Question } = require('./questiongenerator-model')
 const { Request } = require('./questiongenerator-model')
@@ -16,6 +17,9 @@ db.once('open', () => console.log("Connected to MongoDB: %s", mongoUri));
 // Middleware to parse JSON in request body
 app.use(express.json());
 
+// Middleware to enable CORS (cross-origin resource sharing). In order for the API to be accessible by other origins (domains).
+app.use(cors());
+
 const mockedQuestions = [
   {
     pregunta: "¿Cómo me llamo?",

From 3dc210a3833ce609407f467310dd31137f553c6c Mon Sep 17 00:00:00 2001
From: Abel <abelmhov7l@gmail.com>
Date: Sat, 9 Mar 2024 21:26:48 +0100
Subject: [PATCH 35/94] Removed unnecesary line

---
 .../questiongeneratorservice/questiongenerator-service.js        | 1 -
 1 file changed, 1 deletion(-)

diff --git a/questionsservice/questiongeneratorservice/questiongenerator-service.js b/questionsservice/questiongeneratorservice/questiongenerator-service.js
index 3e4e8f90..ffaec5f4 100644
--- a/questionsservice/questiongeneratorservice/questiongenerator-service.js
+++ b/questionsservice/questiongeneratorservice/questiongenerator-service.js
@@ -98,7 +98,6 @@ function getQuestions(req) {
 // Route for getting questions
 app.get('/questions', async (req, res) => {
   try {
-    // res.setHeader("Access-Control-Allow-Origin", "*");
     // TODO: Implement logic to fetch questions from MongoDB and send response 
     // const questions = await Question.find()
     const defaultQuestion = getQuestions(req)

From 67d4aad788dc43c52726c769f08dd92576815e32 Mon Sep 17 00:00:00 2001
From: Abel <abelmhov7l@gmail.com>
Date: Sat, 9 Mar 2024 21:27:51 +0100
Subject: [PATCH 36/94] Added query params (hardcoded) and fixed question
 display

---
 webapp/src/components/Menu.js | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/webapp/src/components/Menu.js b/webapp/src/components/Menu.js
index 0a759a3c..76bc4110 100644
--- a/webapp/src/components/Menu.js
+++ b/webapp/src/components/Menu.js
@@ -6,7 +6,7 @@ import axios from 'axios';
 import { json } from 'react-router-dom';
 import { useNavigate } from 'react-router-dom'; // Importa useHistory
 
-const apiEndpoint = 'http://localhost:8006';
+const apiEndpoint = 'http://localhost:8007';
 
 var jsonApi = ''
 
@@ -63,13 +63,13 @@ const Menu = () => {
     const getQuestions = async () => {
         try {
             setn_preguntas(5)
-          const response = await axios.get(`${apiEndpoint}/questions`, {n_preguntas});
+          const response = await axios.get(`${apiEndpoint}/questions?n_preguntas=${n_preguntas}`);
           console.log(response.data.length)
           for (var i = 0; i < response.data.length; i++) {
             var possibleAnswers = [response.data[i].respuesta_correcta, response.data[i].respuestas_incorrectas[0], response.data[i].respuestas_incorrectas[1], response.data[i].respuestas_incorrectas[2]]
             possibleAnswers = shuffleArray(possibleAnswers)
             questions.push({
-              question: response.data[0].pregunta,
+              question: response.data[i].pregunta,
               options: possibleAnswers,
               correctAnswer: response.data[i].respuesta_correcta
             })

From cac634d04fca137efc8ac2db95d5c3833edf4118 Mon Sep 17 00:00:00 2001
From: Liliana <uo288574@uniovi.es>
Date: Mon, 11 Mar 2024 20:26:15 +0100
Subject: [PATCH 37/94] =?UTF-8?q?barra=20de=20navegaci=C3=B3n=20y=20pie=20?=
 =?UTF-8?q?de=20p=C3=A1gina?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 webapp/src/components/Footer.js  | 14 ++++++++++
 webapp/src/components/NavBar.css | 46 ++++++++++++++++++++++++++++++++
 webapp/src/components/NavBar.js  | 29 ++++++++++++++++++++
 3 files changed, 89 insertions(+)
 create mode 100644 webapp/src/components/Footer.js
 create mode 100644 webapp/src/components/NavBar.css
 create mode 100644 webapp/src/components/NavBar.js

diff --git a/webapp/src/components/Footer.js b/webapp/src/components/Footer.js
new file mode 100644
index 00000000..7059ad28
--- /dev/null
+++ b/webapp/src/components/Footer.js
@@ -0,0 +1,14 @@
+import { AppBar, Toolbar, Typography } from '@mui/material';
+
+const Footer = () => {
+    return (
+        <AppBar component="footer" position="static" 
+            sx={{ backgroundColor: "primary", color: "white", bottom: 0, left: 0, width: '100%', zIndex: 1000 }}>
+            <Toolbar>
+                <Typography sx={{ margin: 'auto' }}>© WIQ_ES6C</Typography>
+            </Toolbar>
+        </AppBar>
+    );
+};
+
+export default Footer;
\ No newline at end of file
diff --git a/webapp/src/components/NavBar.css b/webapp/src/components/NavBar.css
new file mode 100644
index 00000000..54516ebe
--- /dev/null
+++ b/webapp/src/components/NavBar.css
@@ -0,0 +1,46 @@
+nav {
+    background-color: #1c57c4; 
+    color: #fff; 
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    padding: 10px 20px;
+}
+  
+.logo img {
+    max-width: 100px; 
+}
+  
+.nav-links {
+    list-style: none;
+    display: flex;
+    align-items: center;
+}
+  
+.nav-links li {
+    margin-right: 5%;
+}
+  
+.nav-links li:last-child {
+    margin-right: 0%;
+}
+  
+.nav-links a {
+    text-decoration: none;
+    color: #fff;
+}
+  
+.nav-links button {
+    background-color: transparent;
+    border: none;
+    color: #fff;
+    cursor: pointer;
+}
+  
+.nav-links button:hover {
+    text-decoration: underline;
+}
+  
+.nav-links {
+    margin-left: auto; 
+}
\ No newline at end of file
diff --git a/webapp/src/components/NavBar.js b/webapp/src/components/NavBar.js
new file mode 100644
index 00000000..392baf94
--- /dev/null
+++ b/webapp/src/components/NavBar.js
@@ -0,0 +1,29 @@
+import React from 'react';
+import './NavBar.css';
+import { Link } from 'react-router-dom';
+
+const Navbar = ({ loggedIn, handleLogout }) => {
+  return (
+    <nav>
+      <div className="logo">
+        <img src=" " alt="Logo de la aplicación" />
+      </div>
+      <ul className="nav-links">
+        {loggedIn ? (
+          <div>
+            <li>
+              <Link to=" ">Perfil</Link>
+            </li>
+            <li>
+              <button onClick={handleLogout}>Cerrar sesión</button>
+            </li>
+          </div>
+        ): 
+          <div> </div>
+        }
+      </ul>
+    </nav>
+  );
+};
+
+export default Navbar;
\ No newline at end of file

From 0f1f85ac4d9a8395388c44e204780e01605de312 Mon Sep 17 00:00:00 2001
From: Marco Quintana <UO287872@uniovi.es>
Date: Tue, 12 Mar 2024 15:57:57 +0100
Subject: [PATCH 38/94] connection fixed, pending style improvement

---
 docker-compose.yml                            |  3 ++-
 gatewayservice/gateway-service.js             |  9 +++++++
 storeQuestionService/package-lock.json        | 21 +++++++++++++++
 storeQuestionService/package.json             |  1 +
 webapp/src/storeQuestion/App.jsx              | 11 +++++---
 .../src/storeQuestion/components/Question.jsx |  7 ++---
 webapp/src/storeQuestion/css/questions.css    | 26 +++++++++++++++++++
 7 files changed, 70 insertions(+), 8 deletions(-)

diff --git a/docker-compose.yml b/docker-compose.yml
index ededb8ec..8c92917b 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -55,6 +55,7 @@ services:
     environment:
       AUTH_SERVICE_URL: http://authservice:8002
       USER_SERVICE_URL: http://userservice:8001
+      STORE_QUESTION_SERVICE_URL: http://storequestionservice:8004
 
   webapp:
     container_name: webapp-${teamname:-defaultASW}
@@ -99,7 +100,7 @@ services:
     depends_on: 
       - prometheus
 
-  storequestion:
+  storequestionservice:
     container_name: storequestion-${teamname:-defaultASW}
     image: ghcr.io/arquisoft/wiq_es6c/storequestionservice:latest
     profiles: ["dev", "prod"]
diff --git a/gatewayservice/gateway-service.js b/gatewayservice/gateway-service.js
index 88b84c8f..2d3732d6 100644
--- a/gatewayservice/gateway-service.js
+++ b/gatewayservice/gateway-service.js
@@ -8,6 +8,7 @@ const port = 8000;
 
 const authServiceUrl = process.env.AUTH_SERVICE_URL || 'http://localhost:8002';
 const userServiceUrl = process.env.USER_SERVICE_URL || 'http://localhost:8001';
+const storeQuestionsServiceUrl = process.env.STORE_QUESTION_SERVICE_URL || 'http://localhost:8004'
 
 app.use(cors());
 app.use(express.json());
@@ -41,6 +42,14 @@ app.post('/adduser', async (req, res) => {
   }
 });
 
+app.get('/questions', async (req, res) => {
+  try {
+    const response = await axios.get(storeQuestionsServiceUrl+'/questions');
+    res.json(response.data);
+  } catch (error) {
+  }
+})
+
 // Start the gateway service
 const server = app.listen(port, () => {
   console.log(`Gateway Service listening at http://localhost:${port}`);
diff --git a/storeQuestionService/package-lock.json b/storeQuestionService/package-lock.json
index 78bc36fc..b123e6b1 100644
--- a/storeQuestionService/package-lock.json
+++ b/storeQuestionService/package-lock.json
@@ -10,6 +10,7 @@
             "license": "ISC",
             "dependencies": {
                 "body-parser": "^1.20.2",
+                "cors": "^2.8.5",
                 "express": "^4.18.2",
                 "jsonwebtoken": "^9.0.2",
                 "mongoose": "^8.0.4"
@@ -1805,6 +1806,18 @@
             "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==",
             "dev": true
         },
+        "node_modules/cors": {
+            "version": "2.8.5",
+            "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
+            "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
+            "dependencies": {
+                "object-assign": "^4",
+                "vary": "^1"
+            },
+            "engines": {
+                "node": ">= 0.10"
+            }
+        },
         "node_modules/create-jest": {
             "version": "29.7.0",
             "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz",
@@ -3984,6 +3997,14 @@
                 "node": ">=8"
             }
         },
+        "node_modules/object-assign": {
+            "version": "4.1.1",
+            "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+            "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
         "node_modules/object-inspect": {
             "version": "1.13.1",
             "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
diff --git a/storeQuestionService/package.json b/storeQuestionService/package.json
index b320d87f..11ee8410 100644
--- a/storeQuestionService/package.json
+++ b/storeQuestionService/package.json
@@ -19,6 +19,7 @@
     "homepage": "https://github.com/arquisoft/wiq_es6c#readme",
     "dependencies": {
         "body-parser": "^1.20.2",
+        "cors": "^2.8.5",
         "express": "^4.18.2",
         "jsonwebtoken": "^9.0.2",
         "mongoose": "^8.0.4"
diff --git a/webapp/src/storeQuestion/App.jsx b/webapp/src/storeQuestion/App.jsx
index 94c6f683..1d3e0318 100644
--- a/webapp/src/storeQuestion/App.jsx
+++ b/webapp/src/storeQuestion/App.jsx
@@ -32,7 +32,7 @@ function App(){
         
         const obtenerPreguntas = async () => {
           try {
-            const response = await axios.gets(`${apiEndpoint}/questions`).then(setPreguntas(response.data)).error();
+            const response = await axios.get(`${apiEndpoint}/questions`)
             console.log(response)
             setPreguntas(response.data);
           } catch (error) {
@@ -46,9 +46,12 @@ function App(){
 
     return (
       <>
-        {preguntas.map(question => (
-          <Question key={question._id} newQuestion={question} />
-        ))}
+        <h2>Almacén de preguntas</h2>
+        <main className='grid'>
+          {preguntas.map(question => (
+            <Question key={question._id} newQuestion={question} />
+          ))}
+        </main>
       </>
     );
 
diff --git a/webapp/src/storeQuestion/components/Question.jsx b/webapp/src/storeQuestion/components/Question.jsx
index cd14a5bc..4b6bf6d7 100644
--- a/webapp/src/storeQuestion/components/Question.jsx
+++ b/webapp/src/storeQuestion/components/Question.jsx
@@ -7,9 +7,10 @@ function Question(props) {
     <div className='question'>
       <h3>{newQuestion.question}</h3>
         <div className='grid'>
-        {newQuestion.answers.map((answer, index) => (
-            <p>{answer}</p>
-        ))}
+          <p className='right'>{newQuestion.c_answer}</p>
+          {newQuestion.w_answers.map((answer, index) => (
+              <p>{answer}</p>
+          ))}
         </div>
     </div>
   );
diff --git a/webapp/src/storeQuestion/css/questions.css b/webapp/src/storeQuestion/css/questions.css
index 550dd804..75f6c881 100644
--- a/webapp/src/storeQuestion/css/questions.css
+++ b/webapp/src/storeQuestion/css/questions.css
@@ -91,6 +91,32 @@ body{
     border-color: hsla(var(--label-h), calc(var(--label-s) * 1%), calc((var(--label-l) + var(--lighten-by)) * 1%), var(--border-alpha));
 }
 
+.question .grid p .right{
+    width: max-content;
+    border-style: dashed;
+    border-radius: 15%;
+    border-width: 1px;
+    padding: 1rem;
+
+    /* RGB & HSL params */
+    --label-r: 0;
+    --label-g: 255;
+    --label-b: 0;
+    --label-h: 120;
+    --label-s: 100;
+    --label-l: 50;
+
+    --perceived-lightness: calc( ((var(--label-r) * 0.2126) + (var(--label-g) * 0.7152) + (var(--label-b) * 0.0722)) / 255 );
+    --lightness-switch: max(0, min(calc((1/(var(--lightness-threshold) - var(--perceived-lightness)))), 1));
+    --lightness-threshold: 0.6;
+    --background-alpha: 0.18;
+    --border-alpha: 0.3;
+    --lighten-by: calc(((var(--lightness-threshold) - var(--perceived-lightness)) * 100) * var(--lightness-switch));
+    color: hsl(var(--label-h), calc(var(--label-s) * 1%), calc((var(--label-l) + var(--lighten-by)) * 1%));
+    background: rgba(var(--label-r), var(--label-g), var(--label-b), var(--background-alpha));
+    border-color: hsla(var(--label-h), calc(var(--label-s) * 1%), calc((var(--label-l) + var(--lighten-by)) * 1%), var(--border-alpha));
+}
+
 .question .grid{
     display: grid;
     grid-template-columns: auto auto;

From 7fde766490ffa4555bb58aeabec0b696a34a9657 Mon Sep 17 00:00:00 2001
From: Marco Quintana <UO287872@uniovi.es>
Date: Tue, 12 Mar 2024 16:01:08 +0100
Subject: [PATCH 39/94] commented code for testing purposes

---
 storeQuestionService/store-q-service.js | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/storeQuestionService/store-q-service.js b/storeQuestionService/store-q-service.js
index a51beaec..e3d4bf2b 100644
--- a/storeQuestionService/store-q-service.js
+++ b/storeQuestionService/store-q-service.js
@@ -72,8 +72,18 @@ app.post('/addquestions', async (req, res) => {
 
 app.get('/questions', async (req, res) => {
     try {
+        res.setHeader("Access-Control-Allow-Origin", "*");//Puede ser innecesario?
         const questions = await Question.find({}); // Get all questions
         res.json(questions);
+        /*res.json([{ //FORMATO VIEJO
+            question: '¿Cuál es la capital de la comunidad autónoma de Casstilla y León?',
+            answers: ['Segovia','León','Valladolid','Ninguna'],
+          }]);*/
+        /*res.json([{
+            question: '¿Cuál es la capital de la comunidad autónoma de Castilla y León?',
+            c_answer: 'Ninguna',
+            w_answers: ['Segovia','León','Valladolid']
+          }]);*/
     } catch (error) {
         res.status(500).json({ error: error.message });
     }

From 2ccfc612a1fd7385acd61df7d0749c61de585927 Mon Sep 17 00:00:00 2001
From: Marco Quintana <UO287872@uniovi.es>
Date: Tue, 12 Mar 2024 16:40:15 +0100
Subject: [PATCH 40/94] Style done

---
 webapp/src/storeQuestion/css/questions.css | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/webapp/src/storeQuestion/css/questions.css b/webapp/src/storeQuestion/css/questions.css
index 75f6c881..8ff1daf3 100644
--- a/webapp/src/storeQuestion/css/questions.css
+++ b/webapp/src/storeQuestion/css/questions.css
@@ -58,7 +58,8 @@
     color: hsl(var(--label-h), calc(var(--label-s) * 1%), calc((var(--label-l) + var(--lighten-by)) * 1%));
     background: rgba(var(--label-r), var(--label-g), var(--label-b), var(--background-alpha));
     border-color: hsla(var(--label-h), calc(var(--label-s) * 1%), calc((var(--label-l) + var(--lighten-by)) * 1%), var(--border-alpha));
-    
+    border-radius: 3%;
+    border-style: dashed;
 }
 
 body{
@@ -91,7 +92,7 @@ body{
     border-color: hsla(var(--label-h), calc(var(--label-s) * 1%), calc((var(--label-l) + var(--lighten-by)) * 1%), var(--border-alpha));
 }
 
-.question .grid p .right{
+.question .grid p.right{
     width: max-content;
     border-style: dashed;
     border-radius: 15%;
@@ -103,7 +104,7 @@ body{
     --label-g: 255;
     --label-b: 0;
     --label-h: 120;
-    --label-s: 100;
+    --label-s: 50;
     --label-l: 50;
 
     --perceived-lightness: calc( ((var(--label-r) * 0.2126) + (var(--label-g) * 0.7152) + (var(--label-b) * 0.0722)) / 255 );
@@ -123,7 +124,13 @@ body{
     padding: 5px;
 }
 
-#root {
+
+h2{
+    width: 100%;
+    text-align: center;
+}
+
+#root main{
     display: grid;
     grid-template-columns: repeat(auto-fit, minmax(40%, 1fr));
     padding: 5px;

From 4396167bf16dfccc3807b2dab7cf9911cc0664eb Mon Sep 17 00:00:00 2001
From: Liliana <uo288574@uniovi.es>
Date: Tue, 12 Mar 2024 19:50:08 +0100
Subject: [PATCH 41/94] change check answers

---
 webapp/src/components/FirstGame.js | 82 ++----------------------------
 1 file changed, 4 insertions(+), 78 deletions(-)

diff --git a/webapp/src/components/FirstGame.js b/webapp/src/components/FirstGame.js
index f1c88e8a..003a5be6 100644
--- a/webapp/src/components/FirstGame.js
+++ b/webapp/src/components/FirstGame.js
@@ -8,98 +8,26 @@ import { json } from 'react-router-dom';
 import { useLocation } from 'react-router-dom';
 
 
-var questionsCalled = false
-
 const Quiz = () => {
-  
   const questions = useLocation().state.questions;
-  console.log(questions)
-
-  //  useEffect (() => {
-  //   if (!isApiCalledRef) {
-  //     getQuestions();
-  //     isApiCalledRef = true;
-  //   }
-  // }, []); // Dependencia vacía para ejecutar solo al montar el componente
 
-  // const getQuestions = async () => {
-  //   try {
-  //     const response = await axios.get(`${apiEndpoint}/questions`);
-  //     for (var i = 0; i < response.data.length; i++) {
-  //       var possibleAnswers = [response.data[i].respuesta_correcta, response.data[i].respuestas_incorrectas[0], response.data[i].respuestas_incorrectas[1], response.data[i].respuestas_incorrectas[2]]
-  //       possibleAnswers = shuffleArray(possibleAnswers)
-  //       console.log(possibleAnswers)
-  //       questions.push({
-  //         question: response.data[0].pregunta,
-  //         options: possibleAnswers,
-  //         correctAnswer: response.data[i].respuesta_correcta
-  //       })
-  //     }
-  //     console.log(questions)
-      
-  //   } catch (error) {
-  //     console.error(error);
-  //   }
-  // };
-  // const getQuestions = async() => {
-  //   try {
-  //     jsonApi = await axios.get(`${apiEndpoint}/questions`);
-        
-  //   } catch (error) {
-  //     console.log(error.jsonApi.data.error);
-  //   }
-  // };
-  
-  const [currentQuestionIndex, setCurrentQuestionIndex] = useState(0);
-  const [selectedOption, setSelectedOption] = useState(null);
-  const [isCorrect, setIsCorrect] = useState(null);
+  const [currentQuestionIndex, setCurrentQuestionIndex] = React.useState(0);
+  const [selectedOption, setSelectedOption] = React.useState(null);
+  const [isCorrect, setIsCorrect] = React.useState(null);
 
   const esperar = (ms) => {
     return new Promise(resolve => setTimeout(resolve, ms));
   };
 
-  function CircularProgress(valorInicial) {
-    const [percentage, setPercentage] = useState(valorInicial);
-
-    useEffect(() => {
-      const intervalId = setInterval(() => {
-        if (percentage <= 0) {
-          clearInterval(intervalId); // Detener el intervalo
-          return 0; // Mantener percentage en 0
-        } else {
-          setPercentage(prevPercentage => prevPercentage - 1); // Actualizar el estado con el nuevo porcentaje
-        }
-      }, 100); // Intervalo de 100 milisegundos (0.1 segundo)
-  
-      // Limpiar el intervalo cuando el componente se desmonte
-      return () => clearInterval(intervalId);
-    }, []); // La dependencia vacía asegura que useEffect solo se ejecute una vez al montar el componente
-    
-    var listaDevolver = [<CircularProgressbar value={percentage}/>, percentage]
-    return (
-        listaDevolver
-    );
-  }
-
-  // const [MiCircularProgressbar, MiPercentage] = CircularProgress(100);
-
-  // useEffect(() => {
-  //   if (MiPercentage === 0) {
-  //     // Realizar alguna acción cuando MiPercentage llegue a 0
-  //   }
-  // }, [MiPercentage]); // Este efecto se ejecuta cada vez que 'MiPercentage' cambia
-
-
   const checkAnswer = async (option) => {
     setIsCorrect(option === questions[currentQuestionIndex].correctAnswer);
     setSelectedOption(option);
 
     const botonIncorrecta = document.getElementById('option-' + questions[currentQuestionIndex].options.indexOf(option))
     if (!isCorrect) {
-      
       botonIncorrecta.style.backgroundColor = 'red'
-
     }
+    
     const numberAnswer = questions[currentQuestionIndex].options.indexOf(questions[currentQuestionIndex].correctAnswer)
     const botonCorrecta = document.getElementById('option-' + numberAnswer)
     botonCorrecta.style.backgroundColor = 'green' 
@@ -109,10 +37,8 @@ const Quiz = () => {
     botonIncorrecta.style.backgroundColor = 'lightgrey'
     botonCorrecta.style.backgroundColor = 'lightgrey' 
     if (questions.length-1 !== currentQuestionIndex) {
-      
       setCurrentQuestionIndex((prevIndex) => prevIndex + 1);
     }
-
     
   };
 

From 173845ecee5b2199ac45e20f41224a669cd28d71 Mon Sep 17 00:00:00 2001
From: alegarman2002 <116609314+alegarman2002@users.noreply.github.com>
Date: Wed, 13 Mar 2024 01:32:48 +0100
Subject: [PATCH 42/94] Added the logic to do a simple wikidata query

---
 .../wikidataExtractor/wikidataConnexion.js    | 32 +++++++++++++++++++
 .../wikidataExtractor/wikidataQueries.js      | 28 ++++++++++++++++
 2 files changed, 60 insertions(+)
 create mode 100644 questionsservice/questiongeneratorservice/wikidataExtractor/wikidataConnexion.js
 create mode 100644 questionsservice/questiongeneratorservice/wikidataExtractor/wikidataQueries.js

diff --git a/questionsservice/questiongeneratorservice/wikidataExtractor/wikidataConnexion.js b/questionsservice/questiongeneratorservice/wikidataExtractor/wikidataConnexion.js
new file mode 100644
index 00000000..4778add5
--- /dev/null
+++ b/questionsservice/questiongeneratorservice/wikidataExtractor/wikidataConnexion.js
@@ -0,0 +1,32 @@
+async function consulta(query) {
+    const apiUrl = `https://query.wikidata.org/sparql?query=${encodeURIComponent(query)}&format=json`;
+    console.log(query)
+    const respuesta = await fetch(apiUrl, {
+        headers: {
+            'User-Agent': 'QuestionCrawler/1.0',
+            'Accept': 'application/json'
+        }
+    });
+    // console.log(apiUrl)
+    // console.log(respuesta)
+    if (!respuesta.ok) {
+        console.error('Error al realizar la consulta a Wikidata:', respuesta.statusText);
+        return;
+    }
+
+    const datos = await respuesta.json();
+
+    const resultados = [];
+
+    for (const resultado of datos.results.bindings) {
+        const resultadoFormateado = {};
+        for (const clave in resultado) {
+            resultadoFormateado[clave] = resultado[clave].value;
+        }
+        resultados.push(resultadoFormateado);
+    }
+
+    return resultados;
+}
+
+module.exports = {consulta}
diff --git a/questionsservice/questiongeneratorservice/wikidataExtractor/wikidataQueries.js b/questionsservice/questiongeneratorservice/wikidataExtractor/wikidataQueries.js
new file mode 100644
index 00000000..5a606f58
--- /dev/null
+++ b/questionsservice/questiongeneratorservice/wikidataExtractor/wikidataQueries.js
@@ -0,0 +1,28 @@
+const wikidata = require("./wikidataConnexion");
+
+class WikiQueries {
+
+    static async obtenerPaisYCapital() {
+        const query = `
+            SELECT ?countryLabel ?capitalLabel WHERE {
+                ?country wdt:P31 wd:Q6256.
+                ?country wdt:P36 ?capital.
+                SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],es". }
+            }
+        `;
+
+        const results = await wikidata.consulta(query);
+        // console.log(results)
+        return results;
+    }
+}
+
+
+
+
+
+
+
+
+
+module.exports = WikiQueries
\ No newline at end of file

From 06928555109931ce011c3b93670fe64a5edabf17 Mon Sep 17 00:00:00 2001
From: alegarman2002 <116609314+alegarman2002@users.noreply.github.com>
Date: Wed, 13 Mar 2024 01:34:33 +0100
Subject: [PATCH 43/94] Added the logic in the api to generate random questions
 based on the simple query

---
 .../questiongenerator-service.js              | 173 +++++++++++-------
 1 file changed, 107 insertions(+), 66 deletions(-)

diff --git a/questionsservice/questiongeneratorservice/questiongenerator-service.js b/questionsservice/questiongeneratorservice/questiongenerator-service.js
index ffaec5f4..88aec913 100644
--- a/questionsservice/questiongeneratorservice/questiongenerator-service.js
+++ b/questionsservice/questiongeneratorservice/questiongenerator-service.js
@@ -7,6 +7,7 @@ const { Request } = require('./questiongenerator-model')
 const app = express();
 const port = 8006;
 
+const WikiQueries = require('./wikidataExtractor/wikidataQueries')
 // Connect to MongoDB
 const mongoUri = process.env.MONGODB_URI || 'mongodb://localhost:27017/questions';
 mongoose.connect(mongoUri);
@@ -20,79 +21,119 @@ app.use(express.json());
 // Middleware to enable CORS (cross-origin resource sharing). In order for the API to be accessible by other origins (domains).
 app.use(cors());
 
-const mockedQuestions = [
-  {
-    pregunta: "¿Cómo me llamo?",
-    respuesta_correcta: "Abel",
-    respuestas_incorrectas: ["Federico", "Eusebio", "Gervasio"]
-  },
-  {
-    pregunta: "¿Cuál es el río más largo del mundo?",
-    respuesta_correcta: "Amazonas",
-    respuestas_incorrectas: ["Nilo", "Misisipi", "Yangtsé"]
-  },
-  {
-    pregunta: "¿En qué año comenzó la Segunda Guerra Mundial?",
-    respuesta_correcta: "1939",
-    respuestas_incorrectas: ["1941", "1942", "1945"]
-  },
-  {
-    pregunta: "¿Quién escribió 'El Quijote'?",
-    respuesta_correcta: "Miguel de Cervantes",
-    respuestas_incorrectas: ["Garcilaso de la Vega", "Federico García Lorca", "Pablo Neruda"]
-  },
-  {
-    pregunta: "¿Cuál es el símbolo químico del oro?",
-    respuesta_correcta: "Au",
-    respuestas_incorrectas: ["Ag", "Fe", "Cu"]
-  },
-  {
-    pregunta: "¿Cuál es el planeta más grande del sistema solar?",
-    respuesta_correcta: "Júpiter",
-    respuestas_incorrectas: ["Saturno", "Marte", "Venus"]
-  },
-  {
-    pregunta: "¿Quién pintó la 'Mona Lisa'?",
-    respuesta_correcta: "Leonardo da Vinci",
-    respuestas_incorrectas: ["Pablo Picasso", "Vincent van Gogh", "Rembrandt"]
-  },
-  {
-    pregunta: "¿En qué país se encuentra la Torre Eiffel?",
-    respuesta_correcta: "Francia",
-    respuestas_incorrectas: ["Italia", "España", "Alemania"]
-  },
-  {
-    pregunta: "¿Qué año marcó el fin de la Segunda Guerra Mundial?",
-    respuesta_correcta: "1945",
-    respuestas_incorrectas: ["1943", "1944", "1946"]
-  },
-  {
-    pregunta: "¿Quién escribió 'Romeo y Julieta'?",
-    respuesta_correcta: "William Shakespeare",
-    respuestas_incorrectas: ["Jane Austen", "Charles Dickens", "F. Scott Fitzgerald"]
-  },
-  {
-    pregunta: "¿Qué inventó Thomas Edison?",
-    respuesta_correcta: "Bombilla eléctrica",
-    respuestas_incorrectas: ["Teléfono", "Automóvil", "Avión"]
+var mockedQuestions = []
+var isWikiChecked = false
+var elementos
+
+function shuffle(array) {
+  let currentIndex = array.length;
+  let randomIndex;
+
+  // Mientras queden elementos para mezclar.
+  while (currentIndex > 0) {
+      // Escoge un elemento aleatorio.
+      randomIndex = Math.floor(Math.random() * currentIndex);
+      currentIndex--;
+
+      // Intercambia el elemento actual con el elemento aleatorio.
+      [array[currentIndex], array[randomIndex]] = [array[randomIndex], array[currentIndex]];
   }
-]
+
+  return array;
+}
+
+const generateQuestion = async () => {
+  if (!isWikiChecked) {
+    elementos = await WikiQueries.obtenerPaisYCapital()
+    isWikiChecked = true
+  }
+  elementos = shuffle(elementos)
+  console.log("caca", elementos)
+  mockedQuestions = [{
+    pregunta: "¿Cual es la capital de " + elementos[0].countryLabel + "?",
+    respuesta_correcta: elementos[0].capitalLabel,
+    respuestas_incorrectas: [elementos[1].capitalLabel, elementos[2].capitalLabel, elementos[3].capitalLabel]
+  }]
+  console.log(mockedQuestions)
+}
+
+
+// const mockedQuestions = [
+//   {
+//     pregunta: "¿Cómo me llamo?",
+//     respuesta_correcta: "Abel",
+//     respuestas_incorrectas: ["Federico", "Eusebio", "Gervasio"]
+//   },
+//   {
+//     pregunta: "¿Cuál es el río más largo del mundo?",
+//     respuesta_correcta: "Amazonas",
+//     respuestas_incorrectas: ["Nilo", "Misisipi", "Yangtsé"]
+//   },
+//   {
+//     pregunta: "¿En qué año comenzó la Segunda Guerra Mundial?",
+//     respuesta_correcta: "1939",
+//     respuestas_incorrectas: ["1941", "1942", "1945"]
+//   },
+//   {
+//     pregunta: "¿Quién escribió 'El Quijote'?",
+//     respuesta_correcta: "Miguel de Cervantes",
+//     respuestas_incorrectas: ["Garcilaso de la Vega", "Federico García Lorca", "Pablo Neruda"]
+//   },
+//   {
+//     pregunta: "¿Cuál es el símbolo químico del oro?",
+//     respuesta_correcta: "Au",
+//     respuestas_incorrectas: ["Ag", "Fe", "Cu"]
+//   },
+//   {
+//     pregunta: "¿Cuál es el planeta más grande del sistema solar?",
+//     respuesta_correcta: "Júpiter",
+//     respuestas_incorrectas: ["Saturno", "Marte", "Venus"]
+//   },
+//   {
+//     pregunta: "¿Quién pintó la 'Mona Lisa'?",
+//     respuesta_correcta: "Leonardo da Vinci",
+//     respuestas_incorrectas: ["Pablo Picasso", "Vincent van Gogh", "Rembrandt"]
+//   },
+//   {
+//     pregunta: "¿En qué país se encuentra la Torre Eiffel?",
+//     respuesta_correcta: "Francia",
+//     respuestas_incorrectas: ["Italia", "España", "Alemania"]
+//   },
+//   {
+//     pregunta: "¿Qué año marcó el fin de la Segunda Guerra Mundial?",
+//     respuesta_correcta: "1945",
+//     respuestas_incorrectas: ["1943", "1944", "1946"]
+//   },
+//   {
+//     pregunta: "¿Quién escribió 'Romeo y Julieta'?",
+//     respuesta_correcta: "William Shakespeare",
+//     respuestas_incorrectas: ["Jane Austen", "Charles Dickens", "F. Scott Fitzgerald"]
+//   },
+//   {
+//     pregunta: "¿Qué inventó Thomas Edison?",
+//     respuesta_correcta: "Bombilla eléctrica",
+//     respuestas_incorrectas: ["Teléfono", "Automóvil", "Avión"]
+//   }
+// ]
 
 // Function to generate the required number of questions
-function getQuestions(req) {
+async function getQuestions(req) {
   const { n_preguntas, n_respuestas, tema } = req.query;
   var preguntas = Number(n_preguntas);
   var respuestas = Number(n_respuestas);
   var temad = String(tema);
 
-  if (isNaN(preguntas)) {
-    return mockedQuestions.slice(0, 4);
-  }
-  const response = [];
-    for (let i = 0; i < preguntas; i++) {
-      response.push(mockedQuestions[i % 11]);
-    }
-    return response
+  // if (isNaN(preguntas)) {
+  //   generateQuestion()
+  //   console.log("merda", mockedQuestions)
+  //   return mockedQuestions.slice(0, 4);
+  // }
+  // const response = [];
+    await generateQuestion()
+    // for (let i = 0; i < preguntas; i++) {
+    //   response.push(mockedQuestions[i % 11]);
+    // }
+    return mockedQuestions
 }
 
 // Route for getting questions
@@ -100,7 +141,7 @@ app.get('/questions', async (req, res) => {
   try {
     // TODO: Implement logic to fetch questions from MongoDB and send response 
     // const questions = await Question.find()
-    const defaultQuestion = getQuestions(req)
+    const defaultQuestion = await getQuestions(req)
     res.json(defaultQuestion);
   } catch (error) {
     // res.status(500).json({ message: error.message })

From ac5a2a23c5f5c13815c3a603d908e54ef8360669 Mon Sep 17 00:00:00 2001
From: Abel <abelmhov7l@gmail.com>
Date: Wed, 13 Mar 2024 02:24:10 +0100
Subject: [PATCH 44/94] Added call to the question store service API for
 storing the generated questions (pending for testing)

---
 docker-compose.yml                            |  2 +
 .../package-lock.json                         | 93 +++++++++++++++++++
 .../questiongeneratorservice/package.json     |  1 +
 .../questiongenerator-service.js              | 47 +++++-----
 4 files changed, 122 insertions(+), 21 deletions(-)

diff --git a/docker-compose.yml b/docker-compose.yml
index 0fd03c84..a0a48ea2 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -57,12 +57,14 @@ services:
     build: ./questionsservice/questiongeneratorservice
     depends_on:
       - mongodb_wiki
+      - storequestionservice
     ports:
       - "8007:8006"
     networks:
       - mynetwork
     environment:
       MONGODB_URI: mongodb://mongodb_wiki:27017/questions
+      STORE_QUESTION_SERVICE_URL: http://storequestionservice:8004
 
   gatewayservice:
     container_name: gatewayservice-${teamname:-defaultASW}
diff --git a/questionsservice/questiongeneratorservice/package-lock.json b/questionsservice/questiongeneratorservice/package-lock.json
index 3dbf397a..2240421b 100644
--- a/questionsservice/questiongeneratorservice/package-lock.json
+++ b/questionsservice/questiongeneratorservice/package-lock.json
@@ -9,6 +9,8 @@
       "version": "1.0.0",
       "license": "ISC",
       "dependencies": {
+        "axios": "^1.6.5",
+        "cors": "^2.8.5",
         "express": "^4.18.2",
         "mongoose": "^8.2.0"
       },
@@ -73,6 +75,21 @@
       "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
       "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
     },
+    "node_modules/asynckit": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+      "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
+    },
+    "node_modules/axios": {
+      "version": "1.6.7",
+      "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz",
+      "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==",
+      "dependencies": {
+        "follow-redirects": "^1.15.4",
+        "form-data": "^4.0.0",
+        "proxy-from-env": "^1.1.0"
+      }
+    },
     "node_modules/balanced-match": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
@@ -191,6 +208,17 @@
         "fsevents": "~2.3.2"
       }
     },
+    "node_modules/combined-stream": {
+      "version": "1.0.8",
+      "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+      "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+      "dependencies": {
+        "delayed-stream": "~1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
     "node_modules/concat-map": {
       "version": "0.0.1",
       "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
@@ -229,6 +257,18 @@
       "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
       "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
     },
+    "node_modules/cors": {
+      "version": "2.8.5",
+      "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
+      "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
+      "dependencies": {
+        "object-assign": "^4",
+        "vary": "^1"
+      },
+      "engines": {
+        "node": ">= 0.10"
+      }
+    },
     "node_modules/debug": {
       "version": "2.6.9",
       "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
@@ -253,6 +293,14 @@
         "url": "https://github.com/sponsors/ljharb"
       }
     },
+    "node_modules/delayed-stream": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+      "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
     "node_modules/depd": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
@@ -385,6 +433,38 @@
         "node": ">= 0.8"
       }
     },
+    "node_modules/follow-redirects": {
+      "version": "1.15.5",
+      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz",
+      "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==",
+      "funding": [
+        {
+          "type": "individual",
+          "url": "https://github.com/sponsors/RubenVerborgh"
+        }
+      ],
+      "engines": {
+        "node": ">=4.0"
+      },
+      "peerDependenciesMeta": {
+        "debug": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/form-data": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
+      "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+      "dependencies": {
+        "asynckit": "^0.4.0",
+        "combined-stream": "^1.0.8",
+        "mime-types": "^2.1.12"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
     "node_modules/forwarded": {
       "version": "0.2.0",
       "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
@@ -900,6 +980,14 @@
         "node": ">=0.10.0"
       }
     },
+    "node_modules/object-assign": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+      "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
     "node_modules/object-inspect": {
       "version": "1.13.1",
       "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
@@ -956,6 +1044,11 @@
         "node": ">= 0.10"
       }
     },
+    "node_modules/proxy-from-env": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+      "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
+    },
     "node_modules/pstree.remy": {
       "version": "1.1.8",
       "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz",
diff --git a/questionsservice/questiongeneratorservice/package.json b/questionsservice/questiongeneratorservice/package.json
index a55addc6..026b5970 100644
--- a/questionsservice/questiongeneratorservice/package.json
+++ b/questionsservice/questiongeneratorservice/package.json
@@ -20,6 +20,7 @@
   "homepage": "https://github.com/arquisoft/wiq_es6c#readme",
   "dependencies": {
     "express": "^4.18.2",
+    "axios": "^1.6.5",
     "cors": "^2.8.5",
     "mongoose": "^8.2.0"
   },
diff --git a/questionsservice/questiongeneratorservice/questiongenerator-service.js b/questionsservice/questiongeneratorservice/questiongenerator-service.js
index 88aec913..505a7a99 100644
--- a/questionsservice/questiongeneratorservice/questiongenerator-service.js
+++ b/questionsservice/questiongeneratorservice/questiongenerator-service.js
@@ -1,5 +1,6 @@
 const express = require('express');
 const cors = require('cors');
+const axios = require('axios');
 const mongoose = require('mongoose');
 const { Question } = require('./questiongenerator-model')
 const { Request } = require('./questiongenerator-model')
@@ -7,7 +8,9 @@ const { Request } = require('./questiongenerator-model')
 const app = express();
 const port = 8006;
 
-const WikiQueries = require('./wikidataExtractor/wikidataQueries')
+const questionHistoryServiceUrl = process.env.QUESTION_HISTORY_SERVICE_URL || 'http://localhost:8004';
+
+const WikiQueries = require('./wikidataExtractor/wikidataQueries');
 // Connect to MongoDB
 const mongoUri = process.env.MONGODB_URI || 'mongodb://localhost:27017/questions';
 mongoose.connect(mongoUri);
@@ -21,9 +24,9 @@ app.use(express.json());
 // Middleware to enable CORS (cross-origin resource sharing). In order for the API to be accessible by other origins (domains).
 app.use(cors());
 
-var mockedQuestions = []
-var isWikiChecked = false
-var elementos
+var mockedQuestions = [];
+var isWikiChecked = false;
+var elementos;
 
 function shuffle(array) {
   let currentIndex = array.length;
@@ -31,12 +34,12 @@ function shuffle(array) {
 
   // Mientras queden elementos para mezclar.
   while (currentIndex > 0) {
-      // Escoge un elemento aleatorio.
-      randomIndex = Math.floor(Math.random() * currentIndex);
-      currentIndex--;
+    // Escoge un elemento aleatorio.
+    randomIndex = Math.floor(Math.random() * currentIndex);
+    currentIndex--;
 
-      // Intercambia el elemento actual con el elemento aleatorio.
-      [array[currentIndex], array[randomIndex]] = [array[randomIndex], array[currentIndex]];
+    // Intercambia el elemento actual con el elemento aleatorio.
+    [array[currentIndex], array[randomIndex]] = [array[randomIndex], array[currentIndex]];
   }
 
   return array;
@@ -44,17 +47,17 @@ function shuffle(array) {
 
 const generateQuestion = async () => {
   if (!isWikiChecked) {
-    elementos = await WikiQueries.obtenerPaisYCapital()
-    isWikiChecked = true
+    elementos = await WikiQueries.obtenerPaisYCapital();
+    isWikiChecked = true;
   }
-  elementos = shuffle(elementos)
-  console.log("caca", elementos)
+  elementos = shuffle(elementos);
+  console.log("caca", elementos);
   mockedQuestions = [{
     pregunta: "¿Cual es la capital de " + elementos[0].countryLabel + "?",
     respuesta_correcta: elementos[0].capitalLabel,
     respuestas_incorrectas: [elementos[1].capitalLabel, elementos[2].capitalLabel, elementos[3].capitalLabel]
-  }]
-  console.log(mockedQuestions)
+  }];
+  console.log(mockedQuestions);
 }
 
 
@@ -129,11 +132,11 @@ async function getQuestions(req) {
   //   return mockedQuestions.slice(0, 4);
   // }
   // const response = [];
-    await generateQuestion()
-    // for (let i = 0; i < preguntas; i++) {
-    //   response.push(mockedQuestions[i % 11]);
-    // }
-    return mockedQuestions
+  await generateQuestion();
+  // for (let i = 0; i < preguntas; i++) {
+  //   response.push(mockedQuestions[i % 11]);
+  // }
+  return mockedQuestions;
 }
 
 // Route for getting questions
@@ -141,7 +144,9 @@ app.get('/questions', async (req, res) => {
   try {
     // TODO: Implement logic to fetch questions from MongoDB and send response 
     // const questions = await Question.find()
-    const defaultQuestion = await getQuestions(req)
+    const defaultQuestion = await getQuestions(req);
+
+    const questionsHistoryResponse = await axios.post(questionHistoryServiceUrl + '/history/questions', defaultQuestion);
     res.json(defaultQuestion);
   } catch (error) {
     // res.status(500).json({ message: error.message })

From c0e34cc1085cc934505b482fbe2c514c0f0b9eaf Mon Sep 17 00:00:00 2001
From: MarcosBarrilVillaverde
 <114151873+MarcosBarrilVillaverde@users.noreply.github.com>
Date: Wed, 13 Mar 2024 11:08:44 +0100
Subject: [PATCH 45/94] Update storeQuestionService/store-q-service.js

Route changed to maintain standards

Co-authored-by: Abel <114153419+AbelMH1@users.noreply.github.com>
---
 storeQuestionService/store-q-service.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/storeQuestionService/store-q-service.js b/storeQuestionService/store-q-service.js
index e3d4bf2b..af5bed2c 100644
--- a/storeQuestionService/store-q-service.js
+++ b/storeQuestionService/store-q-service.js
@@ -70,7 +70,7 @@ app.post('/addquestions', async (req, res) => {
 });
 
 
-app.get('/questions', async (req, res) => {
+app.get('/history/questions', async (req, res) => {
     try {
         res.setHeader("Access-Control-Allow-Origin", "*");//Puede ser innecesario?
         const questions = await Question.find({}); // Get all questions

From 5c2a97cd7282df673b78614fb1f95af098fc4827 Mon Sep 17 00:00:00 2001
From: MarcosBarrilVillaverde
 <114151873+MarcosBarrilVillaverde@users.noreply.github.com>
Date: Wed, 13 Mar 2024 11:27:00 +0100
Subject: [PATCH 46/94] Update storeQuestionService/store-q-service.js

Route changed to maintain standards

Co-authored-by: Abel <114153419+AbelMH1@users.noreply.github.com>
---
 storeQuestionService/store-q-service.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/storeQuestionService/store-q-service.js b/storeQuestionService/store-q-service.js
index af5bed2c..6e42adba 100644
--- a/storeQuestionService/store-q-service.js
+++ b/storeQuestionService/store-q-service.js
@@ -22,7 +22,7 @@ function validateRequiredFields(req, requiredFields) {
     }
 }
 
-app.post('/addquestion', async (req, res) => {
+app.post('/history/questions', async (req, res) => {
     try {
         // Check if required fields are present in the request body
         validateRequiredFields(req, ['question', 'c_answer','w_answers']);

From e1b5a7cfee3cf132fd5d46adf2fe25da65a68ca9 Mon Sep 17 00:00:00 2001
From: MarcosBarrilVillaverde
 <114151873+MarcosBarrilVillaverde@users.noreply.github.com>
Date: Wed, 13 Mar 2024 11:28:01 +0100
Subject: [PATCH 47/94] Update storeQuestionService/store-q-service.js

Body-parser is not longer use as it functions are already present at the last version of express

Co-authored-by: Abel <114153419+AbelMH1@users.noreply.github.com>
---
 storeQuestionService/store-q-service.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/storeQuestionService/store-q-service.js b/storeQuestionService/store-q-service.js
index 6e42adba..514633ef 100644
--- a/storeQuestionService/store-q-service.js
+++ b/storeQuestionService/store-q-service.js
@@ -7,7 +7,7 @@ const app = express();
 const port = 8004;
 
 // Middleware to parse JSON in request body
-app.use(bodyParser.json());
+app.use(express.json());
 
 // Connect to MongoDB
 const mongoUri = process.env.MONGODB_URI || 'mongodb://localhost:27017/storedquestion';

From 419cbc7353c8ee891c6110abc60cc9052279ee8b Mon Sep 17 00:00:00 2001
From: MarcosBarrilVillaverde
 <114151873+MarcosBarrilVillaverde@users.noreply.github.com>
Date: Wed, 13 Mar 2024 11:30:14 +0100
Subject: [PATCH 48/94] Update package.json to delete unused dependencies

---
 storeQuestionService/package.json | 1 -
 1 file changed, 1 deletion(-)

diff --git a/storeQuestionService/package.json b/storeQuestionService/package.json
index 11ee8410..5de3b128 100644
--- a/storeQuestionService/package.json
+++ b/storeQuestionService/package.json
@@ -18,7 +18,6 @@
     },
     "homepage": "https://github.com/arquisoft/wiq_es6c#readme",
     "dependencies": {
-        "body-parser": "^1.20.2",
         "cors": "^2.8.5",
         "express": "^4.18.2",
         "jsonwebtoken": "^9.0.2",

From 4001c439f64a4c7d294063b1513f510d95addec7 Mon Sep 17 00:00:00 2001
From: MarcosBarrilVillaverde
 <114151873+MarcosBarrilVillaverde@users.noreply.github.com>
Date: Wed, 13 Mar 2024 11:34:29 +0100
Subject: [PATCH 49/94] Update store-q-model.js to fix convention names

---
 storeQuestionService/store-q-model.js | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/storeQuestionService/store-q-model.js b/storeQuestionService/store-q-model.js
index ffa1730a..36903049 100644
--- a/storeQuestionService/store-q-model.js
+++ b/storeQuestionService/store-q-model.js
@@ -1,14 +1,21 @@
 const mongoose = require('mongoose');
 
 const questionStorageSchema = new mongoose.Schema({
-    question: {
+    pregunta: {
         type: String,
         required: true,
     },
-    c_answer: { type: String, required: true },
-    w_answers: [{ type: String, required: true }],
+    respuesta_correcta: { 
+        type: String, 
+        required: true 
+    },
+    respuestas_incorrectas: [{ 
+        type: String, 
+        required: true 
+    }],
     createdAt: {
         type: Date,
+        required: true,
         default: Date.now, 
       },
 });

From 62b6aba33e173645d7f0ffdf70343cf3c6f46594 Mon Sep 17 00:00:00 2001
From: MarcosBarrilVillaverde
 <114151873+MarcosBarrilVillaverde@users.noreply.github.com>
Date: Wed, 13 Mar 2024 11:39:17 +0100
Subject: [PATCH 50/94] Update store-q-service.js to fix changes in data
 structure

---
 storeQuestionService/store-q-service.js | 24 +++++++++++++-----------
 1 file changed, 13 insertions(+), 11 deletions(-)

diff --git a/storeQuestionService/store-q-service.js b/storeQuestionService/store-q-service.js
index 514633ef..66e47ccf 100644
--- a/storeQuestionService/store-q-service.js
+++ b/storeQuestionService/store-q-service.js
@@ -25,12 +25,13 @@ function validateRequiredFields(req, requiredFields) {
 app.post('/history/questions', async (req, res) => {
     try {
         // Check if required fields are present in the request body
-        validateRequiredFields(req, ['question', 'c_answer','w_answers']);
+        validateRequiredFields(req, ['pregunta', 'respuesta_correcta','respuestas_incorrectas']);
 
         const newQuestion = new Question({
-            question: req.body.question,
-            c_answer: req.body.answers,
-            w_answers: req.body.answers,
+            pregunta: req.body.pregunta,
+            respuesta_correcta: req.body.respuesta_correcta,
+            respuestas_incorrectas: req.body.respuestas_incorrectas,
+            createdAt: req.body.createdAt
         });
 
         await newQuestion.save();
@@ -47,16 +48,17 @@ app.post('/addquestions', async (req, res) => {
           throw new Error('Invalid request format. Expected an array of questions.');
       }
       for (const question of req.body) {
-          validateRequiredFields(question, ['question', 'c_answer','w_answers']);
+          validateRequiredFields(question, ['pregunta', 'respuesta_correcta','respuestas_incorrectas']);
       }
 
       const newQuestions = [];
 
       for (const questionData of req.body) {
         const newQuestion = new Question({
-            question: req.body.question,
-            c_answer: req.body.answers,
-            w_answers: req.body.answers,
+            pregunta: req.body.pregunta,
+            respuesta_correcta: req.body.respuesta_correcta,
+            respuestas_incorrectas: req.body.respuestas_incorrectas,
+            createdAt: req.body.createdAt
         });
 
         await newQuestion.save();
@@ -80,9 +82,9 @@ app.get('/history/questions', async (req, res) => {
             answers: ['Segovia','León','Valladolid','Ninguna'],
           }]);*/
         /*res.json([{
-            question: '¿Cuál es la capital de la comunidad autónoma de Castilla y León?',
-            c_answer: 'Ninguna',
-            w_answers: ['Segovia','León','Valladolid']
+            pregunta: '¿Cuál es la capital de la comunidad autónoma de Castilla y León?',
+            respuesta_incorrecta: 'Ninguna',
+            respuestas_incorrectas: ['Segovia','León','Valladolid']
           }]);*/
     } catch (error) {
         res.status(500).json({ error: error.message });

From edb344979e3dd577e5a9a49a6718b522df4ba166 Mon Sep 17 00:00:00 2001
From: MarcosBarrilVillaverde
 <114151873+MarcosBarrilVillaverde@users.noreply.github.com>
Date: Wed, 13 Mar 2024 11:41:28 +0100
Subject: [PATCH 51/94] Update store-q-service.js to fix post functions route

---
 storeQuestionService/store-q-service.js | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/storeQuestionService/store-q-service.js b/storeQuestionService/store-q-service.js
index 66e47ccf..bbabbd21 100644
--- a/storeQuestionService/store-q-service.js
+++ b/storeQuestionService/store-q-service.js
@@ -22,7 +22,7 @@ function validateRequiredFields(req, requiredFields) {
     }
 }
 
-app.post('/history/questions', async (req, res) => {
+app.post('/history/question', async (req, res) => {
     try {
         // Check if required fields are present in the request body
         validateRequiredFields(req, ['pregunta', 'respuesta_correcta','respuestas_incorrectas']);
@@ -41,7 +41,7 @@ app.post('/history/questions', async (req, res) => {
     }
 });
 
-app.post('/addquestions', async (req, res) => {
+app.post('/history/questions', async (req, res) => {
   try {
       // Check if required fields are present in the request body
       if (!Array.isArray(req.body)) {

From 06d5a200f5ab5d012c1ac9a7dc04464f1204a125 Mon Sep 17 00:00:00 2001
From: MarcosBarrilVillaverde
 <114151873+MarcosBarrilVillaverde@users.noreply.github.com>
Date: Wed, 13 Mar 2024 11:46:26 +0100
Subject: [PATCH 52/94] Update storeQuestionService/store-q-service.js to
 delete unecesary line of code

Co-authored-by: Abel <114153419+AbelMH1@users.noreply.github.com>
---
 storeQuestionService/store-q-service.js | 1 -
 1 file changed, 1 deletion(-)

diff --git a/storeQuestionService/store-q-service.js b/storeQuestionService/store-q-service.js
index bbabbd21..f66eb077 100644
--- a/storeQuestionService/store-q-service.js
+++ b/storeQuestionService/store-q-service.js
@@ -74,7 +74,6 @@ app.post('/history/questions', async (req, res) => {
 
 app.get('/history/questions', async (req, res) => {
     try {
-        res.setHeader("Access-Control-Allow-Origin", "*");//Puede ser innecesario?
         const questions = await Question.find({}); // Get all questions
         res.json(questions);
         /*res.json([{ //FORMATO VIEJO

From e7d110891bb9e20baac718989ffaba66f0b522bf Mon Sep 17 00:00:00 2001
From: MarcosBarrilVillaverde
 <114151873+MarcosBarrilVillaverde@users.noreply.github.com>
Date: Wed, 13 Mar 2024 12:26:35 +0100
Subject: [PATCH 53/94] Update gateway-service.js added error managment to
 question service

---
 gatewayservice/gateway-service.js | 1 +
 1 file changed, 1 insertion(+)

diff --git a/gatewayservice/gateway-service.js b/gatewayservice/gateway-service.js
index 2d3732d6..f78ee7dd 100644
--- a/gatewayservice/gateway-service.js
+++ b/gatewayservice/gateway-service.js
@@ -47,6 +47,7 @@ app.get('/questions', async (req, res) => {
     const response = await axios.get(storeQuestionsServiceUrl+'/questions');
     res.json(response.data);
   } catch (error) {
+    res.status(error.response.status).json({ error: error.response.data.error });
   }
 })
 

From b3f302a57de1493e635e484a8308f81698bf4fbc Mon Sep 17 00:00:00 2001
From: alegarman2002 <116609314+alegarman2002@users.noreply.github.com>
Date: Wed, 13 Mar 2024 13:29:09 +0100
Subject: [PATCH 54/94] Updated the game so we can have unlimited questions

---
 webapp/src/components/FirstGame.js | 47 ++++++++++++++++++++++++++++--
 1 file changed, 45 insertions(+), 2 deletions(-)

diff --git a/webapp/src/components/FirstGame.js b/webapp/src/components/FirstGame.js
index 003a5be6..d3789cf6 100644
--- a/webapp/src/components/FirstGame.js
+++ b/webapp/src/components/FirstGame.js
@@ -7,9 +7,9 @@ import axios from 'axios';
 import { json } from 'react-router-dom';
 import { useLocation } from 'react-router-dom';
 
-
+const apiEndpoint = 'http://localhost:8007';
 const Quiz = () => {
-  const questions = useLocation().state.questions;
+  var questions = useLocation().state.questions;
 
   const [currentQuestionIndex, setCurrentQuestionIndex] = React.useState(0);
   const [selectedOption, setSelectedOption] = React.useState(null);
@@ -19,7 +19,48 @@ const Quiz = () => {
     return new Promise(resolve => setTimeout(resolve, ms));
   };
 
+
+  function shuffleArray(array) {
+    // Crea una copia del array original
+    const shuffledArray = [...array];
+  
+    // Recorre el array desde el último elemento hasta el primero
+    for (let i = shuffledArray.length - 1; i > 0; i--) {
+      // Genera un índice aleatorio entre 0 y el índice actual
+      const randomIndex = Math.floor(Math.random() * (i + 1));
+  
+      // Intercambia el elemento actual con el elemento del índice aleatorio
+      const temp = shuffledArray[i];
+      shuffledArray[i] = shuffledArray[randomIndex];
+      shuffledArray[randomIndex] = temp;
+    }
+  
+    // Devuelve el array barajado
+    return shuffledArray;
+  }
+
+
+  const getQuestions = async () => {
+    try {
+      const response = await axios.get(`${apiEndpoint}/questions?n_preguntas=${1}`);
+      console.log(response.data.length)
+      for (var i = 0; i < response.data.length; i++) {
+        var possibleAnswers = [response.data[i].respuesta_correcta, response.data[i].respuestas_incorrectas[0], response.data[i].respuestas_incorrectas[1], response.data[i].respuestas_incorrectas[2]]
+        possibleAnswers = shuffleArray(possibleAnswers)
+        questions.push({
+          question: response.data[i].pregunta,
+          options: possibleAnswers,
+          correctAnswer: response.data[i].respuesta_correcta
+        })
+      }      
+    } catch (error) {
+      console.error(error);
+    }
+    console.log(questions)
+};
+
   const checkAnswer = async (option) => {
+    getQuestions()
     setIsCorrect(option === questions[currentQuestionIndex].correctAnswer);
     setSelectedOption(option);
 
@@ -39,6 +80,8 @@ const Quiz = () => {
     if (questions.length-1 !== currentQuestionIndex) {
       setCurrentQuestionIndex((prevIndex) => prevIndex + 1);
     }
+    setIsCorrect(false)
+    
     
   };
 

From eef9653969c42c6330605db445041b7572ee0583 Mon Sep 17 00:00:00 2001
From: MarcosBarrilVillaverde
 <114151873+MarcosBarrilVillaverde@users.noreply.github.com>
Date: Wed, 13 Mar 2024 13:50:44 +0100
Subject: [PATCH 55/94] Update gatewayservice/gateway-service.js fixed new
 route in questions

Co-authored-by: Abel <114153419+AbelMH1@users.noreply.github.com>
---
 gatewayservice/gateway-service.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gatewayservice/gateway-service.js b/gatewayservice/gateway-service.js
index f78ee7dd..cb973755 100644
--- a/gatewayservice/gateway-service.js
+++ b/gatewayservice/gateway-service.js
@@ -44,7 +44,7 @@ app.post('/adduser', async (req, res) => {
 
 app.get('/questions', async (req, res) => {
   try {
-    const response = await axios.get(storeQuestionsServiceUrl+'/questions');
+    const response = await axios.get(storeQuestionsServiceUrl+'/history/questions');
     res.json(response.data);
   } catch (error) {
     res.status(error.response.status).json({ error: error.response.data.error });

From a015019fe721035f91a224fb8176182f62d0f949 Mon Sep 17 00:00:00 2001
From: MarcosBarrilVillaverde
 <114151873+MarcosBarrilVillaverde@users.noreply.github.com>
Date: Wed, 13 Mar 2024 13:50:59 +0100
Subject: [PATCH 56/94] Update storeQuestionService/store-q.test.js Added new
 route in tests

Co-authored-by: Abel <114153419+AbelMH1@users.noreply.github.com>
---
 storeQuestionService/store-q.test.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/storeQuestionService/store-q.test.js b/storeQuestionService/store-q.test.js
index 1609a694..54ff4176 100644
--- a/storeQuestionService/store-q.test.js
+++ b/storeQuestionService/store-q.test.js
@@ -24,7 +24,7 @@ describe('Store questions service', () => {
       w_answers: ['Segovia','León','Valladolid'],
     };
 
-    const response = await request(app).post('/addquestion').send(newQuestion);
+    const response = await request(app).post('/history/question').send(newQuestion);
     expect(response.status).toBe(200);
     expect(response.body).toHaveProperty('question', 'c_answer', 'w_answers');
   });

From e352872f8b0132ae9313409de1190844ef2cbfb5 Mon Sep 17 00:00:00 2001
From: MarcosBarrilVillaverde
 <114151873+MarcosBarrilVillaverde@users.noreply.github.com>
Date: Wed, 13 Mar 2024 13:51:23 +0100
Subject: [PATCH 57/94] Update storeQuestionService/store-q.test.js

Co-authored-by: Abel <114153419+AbelMH1@users.noreply.github.com>
---
 storeQuestionService/store-q.test.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/storeQuestionService/store-q.test.js b/storeQuestionService/store-q.test.js
index 54ff4176..8b6f5fee 100644
--- a/storeQuestionService/store-q.test.js
+++ b/storeQuestionService/store-q.test.js
@@ -31,7 +31,7 @@ describe('Store questions service', () => {
 });
 
 describe('Store questions service', () => {
-  it('should get all questions on GET /questions', async () => {
+  it('should get all questions on GET /history/questions', async () => {
     const newQuestion1 = {
       question: '¿Cuál es la capital de la comunidad autónoma de Castilla y León?',
       c_answer: 'Ninguna',

From de2e940a6141545b0496d5010e5fbe2e122f0816 Mon Sep 17 00:00:00 2001
From: MarcosBarrilVillaverde
 <114151873+MarcosBarrilVillaverde@users.noreply.github.com>
Date: Wed, 13 Mar 2024 13:51:32 +0100
Subject: [PATCH 58/94] Update storeQuestionService/store-q.test.js

Co-authored-by: Abel <114153419+AbelMH1@users.noreply.github.com>
---
 storeQuestionService/store-q.test.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/storeQuestionService/store-q.test.js b/storeQuestionService/store-q.test.js
index 8b6f5fee..4d1894f9 100644
--- a/storeQuestionService/store-q.test.js
+++ b/storeQuestionService/store-q.test.js
@@ -52,7 +52,7 @@ describe('Store questions service', () => {
     request(app).post('/addquestion').send(newQuestion2);
     request(app).post('/addquestion').send(newQuestion3);
 
-    const response = await request(app).get('/questions');
+    const response = await request(app).get('/history/questions');
 
     expect(response.status).toBe(200);
     expect(response.body).toEqual(

From 5d228418f1023ad7e6e7ab0bdaeefb2f7acfb506 Mon Sep 17 00:00:00 2001
From: MarcosBarrilVillaverde
 <114151873+MarcosBarrilVillaverde@users.noreply.github.com>
Date: Wed, 13 Mar 2024 13:51:40 +0100
Subject: [PATCH 59/94] Update storeQuestionService/store-q.test.js

Co-authored-by: Abel <114153419+AbelMH1@users.noreply.github.com>
---
 storeQuestionService/store-q.test.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/storeQuestionService/store-q.test.js b/storeQuestionService/store-q.test.js
index 4d1894f9..b849a181 100644
--- a/storeQuestionService/store-q.test.js
+++ b/storeQuestionService/store-q.test.js
@@ -17,7 +17,7 @@ afterAll(async () => {
 });
 
 describe('Store questions service', () => {
-  it('should add a new question on POST /addquestion', async () => {
+  it('should add a new question on POST /history/question', async () => {
     const newQuestion = {
       question: '¿Cuál es la capital de la comunidad autónoma de Castilla y León?',
       c_answer: 'Ninguna',

From bab06821c9878682e5009417aeea5331db8d59f7 Mon Sep 17 00:00:00 2001
From: MarcosBarrilVillaverde
 <114151873+MarcosBarrilVillaverde@users.noreply.github.com>
Date: Wed, 13 Mar 2024 13:52:00 +0100
Subject: [PATCH 60/94] Update storeQuestionService/store-q.test.js  Added new
 route in tests

Co-authored-by: Abel <114153419+AbelMH1@users.noreply.github.com>
---
 storeQuestionService/store-q.test.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/storeQuestionService/store-q.test.js b/storeQuestionService/store-q.test.js
index b849a181..eab8baff 100644
--- a/storeQuestionService/store-q.test.js
+++ b/storeQuestionService/store-q.test.js
@@ -50,7 +50,7 @@ describe('Store questions service', () => {
   
     request(app).post('/addquestion').send(newQuestion1);
     request(app).post('/addquestion').send(newQuestion2);
-    request(app).post('/addquestion').send(newQuestion3);
+    request(app).post('/history/question').send(newQuestion3);
 
     const response = await request(app).get('/history/questions');
 

From fe390aff2abbf87faa4118c7fa7e6231f00dabc3 Mon Sep 17 00:00:00 2001
From: MarcosBarrilVillaverde
 <114151873+MarcosBarrilVillaverde@users.noreply.github.com>
Date: Wed, 13 Mar 2024 13:52:09 +0100
Subject: [PATCH 61/94] Update storeQuestionService/store-q.test.js  Added new
 route in tests

Co-authored-by: Abel <114153419+AbelMH1@users.noreply.github.com>
---
 storeQuestionService/store-q.test.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/storeQuestionService/store-q.test.js b/storeQuestionService/store-q.test.js
index eab8baff..5e279a4d 100644
--- a/storeQuestionService/store-q.test.js
+++ b/storeQuestionService/store-q.test.js
@@ -49,7 +49,7 @@ describe('Store questions service', () => {
     };
   
     request(app).post('/addquestion').send(newQuestion1);
-    request(app).post('/addquestion').send(newQuestion2);
+    request(app).post('/history/question').send(newQuestion2);
     request(app).post('/history/question').send(newQuestion3);
 
     const response = await request(app).get('/history/questions');

From 933ce9e7a30a2c3696718d0c99c76a260b067825 Mon Sep 17 00:00:00 2001
From: MarcosBarrilVillaverde
 <114151873+MarcosBarrilVillaverde@users.noreply.github.com>
Date: Wed, 13 Mar 2024 13:52:19 +0100
Subject: [PATCH 62/94] Update storeQuestionService/store-q.test.js  Added new
 route in tests

Co-authored-by: Abel <114153419+AbelMH1@users.noreply.github.com>
---
 storeQuestionService/store-q.test.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/storeQuestionService/store-q.test.js b/storeQuestionService/store-q.test.js
index 5e279a4d..af64cb95 100644
--- a/storeQuestionService/store-q.test.js
+++ b/storeQuestionService/store-q.test.js
@@ -48,7 +48,7 @@ describe('Store questions service', () => {
       w_answers: ['China','Estados Unidos','Brazil'],
     };
   
-    request(app).post('/addquestion').send(newQuestion1);
+    request(app).post('/history/question').send(newQuestion1);
     request(app).post('/history/question').send(newQuestion2);
     request(app).post('/history/question').send(newQuestion3);
 

From 9536c6b639053470d2957b8dad0a56cf3a4d3cdf Mon Sep 17 00:00:00 2001
From: MarcosBarrilVillaverde
 <114151873+MarcosBarrilVillaverde@users.noreply.github.com>
Date: Wed, 13 Mar 2024 13:52:31 +0100
Subject: [PATCH 63/94] Update gatewayservice/gateway-service.js  Added new
 route in tests

Co-authored-by: Abel <114153419+AbelMH1@users.noreply.github.com>
---
 gatewayservice/gateway-service.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gatewayservice/gateway-service.js b/gatewayservice/gateway-service.js
index cb973755..9a969b11 100644
--- a/gatewayservice/gateway-service.js
+++ b/gatewayservice/gateway-service.js
@@ -42,7 +42,7 @@ app.post('/adduser', async (req, res) => {
   }
 });
 
-app.get('/questions', async (req, res) => {
+app.get('/history/questions', async (req, res) => {
   try {
     const response = await axios.get(storeQuestionsServiceUrl+'/history/questions');
     res.json(response.data);

From 40f07955c78002879679f621e4a0565745be8c61 Mon Sep 17 00:00:00 2001
From: MarcosBarrilVillaverde
 <114151873+MarcosBarrilVillaverde@users.noreply.github.com>
Date: Wed, 13 Mar 2024 13:58:36 +0100
Subject: [PATCH 64/94] Update store-q.test.js fixed questions format

---
 storeQuestionService/store-q.test.js | 28 ++++++++++++++++------------
 1 file changed, 16 insertions(+), 12 deletions(-)

diff --git a/storeQuestionService/store-q.test.js b/storeQuestionService/store-q.test.js
index af64cb95..b9aeb2ac 100644
--- a/storeQuestionService/store-q.test.js
+++ b/storeQuestionService/store-q.test.js
@@ -19,9 +19,10 @@ afterAll(async () => {
 describe('Store questions service', () => {
   it('should add a new question on POST /history/question', async () => {
     const newQuestion = {
-      question: '¿Cuál es la capital de la comunidad autónoma de Castilla y León?',
-      c_answer: 'Ninguna',
-      w_answers: ['Segovia','León','Valladolid'],
+      pregunta: '¿Cuál es la capital de la comunidad autónoma de Castilla y León?',
+      respuesta_correcta: 'Ninguna',
+      respuestas_incorrectas: ['Segovia','León','Valladolid'],
+      createdAt: '<2002-02-02>'
     };
 
     const response = await request(app).post('/history/question').send(newQuestion);
@@ -33,19 +34,22 @@ describe('Store questions service', () => {
 describe('Store questions service', () => {
   it('should get all questions on GET /history/questions', async () => {
     const newQuestion1 = {
-      question: '¿Cuál es la capital de la comunidad autónoma de Castilla y León?',
-      c_answer: 'Ninguna',
-      w_answers: ['Segovia','León','Valladolid'],
+      pregunta: '¿Cuál es la capital de la comunidad autónoma de Castilla y León?',
+      respuesta_correcta: 'Ninguna',
+      respuestas_incorrectas: ['Segovia','León','Valladolid'],
+      createdAt: '<2002-02-02>'
     };
     const newQuestion2 = {
-      question: '¿Cuál es la capital Italia?',
-      c_answer: 'Roma',
-      w_answers: ['Nápoles','Florencia','Milán'],
+      pregunta: '¿Cuál es la capital Italia?',
+      respuesta_correcta: 'Roma',
+      respuestas_incorrectas: ['Nápoles','Florencia','Milán'],
+      createdAt: '<2002-02-02>'
     };
     const newQuestion3 = {
-      question: '¿Cuál es el país mas poblado de la tierra?',
-      c_answer: 'India',
-      w_answers: ['China','Estados Unidos','Brazil'],
+      pregunta: '¿Cuál es el país mas poblado de la tierra?',
+      respuesta_correcta: 'India',
+      respuestas_incorrectas: ['China','Estados Unidos','Brazil'],
+      createdAt: '<2002-02-02>'
     };
   
     request(app).post('/history/question').send(newQuestion1);

From 559b2239ef3fb80d9de41a5cbb7e622c395499c1 Mon Sep 17 00:00:00 2001
From: alegarman2002 <116609314+alegarman2002@users.noreply.github.com>
Date: Wed, 13 Mar 2024 14:01:32 +0100
Subject: [PATCH 65/94] Fixed problem of dependencies

---
 webapp/package-lock.json | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/webapp/package-lock.json b/webapp/package-lock.json
index 303e6b1d..26ab6de7 100644
--- a/webapp/package-lock.json
+++ b/webapp/package-lock.json
@@ -17,6 +17,7 @@
         "axios": "^1.6.5",
         "fetch": "^1.1.0",
         "react": "^18.2.0",
+        "react-circular-progressbar": "^2.1.0",
         "react-dom": "^18.2.0",
         "react-router-dom": "^6.22.1",
         "react-scripts": "5.0.1",
@@ -21932,6 +21933,14 @@
       "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
       "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg=="
     },
+    "node_modules/react-circular-progressbar": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/react-circular-progressbar/-/react-circular-progressbar-2.1.0.tgz",
+      "integrity": "sha512-xp4THTrod4aLpGy68FX/k1Q3nzrfHUjUe5v6FsdwXBl3YVMwgeXYQKDrku7n/D6qsJA9CuunarAboC2xCiKs1g==",
+      "peerDependencies": {
+        "react": "^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0"
+      }
+    },
     "node_modules/react-dev-utils": {
       "version": "12.0.1",
       "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz",

From a0c33a7d0acc22af1379062ffa02ec6317bde6d8 Mon Sep 17 00:00:00 2001
From: alegarman2002 <uo283076@uniovi.es>
Date: Wed, 13 Mar 2024 15:24:29 +0100
Subject: [PATCH 66/94] Fixed problem with login test apparently

---
 webapp/src/components/Context.js    | 17 +++++++++++++++++
 webapp/src/components/Login.test.js | 16 ++++++++++++++--
 2 files changed, 31 insertions(+), 2 deletions(-)
 create mode 100644 webapp/src/components/Context.js

diff --git a/webapp/src/components/Context.js b/webapp/src/components/Context.js
new file mode 100644
index 00000000..9e5bdcea
--- /dev/null
+++ b/webapp/src/components/Context.js
@@ -0,0 +1,17 @@
+import React, { createContext, useContext, useState } from 'react';
+
+const Context = createContext();
+
+export function UserProvider({ children }) {
+    const [usernameGlobal, setUsernameGlobal] = useState('');
+
+    return (
+        <Context.Provider value={{ usernameGlobal, setUsernameGlobal }}>
+            {children}
+        </Context.Provider>
+    );
+}
+
+export function useUser() {
+    return useContext(Context);
+}
\ No newline at end of file
diff --git a/webapp/src/components/Login.test.js b/webapp/src/components/Login.test.js
index af102dcf..1d9282c6 100644
--- a/webapp/src/components/Login.test.js
+++ b/webapp/src/components/Login.test.js
@@ -3,6 +3,10 @@ import { render, fireEvent, screen, waitFor, act } from '@testing-library/react'
 import axios from 'axios';
 import MockAdapter from 'axios-mock-adapter';
 import Login from './Login';
+import { Context } from './Context';
+import { BrowserRouter as Router } from 'react-router-dom'; 
+
+
 
 const mockAxios = new MockAdapter(axios);
 
@@ -12,7 +16,9 @@ describe('Login component', () => {
   });
 
   it('should log in successfully', async () => {
-    render(<Login />);
+    render(<Router>
+      <Login />
+      </Router>);
 
     const usernameInput = screen.getByLabelText(/Username/i);
     const passwordInput = screen.getByLabelText(/Password/i);
@@ -34,7 +40,13 @@ describe('Login component', () => {
   });
 
   it('should handle error when logging in', async () => {
-    render(<Login />);
+    
+    render(<Context>
+      <Router>
+        <Login />
+      </Router>
+      </Context>
+    );
 
     const usernameInput = screen.getByLabelText(/Username/i);
     const passwordInput = screen.getByLabelText(/Password/i);

From cc0cf8800d125908e4c56ef76227ab0e9736a7e6 Mon Sep 17 00:00:00 2001
From: alegarman2002 <uo283076@uniovi.es>
Date: Wed, 13 Mar 2024 15:28:07 +0100
Subject: [PATCH 67/94] Added the login into the inder for navigation

---
 webapp/src/index.js | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/webapp/src/index.js b/webapp/src/index.js
index da7de47c..bf6814c8 100644
--- a/webapp/src/index.js
+++ b/webapp/src/index.js
@@ -16,6 +16,7 @@ import {
 
 import FirstGame from './components/FirstGame';
 import Menu from './components/Menu';
+import Login from './components/Login'
 
 
 const root = ReactDOM.createRoot(document.getElementById('root'));
@@ -26,6 +27,7 @@ root.render(
         <Route path="/" element={<App/>}></Route>
         <Route path="/firstGame" element={<FirstGame/>}></Route>
         <Route path="/menu" element={<Menu/>}></Route>
+        <Route path="/login" element={<Login/>}></Route>
       </Routes>
     </Router>
   </React.StrictMode>

From c5681f2d2b4b9557d6b8f3cc995a4d50203e4d28 Mon Sep 17 00:00:00 2001
From: alegarman2002 <uo283076@uniovi.es>
Date: Wed, 13 Mar 2024 15:38:44 +0100
Subject: [PATCH 68/94] Fixed problems witho second part of text at login and
 problems with app test

---
 webapp/src/App.test.js              | 11 ++++++++++-
 webapp/src/components/Login.test.js |  7 +++++--
 2 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/webapp/src/App.test.js b/webapp/src/App.test.js
index 9aa27757..0319a782 100644
--- a/webapp/src/App.test.js
+++ b/webapp/src/App.test.js
@@ -1,8 +1,17 @@
 import { render, screen } from '@testing-library/react';
 import App from './App';
+import { Context } from './components/Context';
+import { Router } from 'react-router-dom';
+
 
 test('renders learn react link', () => {
-  render(<App />);
+  render(
+  <Context>
+    <Router>
+      <App />
+    </Router>
+  </Context>
+  );
   const linkElement = screen.getByText(/Welcome to wiq_0/i);
   expect(linkElement).toBeInTheDocument();
 });
diff --git a/webapp/src/components/Login.test.js b/webapp/src/components/Login.test.js
index 1d9282c6..5d83593b 100644
--- a/webapp/src/components/Login.test.js
+++ b/webapp/src/components/Login.test.js
@@ -16,9 +16,12 @@ describe('Login component', () => {
   });
 
   it('should log in successfully', async () => {
-    render(<Router>
+    render(
+      <Context>
+      <Router>
       <Login />
-      </Router>);
+      </Router>
+      </Context>);
 
     const usernameInput = screen.getByLabelText(/Username/i);
     const passwordInput = screen.getByLabelText(/Password/i);

From ecd16b9e9acbcb353aaff905e757ad969a844ecc Mon Sep 17 00:00:00 2001
From: alegarman2002 <uo283076@uniovi.es>
Date: Wed, 13 Mar 2024 15:47:29 +0100
Subject: [PATCH 69/94] Trying to fix error on how we call th context.js

---
 webapp/src/App.test.js              |  6 ++---
 webapp/src/components/Context.js    |  2 +-
 webapp/src/components/Login.test.js | 35 +++++++++++++++--------------
 3 files changed, 22 insertions(+), 21 deletions(-)

diff --git a/webapp/src/App.test.js b/webapp/src/App.test.js
index 0319a782..c6c4561e 100644
--- a/webapp/src/App.test.js
+++ b/webapp/src/App.test.js
@@ -1,16 +1,16 @@
 import { render, screen } from '@testing-library/react';
 import App from './App';
-import { Context } from './components/Context';
+import { ContextFun } from './components/Context';
 import { Router } from 'react-router-dom';
 
 
 test('renders learn react link', () => {
   render(
-  <Context>
+  <ContextFun>
     <Router>
       <App />
     </Router>
-  </Context>
+  </ContextFun>
   );
   const linkElement = screen.getByText(/Welcome to wiq_0/i);
   expect(linkElement).toBeInTheDocument();
diff --git a/webapp/src/components/Context.js b/webapp/src/components/Context.js
index 9e5bdcea..8a23041c 100644
--- a/webapp/src/components/Context.js
+++ b/webapp/src/components/Context.js
@@ -2,7 +2,7 @@ import React, { createContext, useContext, useState } from 'react';
 
 const Context = createContext();
 
-export function UserProvider({ children }) {
+export function ContextFun({ children }) {
     const [usernameGlobal, setUsernameGlobal] = useState('');
 
     return (
diff --git a/webapp/src/components/Login.test.js b/webapp/src/components/Login.test.js
index 5d83593b..3149be03 100644
--- a/webapp/src/components/Login.test.js
+++ b/webapp/src/components/Login.test.js
@@ -3,8 +3,8 @@ import { render, fireEvent, screen, waitFor, act } from '@testing-library/react'
 import axios from 'axios';
 import MockAdapter from 'axios-mock-adapter';
 import Login from './Login';
-import { Context } from './Context';
-import { BrowserRouter as Router } from 'react-router-dom'; 
+import { ContextFun } from './Context';
+import { BrowserRouter as Router } from 'react-router-dom';
 
 
 
@@ -17,11 +17,11 @@ describe('Login component', () => {
 
   it('should log in successfully', async () => {
     render(
-      <Context>
-      <Router>
-      <Login />
-      </Router>
-      </Context>);
+      <ContextFun>
+        <Router>
+          <Login />
+        </Router>
+      </ContextFun>);
 
     const usernameInput = screen.getByLabelText(/Username/i);
     const passwordInput = screen.getByLabelText(/Password/i);
@@ -32,10 +32,10 @@ describe('Login component', () => {
 
     // Simulate user input
     await act(async () => {
-        fireEvent.change(usernameInput, { target: { value: 'testUser' } });
-        fireEvent.change(passwordInput, { target: { value: 'testPassword' } });
-        fireEvent.click(loginButton);
-      });
+      fireEvent.change(usernameInput, { target: { value: 'testUser' } });
+      fireEvent.change(passwordInput, { target: { value: 'testPassword' } });
+      fireEvent.click(loginButton);
+    });
 
     // Verify that the user information is displayed
     expect(screen.getByText(/Hello testUser!/i)).toBeInTheDocument();
@@ -43,12 +43,13 @@ describe('Login component', () => {
   });
 
   it('should handle error when logging in', async () => {
-    
-    render(<Context>
-      <Router>
-        <Login />
-      </Router>
-      </Context>
+
+    render(
+      <ContextFun>
+        <Router>
+          <Login />
+        </Router>
+      </ContextFun>
     );
 
     const usernameInput = screen.getByLabelText(/Username/i);

From 6b1ecae1837aff8a966351c05247a138482c3c8c Mon Sep 17 00:00:00 2001
From: alegarman2002 <uo283076@uniovi.es>
Date: Wed, 13 Mar 2024 15:53:57 +0100
Subject: [PATCH 70/94] Fixed Login test, tryung to fix app test

---
 webapp/src/App.test.js | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/webapp/src/App.test.js b/webapp/src/App.test.js
index c6c4561e..b4ffdf62 100644
--- a/webapp/src/App.test.js
+++ b/webapp/src/App.test.js
@@ -6,11 +6,7 @@ import { Router } from 'react-router-dom';
 
 test('renders learn react link', () => {
   render(
-  <ContextFun>
-    <Router>
-      <App />
-    </Router>
-  </ContextFun>
+    <App />
   );
   const linkElement = screen.getByText(/Welcome to wiq_0/i);
   expect(linkElement).toBeInTheDocument();

From d7a0a7a7d6089f56d3ee48b6504d632c6f7c5273 Mon Sep 17 00:00:00 2001
From: alegarman2002 <uo283076@uniovi.es>
Date: Wed, 13 Mar 2024 15:58:36 +0100
Subject: [PATCH 71/94] Return to the previous version of app test

---
 webapp/src/App.test.js | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/webapp/src/App.test.js b/webapp/src/App.test.js
index b4ffdf62..c6c4561e 100644
--- a/webapp/src/App.test.js
+++ b/webapp/src/App.test.js
@@ -6,7 +6,11 @@ import { Router } from 'react-router-dom';
 
 test('renders learn react link', () => {
   render(
-    <App />
+  <ContextFun>
+    <Router>
+      <App />
+    </Router>
+  </ContextFun>
   );
   const linkElement = screen.getByText(/Welcome to wiq_0/i);
   expect(linkElement).toBeInTheDocument();

From 4ca2be46c0ae121e0b2d850441a660118e705984 Mon Sep 17 00:00:00 2001
From: alegarman2002 <uo283076@uniovi.es>
Date: Wed, 13 Mar 2024 16:01:46 +0100
Subject: [PATCH 72/94] Trying to fix the app text with an update on the index

---
 webapp/src/index.js | 1 +
 1 file changed, 1 insertion(+)

diff --git a/webapp/src/index.js b/webapp/src/index.js
index bf6814c8..ea595119 100644
--- a/webapp/src/index.js
+++ b/webapp/src/index.js
@@ -28,6 +28,7 @@ root.render(
         <Route path="/firstGame" element={<FirstGame/>}></Route>
         <Route path="/menu" element={<Menu/>}></Route>
         <Route path="/login" element={<Login/>}></Route>
+        <Route path="/App" element={<App />}></Route>
       </Routes>
     </Router>
   </React.StrictMode>

From df1e22f001836d2bb50d5ff781f05bfb3396e6b6 Mon Sep 17 00:00:00 2001
From: alegarman2002 <uo283076@uniovi.es>
Date: Wed, 13 Mar 2024 16:04:41 +0100
Subject: [PATCH 73/94] Making the test a bit more simple

---
 webapp/src/App.test.js | 4 ++--
 webapp/src/index.js    | 1 -
 2 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/webapp/src/App.test.js b/webapp/src/App.test.js
index c6c4561e..5e93f49b 100644
--- a/webapp/src/App.test.js
+++ b/webapp/src/App.test.js
@@ -12,6 +12,6 @@ test('renders learn react link', () => {
     </Router>
   </ContextFun>
   );
-  const linkElement = screen.getByText(/Welcome to wiq_0/i);
-  expect(linkElement).toBeInTheDocument();
+  // const linkElement = screen.getByText(/Welcome to wiq_0/i);
+  // expect(linkElement).toBeInTheDocument();
 });
diff --git a/webapp/src/index.js b/webapp/src/index.js
index ea595119..bf6814c8 100644
--- a/webapp/src/index.js
+++ b/webapp/src/index.js
@@ -28,7 +28,6 @@ root.render(
         <Route path="/firstGame" element={<FirstGame/>}></Route>
         <Route path="/menu" element={<Menu/>}></Route>
         <Route path="/login" element={<Login/>}></Route>
-        <Route path="/App" element={<App />}></Route>
       </Routes>
     </Router>
   </React.StrictMode>

From 80cbfe1b9950a5da3fb7424e0927e5f0745fb46f Mon Sep 17 00:00:00 2001
From: alegarman2002 <uo283076@uniovi.es>
Date: Wed, 13 Mar 2024 16:09:41 +0100
Subject: [PATCH 74/94] Trying to fix again the app text pls kill me

---
 webapp/src/App.test.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/webapp/src/App.test.js b/webapp/src/App.test.js
index 5e93f49b..883e0404 100644
--- a/webapp/src/App.test.js
+++ b/webapp/src/App.test.js
@@ -1,7 +1,7 @@
 import { render, screen } from '@testing-library/react';
 import App from './App';
 import { ContextFun } from './components/Context';
-import { Router } from 'react-router-dom';
+import { BrowserRouter as Router } from 'react-router-dom';
 
 
 test('renders learn react link', () => {

From 5d916296c0769b7a2844eaa00f0970086e68a9af Mon Sep 17 00:00:00 2001
From: Marco Quintana <UO287872@uniovi.es>
Date: Wed, 13 Mar 2024 16:16:56 +0100
Subject: [PATCH 75/94] Deleted useless file

---
 webapp/src/storeQuestion/main.jsx | 10 ----------
 1 file changed, 10 deletions(-)
 delete mode 100644 webapp/src/storeQuestion/main.jsx

diff --git a/webapp/src/storeQuestion/main.jsx b/webapp/src/storeQuestion/main.jsx
deleted file mode 100644
index 883ef991..00000000
--- a/webapp/src/storeQuestion/main.jsx
+++ /dev/null
@@ -1,10 +0,0 @@
-import React from 'react'
-import ReactDOM from 'react-dom/client'
-import App from './App.jsx'
-//import 'bootstrap/dist/css/bootstrap.css'
-
-ReactDOM.createRoot(document.getElementById('root')).render(
-  <React.StrictMode>
-    <App />
-  </React.StrictMode>,
-)

From d43156c562699df94580400e06ec8d9df166e6be Mon Sep 17 00:00:00 2001
From: alegarman2002 <uo283076@uniovi.es>
Date: Wed, 13 Mar 2024 16:27:28 +0100
Subject: [PATCH 76/94] Eliminated unussed resources for that moment

---
 webapp/src/components/CircularProgressBar.js | 26 -----------
 webapp/src/components/Footer.js              | 14 ------
 webapp/src/components/NavBar.css             | 46 --------------------
 webapp/src/components/NavBar.js              | 29 ------------
 4 files changed, 115 deletions(-)
 delete mode 100644 webapp/src/components/CircularProgressBar.js
 delete mode 100644 webapp/src/components/Footer.js
 delete mode 100644 webapp/src/components/NavBar.css
 delete mode 100644 webapp/src/components/NavBar.js

diff --git a/webapp/src/components/CircularProgressBar.js b/webapp/src/components/CircularProgressBar.js
deleted file mode 100644
index 79bbab03..00000000
--- a/webapp/src/components/CircularProgressBar.js
+++ /dev/null
@@ -1,26 +0,0 @@
-import { CircularProgressbar } from 'react-circular-progressbar';
-import 'react-circular-progressbar/dist/styles.css';
-import React, { useState, useEffect } from 'react';
-import { Container, Typography } from '@mui/material';
-
-
-
-function CircularProgress(initialValue) {
-    const [percentage, setPercentage] = useState(initialValue);
-
-    useEffect(() => {
-      const intervalId = setInterval(() => {
-        setPercentage(prevPercentage => prevPercentage - 1); // Actualizar el estado con el nuevo porcentaje
-      }, 100); // Intervalo de 100 milisegundos (0.1 segundo)
-  
-      // Limpiar el intervalo cuando el componente se desmonte
-      return () => clearInterval(intervalId);
-    }, []); // La dependencia vacía asegura que useEffect solo se ejecute una vez al montar el componente
-    
-    var listaDevolver = [<CircularProgressbar value={percentage}/>, percentage]
-    return (
-        listaDevolver
-    );
-  }
-
-  export default CircularProgress;
\ No newline at end of file
diff --git a/webapp/src/components/Footer.js b/webapp/src/components/Footer.js
deleted file mode 100644
index 7059ad28..00000000
--- a/webapp/src/components/Footer.js
+++ /dev/null
@@ -1,14 +0,0 @@
-import { AppBar, Toolbar, Typography } from '@mui/material';
-
-const Footer = () => {
-    return (
-        <AppBar component="footer" position="static" 
-            sx={{ backgroundColor: "primary", color: "white", bottom: 0, left: 0, width: '100%', zIndex: 1000 }}>
-            <Toolbar>
-                <Typography sx={{ margin: 'auto' }}>© WIQ_ES6C</Typography>
-            </Toolbar>
-        </AppBar>
-    );
-};
-
-export default Footer;
\ No newline at end of file
diff --git a/webapp/src/components/NavBar.css b/webapp/src/components/NavBar.css
deleted file mode 100644
index 54516ebe..00000000
--- a/webapp/src/components/NavBar.css
+++ /dev/null
@@ -1,46 +0,0 @@
-nav {
-    background-color: #1c57c4; 
-    color: #fff; 
-    display: flex;
-    justify-content: space-between;
-    align-items: center;
-    padding: 10px 20px;
-}
-  
-.logo img {
-    max-width: 100px; 
-}
-  
-.nav-links {
-    list-style: none;
-    display: flex;
-    align-items: center;
-}
-  
-.nav-links li {
-    margin-right: 5%;
-}
-  
-.nav-links li:last-child {
-    margin-right: 0%;
-}
-  
-.nav-links a {
-    text-decoration: none;
-    color: #fff;
-}
-  
-.nav-links button {
-    background-color: transparent;
-    border: none;
-    color: #fff;
-    cursor: pointer;
-}
-  
-.nav-links button:hover {
-    text-decoration: underline;
-}
-  
-.nav-links {
-    margin-left: auto; 
-}
\ No newline at end of file
diff --git a/webapp/src/components/NavBar.js b/webapp/src/components/NavBar.js
deleted file mode 100644
index 392baf94..00000000
--- a/webapp/src/components/NavBar.js
+++ /dev/null
@@ -1,29 +0,0 @@
-import React from 'react';
-import './NavBar.css';
-import { Link } from 'react-router-dom';
-
-const Navbar = ({ loggedIn, handleLogout }) => {
-  return (
-    <nav>
-      <div className="logo">
-        <img src=" " alt="Logo de la aplicación" />
-      </div>
-      <ul className="nav-links">
-        {loggedIn ? (
-          <div>
-            <li>
-              <Link to=" ">Perfil</Link>
-            </li>
-            <li>
-              <button onClick={handleLogout}>Cerrar sesión</button>
-            </li>
-          </div>
-        ): 
-          <div> </div>
-        }
-      </ul>
-    </nav>
-  );
-};
-
-export default Navbar;
\ No newline at end of file

From e5b66779ec3d7b5c6d769b70f80fadcb56bdf1fa Mon Sep 17 00:00:00 2001
From: alegarman2002 <uo283076@uniovi.es>
Date: Wed, 13 Mar 2024 16:44:31 +0100
Subject: [PATCH 77/94] First try in test for firstGame

---
 webapp/src/App.test.js                  |  4 ++--
 webapp/src/components/FirstGame.test.js | 20 ++++++++++++++++++++
 webapp/src/components/Menu.test.js      |  0
 3 files changed, 22 insertions(+), 2 deletions(-)
 create mode 100644 webapp/src/components/FirstGame.test.js
 create mode 100644 webapp/src/components/Menu.test.js

diff --git a/webapp/src/App.test.js b/webapp/src/App.test.js
index 883e0404..7235d3a7 100644
--- a/webapp/src/App.test.js
+++ b/webapp/src/App.test.js
@@ -12,6 +12,6 @@ test('renders learn react link', () => {
     </Router>
   </ContextFun>
   );
-  // const linkElement = screen.getByText(/Welcome to wiq_0/i);
-  // expect(linkElement).toBeInTheDocument();
+  const linkElement = screen.getByText(/Welcome to wiq_0/i);
+  expect(linkElement).toBeInTheDocument();
 });
diff --git a/webapp/src/components/FirstGame.test.js b/webapp/src/components/FirstGame.test.js
new file mode 100644
index 00000000..92e1e91c
--- /dev/null
+++ b/webapp/src/components/FirstGame.test.js
@@ -0,0 +1,20 @@
+import React from 'react';
+import { render, fireEvent, screen, waitFor, act } from '@testing-library/react';
+import axios from 'axios';
+import MockAdapter from 'axios-mock-adapter';
+import FirstGame from './FirstGame';
+import { ContextFun } from './Context';
+import { BrowserRouter as Router } from 'react-router-dom';
+
+
+test('renders learn react link', () => {
+    render(
+    <ContextFun>
+      <Router>
+        <FirstGame />
+      </Router>
+    </ContextFun>
+    );
+    const linkElement = screen.getByText(/¿Cual es/i);
+    expect(linkElement).toBeInTheDocument();
+  });
\ No newline at end of file
diff --git a/webapp/src/components/Menu.test.js b/webapp/src/components/Menu.test.js
new file mode 100644
index 00000000..e69de29b

From 3e40311abb381ee0fa9227db41775d2f9b24b583 Mon Sep 17 00:00:00 2001
From: Marco Quintana <UO287872@uniovi.es>
Date: Wed, 13 Mar 2024 16:49:43 +0100
Subject: [PATCH 78/94] Fixed body-parser problem and commented mock question

---
 storeQuestionService/store-q-service.js | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/storeQuestionService/store-q-service.js b/storeQuestionService/store-q-service.js
index f66eb077..058d3649 100644
--- a/storeQuestionService/store-q-service.js
+++ b/storeQuestionService/store-q-service.js
@@ -1,6 +1,5 @@
 const express = require('express');
 const mongoose = require('mongoose');
-const bodyParser = require('body-parser');
 const Question = require('./store-q-model');
 
 const app = express();
@@ -82,7 +81,7 @@ app.get('/history/questions', async (req, res) => {
           }]);*/
         /*res.json([{
             pregunta: '¿Cuál es la capital de la comunidad autónoma de Castilla y León?',
-            respuesta_incorrecta: 'Ninguna',
+            respuesta_correcta: 'Ninguna',
             respuestas_incorrectas: ['Segovia','León','Valladolid']
           }]);*/
     } catch (error) {

From 95b4d1bac500c134259205315801ee2f6c89ecf4 Mon Sep 17 00:00:00 2001
From: Marco Quintana <UO287872@uniovi.es>
Date: Wed, 13 Mar 2024 16:50:57 +0100
Subject: [PATCH 79/94] added post history/question. It works, i ve tested it.

---
 gatewayservice/gateway-service.js | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/gatewayservice/gateway-service.js b/gatewayservice/gateway-service.js
index 9a969b11..1debf4dd 100644
--- a/gatewayservice/gateway-service.js
+++ b/gatewayservice/gateway-service.js
@@ -42,6 +42,15 @@ app.post('/adduser', async (req, res) => {
   }
 });
 
+app.post('/history/question', async (req, res) => {
+  try {
+    const response = await axios.post(storeQuestionsServiceUrl+'/history/question', req.body);
+    res.json(response.data);
+  } catch (error) {
+    res.status(error.response.status).json({ error: error.response.data.error });
+  }
+})
+
 app.get('/history/questions', async (req, res) => {
   try {
     const response = await axios.get(storeQuestionsServiceUrl+'/history/questions');

From 1ae5550830b6e9050ed6fb12fd5390b02e6c666a Mon Sep 17 00:00:00 2001
From: MarcosBarrilVillaverde
 <114151873+MarcosBarrilVillaverde@users.noreply.github.com>
Date: Wed, 13 Mar 2024 17:01:50 +0100
Subject: [PATCH 80/94] Update store-q.test.js fixed

---
 storeQuestionService/store-q.test.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/storeQuestionService/store-q.test.js b/storeQuestionService/store-q.test.js
index b9aeb2ac..4ffd62af 100644
--- a/storeQuestionService/store-q.test.js
+++ b/storeQuestionService/store-q.test.js
@@ -27,7 +27,7 @@ describe('Store questions service', () => {
 
     const response = await request(app).post('/history/question').send(newQuestion);
     expect(response.status).toBe(200);
-    expect(response.body).toHaveProperty('question', 'c_answer', 'w_answers');
+    expect(response.body).toHaveProperty('pregunta', 'respuesta_correcta', 'respuestas_incorrectas');
   });
 });
 

From cd1e826c2afa2636680d0f8e402e3b4f770b4983 Mon Sep 17 00:00:00 2001
From: alegarman2002 <uo283076@uniovi.es>
Date: Wed, 13 Mar 2024 17:16:04 +0100
Subject: [PATCH 81/94] Desisto de hacer los test de momento

---
 webapp/src/components/FirstGame.test.js | 36 ++++++++++++-------------
 1 file changed, 18 insertions(+), 18 deletions(-)

diff --git a/webapp/src/components/FirstGame.test.js b/webapp/src/components/FirstGame.test.js
index 92e1e91c..29b21fbc 100644
--- a/webapp/src/components/FirstGame.test.js
+++ b/webapp/src/components/FirstGame.test.js
@@ -1,20 +1,20 @@
-import React from 'react';
-import { render, fireEvent, screen, waitFor, act } from '@testing-library/react';
-import axios from 'axios';
-import MockAdapter from 'axios-mock-adapter';
-import FirstGame from './FirstGame';
-import { ContextFun } from './Context';
-import { BrowserRouter as Router } from 'react-router-dom';
+// import React from 'react';
+// import { render, fireEvent, screen, waitFor, act } from '@testing-library/react';
+// import axios from 'axios';
+// import MockAdapter from 'axios-mock-adapter';
+// import FirstGame from './FirstGame';
+// import { ContextFun } from './Context';
+// import { BrowserRouter as Router } from 'react-router-dom';
 
 
-test('renders learn react link', () => {
-    render(
-    <ContextFun>
-      <Router>
-        <FirstGame />
-      </Router>
-    </ContextFun>
-    );
-    const linkElement = screen.getByText(/¿Cual es/i);
-    expect(linkElement).toBeInTheDocument();
-  });
\ No newline at end of file
+// test('renders learn react link', () => {
+//     render(
+//     <ContextFun>
+//       <Router>
+//         <FirstGame />
+//       </Router>
+//     </ContextFun>
+//     );
+//     const linkElement = screen.getByText(/¿Cual es/i);
+//     expect(linkElement).toBeInTheDocument();
+//   });
\ No newline at end of file

From 85108d29efe946c3ba709545fcbe86ccf407fa23 Mon Sep 17 00:00:00 2001
From: alegarman2002 <uo283076@uniovi.es>
Date: Wed, 13 Mar 2024 17:19:19 +0100
Subject: [PATCH 82/94] Booro los archivos

---
 webapp/src/components/FirstGame.test.js | 20 --------------------
 webapp/src/components/Menu.test.js      |  0
 2 files changed, 20 deletions(-)
 delete mode 100644 webapp/src/components/FirstGame.test.js
 delete mode 100644 webapp/src/components/Menu.test.js

diff --git a/webapp/src/components/FirstGame.test.js b/webapp/src/components/FirstGame.test.js
deleted file mode 100644
index 29b21fbc..00000000
--- a/webapp/src/components/FirstGame.test.js
+++ /dev/null
@@ -1,20 +0,0 @@
-// import React from 'react';
-// import { render, fireEvent, screen, waitFor, act } from '@testing-library/react';
-// import axios from 'axios';
-// import MockAdapter from 'axios-mock-adapter';
-// import FirstGame from './FirstGame';
-// import { ContextFun } from './Context';
-// import { BrowserRouter as Router } from 'react-router-dom';
-
-
-// test('renders learn react link', () => {
-//     render(
-//     <ContextFun>
-//       <Router>
-//         <FirstGame />
-//       </Router>
-//     </ContextFun>
-//     );
-//     const linkElement = screen.getByText(/¿Cual es/i);
-//     expect(linkElement).toBeInTheDocument();
-//   });
\ No newline at end of file
diff --git a/webapp/src/components/Menu.test.js b/webapp/src/components/Menu.test.js
deleted file mode 100644
index e69de29b..00000000

From 3f5e7873a947c8ae4e0e5a2526a664faf9aca68b Mon Sep 17 00:00:00 2001
From: Marco Quintana <UO287872@uniovi.es>
Date: Wed, 13 Mar 2024 18:08:54 +0100
Subject: [PATCH 83/94] removed history post method

---
 gatewayservice/gateway-service.js | 9 ---------
 1 file changed, 9 deletions(-)

diff --git a/gatewayservice/gateway-service.js b/gatewayservice/gateway-service.js
index 1debf4dd..9a969b11 100644
--- a/gatewayservice/gateway-service.js
+++ b/gatewayservice/gateway-service.js
@@ -42,15 +42,6 @@ app.post('/adduser', async (req, res) => {
   }
 });
 
-app.post('/history/question', async (req, res) => {
-  try {
-    const response = await axios.post(storeQuestionsServiceUrl+'/history/question', req.body);
-    res.json(response.data);
-  } catch (error) {
-    res.status(error.response.status).json({ error: error.response.data.error });
-  }
-})
-
 app.get('/history/questions', async (req, res) => {
   try {
     const response = await axios.get(storeQuestionsServiceUrl+'/history/questions');

From 0ba8671aa9257ca0f03b8dff6d64018708ab9492 Mon Sep 17 00:00:00 2001
From: Marco Quintana <UO287872@uniovi.es>
Date: Wed, 13 Mar 2024 18:09:49 +0100
Subject: [PATCH 84/94] Fixed connection

---
 storeQuestionService/store-q-service.js | 62 +++++++++++++------------
 1 file changed, 33 insertions(+), 29 deletions(-)

diff --git a/storeQuestionService/store-q-service.js b/storeQuestionService/store-q-service.js
index 058d3649..44623c6c 100644
--- a/storeQuestionService/store-q-service.js
+++ b/storeQuestionService/store-q-service.js
@@ -13,9 +13,11 @@ const mongoUri = process.env.MONGODB_URI || 'mongodb://localhost:27017/storedque
 mongoose.connect(mongoUri);
 
 // Function to validate required fields in the request body
-function validateRequiredFields(req, requiredFields) {
+function validateRequiredFields(body, requiredFields) {
     for (const field of requiredFields) {
-        if (!(field in req.body)) {
+        if (!(field in body)) {
+            console.log(field)
+            console.log(body)
             throw new Error(`Missing required field: ${field}`);
         }
     }
@@ -24,7 +26,7 @@ function validateRequiredFields(req, requiredFields) {
 app.post('/history/question', async (req, res) => {
     try {
         // Check if required fields are present in the request body
-        validateRequiredFields(req, ['pregunta', 'respuesta_correcta','respuestas_incorrectas']);
+        validateRequiredFields(req.body, ['pregunta', 'respuesta_correcta', 'respuestas_incorrectas']);
 
         const newQuestion = new Question({
             pregunta: req.body.pregunta,
@@ -41,33 +43,35 @@ app.post('/history/question', async (req, res) => {
 });
 
 app.post('/history/questions', async (req, res) => {
-  try {
-      // Check if required fields are present in the request body
-      if (!Array.isArray(req.body)) {
-          throw new Error('Invalid request format. Expected an array of questions.');
-      }
-      for (const question of req.body) {
-          validateRequiredFields(question, ['pregunta', 'respuesta_correcta','respuestas_incorrectas']);
-      }
-
-      const newQuestions = [];
-
-      for (const questionData of req.body) {
-        const newQuestion = new Question({
-            pregunta: req.body.pregunta,
-            respuesta_correcta: req.body.respuesta_correcta,
-            respuestas_incorrectas: req.body.respuestas_incorrectas,
-            createdAt: req.body.createdAt
-        });
+    try {
+        // Check if required fields are present in the request body
+        if (!Array.isArray(req.body)) {
+            throw new Error('Invalid request format. Expected an array of questions.');
+        }
+        for (const question of req.body) {
+            console.log(question)
+            validateRequiredFields(question, ['pregunta', 'respuesta_correcta', 'respuestas_incorrectas']);
+        }
+        console.log("Pasa validación")
+        const newQuestions = [];
+
+        for (const questionData of req.body) {
+            console.log(questionData)
+            const newQuestion = new Question({
+                pregunta: questionData.pregunta,
+                respuesta_correcta: questionData.respuesta_correcta,
+                respuestas_incorrectas: questionData.respuestas_incorrectas,
+                createdAt: questionData.createdAt
+            });
+
+            await newQuestion.save();
+            newQuestions.push(newQuestion);
+        }
 
-        await newQuestion.save();
-        newQuestions.push(newQuestion);
-      }
-      
-      res.json(newQuestions);
-  } catch (error) {
-      res.status(400).json({ error: error.message });
-  }
+        res.json(newQuestions);
+    } catch (error) {
+        res.status(400).json({ error: error.message });
+    }
 });
 
 

From cefa642ce27845d1014e96a4fa3fc652f99b96ff Mon Sep 17 00:00:00 2001
From: Marco Quintana <UO287872@uniovi.es>
Date: Wed, 13 Mar 2024 18:10:26 +0100
Subject: [PATCH 85/94] Fixed frontend problems due to format change in
 questions

---
 webapp/src/storeQuestion/App.jsx                 |  7 ++++---
 webapp/src/storeQuestion/components/Question.jsx | 13 ++++++++++---
 2 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/webapp/src/storeQuestion/App.jsx b/webapp/src/storeQuestion/App.jsx
index 1d3e0318..902e94b7 100644
--- a/webapp/src/storeQuestion/App.jsx
+++ b/webapp/src/storeQuestion/App.jsx
@@ -28,12 +28,12 @@ function App(){
 
       const apiEndpoint = process.env.REACT_APP_API_ENDPOINT || 'http://localhost:8000';
 
+      
       useEffect(() => {
         
         const obtenerPreguntas = async () => {
           try {
-            const response = await axios.get(`${apiEndpoint}/questions`)
-            console.log(response)
+            const response = await axios.get(`${apiEndpoint}/history/questions`)
             setPreguntas(response.data);
           } catch (error) {
             console.error('Error al obtener las preguntas:', error.response.data.error);
@@ -41,9 +41,10 @@ function App(){
         };
     
         obtenerPreguntas();
+        //eslint-disable-next-line
       }, []);
 
-
+    console.log(preguntas)
     return (
       <>
         <h2>Almacén de preguntas</h2>
diff --git a/webapp/src/storeQuestion/components/Question.jsx b/webapp/src/storeQuestion/components/Question.jsx
index 4b6bf6d7..fe4918f1 100644
--- a/webapp/src/storeQuestion/components/Question.jsx
+++ b/webapp/src/storeQuestion/components/Question.jsx
@@ -5,13 +5,20 @@ function Question(props) {
 
   return (
     <div className='question'>
-      <h3>{newQuestion.question}</h3>
+      <h3>{newQuestion.pregunta}</h3>
         <div className='grid'>
-          <p className='right'>{newQuestion.c_answer}</p>
-          {newQuestion.w_answers.map((answer, index) => (
+          <div className='container'>
+            <p className='right'>{newQuestion.respuesta_correcta}</p>
+          </div>
+          {newQuestion.respuestas_incorrectas.map((answer, index) => (
+            <div className='container'>
               <p>{answer}</p>
+            </div>
           ))}
         </div>
+        <div className='container footer'>
+          <footer>{newQuestion.createdAt.substring(0,10)}</footer>
+        </div>
     </div>
   );
 }

From f10856ffff6879bed256005fbab3dfbec3cbb309 Mon Sep 17 00:00:00 2001
From: Marco Quintana <UO287872@uniovi.es>
Date: Wed, 13 Mar 2024 18:10:35 +0100
Subject: [PATCH 86/94] Improved style

---
 webapp/src/storeQuestion/css/questions.css | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/webapp/src/storeQuestion/css/questions.css b/webapp/src/storeQuestion/css/questions.css
index 8ff1daf3..bc21cd2e 100644
--- a/webapp/src/storeQuestion/css/questions.css
+++ b/webapp/src/storeQuestion/css/questions.css
@@ -130,9 +130,24 @@ h2{
     text-align: center;
 }
 
+h3{
+    text-align: center;
+}
+
 #root main{
     display: grid;
     grid-template-columns: repeat(auto-fit, minmax(40%, 1fr));
     padding: 5px;
     grid-gap: 10px;
 }
+
+.container{
+    display: flex;
+    justify-content: center;
+}
+
+.container.footer{
+    display: flex;
+    justify-content: right;
+    margin-right: 1em;
+}
\ No newline at end of file

From 8e4c669b7601505f5b97c8403c981c5ec49c7465 Mon Sep 17 00:00:00 2001
From: Marco Quintana <UO287872@uniovi.es>
Date: Wed, 13 Mar 2024 18:25:15 +0100
Subject: [PATCH 87/94] Removing console logs

---
 storeQuestionService/store-q-service.js | 5 -----
 webapp/src/storeQuestion/App.jsx        | 1 -
 2 files changed, 6 deletions(-)

diff --git a/storeQuestionService/store-q-service.js b/storeQuestionService/store-q-service.js
index 44623c6c..89b52aa5 100644
--- a/storeQuestionService/store-q-service.js
+++ b/storeQuestionService/store-q-service.js
@@ -16,8 +16,6 @@ mongoose.connect(mongoUri);
 function validateRequiredFields(body, requiredFields) {
     for (const field of requiredFields) {
         if (!(field in body)) {
-            console.log(field)
-            console.log(body)
             throw new Error(`Missing required field: ${field}`);
         }
     }
@@ -49,14 +47,11 @@ app.post('/history/questions', async (req, res) => {
             throw new Error('Invalid request format. Expected an array of questions.');
         }
         for (const question of req.body) {
-            console.log(question)
             validateRequiredFields(question, ['pregunta', 'respuesta_correcta', 'respuestas_incorrectas']);
         }
-        console.log("Pasa validación")
         const newQuestions = [];
 
         for (const questionData of req.body) {
-            console.log(questionData)
             const newQuestion = new Question({
                 pregunta: questionData.pregunta,
                 respuesta_correcta: questionData.respuesta_correcta,
diff --git a/webapp/src/storeQuestion/App.jsx b/webapp/src/storeQuestion/App.jsx
index 902e94b7..1844fc2c 100644
--- a/webapp/src/storeQuestion/App.jsx
+++ b/webapp/src/storeQuestion/App.jsx
@@ -44,7 +44,6 @@ function App(){
         //eslint-disable-next-line
       }, []);
 
-    console.log(preguntas)
     return (
       <>
         <h2>Almacén de preguntas</h2>

From 951564a9eb762fd8e031269e18970572eff46fb8 Mon Sep 17 00:00:00 2001
From: Liliana <uo288574@uniovi.es>
Date: Wed, 13 Mar 2024 19:29:23 +0100
Subject: [PATCH 88/94] sonarcloud problem solved (??)

---
 webapp/src/components/FirstGame.js | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/webapp/src/components/FirstGame.js b/webapp/src/components/FirstGame.js
index d3789cf6..e11e9589 100644
--- a/webapp/src/components/FirstGame.js
+++ b/webapp/src/components/FirstGame.js
@@ -19,6 +19,11 @@ const Quiz = () => {
     return new Promise(resolve => setTimeout(resolve, ms));
   };
 
+  function secureRandomNumber(max) {
+    const randomBytes = new Uint32Array(1);
+    window.crypto.getRandomValues(randomBytes);
+    return randomBytes[0] % max;
+  }
 
   function shuffleArray(array) {
     // Crea una copia del array original
@@ -27,8 +32,9 @@ const Quiz = () => {
     // Recorre el array desde el último elemento hasta el primero
     for (let i = shuffledArray.length - 1; i > 0; i--) {
       // Genera un índice aleatorio entre 0 y el índice actual
-      const randomIndex = Math.floor(Math.random() * (i + 1));
-  
+      //const randomIndex = Math.floor(Math.random() * (i + 1));
+      const randomIndex = secureRandomNumber(i + 1);
+
       // Intercambia el elemento actual con el elemento del índice aleatorio
       const temp = shuffledArray[i];
       shuffledArray[i] = shuffledArray[randomIndex];

From ff8991023995470a5edff54845d24622be6ead30 Mon Sep 17 00:00:00 2001
From: Liliana <uo288574@uniovi.es>
Date: Wed, 13 Mar 2024 19:33:44 +0100
Subject: [PATCH 89/94] sonarcloud problem solved at menu

---
 webapp/src/components/Menu.js | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/webapp/src/components/Menu.js b/webapp/src/components/Menu.js
index 76bc4110..990e84de 100644
--- a/webapp/src/components/Menu.js
+++ b/webapp/src/components/Menu.js
@@ -17,6 +17,12 @@ const DatosContext = React.createContext();
 
 var questions = []
 
+function secureRandomNumber(max) {
+  const randomBytes = new Uint32Array(1);
+  window.crypto.getRandomValues(randomBytes);
+  return randomBytes[0] % max;
+}
+
 function shuffleArray(array) {
   // Crea una copia del array original
   const shuffledArray = [...array];
@@ -24,7 +30,8 @@ function shuffleArray(array) {
   // Recorre el array desde el último elemento hasta el primero
   for (let i = shuffledArray.length - 1; i > 0; i--) {
     // Genera un índice aleatorio entre 0 y el índice actual
-    const randomIndex = Math.floor(Math.random() * (i + 1));
+    //const randomIndex = Math.floor(Math.random() * (i + 1));
+    const randomIndex = secureRandomNumber(i + 1);
 
     // Intercambia el elemento actual con el elemento del índice aleatorio
     const temp = shuffledArray[i];

From 4f412328c35d2afe7b1975125f9c6ccf7bb40cf1 Mon Sep 17 00:00:00 2001
From: Abel <abelmhov7l@gmail.com>
Date: Wed, 13 Mar 2024 21:22:29 +0100
Subject: [PATCH 90/94] Removed unnecesary mongoose schema and model

---
 .../questiongenerator-model.js                | 21 +------------------
 .../questiongenerator-service.js              |  1 -
 2 files changed, 1 insertion(+), 21 deletions(-)

diff --git a/questionsservice/questiongeneratorservice/questiongenerator-model.js b/questionsservice/questiongeneratorservice/questiongenerator-model.js
index d51a3fbe..3279053d 100644
--- a/questionsservice/questiongeneratorservice/questiongenerator-model.js
+++ b/questionsservice/questiongeneratorservice/questiongenerator-model.js
@@ -20,28 +20,9 @@ const questionSchema = new mongoose.Schema({
     }
 });
 
-const requestSchema = new mongoose.Schema({
-    n_preguntas: {
-        type: Number,
-        required: true,
-        default: 1
-    },
-    n_respuestas: {
-        type: Number,
-        required: true,
-        default: 4
-    },
-    tema: {
-        type: String,
-        required: true,
-        default: "todos"
-    }
-});
 
 const Question = mongoose.model('Question', questionSchema);
-const Request = mongoose.model('Request', requestSchema);
 
 module.exports = {
-    Question,
-    Request
+    Question
 };
\ No newline at end of file
diff --git a/questionsservice/questiongeneratorservice/questiongenerator-service.js b/questionsservice/questiongeneratorservice/questiongenerator-service.js
index 505a7a99..3083e7d5 100644
--- a/questionsservice/questiongeneratorservice/questiongenerator-service.js
+++ b/questionsservice/questiongeneratorservice/questiongenerator-service.js
@@ -3,7 +3,6 @@ const cors = require('cors');
 const axios = require('axios');
 const mongoose = require('mongoose');
 const { Question } = require('./questiongenerator-model')
-const { Request } = require('./questiongenerator-model')
 
 const app = express();
 const port = 8006;

From da7421e3e703fb1ec23f6f8e2222dd2de9ad8ac1 Mon Sep 17 00:00:00 2001
From: Abel <abelmhov7l@gmail.com>
Date: Wed, 13 Mar 2024 21:26:49 +0100
Subject: [PATCH 91/94] Removed unnecesary console.log

---
 .../questiongeneratorservice/questiongenerator-service.js        | 1 -
 1 file changed, 1 deletion(-)

diff --git a/questionsservice/questiongeneratorservice/questiongenerator-service.js b/questionsservice/questiongeneratorservice/questiongenerator-service.js
index 3083e7d5..118849a1 100644
--- a/questionsservice/questiongeneratorservice/questiongenerator-service.js
+++ b/questionsservice/questiongeneratorservice/questiongenerator-service.js
@@ -50,7 +50,6 @@ const generateQuestion = async () => {
     isWikiChecked = true;
   }
   elementos = shuffle(elementos);
-  console.log("caca", elementos);
   mockedQuestions = [{
     pregunta: "¿Cual es la capital de " + elementos[0].countryLabel + "?",
     respuesta_correcta: elementos[0].capitalLabel,

From 38ada23f21d06d1a9e7734b1cdada37d5b00ed56 Mon Sep 17 00:00:00 2001
From: alegarman2002 <116609314+alegarman2002@users.noreply.github.com>
Date: Wed, 13 Mar 2024 21:56:13 +0100
Subject: [PATCH 92/94] Eliminated the unnecessary files

---
 package-lock.json | 50 -----------------------------------------------
 package.json      |  5 -----
 2 files changed, 55 deletions(-)
 delete mode 100644 package-lock.json
 delete mode 100644 package.json

diff --git a/package-lock.json b/package-lock.json
deleted file mode 100644
index f9ce8791..00000000
--- a/package-lock.json
+++ /dev/null
@@ -1,50 +0,0 @@
-{
-  "name": "wiq_es6c",
-  "lockfileVersion": 3,
-  "requires": true,
-  "packages": {
-    "": {
-      "dependencies": {
-        "react-circular-progressbar": "^2.1.0"
-      }
-    },
-    "node_modules/js-tokens": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
-      "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
-      "peer": true
-    },
-    "node_modules/loose-envify": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
-      "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
-      "peer": true,
-      "dependencies": {
-        "js-tokens": "^3.0.0 || ^4.0.0"
-      },
-      "bin": {
-        "loose-envify": "cli.js"
-      }
-    },
-    "node_modules/react": {
-      "version": "18.2.0",
-      "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
-      "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
-      "peer": true,
-      "dependencies": {
-        "loose-envify": "^1.1.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/react-circular-progressbar": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/react-circular-progressbar/-/react-circular-progressbar-2.1.0.tgz",
-      "integrity": "sha512-xp4THTrod4aLpGy68FX/k1Q3nzrfHUjUe5v6FsdwXBl3YVMwgeXYQKDrku7n/D6qsJA9CuunarAboC2xCiKs1g==",
-      "peerDependencies": {
-        "react": "^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0"
-      }
-    }
-  }
-}
diff --git a/package.json b/package.json
deleted file mode 100644
index 5ba66912..00000000
--- a/package.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-  "dependencies": {
-    "react-circular-progressbar": "^2.1.0"
-  }
-}

From 52663cb3bc225b7eae7f411a6bc068a05982f079 Mon Sep 17 00:00:00 2001
From: alegarman2002 <116609314+alegarman2002@users.noreply.github.com>
Date: Wed, 13 Mar 2024 22:30:45 +0100
Subject: [PATCH 93/94] First part of adding the button to see the historic
 questions

---
 webapp/src/components/Menu.js | 12 ++++++++++++
 webapp/src/index.js           |  3 ++-
 2 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/webapp/src/components/Menu.js b/webapp/src/components/Menu.js
index 990e84de..da48b6a0 100644
--- a/webapp/src/components/Menu.js
+++ b/webapp/src/components/Menu.js
@@ -87,6 +87,10 @@ const Menu = () => {
         console.log(questions)
     };
 
+    const openStoredQuestions = async () => {
+      navigation("/firstGame")
+    }
+
     return (
         <Container component="main" maxWidth="xl" sx={{ marginTop: 4 }}>
             <p>Bienvenido a wiq_06c por favor seleccione un modo de juego para comenzar partida:</p>
@@ -97,6 +101,14 @@ const Menu = () => {
             >
               Clasico
             </button>
+            <button
+              name="quiz"
+              onClick={() => openStoredQuestions()}
+              style={{backgroundColor: 'lightgrey'}}
+            >
+              Clasico
+            </button>
+
         </Container>
     );
 
diff --git a/webapp/src/index.js b/webapp/src/index.js
index bf6814c8..18cbf3e7 100644
--- a/webapp/src/index.js
+++ b/webapp/src/index.js
@@ -16,7 +16,8 @@ import {
 
 import FirstGame from './components/FirstGame';
 import Menu from './components/Menu';
-import Login from './components/Login'
+import Login from './components/Login';
+import AppQuestion from './storeQuestion/App'
 
 
 const root = ReactDOM.createRoot(document.getElementById('root'));

From bfddeec74c809c6e19666c5fb7a49c5a9a5e62a8 Mon Sep 17 00:00:00 2001
From: Liliana <uo288574@uniovi.es>
Date: Wed, 13 Mar 2024 22:46:47 +0100
Subject: [PATCH 94/94] add button for stored questions

---
 webapp/src/components/Menu.js | 6 +++---
 webapp/src/index.js           | 1 +
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/webapp/src/components/Menu.js b/webapp/src/components/Menu.js
index da48b6a0..9677f6c9 100644
--- a/webapp/src/components/Menu.js
+++ b/webapp/src/components/Menu.js
@@ -88,7 +88,7 @@ const Menu = () => {
     };
 
     const openStoredQuestions = async () => {
-      navigation("/firstGame")
+      navigation("/appQuestion")
     }
 
     return (
@@ -102,11 +102,11 @@ const Menu = () => {
               Clasico
             </button>
             <button
-              name="quiz"
+              name="openStoredQuestions"
               onClick={() => openStoredQuestions()}
               style={{backgroundColor: 'lightgrey'}}
             >
-              Clasico
+              Preguntas guardadas
             </button>
 
         </Container>
diff --git a/webapp/src/index.js b/webapp/src/index.js
index 18cbf3e7..0e09a394 100644
--- a/webapp/src/index.js
+++ b/webapp/src/index.js
@@ -27,6 +27,7 @@ root.render(
       <Routes>
         <Route path="/" element={<App/>}></Route>
         <Route path="/firstGame" element={<FirstGame/>}></Route>
+        <Route path="/appQuestion" element={<AppQuestion/>}></Route>
         <Route path="/menu" element={<Menu/>}></Route>
         <Route path="/login" element={<Login/>}></Route>
       </Routes>