diff --git a/app/(apidocs)/apidocs/page.tsx b/app/(apidocs)/apidocs/page.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..e57b33bbab2a6b6356e30fbee8c829f01610cd17
--- /dev/null
+++ b/app/(apidocs)/apidocs/page.tsx
@@ -0,0 +1,11 @@
+import { getApiDocs } from '@/lib/swagger';
+import ReactSwagger from './react-swagger';
+
+export default async function IndexPage() {
+    const spec = await getApiDocs();
+    return (
+        <section className="container">
+            <ReactSwagger spec={spec} />
+        </section>
+    );
+}
diff --git a/app/(apidocs)/apidocs/react-swagger.tsx b/app/(apidocs)/apidocs/react-swagger.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..7463d1a9b45861f20e6f2d88b44164ee512eae54
--- /dev/null
+++ b/app/(apidocs)/apidocs/react-swagger.tsx
@@ -0,0 +1,14 @@
+'use client';
+
+import SwaggerUI from 'swagger-ui-react';
+import 'swagger-ui-react/swagger-ui.css';
+
+type Props = {
+    spec: Record<string, any>,
+};
+
+function ReactSwagger({ spec }: Props) {
+    return <SwaggerUI spec={spec} />;
+}
+
+export default ReactSwagger;
diff --git a/app/api/games/route.ts b/app/api/games/route.ts
index 8af8dfb2cf1203f6092531762fdc32620b6532aa..58e9accaa9ce7069b85784c54e654b5ca262103c 100644
--- a/app/api/games/route.ts
+++ b/app/api/games/route.ts
@@ -5,6 +5,22 @@ import { IPlatformCategrory } from "@/types/igdb-types"
 
 import { NextRequest, NextResponse } from "next/server"
 
+/**
+ * @swagger
+ * /api/games:
+ *   get:
+ *     description: Get Games through external API 
+ *     content:
+ *      application/json:
+ *          schema:
+ *     responses:
+ *       200:
+ *         description: list of games
+ *       500:
+ *         description: error    
+ */
+
+
 export async function GET(req: NextRequest) {
     const p = req.nextUrl.searchParams
     try {
diff --git a/app/api/gweets/[id]/route.ts b/app/api/gweets/[id]/route.ts
index 13408317200201894c5654d6d433ed0068268005..35f72f301b027ecf674a10802a8b632baaad2d91 100644
--- a/app/api/gweets/[id]/route.ts
+++ b/app/api/gweets/[id]/route.ts
@@ -3,6 +3,33 @@ import { z } from "zod"
 
 import { db } from "@/lib/db"
 
+/**
+ * @swagger
+ * /api/gweets/{id}:
+ *   get:
+ *     description: Gives back a List of Gweets
+ *     parameters:
+ *       - name: id
+ *         in: path
+ *         description: ID of Gweet that needs to be fetched
+ *         required: true
+ *         schema:
+ *           type: integer
+ *           format: int64
+ *     content:
+ *      application/json:
+ *          schema:
+ *     responses:
+ *       200:
+ *         description: fetched gweets!
+ *       400:
+ *         description: Invalid request body!  
+ *       404:
+ *         description: Gweet not found! 
+ *       500:
+ *         description: Error 
+ */
+
 export async function GET(request: Request, { params }: { params: { id: string } }) {
     const { id } = params
 
diff --git a/app/api/gweets/likes/route.ts b/app/api/gweets/likes/route.ts
index f560fe5e44116dc9eea9244939c704be0534ef07..1664f26d4c6263ff51aa1616d08540384b814fe2 100644
--- a/app/api/gweets/likes/route.ts
+++ b/app/api/gweets/likes/route.ts
@@ -3,6 +3,36 @@ import { z } from "zod"
 
 import { db } from "@/lib/db"
 
+/**
+ * @swagger
+ * /api/gweets/likes:
+ *   get:
+ *     description: Gets back likeData
+ *     content:
+ *      application/json:
+ *          schema:
+ *     responses:
+ *       200:
+ *         description: fetched like!
+ *       500:
+ *         description: Error 
+ *      
+ *   post:
+ *     description: Creates Gweet
+ *     responses:
+ *       200:
+ *         description: Gweet unliked!
+ *       201:
+ *         description: Gweet liked!
+ *       401:
+ *         description: Unauthorized
+ *       404:
+ *         description: Invalid request body !
+ *       500:
+ *         description: Error 
+ *  
+ */
+
 export async function GET(request: Request) {
     const { searchParams } = new URL(request.url)
     const user_id = searchParams.get("user_id") || undefined
diff --git a/app/api/gweets/regweets/route.ts b/app/api/gweets/regweets/route.ts
index 00a446ef38a0c9d8c1c309c4bc75fc2027e96783..611f0032c327143419839984469a7d1280b40ff3 100644
--- a/app/api/gweets/regweets/route.ts
+++ b/app/api/gweets/regweets/route.ts
@@ -3,6 +3,24 @@ import { z } from "zod"
 
 import { db } from "@/lib/db"
 
+/**
+ * @swagger
+ * /api/gweets/regweets:    
+ *   post:
+ *     description: Creates Regweet
+ *     responses:
+ *       200:
+ *         description: Deleted gweet regweet!
+ *       201:
+ *         description: Gweet regweeted!
+ *       400:
+ *         description: Invalid request body 
+ *       401:
+ *         description: Unauthorized
+ *       500:
+ *         description: Error 
+ */
+
 export async function POST(request: Request) {
     const { gweet_id, user_id } = await request.json()
 
diff --git a/app/api/gweets/route.ts b/app/api/gweets/route.ts
index 4f5903d9bf64f21bf738dc71399fe9f920160cc0..98cc65060cd767a20a3f39d3960513814f00d00b 100644
--- a/app/api/gweets/route.ts
+++ b/app/api/gweets/route.ts
@@ -4,6 +4,42 @@ import { z } from "zod"
 import { db } from "@/lib/db"
 import { utapi } from "uploadthing/server"
 
+/**
+ * @swagger
+ * /api/gweets:
+ *   get:
+ *     description: Gives back a List of Gweets
+ *     content:
+ *      application/json:
+ *          schema:
+ *     responses:
+ *       200:
+ *         description: fetched gweets!
+ *       500:
+ *         description: Error 
+ *      
+ *   post:
+ *     description: Creates Gweet
+ *     responses:
+ *       200:
+ *         description: Gweet created!
+ *       401:
+ *         description: Unauthorized
+ *       500:
+ *         description: Error 
+ * 
+ *   delete:
+ *     description: Deletes Gweet
+ *     responses:
+ *       200:
+ *         description: deleted!
+ *       401:
+ *         description: Unauthorized          
+ *       500:
+ *         description: Error  
+ */
+
+
 export async function GET(request: Request) {
     const { searchParams } = new URL(request.url)
 
diff --git a/app/api/hashtags/route.ts b/app/api/hashtags/route.ts
index 58ee86ebdecd344bc86dd8d6a5d028eb0c72438b..40ddb97fb2f1fcaf9f043f8e9394a6fa13377652 100644
--- a/app/api/hashtags/route.ts
+++ b/app/api/hashtags/route.ts
@@ -3,6 +3,33 @@ import { z } from "zod"
 
 import { db } from "@/lib/db"
 
+/**
+ * @swagger
+ * /api/hashtags:
+ *   get:
+ *     description: Gives back a List of Hashtags
+ *     content:
+ *      application/json:
+ *          schema:
+ *     responses:
+ *       200:
+ *         description: fetched hashtags!
+ *       500:
+ *         description: Error
+ *         
+ *   post:
+ *     description: Creates Hashtag
+ *     responses:
+ *       200:
+ *         description: Hashtag created!
+ *       401:
+ *         description: Unauthorized
+ *       500:
+ *         description: Error
+ *          
+ */
+
+
 export async function GET() {
     try {
         const hashtags = await db.hashtag.findMany({
diff --git a/app/api/signup/route.ts b/app/api/signup/route.ts
index d754d92b38ce52c4fbd73c70a34a6baa07b9d891..38f48354219e7089b0103384c370752d134b64aa 100644
--- a/app/api/signup/route.ts
+++ b/app/api/signup/route.ts
@@ -3,6 +3,23 @@ import { hash } from 'bcrypt'
 import { NextResponse } from 'next/server'
 import { normalize } from 'normalize-diacritics'
 
+/**
+ * @swagger
+ * /api/signup:
+ *    
+ *   post:
+ *     description: Creates Account after Email was verified
+ *     responses:
+ *       200:
+ *         description: Verification sent!
+ *       422:
+ *         description: Email already used
+ *       500:
+ *         description: Error!
+ *      
+ */
+
+
 export async function POST(req: Request) {
     try {
         const { username, email, password } = await req.json()
diff --git a/app/api/users/follow/route.ts b/app/api/users/follow/route.ts
index 7e36eb5c10dac51dd32462b4c50a6f88623a9e27..7a679137fe038ebfd8f99d9a19ff5c69ee103957 100644
--- a/app/api/users/follow/route.ts
+++ b/app/api/users/follow/route.ts
@@ -3,6 +3,43 @@ import { getCurrentUser } from "@/lib/session"
 import { NextResponse } from "next/server"
 import { z } from "zod"
 
+/**
+ * @swagger
+ * /api/users/follow:
+ *   get:
+ *     description: Get Followers for signed in User
+ *     responses:
+ *       200:
+ *         description: fetched follows!
+ *       500:
+ *          description: Error    
+ *   
+ *   put:
+ *     description: Creates Following Record from one User to another
+ *     requestBody:
+ *        content:
+ *         application/json:
+ *           schema:      # Request body contents
+ *             type: object
+ *             properties:
+ *               follwerid:
+ *                 type: string
+ *               followingid:
+ *                 type: string
+ *             example:   # Sample object
+ *               follwerid:: 10
+ *               followingid:: 12
+ *     responses:
+ *       200:
+ *         description: Follow handled!
+ *       401:
+ *         description: Unauthorized
+ *       500:
+ *          description: Error
+ *           
+ */
+
+
 // get following or followers information
 export async function GET(request: Request) {
     const { searchParams } = new URL(request.url)
diff --git a/app/api/users/gamelists/route.ts b/app/api/users/gamelists/route.ts
index 629f995d73d5ada83642ee9c5079cb9e421aed31..6a2327222d4e0572014eaa3d8ff53e45b5e0fe13 100644
--- a/app/api/users/gamelists/route.ts
+++ b/app/api/users/gamelists/route.ts
@@ -4,6 +4,21 @@ import { User } from "@prisma/client"
 import { revalidatePath } from "next/cache"
 import { NextRequest, NextResponse } from "next/server"
 
+/**
+ * @swagger
+ * /api/users/gamelists:
+ *   put:
+ *     description: Changes gamelists of a user
+ *                 id in body must match userid
+ *     responses:
+ *       200:
+ *         description: Request handled!
+ *       401:
+ *         description: Unauthorized
+ *          
+ */
+
+
 export async function PUT(req: NextRequest) {
     const sessionUser = await getCurrentUser()
 
diff --git a/lib/swagger.ts b/lib/swagger.ts
new file mode 100644
index 0000000000000000000000000000000000000000..fe7c14a595ba9e32282c720d89bdb50b1d54ee7b
--- /dev/null
+++ b/lib/swagger.ts
@@ -0,0 +1,25 @@
+import { createSwaggerSpec } from 'next-swagger-doc';
+
+export const getApiDocs = async () => {
+    const spec = createSwaggerSpec({
+        apiFolder: 'app/api', // define api folder under app folder
+        definition: {
+            openapi: '3.0.0',
+            info: {
+                title: 'GameUnity Api Documentation',
+                version: '1.0',
+            },
+            components: {
+                securitySchemes: {
+                    BearerAuth: {
+                        type: 'http',
+                        scheme: 'bearer',
+                        bearerFormat: 'JWT',
+                    },
+                },
+            },
+            security: [],
+        },
+    });
+    return spec;
+};
diff --git a/package-lock.json b/package-lock.json
index f9117fa243b149547f7e6f5c84df6df6ba9c811b..bb235f49808b3540ed07b55e2eadcfba294aa9fb 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -34,6 +34,7 @@
                 "lucide-react": "^0.259.0",
                 "next": "^13.4.9",
                 "next-auth": "^4.22.1",
+                "next-swagger-doc": "^0.4.0",
                 "next-themes": "^0.2.1",
                 "normalize-diacritics": "^4.0.0",
                 "react": "18.2.0",
@@ -42,6 +43,7 @@
                 "react-hook-form": "^7.45.1",
                 "react-infinite-scroll-component": "^6.1.0",
                 "react-intersection-observer": "^9.5.2",
+                "swagger-ui-react": "^5.1.0",
                 "tailwind-merge": "^1.13.2",
                 "tailwindcss-animate": "^1.0.6",
                 "uploadthing": "^5.1.0",
@@ -56,6 +58,7 @@
                 "@types/node": "^20.4.0",
                 "@types/react": "^18.2.14",
                 "@types/react-dom": "^18.2.6",
+                "@types/swagger-ui-react": "^4.18.0",
                 "autoprefixer": "10.4.14",
                 "eslint": "^8.44.0",
                 "eslint-config-next": "^13.4.9",
@@ -106,6 +109,46 @@
                 "node": ">=6.0.0"
             }
         },
+        "node_modules/@apidevtools/json-schema-ref-parser": {
+            "version": "9.1.2",
+            "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.1.2.tgz",
+            "integrity": "sha512-r1w81DpR+KyRWd3f+rk6TNqMgedmAxZP5v5KWlXQWlgMUUtyEJch0DKEci1SorPMiSeM8XPl7MZ3miJ60JIpQg==",
+            "dependencies": {
+                "@jsdevtools/ono": "^7.1.3",
+                "@types/json-schema": "^7.0.6",
+                "call-me-maybe": "^1.0.1",
+                "js-yaml": "^4.1.0"
+            }
+        },
+        "node_modules/@apidevtools/openapi-schemas": {
+            "version": "2.1.0",
+            "resolved": "https://registry.npmjs.org/@apidevtools/openapi-schemas/-/openapi-schemas-2.1.0.tgz",
+            "integrity": "sha512-Zc1AlqrJlX3SlpupFGpiLi2EbteyP7fXmUOGup6/DnkRgjP9bgMM/ag+n91rsv0U1Gpz0H3VILA/o3bW7Ua6BQ==",
+            "engines": {
+                "node": ">=10"
+            }
+        },
+        "node_modules/@apidevtools/swagger-methods": {
+            "version": "3.0.2",
+            "resolved": "https://registry.npmjs.org/@apidevtools/swagger-methods/-/swagger-methods-3.0.2.tgz",
+            "integrity": "sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg=="
+        },
+        "node_modules/@apidevtools/swagger-parser": {
+            "version": "10.0.3",
+            "resolved": "https://registry.npmjs.org/@apidevtools/swagger-parser/-/swagger-parser-10.0.3.tgz",
+            "integrity": "sha512-sNiLY51vZOmSPFZA5TF35KZ2HbgYklQnTSDnkghamzLb3EkNtcQnrBQEj5AOCxHpTtXpqMCRM1CrmV2rG6nw4g==",
+            "dependencies": {
+                "@apidevtools/json-schema-ref-parser": "^9.0.6",
+                "@apidevtools/openapi-schemas": "^2.0.4",
+                "@apidevtools/swagger-methods": "^3.0.2",
+                "@jsdevtools/ono": "^7.1.3",
+                "call-me-maybe": "^1.0.1",
+                "z-schema": "^5.0.1"
+            },
+            "peerDependencies": {
+                "openapi-types": ">=7"
+            }
+        },
         "node_modules/@auth/core": {
             "version": "0.8.1",
             "resolved": "https://registry.npmjs.org/@auth/core/-/core-0.8.1.tgz",
@@ -653,6 +696,18 @@
                 "node": ">=6.9.0"
             }
         },
+        "node_modules/@babel/runtime-corejs3": {
+            "version": "7.22.6",
+            "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.22.6.tgz",
+            "integrity": "sha512-M+37LLIRBTEVjktoJjbw4KVhupF0U/3PYUCbBwgAd9k17hoKhRu1n935QiG7Tuxv0LJOMrb2vuKEeYUlv0iyiw==",
+            "dependencies": {
+                "core-js-pure": "^3.30.2",
+                "regenerator-runtime": "^0.13.11"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            }
+        },
         "node_modules/@babel/template": {
             "version": "7.22.5",
             "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz",
@@ -717,6 +772,11 @@
             "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
             "dev": true
         },
+        "node_modules/@braintree/sanitize-url": {
+            "version": "6.0.2",
+            "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-6.0.2.tgz",
+            "integrity": "sha512-Tbsj02wXCbqGmzdnXNk0SOF19ChhRU70BsroIi4Pm6Ehp56in6vch94mfbdQ17DozxkL3BAVjbZ4Qc1a0HFRAg=="
+        },
         "node_modules/@eslint-community/eslint-utils": {
             "version": "4.4.0",
             "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
@@ -1385,6 +1445,11 @@
             "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
             "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw=="
         },
+        "node_modules/@jsdevtools/ono": {
+            "version": "7.1.3",
+            "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz",
+            "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg=="
+        },
         "node_modules/@mapbox/node-pre-gyp": {
             "version": "1.0.10",
             "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.10.tgz",
@@ -2589,6 +2654,359 @@
                 "@sinonjs/commons": "^3.0.0"
             }
         },
+        "node_modules/@swagger-api/apidom-ast": {
+            "version": "0.70.0",
+            "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ast/-/apidom-ast-0.70.0.tgz",
+            "integrity": "sha512-zQ1RUkXjx5NPYv1bmkoXwlQi7oJC7DJqYi0syTQKswJZDbOkHCwz8cDP/YystOEOL+yyIN7i5EQBIHfy5yAMmA==",
+            "dependencies": {
+                "@babel/runtime-corejs3": "^7.20.7",
+                "@types/ramda": "~0.29.1",
+                "ramda": "~0.29.0",
+                "ramda-adjunct": "^4.0.0",
+                "stampit": "^4.3.2",
+                "unraw": "^2.0.1"
+            }
+        },
+        "node_modules/@swagger-api/apidom-core": {
+            "version": "0.70.1",
+            "resolved": "https://registry.npmjs.org/@swagger-api/apidom-core/-/apidom-core-0.70.1.tgz",
+            "integrity": "sha512-doE6escw5LYVxIp5/lfdeNC8jF39JohKeYQ/YuH5wbo5T06uy8nZ3VxcjPHymmQmLlHdEegUIiirp7dSZFZlIg==",
+            "dependencies": {
+                "@babel/runtime-corejs3": "^7.20.7",
+                "@swagger-api/apidom-ast": "^0.70.0",
+                "@types/ramda": "~0.29.1",
+                "minim": "~0.23.8",
+                "ramda": "~0.29.0",
+                "ramda-adjunct": "^4.0.0",
+                "short-unique-id": "^4.4.4",
+                "stampit": "^4.3.2"
+            }
+        },
+        "node_modules/@swagger-api/apidom-json-pointer": {
+            "version": "0.70.1",
+            "resolved": "https://registry.npmjs.org/@swagger-api/apidom-json-pointer/-/apidom-json-pointer-0.70.1.tgz",
+            "integrity": "sha512-9NyeflCD0Vy8rce3Eag/Xdu2SGF4nr/mnQ6/vb4VbV9pID12z6EbBWvF9p9l0/sRdA6IePj39B3uBLcPl5b4Dg==",
+            "dependencies": {
+                "@babel/runtime-corejs3": "^7.20.7",
+                "@swagger-api/apidom-core": "^0.70.1",
+                "@types/ramda": "~0.29.1",
+                "ramda": "~0.29.0",
+                "ramda-adjunct": "^4.0.0"
+            }
+        },
+        "node_modules/@swagger-api/apidom-ns-api-design-systems": {
+            "version": "0.70.3",
+            "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-api-design-systems/-/apidom-ns-api-design-systems-0.70.3.tgz",
+            "integrity": "sha512-61qffrU0AX/7DxaQ6eFz+gSChlI/6dRU8YaBi4N38ZrwaMkRm/ksy8VWUoMcs2qHrqWh8vBijnpKBXi9JHNGKA==",
+            "optional": true,
+            "dependencies": {
+                "@babel/runtime-corejs3": "^7.20.7",
+                "@swagger-api/apidom-core": "^0.70.1",
+                "@swagger-api/apidom-ns-openapi-3-1": "^0.70.3",
+                "@types/ramda": "~0.29.1",
+                "ramda": "~0.29.0",
+                "ramda-adjunct": "^4.0.0",
+                "stampit": "^4.3.2"
+            }
+        },
+        "node_modules/@swagger-api/apidom-ns-asyncapi-2": {
+            "version": "0.70.3",
+            "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-asyncapi-2/-/apidom-ns-asyncapi-2-0.70.3.tgz",
+            "integrity": "sha512-Z2xhws7MfclZ2IzFjsfohpRueTZBde6x0GGtWC3dmgq506IhYpA+cpGYUpGHgwzdwLJOzLdwXnafuuXIoVkvJw==",
+            "optional": true,
+            "dependencies": {
+                "@babel/runtime-corejs3": "^7.20.7",
+                "@swagger-api/apidom-core": "^0.70.1",
+                "@swagger-api/apidom-ns-json-schema-draft-7": "^0.70.3",
+                "@types/ramda": "~0.29.1",
+                "ramda": "~0.29.0",
+                "ramda-adjunct": "^4.0.0",
+                "stampit": "^4.3.2"
+            }
+        },
+        "node_modules/@swagger-api/apidom-ns-json-schema-draft-4": {
+            "version": "0.70.3",
+            "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-4/-/apidom-ns-json-schema-draft-4-0.70.3.tgz",
+            "integrity": "sha512-y/WJTQCzm59p8wVPb034AcydzgXNEOVdh+S/OGuHJ+HYUFmVT5NWvBGWC7Ikc9ixXN0v585dzq1QvE2T7H0ZfQ==",
+            "dependencies": {
+                "@babel/runtime-corejs3": "^7.20.7",
+                "@swagger-api/apidom-ast": "^0.70.0",
+                "@swagger-api/apidom-core": "^0.70.1",
+                "@types/ramda": "~0.29.1",
+                "ramda": "~0.29.0",
+                "ramda-adjunct": "^4.0.0",
+                "stampit": "^4.3.2"
+            }
+        },
+        "node_modules/@swagger-api/apidom-ns-json-schema-draft-6": {
+            "version": "0.70.3",
+            "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-6/-/apidom-ns-json-schema-draft-6-0.70.3.tgz",
+            "integrity": "sha512-6u6fB9LIM3z+K9miAAWsOT13LOCQc5G0d/lkRSpVSendvgAWpOCEx1BSgiIoURwkcBl2FB46vYyXefolxTOK7w==",
+            "optional": true,
+            "dependencies": {
+                "@babel/runtime-corejs3": "^7.20.7",
+                "@swagger-api/apidom-core": "^0.70.1",
+                "@swagger-api/apidom-ns-json-schema-draft-4": "^0.70.3",
+                "@types/ramda": "~0.29.1",
+                "ramda": "~0.29.0",
+                "ramda-adjunct": "^4.0.0",
+                "stampit": "^4.3.2"
+            }
+        },
+        "node_modules/@swagger-api/apidom-ns-json-schema-draft-7": {
+            "version": "0.70.3",
+            "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-7/-/apidom-ns-json-schema-draft-7-0.70.3.tgz",
+            "integrity": "sha512-fVTxhfuHieXyEL4BwoQidXNGAkXjO9N8QekfUpdYDKLxs7Sq80itPZxlq/fbagomS+Q1n5LYfB5h2n5lLOGJDQ==",
+            "optional": true,
+            "dependencies": {
+                "@babel/runtime-corejs3": "^7.20.7",
+                "@swagger-api/apidom-core": "^0.70.1",
+                "@swagger-api/apidom-ns-json-schema-draft-6": "^0.70.3",
+                "@types/ramda": "~0.29.1",
+                "ramda": "~0.29.0",
+                "ramda-adjunct": "^4.0.0",
+                "stampit": "^4.3.2"
+            }
+        },
+        "node_modules/@swagger-api/apidom-ns-openapi-3-0": {
+            "version": "0.70.3",
+            "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-3-0/-/apidom-ns-openapi-3-0-0.70.3.tgz",
+            "integrity": "sha512-ci5GNSf1cA/Xc2/1Kjlo2u78McevOYsH6+weEPW4JlHa3hMJyi6dlw16yHBRl7lzdxiO0D64+r0JVX0bOBhqyw==",
+            "dependencies": {
+                "@babel/runtime-corejs3": "^7.20.7",
+                "@swagger-api/apidom-core": "^0.70.1",
+                "@swagger-api/apidom-ns-json-schema-draft-4": "^0.70.3",
+                "@types/ramda": "~0.29.1",
+                "ramda": "~0.29.0",
+                "ramda-adjunct": "^4.0.0",
+                "stampit": "^4.3.2"
+            }
+        },
+        "node_modules/@swagger-api/apidom-ns-openapi-3-1": {
+            "version": "0.70.3",
+            "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-3-1/-/apidom-ns-openapi-3-1-0.70.3.tgz",
+            "integrity": "sha512-/AwVei3FJeC4wAnmNMywyK8zjKiP8CzuuA58G9xqWk2asOH2qjppYjaFAE6BeJ7of7juR5+BvdQg1wXYz8sutA==",
+            "dependencies": {
+                "@babel/runtime-corejs3": "^7.20.7",
+                "@swagger-api/apidom-ast": "^0.70.0",
+                "@swagger-api/apidom-core": "^0.70.1",
+                "@swagger-api/apidom-ns-openapi-3-0": "^0.70.3",
+                "@types/ramda": "~0.29.1",
+                "ramda": "~0.29.0",
+                "ramda-adjunct": "^4.0.0",
+                "stampit": "^4.3.2"
+            }
+        },
+        "node_modules/@swagger-api/apidom-parser-adapter-api-design-systems-json": {
+            "version": "0.70.4",
+            "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-api-design-systems-json/-/apidom-parser-adapter-api-design-systems-json-0.70.4.tgz",
+            "integrity": "sha512-xo7mr8/UgVpqe1AMUbNPRnXM3CDgvIXktz7y1abAbRjJ/qhBWsRHBeqf8KQBJjKfJc58i+yMnDXC8hapZplHeA==",
+            "optional": true,
+            "dependencies": {
+                "@babel/runtime-corejs3": "^7.20.7",
+                "@swagger-api/apidom-core": "^0.70.1",
+                "@swagger-api/apidom-ns-api-design-systems": "^0.70.3",
+                "@swagger-api/apidom-parser-adapter-json": "^0.70.4",
+                "@types/ramda": "~0.29.1",
+                "ramda": "~0.29.0",
+                "ramda-adjunct": "^4.0.0"
+            }
+        },
+        "node_modules/@swagger-api/apidom-parser-adapter-api-design-systems-yaml": {
+            "version": "0.70.3",
+            "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-api-design-systems-yaml/-/apidom-parser-adapter-api-design-systems-yaml-0.70.3.tgz",
+            "integrity": "sha512-DJJjwv3KuL5hnMfQgpD7S2tbwxalyTsjkaFF6uxcIMJRr9hdKKNDkvJkel/r56FE2pp9WCBhP6Wm1JK6PGI3Pg==",
+            "optional": true,
+            "dependencies": {
+                "@babel/runtime-corejs3": "^7.20.7",
+                "@swagger-api/apidom-core": "^0.70.1",
+                "@swagger-api/apidom-ns-api-design-systems": "^0.70.3",
+                "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.70.3",
+                "@types/ramda": "~0.29.1",
+                "ramda": "~0.29.0",
+                "ramda-adjunct": "^4.0.0"
+            }
+        },
+        "node_modules/@swagger-api/apidom-parser-adapter-asyncapi-json-2": {
+            "version": "0.70.4",
+            "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-asyncapi-json-2/-/apidom-parser-adapter-asyncapi-json-2-0.70.4.tgz",
+            "integrity": "sha512-eaqQ/93xxVFM+138AL2z5jODyXJlpf5RNRXrE/HaG3PWLB+a7CN9eCy+czP1E6VgC0Wia1kuYf/Bx9aIgNQ6sQ==",
+            "optional": true,
+            "dependencies": {
+                "@babel/runtime-corejs3": "^7.20.7",
+                "@swagger-api/apidom-core": "^0.70.1",
+                "@swagger-api/apidom-ns-asyncapi-2": "^0.70.3",
+                "@swagger-api/apidom-parser-adapter-json": "^0.70.4",
+                "@types/ramda": "~0.29.1",
+                "ramda": "~0.29.0",
+                "ramda-adjunct": "^4.0.0"
+            }
+        },
+        "node_modules/@swagger-api/apidom-parser-adapter-asyncapi-yaml-2": {
+            "version": "0.70.3",
+            "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-asyncapi-yaml-2/-/apidom-parser-adapter-asyncapi-yaml-2-0.70.3.tgz",
+            "integrity": "sha512-UQxxPoxWcgp9laW8kOdzd7991/wgYJ2b7lb3XBhmVydRbPM1AD5L3G/zM5ItVBQZIZ398kDX/mfGTKAJr5pJrA==",
+            "optional": true,
+            "dependencies": {
+                "@babel/runtime-corejs3": "^7.20.7",
+                "@swagger-api/apidom-core": "^0.70.1",
+                "@swagger-api/apidom-ns-asyncapi-2": "^0.70.3",
+                "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.70.3",
+                "@types/ramda": "~0.29.1",
+                "ramda": "~0.29.0",
+                "ramda-adjunct": "^4.0.0"
+            }
+        },
+        "node_modules/@swagger-api/apidom-parser-adapter-json": {
+            "version": "0.70.4",
+            "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-json/-/apidom-parser-adapter-json-0.70.4.tgz",
+            "integrity": "sha512-Clr4VHocpdDi/bQ4ZSuhN3Ak3g8oLjKtCqjQO34YDrFrKPD2twznALBdVjIHa9D+g5YJYkAQ+5wOrK5uvo/5lQ==",
+            "optional": true,
+            "dependencies": {
+                "@babel/runtime-corejs3": "^7.20.7",
+                "@swagger-api/apidom-ast": "^0.70.0",
+                "@swagger-api/apidom-core": "^0.70.1",
+                "@types/ramda": "~0.29.1",
+                "ramda": "~0.29.0",
+                "ramda-adjunct": "^4.0.0",
+                "stampit": "^4.3.2",
+                "tree-sitter": "=0.20.4",
+                "tree-sitter-json": "=0.20.0",
+                "web-tree-sitter": "=0.20.3"
+            }
+        },
+        "node_modules/@swagger-api/apidom-parser-adapter-openapi-json-3-0": {
+            "version": "0.70.4",
+            "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-json-3-0/-/apidom-parser-adapter-openapi-json-3-0-0.70.4.tgz",
+            "integrity": "sha512-VfSR/TkB7rN5qAm6nGBrJzGuwhvFH03wojPVtjQEUUlDfmiFK0Snhdzq/65qK8WxSYidIBVgWHEreYif28AhBQ==",
+            "optional": true,
+            "dependencies": {
+                "@babel/runtime-corejs3": "^7.20.7",
+                "@swagger-api/apidom-core": "^0.70.1",
+                "@swagger-api/apidom-ns-openapi-3-0": "^0.70.3",
+                "@swagger-api/apidom-parser-adapter-json": "^0.70.4",
+                "@types/ramda": "~0.29.1",
+                "ramda": "~0.29.0",
+                "ramda-adjunct": "^4.0.0"
+            }
+        },
+        "node_modules/@swagger-api/apidom-parser-adapter-openapi-json-3-1": {
+            "version": "0.70.4",
+            "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-json-3-1/-/apidom-parser-adapter-openapi-json-3-1-0.70.4.tgz",
+            "integrity": "sha512-XB5owOAI7YtRi7lD1R5vI3zFn7EbjKn/FkSMjC0m4CfienX9f9EkromSWE5i5dQGpCfkpHp/iOJ00xODly1nUQ==",
+            "optional": true,
+            "dependencies": {
+                "@babel/runtime-corejs3": "^7.20.7",
+                "@swagger-api/apidom-core": "^0.70.1",
+                "@swagger-api/apidom-ns-openapi-3-1": "^0.70.3",
+                "@swagger-api/apidom-parser-adapter-json": "^0.70.4",
+                "@types/ramda": "~0.29.1",
+                "ramda": "~0.29.0",
+                "ramda-adjunct": "^4.0.0"
+            }
+        },
+        "node_modules/@swagger-api/apidom-parser-adapter-openapi-yaml-3-0": {
+            "version": "0.70.3",
+            "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-3-0/-/apidom-parser-adapter-openapi-yaml-3-0-0.70.3.tgz",
+            "integrity": "sha512-4vkN+jy4HKYQJc0M7sVD4pqT5n2a7nIwswtHujdMVR2YXXY8RTzBg4DO28qVUoAWUsE0C8Tp+hopDPeCtpYduA==",
+            "optional": true,
+            "dependencies": {
+                "@babel/runtime-corejs3": "^7.20.7",
+                "@swagger-api/apidom-core": "^0.70.1",
+                "@swagger-api/apidom-ns-openapi-3-0": "^0.70.3",
+                "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.70.3",
+                "@types/ramda": "~0.29.1",
+                "ramda": "~0.29.0",
+                "ramda-adjunct": "^4.0.0"
+            }
+        },
+        "node_modules/@swagger-api/apidom-parser-adapter-openapi-yaml-3-1": {
+            "version": "0.70.3",
+            "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-3-1/-/apidom-parser-adapter-openapi-yaml-3-1-0.70.3.tgz",
+            "integrity": "sha512-4xoyOYrG3YBdr/mjNLzDAIdOxFSYR0gh3lRx3/IVkwmhp0rSVrGdD2hFtgoVrj2MiKR60SUbzcnCXJ4MLVmUbQ==",
+            "optional": true,
+            "dependencies": {
+                "@babel/runtime-corejs3": "^7.20.7",
+                "@swagger-api/apidom-core": "^0.70.1",
+                "@swagger-api/apidom-ns-openapi-3-1": "^0.70.3",
+                "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.70.3",
+                "@types/ramda": "~0.29.1",
+                "ramda": "~0.29.0",
+                "ramda-adjunct": "^4.0.0"
+            }
+        },
+        "node_modules/@swagger-api/apidom-parser-adapter-yaml-1-2": {
+            "version": "0.70.3",
+            "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-yaml-1-2/-/apidom-parser-adapter-yaml-1-2-0.70.3.tgz",
+            "integrity": "sha512-e+lGfUfduduIT+nyJtxDFXLqoulvz2sWB9vt+4gmq/SMc0uvFBEcffAeBUOPw4J3d4pMux2eRRzA29YF7/lXng==",
+            "optional": true,
+            "dependencies": {
+                "@babel/runtime-corejs3": "^7.20.7",
+                "@swagger-api/apidom-ast": "^0.70.0",
+                "@swagger-api/apidom-core": "^0.70.1",
+                "@types/ramda": "~0.29.1",
+                "ramda": "~0.29.0",
+                "ramda-adjunct": "^4.0.0",
+                "stampit": "^4.3.2",
+                "tree-sitter": "=0.20.4",
+                "tree-sitter-yaml": "=0.5.0",
+                "web-tree-sitter": "=0.20.3"
+            }
+        },
+        "node_modules/@swagger-api/apidom-reference": {
+            "version": "0.70.4",
+            "resolved": "https://registry.npmjs.org/@swagger-api/apidom-reference/-/apidom-reference-0.70.4.tgz",
+            "integrity": "sha512-+jrDtbJc7zVqHumyDu1rGXZD3BwrD8qu+FaC7+9iZThU2GAEOs4VvTcCkPQLfVtpIrv1fPvNkzean27MJZxpkw==",
+            "dependencies": {
+                "@babel/runtime-corejs3": "^7.20.7",
+                "@swagger-api/apidom-core": "^0.70.1",
+                "@types/ramda": "~0.29.1",
+                "axios": "^1.4.0",
+                "minimatch": "^7.4.3",
+                "process": "^0.11.10",
+                "ramda": "~0.29.0",
+                "ramda-adjunct": "^4.0.0",
+                "stampit": "^4.3.2"
+            },
+            "optionalDependencies": {
+                "@swagger-api/apidom-json-pointer": "^0.70.1",
+                "@swagger-api/apidom-ns-asyncapi-2": "^0.70.3",
+                "@swagger-api/apidom-ns-openapi-3-0": "^0.70.3",
+                "@swagger-api/apidom-ns-openapi-3-1": "^0.70.3",
+                "@swagger-api/apidom-parser-adapter-api-design-systems-json": "^0.70.4",
+                "@swagger-api/apidom-parser-adapter-api-design-systems-yaml": "^0.70.3",
+                "@swagger-api/apidom-parser-adapter-asyncapi-json-2": "^0.70.4",
+                "@swagger-api/apidom-parser-adapter-asyncapi-yaml-2": "^0.70.3",
+                "@swagger-api/apidom-parser-adapter-json": "^0.70.4",
+                "@swagger-api/apidom-parser-adapter-openapi-json-3-0": "^0.70.4",
+                "@swagger-api/apidom-parser-adapter-openapi-json-3-1": "^0.70.4",
+                "@swagger-api/apidom-parser-adapter-openapi-yaml-3-0": "^0.70.3",
+                "@swagger-api/apidom-parser-adapter-openapi-yaml-3-1": "^0.70.3",
+                "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.70.3"
+            }
+        },
+        "node_modules/@swagger-api/apidom-reference/node_modules/brace-expansion": {
+            "version": "2.0.1",
+            "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+            "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+            "dependencies": {
+                "balanced-match": "^1.0.0"
+            }
+        },
+        "node_modules/@swagger-api/apidom-reference/node_modules/minimatch": {
+            "version": "7.4.6",
+            "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz",
+            "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==",
+            "dependencies": {
+                "brace-expansion": "^2.0.1"
+            },
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/isaacs"
+            }
+        },
         "node_modules/@swc/helpers": {
             "version": "0.5.1",
             "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.1.tgz",
@@ -2821,6 +3239,23 @@
                 "@types/node": "*"
             }
         },
+        "node_modules/@types/hast": {
+            "version": "2.3.4",
+            "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.4.tgz",
+            "integrity": "sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==",
+            "dependencies": {
+                "@types/unist": "*"
+            }
+        },
+        "node_modules/@types/hoist-non-react-statics": {
+            "version": "3.3.1",
+            "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz",
+            "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==",
+            "dependencies": {
+                "@types/react": "*",
+                "hoist-non-react-statics": "^3.3.0"
+            }
+        },
         "node_modules/@types/istanbul-lib-coverage": {
             "version": "2.0.4",
             "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz",
@@ -2898,6 +3333,11 @@
                 "parse5": "^7.0.0"
             }
         },
+        "node_modules/@types/json-schema": {
+            "version": "7.0.12",
+            "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz",
+            "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA=="
+        },
         "node_modules/@types/json5": {
             "version": "0.0.29",
             "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
@@ -2919,14 +3359,20 @@
         "node_modules/@types/prop-types": {
             "version": "15.7.5",
             "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
-            "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==",
-            "devOptional": true
+            "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w=="
+        },
+        "node_modules/@types/ramda": {
+            "version": "0.29.3",
+            "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.29.3.tgz",
+            "integrity": "sha512-Yh/RHkjN0ru6LVhSQtTkCRo6HXkfL9trot/2elzM/yXLJmbLm2v6kJc8yftTnwv1zvUob6TEtqI2cYjdqG3U0Q==",
+            "dependencies": {
+                "types-ramda": "^0.29.4"
+            }
         },
         "node_modules/@types/react": {
             "version": "18.2.14",
             "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.14.tgz",
             "integrity": "sha512-A0zjq+QN/O0Kpe30hA1GidzyFjatVvrpIvWLxD+xv67Vt91TWWgco9IvrJBkeyHm1trGaFS/FSGqPlhyeZRm0g==",
-            "devOptional": true,
             "dependencies": {
                 "@types/prop-types": "*",
                 "@types/scheduler": "*",
@@ -2945,8 +3391,7 @@
         "node_modules/@types/scheduler": {
             "version": "0.16.3",
             "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz",
-            "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==",
-            "devOptional": true
+            "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ=="
         },
         "node_modules/@types/stack-utils": {
             "version": "2.0.1",
@@ -2954,6 +3399,20 @@
             "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==",
             "dev": true
         },
+        "node_modules/@types/swagger-jsdoc": {
+            "version": "6.0.1",
+            "resolved": "https://registry.npmjs.org/@types/swagger-jsdoc/-/swagger-jsdoc-6.0.1.tgz",
+            "integrity": "sha512-+MUpcbyxD528dECUBCEVm6abNuORdbuGjbrUdHDeAQ+rkPuo2a+L4N02WJHF3bonSSE6SJ3dUJwF2V6+cHnf0w=="
+        },
+        "node_modules/@types/swagger-ui-react": {
+            "version": "4.18.0",
+            "resolved": "https://registry.npmjs.org/@types/swagger-ui-react/-/swagger-ui-react-4.18.0.tgz",
+            "integrity": "sha512-XtvFXmj46Zibe89tFQwSQknrq1NxEtOep2rZuxth7K88tyPEP00FnoA6H7ATYhocAEA4XUWaNHNFWFRl1KX8aQ==",
+            "dev": true,
+            "dependencies": {
+                "@types/react": "*"
+            }
+        },
         "node_modules/@types/testing-library__jest-dom": {
             "version": "5.14.6",
             "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.6.tgz",
@@ -2969,6 +3428,16 @@
             "integrity": "sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==",
             "dev": true
         },
+        "node_modules/@types/unist": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz",
+            "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w=="
+        },
+        "node_modules/@types/use-sync-external-store": {
+            "version": "0.0.3",
+            "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz",
+            "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA=="
+        },
         "node_modules/@types/yargs": {
             "version": "17.0.24",
             "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz",
@@ -3117,6 +3586,11 @@
                 }
             }
         },
+        "node_modules/@yarnpkg/lockfile": {
+            "version": "1.1.0",
+            "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz",
+            "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ=="
+        },
         "node_modules/abab": {
             "version": "2.0.6",
             "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz",
@@ -3234,7 +3708,6 @@
             "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"
             },
@@ -3287,8 +3760,7 @@
         "node_modules/argparse": {
             "version": "2.0.1",
             "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
-            "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
-            "dev": true
+            "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
         },
         "node_modules/aria-hidden": {
             "version": "1.2.3",
@@ -3409,8 +3881,15 @@
         "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
+            "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
+        },
+        "node_modules/at-least-node": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
+            "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
+            "engines": {
+                "node": ">= 4.0.0"
+            }
         },
         "node_modules/attr-accept": {
             "version": "2.2.2",
@@ -3420,6 +3899,14 @@
                 "node": ">=4"
             }
         },
+        "node_modules/autolinker": {
+            "version": "3.16.2",
+            "resolved": "https://registry.npmjs.org/autolinker/-/autolinker-3.16.2.tgz",
+            "integrity": "sha512-JiYl7j2Z19F9NdTmirENSUUIIL/9MytEWtmzhfmsKPCp9E+G35Y0UNCMoM9tFigxT59qSc8Ml2dlZXOCVTYwuA==",
+            "dependencies": {
+                "tslib": "^2.3.0"
+            }
+        },
         "node_modules/autoprefixer": {
             "version": "10.4.14",
             "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz",
@@ -3474,6 +3961,16 @@
                 "node": ">=4"
             }
         },
+        "node_modules/axios": {
+            "version": "1.4.0",
+            "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz",
+            "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==",
+            "dependencies": {
+                "follow-redirects": "^1.15.0",
+                "form-data": "^4.0.0",
+                "proxy-from-env": "^1.1.0"
+            }
+        },
         "node_modules/axobject-query": {
             "version": "3.2.1",
             "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz",
@@ -3595,6 +4092,25 @@
             "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
             "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
         },
+        "node_modules/base64-js": {
+            "version": "1.5.1",
+            "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
+            "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+            "funding": [
+                {
+                    "type": "github",
+                    "url": "https://github.com/sponsors/feross"
+                },
+                {
+                    "type": "patreon",
+                    "url": "https://www.patreon.com/feross"
+                },
+                {
+                    "type": "consulting",
+                    "url": "https://feross.org/support"
+                }
+            ]
+        },
         "node_modules/bcrypt": {
             "version": "5.1.0",
             "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.1.0.tgz",
@@ -3625,6 +4141,17 @@
                 "node": ">=8"
             }
         },
+        "node_modules/bl": {
+            "version": "4.1.0",
+            "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
+            "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
+            "optional": true,
+            "dependencies": {
+                "buffer": "^5.5.0",
+                "inherits": "^2.0.4",
+                "readable-stream": "^3.4.0"
+            }
+        },
         "node_modules/bplist-parser": {
             "version": "0.2.0",
             "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz",
@@ -3698,6 +4225,30 @@
                 "node-int64": "^0.4.0"
             }
         },
+        "node_modules/buffer": {
+            "version": "5.7.1",
+            "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
+            "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+            "funding": [
+                {
+                    "type": "github",
+                    "url": "https://github.com/sponsors/feross"
+                },
+                {
+                    "type": "patreon",
+                    "url": "https://www.patreon.com/feross"
+                },
+                {
+                    "type": "consulting",
+                    "url": "https://feross.org/support"
+                }
+            ],
+            "optional": true,
+            "dependencies": {
+                "base64-js": "^1.3.1",
+                "ieee754": "^1.1.13"
+            }
+        },
         "node_modules/buffer-from": {
             "version": "1.1.2",
             "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
@@ -3734,7 +4285,6 @@
             "version": "1.0.2",
             "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
             "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
-            "dev": true,
             "dependencies": {
                 "function-bind": "^1.1.1",
                 "get-intrinsic": "^1.0.2"
@@ -3743,6 +4293,11 @@
                 "url": "https://github.com/sponsors/ljharb"
             }
         },
+        "node_modules/call-me-maybe": {
+            "version": "1.0.2",
+            "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz",
+            "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ=="
+        },
         "node_modules/callsites": {
             "version": "3.1.0",
             "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
@@ -3810,6 +4365,33 @@
                 "node": ">=10"
             }
         },
+        "node_modules/character-entities": {
+            "version": "1.2.4",
+            "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz",
+            "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==",
+            "funding": {
+                "type": "github",
+                "url": "https://github.com/sponsors/wooorm"
+            }
+        },
+        "node_modules/character-entities-legacy": {
+            "version": "1.1.4",
+            "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz",
+            "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==",
+            "funding": {
+                "type": "github",
+                "url": "https://github.com/sponsors/wooorm"
+            }
+        },
+        "node_modules/character-reference-invalid": {
+            "version": "1.1.4",
+            "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz",
+            "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==",
+            "funding": {
+                "type": "github",
+                "url": "https://github.com/sponsors/wooorm"
+            }
+        },
         "node_modules/chokidar": {
             "version": "3.5.3",
             "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
@@ -3859,7 +4441,6 @@
             "version": "3.8.0",
             "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz",
             "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==",
-            "dev": true,
             "funding": [
                 {
                     "type": "github",
@@ -3887,6 +4468,23 @@
                 "url": "https://joebell.co.uk"
             }
         },
+        "node_modules/classnames": {
+            "version": "2.3.2",
+            "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz",
+            "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw=="
+        },
+        "node_modules/cleye": {
+            "version": "1.3.2",
+            "resolved": "https://registry.npmjs.org/cleye/-/cleye-1.3.2.tgz",
+            "integrity": "sha512-MngIC2izcCz07iRKr3Pe8Z6ZBv4zbKFl/YnQEN/aMHis6PpH+MxI2e6n0bMUAmSVlMoAyQkdBCSTbfDmtcSovQ==",
+            "dependencies": {
+                "terminal-columns": "^1.4.1",
+                "type-flag": "^3.0.0"
+            },
+            "funding": {
+                "url": "https://github.com/privatenumber/cleye?sponsor=1"
+            }
+        },
         "node_modules/client-only": {
             "version": "0.0.1",
             "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz",
@@ -3934,7 +4532,6 @@
             "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"
             },
@@ -3945,8 +4542,7 @@
         "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
+            "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
         },
         "node_modules/color-support": {
             "version": "1.1.3",
@@ -3960,7 +4556,6 @@
             "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"
             },
@@ -3968,6 +4563,15 @@
                 "node": ">= 0.8"
             }
         },
+        "node_modules/comma-separated-tokens": {
+            "version": "1.0.8",
+            "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz",
+            "integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==",
+            "funding": {
+                "type": "github",
+                "url": "https://github.com/sponsors/wooorm"
+            }
+        },
         "node_modules/commander": {
             "version": "4.1.1",
             "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
@@ -4000,11 +4604,36 @@
                 "node": ">= 0.6"
             }
         },
+        "node_modules/copy-to-clipboard": {
+            "version": "3.3.3",
+            "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz",
+            "integrity": "sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==",
+            "dependencies": {
+                "toggle-selection": "^1.0.6"
+            }
+        },
+        "node_modules/core-js-pure": {
+            "version": "3.31.1",
+            "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.31.1.tgz",
+            "integrity": "sha512-w+C62kvWti0EPs4KPMCMVv9DriHSXfQOCQ94bGGBiEW5rrbtt/Rz8n5Krhfw9cpFyzXBjf3DB3QnPdEzGDY4Fw==",
+            "hasInstallScript": true,
+            "funding": {
+                "type": "opencollective",
+                "url": "https://opencollective.com/core-js"
+            }
+        },
+        "node_modules/cross-fetch": {
+            "version": "3.1.8",
+            "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz",
+            "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==",
+            "dependencies": {
+                "node-fetch": "^2.6.12"
+            }
+        },
         "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",
@@ -4017,8 +4646,7 @@
         "node_modules/css.escape": {
             "version": "1.5.1",
             "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz",
-            "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==",
-            "dev": true
+            "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg=="
         },
         "node_modules/cssesc": {
             "version": "3.0.0",
@@ -4058,8 +4686,7 @@
         "node_modules/csstype": {
             "version": "3.1.2",
             "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
-            "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==",
-            "devOptional": true
+            "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
         },
         "node_modules/damerau-levenshtein": {
             "version": "1.0.8",
@@ -4108,6 +4735,21 @@
             "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==",
             "dev": true
         },
+        "node_modules/decompress-response": {
+            "version": "6.0.0",
+            "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
+            "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
+            "optional": true,
+            "dependencies": {
+                "mimic-response": "^3.1.0"
+            },
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
+            }
+        },
         "node_modules/dedent": {
             "version": "0.7.0",
             "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz",
@@ -4143,6 +4785,14 @@
                 "url": "https://github.com/sponsors/ljharb"
             }
         },
+        "node_modules/deep-extend": {
+            "version": "0.6.0",
+            "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
+            "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
+            "engines": {
+                "node": ">=4.0.0"
+            }
+        },
         "node_modules/deep-is": {
             "version": "0.1.4",
             "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
@@ -4153,7 +4803,6 @@
             "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"
             }
@@ -4334,7 +4983,6 @@
             "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"
             }
@@ -4410,7 +5058,6 @@
             "version": "3.0.0",
             "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
             "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
-            "dev": true,
             "dependencies": {
                 "esutils": "^2.0.2"
             },
@@ -4436,6 +5083,19 @@
                 "node": ">=12"
             }
         },
+        "node_modules/dompurify": {
+            "version": "3.0.3",
+            "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.0.3.tgz",
+            "integrity": "sha512-axQ9zieHLnAnHh0sfAamKYiqXMJAVwu+LM/alQ7WDagoWessyWvMSFyW65CqF3owufNu8HBcE4cM2Vflu7YWcQ=="
+        },
+        "node_modules/drange": {
+            "version": "1.1.1",
+            "resolved": "https://registry.npmjs.org/drange/-/drange-1.1.1.tgz",
+            "integrity": "sha512-pYxfDYpued//QpnLIm4Avk7rsNtAtQkUES2cwAYSvD/wd2pKD71gN2Ebj3e7klzXwjocvE8c5vx/1fxwpqmSxA==",
+            "engines": {
+                "node": ">=4"
+            }
+        },
         "node_modules/electron-to-chromium": {
             "version": "1.4.444",
             "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.444.tgz",
@@ -4460,9 +5120,18 @@
             "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
             "dev": true
         },
-        "node_modules/enhanced-resolve": {
-            "version": "5.15.0",
-            "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz",
+        "node_modules/end-of-stream": {
+            "version": "1.4.4",
+            "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
+            "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
+            "optional": true,
+            "dependencies": {
+                "once": "^1.4.0"
+            }
+        },
+        "node_modules/enhanced-resolve": {
+            "version": "5.15.0",
+            "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz",
             "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==",
             "dev": true,
             "dependencies": {
@@ -5091,7 +5760,6 @@
             "version": "2.0.3",
             "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
             "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
-            "dev": true,
             "engines": {
                 "node": ">=0.10.0"
             }
@@ -5128,6 +5796,15 @@
                 "node": ">= 0.8.0"
             }
         },
+        "node_modules/expand-template": {
+            "version": "2.0.3",
+            "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz",
+            "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==",
+            "optional": true,
+            "engines": {
+                "node": ">=6"
+            }
+        },
         "node_modules/expect": {
             "version": "29.6.1",
             "resolved": "https://registry.npmjs.org/expect/-/expect-29.6.1.tgz",
@@ -5177,6 +5854,11 @@
                 "node": ">= 6"
             }
         },
+        "node_modules/fast-json-patch": {
+            "version": "3.1.1",
+            "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.1.1.tgz",
+            "integrity": "sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ=="
+        },
         "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",
@@ -5197,6 +5879,18 @@
                 "reusify": "^1.0.4"
             }
         },
+        "node_modules/fault": {
+            "version": "1.0.4",
+            "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz",
+            "integrity": "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==",
+            "dependencies": {
+                "format": "^0.2.0"
+            },
+            "funding": {
+                "type": "github",
+                "url": "https://github.com/sponsors/wooorm"
+            }
+        },
         "node_modules/fb-watchman": {
             "version": "2.0.2",
             "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz",
@@ -5256,6 +5950,14 @@
                 "url": "https://github.com/sponsors/sindresorhus"
             }
         },
+        "node_modules/find-yarn-workspace-root": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz",
+            "integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==",
+            "dependencies": {
+                "micromatch": "^4.0.2"
+            }
+        },
         "node_modules/flat-cache": {
             "version": "3.0.4",
             "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
@@ -5275,6 +5977,25 @@
             "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==",
             "dev": true
         },
+        "node_modules/follow-redirects": {
+            "version": "1.15.2",
+            "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
+            "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==",
+            "funding": [
+                {
+                    "type": "individual",
+                    "url": "https://github.com/sponsors/RubenVerborgh"
+                }
+            ],
+            "engines": {
+                "node": ">=4.0"
+            },
+            "peerDependenciesMeta": {
+                "debug": {
+                    "optional": true
+                }
+            }
+        },
         "node_modules/for-each": {
             "version": "0.3.3",
             "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
@@ -5288,7 +6009,6 @@
             "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",
@@ -5298,6 +6018,31 @@
                 "node": ">= 6"
             }
         },
+        "node_modules/form-data-encoder": {
+            "version": "1.9.0",
+            "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.9.0.tgz",
+            "integrity": "sha512-rahaRMkN8P8d/tgK/BLPX+WBVM27NbvdXBxqQujBtkDAIFspaRqN7Od7lfdGQA6KAD+f82fYCLBq1ipvcu8qLw=="
+        },
+        "node_modules/format": {
+            "version": "0.2.2",
+            "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz",
+            "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==",
+            "engines": {
+                "node": ">=0.4.x"
+            }
+        },
+        "node_modules/formdata-node": {
+            "version": "4.4.1",
+            "resolved": "https://registry.npmjs.org/formdata-node/-/formdata-node-4.4.1.tgz",
+            "integrity": "sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==",
+            "dependencies": {
+                "node-domexception": "1.0.0",
+                "web-streams-polyfill": "4.0.0-beta.3"
+            },
+            "engines": {
+                "node": ">= 12.20"
+            }
+        },
         "node_modules/fraction.js": {
             "version": "4.2.0",
             "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz",
@@ -5311,6 +6056,34 @@
                 "url": "https://www.patreon.com/infusion"
             }
         },
+        "node_modules/fs-constants": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
+            "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
+            "optional": true
+        },
+        "node_modules/fs-extra": {
+            "version": "9.1.0",
+            "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
+            "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
+            "dependencies": {
+                "at-least-node": "^1.0.0",
+                "graceful-fs": "^4.2.0",
+                "jsonfile": "^6.0.1",
+                "universalify": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=10"
+            }
+        },
+        "node_modules/fs-extra/node_modules/universalify": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+            "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+            "engines": {
+                "node": ">= 10.0.0"
+            }
+        },
         "node_modules/fs-minipass": {
             "version": "2.1.0",
             "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
@@ -5429,7 +6202,6 @@
             "version": "1.2.1",
             "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz",
             "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==",
-            "dev": true,
             "dependencies": {
                 "function-bind": "^1.1.1",
                 "has": "^1.0.3",
@@ -5497,6 +6269,12 @@
                 "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1"
             }
         },
+        "node_modules/github-from-package": {
+            "version": "0.0.0",
+            "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz",
+            "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==",
+            "optional": true
+        },
         "node_modules/glob": {
             "version": "7.1.7",
             "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
@@ -5629,7 +6407,6 @@
             "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"
             }
@@ -5650,7 +6427,6 @@
             "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==",
-            "dev": true,
             "engines": {
                 "node": ">= 0.4"
             },
@@ -5662,7 +6438,6 @@
             "version": "1.0.3",
             "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
             "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
-            "dev": true,
             "engines": {
                 "node": ">= 0.4"
             },
@@ -5690,6 +6465,52 @@
             "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
             "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ=="
         },
+        "node_modules/hast-util-parse-selector": {
+            "version": "2.2.5",
+            "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz",
+            "integrity": "sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==",
+            "funding": {
+                "type": "opencollective",
+                "url": "https://opencollective.com/unified"
+            }
+        },
+        "node_modules/hastscript": {
+            "version": "6.0.0",
+            "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-6.0.0.tgz",
+            "integrity": "sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==",
+            "dependencies": {
+                "@types/hast": "^2.0.0",
+                "comma-separated-tokens": "^1.0.0",
+                "hast-util-parse-selector": "^2.0.0",
+                "property-information": "^5.0.0",
+                "space-separated-tokens": "^1.0.0"
+            },
+            "funding": {
+                "type": "opencollective",
+                "url": "https://opencollective.com/unified"
+            }
+        },
+        "node_modules/highlight.js": {
+            "version": "10.7.3",
+            "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz",
+            "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==",
+            "engines": {
+                "node": "*"
+            }
+        },
+        "node_modules/hoist-non-react-statics": {
+            "version": "3.3.2",
+            "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
+            "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
+            "dependencies": {
+                "react-is": "^16.7.0"
+            }
+        },
+        "node_modules/hoist-non-react-statics/node_modules/react-is": {
+            "version": "16.13.1",
+            "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
+            "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
+        },
         "node_modules/html-encoding-sniffer": {
             "version": "3.0.0",
             "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz",
@@ -5755,6 +6576,25 @@
                 "node": ">=0.10.0"
             }
         },
+        "node_modules/ieee754": {
+            "version": "1.2.1",
+            "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
+            "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+            "funding": [
+                {
+                    "type": "github",
+                    "url": "https://github.com/sponsors/feross"
+                },
+                {
+                    "type": "patreon",
+                    "url": "https://www.patreon.com/feross"
+                },
+                {
+                    "type": "consulting",
+                    "url": "https://feross.org/support"
+                }
+            ]
+        },
         "node_modules/ignore": {
             "version": "5.2.4",
             "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
@@ -5764,6 +6604,14 @@
                 "node": ">= 4"
             }
         },
+        "node_modules/immutable": {
+            "version": "3.8.2",
+            "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz",
+            "integrity": "sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
         "node_modules/import-fresh": {
             "version": "3.3.0",
             "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
@@ -5831,6 +6679,12 @@
             "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
             "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
         },
+        "node_modules/ini": {
+            "version": "1.3.8",
+            "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+            "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
+            "optional": true
+        },
         "node_modules/internal-slot": {
             "version": "1.0.5",
             "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz",
@@ -5853,6 +6707,28 @@
                 "loose-envify": "^1.0.0"
             }
         },
+        "node_modules/is-alphabetical": {
+            "version": "1.0.4",
+            "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz",
+            "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==",
+            "funding": {
+                "type": "github",
+                "url": "https://github.com/sponsors/wooorm"
+            }
+        },
+        "node_modules/is-alphanumerical": {
+            "version": "1.0.4",
+            "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz",
+            "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==",
+            "dependencies": {
+                "is-alphabetical": "^1.0.0",
+                "is-decimal": "^1.0.0"
+            },
+            "funding": {
+                "type": "github",
+                "url": "https://github.com/sponsors/wooorm"
+            }
+        },
         "node_modules/is-arguments": {
             "version": "1.1.1",
             "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
@@ -5966,6 +6842,15 @@
                 "url": "https://github.com/sponsors/ljharb"
             }
         },
+        "node_modules/is-decimal": {
+            "version": "1.0.4",
+            "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz",
+            "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==",
+            "funding": {
+                "type": "github",
+                "url": "https://github.com/sponsors/wooorm"
+            }
+        },
         "node_modules/is-docker": {
             "version": "3.0.0",
             "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz",
@@ -6017,6 +6902,15 @@
                 "node": ">=0.10.0"
             }
         },
+        "node_modules/is-hexadecimal": {
+            "version": "1.0.4",
+            "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz",
+            "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==",
+            "funding": {
+                "type": "github",
+                "url": "https://github.com/sponsors/wooorm"
+            }
+        },
         "node_modules/is-inside-container": {
             "version": "1.0.0",
             "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz",
@@ -6088,6 +6982,14 @@
                 "node": ">=8"
             }
         },
+        "node_modules/is-plain-object": {
+            "version": "5.0.0",
+            "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
+            "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
         "node_modules/is-potential-custom-element-name": {
             "version": "1.0.1",
             "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz",
@@ -6230,7 +7132,6 @@
             "version": "2.2.0",
             "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
             "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
-            "dev": true,
             "dependencies": {
                 "is-docker": "^2.0.0"
             },
@@ -6242,7 +7143,6 @@
             "version": "2.2.1",
             "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
             "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
-            "dev": true,
             "bin": {
                 "is-docker": "cli.js"
             },
@@ -6256,14 +7156,12 @@
         "node_modules/isarray": {
             "version": "2.0.5",
             "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
-            "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
-            "dev": true
+            "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="
         },
         "node_modules/isexe": {
             "version": "2.0.0",
             "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
-            "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
-            "dev": true
+            "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
         },
         "node_modules/istanbul-lib-coverage": {
             "version": "3.2.0",
@@ -7442,6 +8340,11 @@
                 "url": "https://github.com/sponsors/panva"
             }
         },
+        "node_modules/js-file-download": {
+            "version": "0.4.12",
+            "resolved": "https://registry.npmjs.org/js-file-download/-/js-file-download-0.4.12.tgz",
+            "integrity": "sha512-rML+NkoD08p5Dllpjo0ffy4jRHeY6Zsapvr/W86N7E0yuzAO6qa5X9+xog6zQNlH102J7IXljNY2FtS6Lj3ucg=="
+        },
         "node_modules/js-tokens": {
             "version": "4.0.0",
             "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
@@ -7451,7 +8354,6 @@
             "version": "4.1.0",
             "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
             "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
-            "dev": true,
             "dependencies": {
                 "argparse": "^2.0.1"
             },
@@ -7546,6 +8448,25 @@
                 "node": ">=6"
             }
         },
+        "node_modules/jsonfile": {
+            "version": "6.1.0",
+            "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+            "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+            "dependencies": {
+                "universalify": "^2.0.0"
+            },
+            "optionalDependencies": {
+                "graceful-fs": "^4.1.6"
+            }
+        },
+        "node_modules/jsonfile/node_modules/universalify": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+            "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+            "engines": {
+                "node": ">= 10.0.0"
+            }
+        },
         "node_modules/jsx-ast-utils": {
             "version": "3.3.4",
             "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.4.tgz",
@@ -7561,6 +8482,14 @@
                 "node": ">=4.0"
             }
         },
+        "node_modules/klaw-sync": {
+            "version": "6.0.0",
+            "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz",
+            "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==",
+            "dependencies": {
+                "graceful-fs": "^4.1.11"
+            }
+        },
         "node_modules/kleur": {
             "version": "3.0.3",
             "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
@@ -7638,8 +8567,22 @@
         "node_modules/lodash": {
             "version": "4.17.21",
             "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
-            "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
-            "dev": true
+            "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
+        },
+        "node_modules/lodash.debounce": {
+            "version": "4.0.8",
+            "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
+            "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow=="
+        },
+        "node_modules/lodash.get": {
+            "version": "4.4.2",
+            "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
+            "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ=="
+        },
+        "node_modules/lodash.isequal": {
+            "version": "4.5.0",
+            "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
+            "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ=="
         },
         "node_modules/lodash.merge": {
             "version": "4.6.2",
@@ -7647,6 +8590,11 @@
             "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
             "dev": true
         },
+        "node_modules/lodash.mergewith": {
+            "version": "4.6.2",
+            "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz",
+            "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ=="
+        },
         "node_modules/loose-envify": {
             "version": "1.4.0",
             "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
@@ -7658,6 +8606,19 @@
                 "loose-envify": "cli.js"
             }
         },
+        "node_modules/lowlight": {
+            "version": "1.20.0",
+            "resolved": "https://registry.npmjs.org/lowlight/-/lowlight-1.20.0.tgz",
+            "integrity": "sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw==",
+            "dependencies": {
+                "fault": "^1.0.0",
+                "highlight.js": "~10.7.0"
+            },
+            "funding": {
+                "type": "github",
+                "url": "https://github.com/sponsors/wooorm"
+            }
+        },
         "node_modules/lru-cache": {
             "version": "5.1.1",
             "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
@@ -7737,7 +8698,6 @@
             "version": "1.52.0",
             "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
             "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
-            "dev": true,
             "engines": {
                 "node": ">= 0.6"
             }
@@ -7746,7 +8706,6 @@
             "version": "2.1.35",
             "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
             "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
-            "dev": true,
             "dependencies": {
                 "mime-db": "1.52.0"
             },
@@ -7763,6 +8722,18 @@
                 "node": ">=6"
             }
         },
+        "node_modules/mimic-response": {
+            "version": "3.1.0",
+            "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
+            "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
+            "optional": true,
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
+            }
+        },
         "node_modules/min-indent": {
             "version": "1.0.1",
             "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz",
@@ -7772,6 +8743,17 @@
                 "node": ">=4"
             }
         },
+        "node_modules/minim": {
+            "version": "0.23.8",
+            "resolved": "https://registry.npmjs.org/minim/-/minim-0.23.8.tgz",
+            "integrity": "sha512-bjdr2xW1dBCMsMGGsUeqM4eFI60m94+szhxWys+B1ztIt6gWSfeGBdSVCIawezeHYLYn0j6zrsXdQS/JllBzww==",
+            "dependencies": {
+                "lodash": "^4.15.0"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
         "node_modules/minimatch": {
             "version": "3.1.2",
             "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
@@ -7787,7 +8769,6 @@
             "version": "1.2.8",
             "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
             "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
-            "dev": true,
             "funding": {
                 "url": "https://github.com/sponsors/ljharb"
             }
@@ -7839,6 +8820,12 @@
                 "node": ">=10"
             }
         },
+        "node_modules/mkdirp-classic": {
+            "version": "0.5.3",
+            "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
+            "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==",
+            "optional": true
+        },
         "node_modules/ms": {
             "version": "2.1.2",
             "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
@@ -7854,6 +8841,12 @@
                 "thenify-all": "^1.0.0"
             }
         },
+        "node_modules/nan": {
+            "version": "2.17.0",
+            "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz",
+            "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==",
+            "optional": true
+        },
         "node_modules/nanoid": {
             "version": "3.3.6",
             "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
@@ -7871,6 +8864,12 @@
                 "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
             }
         },
+        "node_modules/napi-build-utils": {
+            "version": "1.0.2",
+            "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz",
+            "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==",
+            "optional": true
+        },
         "node_modules/natural-compare": {
             "version": "1.4.0",
             "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
@@ -7954,6 +8953,26 @@
                 }
             }
         },
+        "node_modules/next-swagger-doc": {
+            "version": "0.4.0",
+            "resolved": "https://registry.npmjs.org/next-swagger-doc/-/next-swagger-doc-0.4.0.tgz",
+            "integrity": "sha512-5Wt19Av4tOHVdXPJ7xTVvDJuiWuP5OYnY13BSq5SIjMtktFfhX4/9yZyaMCXImbUECu26PALn9CpRQRplIXJ3w==",
+            "dependencies": {
+                "@types/swagger-jsdoc": "6.0.1",
+                "cleye": "1.3.2",
+                "isarray": "2.0.5",
+                "swagger-jsdoc": "6.2.8"
+            },
+            "bin": {
+                "next-swagger-doc-cli": "dist/cli.js"
+            },
+            "engines": {
+                "node": ">=12"
+            },
+            "peerDependencies": {
+                "next": ">=9"
+            }
+        },
         "node_modules/next-themes": {
             "version": "0.2.1",
             "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.2.1.tgz",
@@ -7987,15 +9006,45 @@
                 "node": "^10 || ^12 || >=14"
             }
         },
+        "node_modules/node-abi": {
+            "version": "3.45.0",
+            "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.45.0.tgz",
+            "integrity": "sha512-iwXuFrMAcFVi/ZoZiqq8BzAdsLw9kxDfTC0HMyjXfSL/6CSDAGD5UmR7azrAgWV1zKYq7dUUMj4owusBWKLsiQ==",
+            "optional": true,
+            "dependencies": {
+                "semver": "^7.3.5"
+            },
+            "engines": {
+                "node": ">=10"
+            }
+        },
         "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-domexception": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz",
+            "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==",
+            "funding": [
+                {
+                    "type": "github",
+                    "url": "https://github.com/sponsors/jimmywarting"
+                },
+                {
+                    "type": "github",
+                    "url": "https://paypal.me/jimmywarting"
+                }
+            ],
+            "engines": {
+                "node": ">=10.5.0"
+            }
+        },
         "node_modules/node-fetch": {
-            "version": "2.6.11",
-            "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.11.tgz",
-            "integrity": "sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==",
+            "version": "2.6.12",
+            "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz",
+            "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==",
             "dependencies": {
                 "whatwg-url": "^5.0.0"
             },
@@ -8150,7 +9199,6 @@
             "version": "1.12.3",
             "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
             "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==",
-            "dev": true,
             "funding": {
                 "url": "https://github.com/sponsors/ljharb"
             }
@@ -8308,6 +9356,12 @@
                 "url": "https://github.com/sponsors/sindresorhus"
             }
         },
+        "node_modules/openapi-types": {
+            "version": "12.1.3",
+            "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-12.1.3.tgz",
+            "integrity": "sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==",
+            "peer": true
+        },
         "node_modules/openid-client": {
             "version": "5.4.2",
             "resolved": "https://registry.npmjs.org/openid-client/-/openid-client-5.4.2.tgz",
@@ -8355,6 +9409,14 @@
                 "node": ">= 0.8.0"
             }
         },
+        "node_modules/os-tmpdir": {
+            "version": "1.0.2",
+            "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+            "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
         "node_modules/p-limit": {
             "version": "3.1.0",
             "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
@@ -8406,6 +9468,23 @@
                 "node": ">=6"
             }
         },
+        "node_modules/parse-entities": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz",
+            "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==",
+            "dependencies": {
+                "character-entities": "^1.0.0",
+                "character-entities-legacy": "^1.0.0",
+                "character-reference-invalid": "^1.0.0",
+                "is-alphanumerical": "^1.0.0",
+                "is-decimal": "^1.0.0",
+                "is-hexadecimal": "^1.0.0"
+            },
+            "funding": {
+                "type": "github",
+                "url": "https://github.com/sponsors/wooorm"
+            }
+        },
         "node_modules/parse-json": {
             "version": "5.2.0",
             "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
@@ -8436,11 +9515,102 @@
                 "url": "https://github.com/inikulin/parse5?sponsor=1"
             }
         },
-        "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,
+        "node_modules/patch-package": {
+            "version": "7.0.0",
+            "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-7.0.0.tgz",
+            "integrity": "sha512-eYunHbnnB2ghjTNc5iL1Uo7TsGMuXk0vibX3RFcE/CdVdXzmdbMsG/4K4IgoSuIkLTI5oHrMQk4+NkFqSed0BQ==",
+            "dependencies": {
+                "@yarnpkg/lockfile": "^1.1.0",
+                "chalk": "^4.1.2",
+                "ci-info": "^3.7.0",
+                "cross-spawn": "^7.0.3",
+                "find-yarn-workspace-root": "^2.0.0",
+                "fs-extra": "^9.0.0",
+                "klaw-sync": "^6.0.0",
+                "minimist": "^1.2.6",
+                "open": "^7.4.2",
+                "rimraf": "^2.6.3",
+                "semver": "^5.6.0",
+                "slash": "^2.0.0",
+                "tmp": "^0.0.33",
+                "yaml": "^2.2.2"
+            },
+            "bin": {
+                "patch-package": "index.js"
+            },
+            "engines": {
+                "node": ">=14",
+                "npm": ">5"
+            }
+        },
+        "node_modules/patch-package/node_modules/chalk": {
+            "version": "4.1.2",
+            "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+            "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+            "dependencies": {
+                "ansi-styles": "^4.1.0",
+                "supports-color": "^7.1.0"
+            },
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "url": "https://github.com/chalk/chalk?sponsor=1"
+            }
+        },
+        "node_modules/patch-package/node_modules/is-docker": {
+            "version": "2.2.1",
+            "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
+            "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
+            "bin": {
+                "is-docker": "cli.js"
+            },
+            "engines": {
+                "node": ">=8"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
+            }
+        },
+        "node_modules/patch-package/node_modules/open": {
+            "version": "7.4.2",
+            "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz",
+            "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==",
+            "dependencies": {
+                "is-docker": "^2.0.0",
+                "is-wsl": "^2.1.1"
+            },
+            "engines": {
+                "node": ">=8"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
+            }
+        },
+        "node_modules/patch-package/node_modules/rimraf": {
+            "version": "2.7.1",
+            "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+            "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+            "dependencies": {
+                "glob": "^7.1.3"
+            },
+            "bin": {
+                "rimraf": "bin.js"
+            }
+        },
+        "node_modules/patch-package/node_modules/slash": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
+            "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "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"
             }
@@ -8457,7 +9627,6 @@
             "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"
             }
@@ -8721,6 +9890,32 @@
             "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-3.8.0.tgz",
             "integrity": "sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew=="
         },
+        "node_modules/prebuild-install": {
+            "version": "7.1.1",
+            "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz",
+            "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==",
+            "optional": true,
+            "dependencies": {
+                "detect-libc": "^2.0.0",
+                "expand-template": "^2.0.3",
+                "github-from-package": "0.0.0",
+                "minimist": "^1.2.3",
+                "mkdirp-classic": "^0.5.3",
+                "napi-build-utils": "^1.0.1",
+                "node-abi": "^3.3.0",
+                "pump": "^3.0.0",
+                "rc": "^1.2.7",
+                "simple-get": "^4.0.0",
+                "tar-fs": "^2.0.0",
+                "tunnel-agent": "^0.6.0"
+            },
+            "bin": {
+                "prebuild-install": "bin.js"
+            },
+            "engines": {
+                "node": ">=10"
+            }
+        },
         "node_modules/prelude-ls": {
             "version": "1.2.1",
             "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
@@ -8773,6 +9968,22 @@
                 "node": ">=14.17"
             }
         },
+        "node_modules/prismjs": {
+            "version": "1.29.0",
+            "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz",
+            "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==",
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/process": {
+            "version": "0.11.10",
+            "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+            "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
+            "engines": {
+                "node": ">= 0.6.0"
+            }
+        },
         "node_modules/prompts": {
             "version": "2.4.2",
             "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
@@ -8801,12 +10012,39 @@
             "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
             "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
         },
+        "node_modules/property-information": {
+            "version": "5.6.0",
+            "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz",
+            "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==",
+            "dependencies": {
+                "xtend": "^4.0.0"
+            },
+            "funding": {
+                "type": "github",
+                "url": "https://github.com/sponsors/wooorm"
+            }
+        },
+        "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/psl": {
             "version": "1.9.0",
             "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
             "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==",
             "dev": true
         },
+        "node_modules/pump": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+            "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+            "optional": true,
+            "dependencies": {
+                "end-of-stream": "^1.1.0",
+                "once": "^1.3.1"
+            }
+        },
         "node_modules/punycode": {
             "version": "2.3.0",
             "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
@@ -8832,11 +10070,24 @@
                 }
             ]
         },
+        "node_modules/qs": {
+            "version": "6.11.2",
+            "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz",
+            "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==",
+            "dependencies": {
+                "side-channel": "^1.0.4"
+            },
+            "engines": {
+                "node": ">=0.6"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
+        },
         "node_modules/querystringify": {
             "version": "2.2.0",
             "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
-            "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
-            "dev": true
+            "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ=="
         },
         "node_modules/queue-microtask": {
             "version": "1.2.3",
@@ -8857,6 +10108,74 @@
                 }
             ]
         },
+        "node_modules/ramda": {
+            "version": "0.29.0",
+            "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.29.0.tgz",
+            "integrity": "sha512-BBea6L67bYLtdbOqfp8f58fPMqEwx0doL+pAi8TZyp2YWz8R9G8z9x75CZI8W+ftqhFHCpEX2cRnUUXK130iKA==",
+            "funding": {
+                "type": "opencollective",
+                "url": "https://opencollective.com/ramda"
+            }
+        },
+        "node_modules/ramda-adjunct": {
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/ramda-adjunct/-/ramda-adjunct-4.0.0.tgz",
+            "integrity": "sha512-W/NiJAlZdwZ/iUkWEQQgRdH5Szqqet1WoVH9cdqDVjFbVaZHuJfJRvsxqHhvq6tZse+yVbFatLDLdVa30wBlGQ==",
+            "engines": {
+                "node": ">=0.10.3"
+            },
+            "funding": {
+                "type": "opencollective",
+                "url": "https://opencollective.com/ramda-adjunct"
+            },
+            "peerDependencies": {
+                "ramda": ">= 0.29.0"
+            }
+        },
+        "node_modules/randexp": {
+            "version": "0.5.3",
+            "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.5.3.tgz",
+            "integrity": "sha512-U+5l2KrcMNOUPYvazA3h5ekF80FHTUG+87SEAmHZmolh1M+i/WyTCxVzmi+tidIa1tM4BSe8g2Y/D3loWDjj+w==",
+            "dependencies": {
+                "drange": "^1.0.2",
+                "ret": "^0.2.0"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/randombytes": {
+            "version": "2.1.0",
+            "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
+            "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
+            "dependencies": {
+                "safe-buffer": "^5.1.0"
+            }
+        },
+        "node_modules/rc": {
+            "version": "1.2.8",
+            "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
+            "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
+            "optional": true,
+            "dependencies": {
+                "deep-extend": "^0.6.0",
+                "ini": "~1.3.0",
+                "minimist": "^1.2.0",
+                "strip-json-comments": "~2.0.1"
+            },
+            "bin": {
+                "rc": "cli.js"
+            }
+        },
+        "node_modules/rc/node_modules/strip-json-comments": {
+            "version": "2.0.1",
+            "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+            "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
+            "optional": true,
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
         "node_modules/react": {
             "version": "18.2.0",
             "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
@@ -8868,6 +10187,30 @@
                 "node": ">=0.10.0"
             }
         },
+        "node_modules/react-copy-to-clipboard": {
+            "version": "5.1.0",
+            "resolved": "https://registry.npmjs.org/react-copy-to-clipboard/-/react-copy-to-clipboard-5.1.0.tgz",
+            "integrity": "sha512-k61RsNgAayIJNoy9yDsYzDe/yAZAzEbEgcz3DZMhF686LEyukcE1hzurxe85JandPUG+yTfGVFzuEw3xt8WP/A==",
+            "dependencies": {
+                "copy-to-clipboard": "^3.3.1",
+                "prop-types": "^15.8.1"
+            },
+            "peerDependencies": {
+                "react": "^15.3.0 || 16 || 17 || 18"
+            }
+        },
+        "node_modules/react-debounce-input": {
+            "version": "3.3.0",
+            "resolved": "https://registry.npmjs.org/react-debounce-input/-/react-debounce-input-3.3.0.tgz",
+            "integrity": "sha512-VEqkvs8JvY/IIZvh71Z0TC+mdbxERvYF33RcebnodlsUZ8RSgyKe2VWaHXv4+/8aoOgXLxWrdsYs2hDhcwbUgA==",
+            "dependencies": {
+                "lodash.debounce": "^4",
+                "prop-types": "^15.8.1"
+            },
+            "peerDependencies": {
+                "react": "^15.3.0 || 16 || 17 || 18"
+            }
+        },
         "node_modules/react-dom": {
             "version": "18.2.0",
             "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
@@ -8911,6 +10254,27 @@
                 "react": "^16.8.0 || ^17 || ^18"
             }
         },
+        "node_modules/react-immutable-proptypes": {
+            "version": "2.2.0",
+            "resolved": "https://registry.npmjs.org/react-immutable-proptypes/-/react-immutable-proptypes-2.2.0.tgz",
+            "integrity": "sha512-Vf4gBsePlwdGvSZoLSBfd4HAP93HDauMY4fDjXhreg/vg6F3Fj/MXDNyTbltPC/xZKmZc+cjLu3598DdYK6sgQ==",
+            "dependencies": {
+                "invariant": "^2.2.2"
+            },
+            "peerDependencies": {
+                "immutable": ">=3.6.2"
+            }
+        },
+        "node_modules/react-immutable-pure-component": {
+            "version": "2.2.2",
+            "resolved": "https://registry.npmjs.org/react-immutable-pure-component/-/react-immutable-pure-component-2.2.2.tgz",
+            "integrity": "sha512-vkgoMJUDqHZfXXnjVlG3keCxSO/U6WeDQ5/Sl0GK2cH8TOxEzQ5jXqDXHEL/jqk6fsNxV05oH5kD7VNMUE2k+A==",
+            "peerDependencies": {
+                "immutable": ">= 2 || >= 4.0.0-rc",
+                "react": ">= 16.6",
+                "react-dom": ">= 16.6"
+            }
+        },
         "node_modules/react-infinite-scroll-component": {
             "version": "6.1.0",
             "resolved": "https://registry.npmjs.org/react-infinite-scroll-component/-/react-infinite-scroll-component-6.1.0.tgz",
@@ -8922,6 +10286,14 @@
                 "react": ">=16.0.0"
             }
         },
+        "node_modules/react-inspector": {
+            "version": "6.0.2",
+            "resolved": "https://registry.npmjs.org/react-inspector/-/react-inspector-6.0.2.tgz",
+            "integrity": "sha512-x+b7LxhmHXjHoU/VrFAzw5iutsILRoYyDq97EDYdFpPLcvqtEzk4ZSZSQjnFPbr5T57tLXnHcqFYoN1pI6u8uQ==",
+            "peerDependencies": {
+                "react": "^16.8.4 || ^17.0.0 || ^18.0.0"
+            }
+        },
         "node_modules/react-intersection-observer": {
             "version": "9.5.2",
             "resolved": "https://registry.npmjs.org/react-intersection-observer/-/react-intersection-observer-9.5.2.tgz",
@@ -8936,6 +10308,49 @@
             "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
             "dev": true
         },
+        "node_modules/react-redux": {
+            "version": "8.1.1",
+            "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.1.1.tgz",
+            "integrity": "sha512-5W0QaKtEhj+3bC0Nj0NkqkhIv8gLADH/2kYFMTHxCVqQILiWzLv6MaLuV5wJU3BQEdHKzTfcvPN0WMS6SC1oyA==",
+            "dependencies": {
+                "@babel/runtime": "^7.12.1",
+                "@types/hoist-non-react-statics": "^3.3.1",
+                "@types/use-sync-external-store": "^0.0.3",
+                "hoist-non-react-statics": "^3.3.2",
+                "react-is": "^18.0.0",
+                "use-sync-external-store": "^1.0.0"
+            },
+            "peerDependencies": {
+                "@types/react": "^16.8 || ^17.0 || ^18.0",
+                "@types/react-dom": "^16.8 || ^17.0 || ^18.0",
+                "react": "^16.8 || ^17.0 || ^18.0",
+                "react-dom": "^16.8 || ^17.0 || ^18.0",
+                "react-native": ">=0.59",
+                "redux": "^4 || ^5.0.0-beta.0"
+            },
+            "peerDependenciesMeta": {
+                "@types/react": {
+                    "optional": true
+                },
+                "@types/react-dom": {
+                    "optional": true
+                },
+                "react-dom": {
+                    "optional": true
+                },
+                "react-native": {
+                    "optional": true
+                },
+                "redux": {
+                    "optional": true
+                }
+            }
+        },
+        "node_modules/react-redux/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=="
+        },
         "node_modules/react-remove-scroll": {
             "version": "2.5.5",
             "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz",
@@ -9003,6 +10418,21 @@
                 }
             }
         },
+        "node_modules/react-syntax-highlighter": {
+            "version": "15.5.0",
+            "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-15.5.0.tgz",
+            "integrity": "sha512-+zq2myprEnQmH5yw6Gqc8lD55QHnpKaU8TOcFeC/Lg/MQSs8UknEA0JC4nTZGFAXC2J2Hyj/ijJ7NlabyPi2gg==",
+            "dependencies": {
+                "@babel/runtime": "^7.3.1",
+                "highlight.js": "^10.4.1",
+                "lowlight": "^1.17.0",
+                "prismjs": "^1.27.0",
+                "refractor": "^3.6.0"
+            },
+            "peerDependencies": {
+                "react": ">= 0.14.0"
+            }
+        },
         "node_modules/read-cache": {
             "version": "1.0.0",
             "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
@@ -9048,6 +10478,44 @@
                 "node": ">=8"
             }
         },
+        "node_modules/redux": {
+            "version": "4.2.1",
+            "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz",
+            "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==",
+            "dependencies": {
+                "@babel/runtime": "^7.9.2"
+            }
+        },
+        "node_modules/redux-immutable": {
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/redux-immutable/-/redux-immutable-4.0.0.tgz",
+            "integrity": "sha512-SchSn/DWfGb3oAejd+1hhHx01xUoxY+V7TeK0BKqpkLKiQPVFf7DYzEaKmrEVxsWxielKfSK9/Xq66YyxgR1cg==",
+            "peerDependencies": {
+                "immutable": "^3.8.1 || ^4.0.0-rc.1"
+            }
+        },
+        "node_modules/refractor": {
+            "version": "3.6.0",
+            "resolved": "https://registry.npmjs.org/refractor/-/refractor-3.6.0.tgz",
+            "integrity": "sha512-MY9W41IOWxxk31o+YvFCNyNzdkc9M20NoZK5vq6jkv4I/uh2zkWcfudj0Q1fovjUQJrNewS9NMzeTtqPf+n5EA==",
+            "dependencies": {
+                "hastscript": "^6.0.0",
+                "parse-entities": "^2.0.0",
+                "prismjs": "~1.27.0"
+            },
+            "funding": {
+                "type": "github",
+                "url": "https://github.com/sponsors/wooorm"
+            }
+        },
+        "node_modules/refractor/node_modules/prismjs": {
+            "version": "1.27.0",
+            "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.27.0.tgz",
+            "integrity": "sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==",
+            "engines": {
+                "node": ">=6"
+            }
+        },
         "node_modules/regenerator-runtime": {
             "version": "0.13.11",
             "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
@@ -9070,6 +10538,37 @@
                 "url": "https://github.com/sponsors/ljharb"
             }
         },
+        "node_modules/remarkable": {
+            "version": "2.0.1",
+            "resolved": "https://registry.npmjs.org/remarkable/-/remarkable-2.0.1.tgz",
+            "integrity": "sha512-YJyMcOH5lrR+kZdmB0aJJ4+93bEojRZ1HGDn9Eagu6ibg7aVZhc3OWbbShRid+Q5eAfsEqWxpe+g5W5nYNfNiA==",
+            "dependencies": {
+                "argparse": "^1.0.10",
+                "autolinker": "^3.11.0"
+            },
+            "bin": {
+                "remarkable": "bin/remarkable.js"
+            },
+            "engines": {
+                "node": ">= 6.0.0"
+            }
+        },
+        "node_modules/remarkable/node_modules/argparse": {
+            "version": "1.0.10",
+            "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+            "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+            "dependencies": {
+                "sprintf-js": "~1.0.2"
+            }
+        },
+        "node_modules/repeat-string": {
+            "version": "1.6.1",
+            "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
+            "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==",
+            "engines": {
+                "node": ">=0.10"
+            }
+        },
         "node_modules/require-directory": {
             "version": "2.1.1",
             "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
@@ -9082,8 +10581,12 @@
         "node_modules/requires-port": {
             "version": "1.0.0",
             "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
-            "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
-            "dev": true
+            "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ=="
+        },
+        "node_modules/reselect": {
+            "version": "4.1.8",
+            "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.8.tgz",
+            "integrity": "sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ=="
         },
         "node_modules/resolve": {
             "version": "1.22.2",
@@ -9149,6 +10652,14 @@
                 "node": ">=10"
             }
         },
+        "node_modules/ret": {
+            "version": "0.2.2",
+            "resolved": "https://registry.npmjs.org/ret/-/ret-0.2.2.tgz",
+            "integrity": "sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==",
+            "engines": {
+                "node": ">=4"
+            }
+        },
         "node_modules/reusify": {
             "version": "1.0.4",
             "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
@@ -9298,16 +10809,41 @@
             "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
             "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
         },
+        "node_modules/serialize-error": {
+            "version": "8.1.0",
+            "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-8.1.0.tgz",
+            "integrity": "sha512-3NnuWfM6vBYoy5gZFvHiYsVbafvI9vZv/+jlIigFn4oP4zjNPK3LhcY0xSCgeb1a5L8jO71Mit9LlNoi2UfDDQ==",
+            "dependencies": {
+                "type-fest": "^0.20.2"
+            },
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
+            }
+        },
         "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/sha.js": {
+            "version": "2.4.11",
+            "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
+            "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
+            "dependencies": {
+                "inherits": "^2.0.1",
+                "safe-buffer": "^5.0.1"
+            },
+            "bin": {
+                "sha.js": "bin.js"
+            }
+        },
         "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"
             },
@@ -9319,16 +10855,23 @@
             "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/short-unique-id": {
+            "version": "4.4.4",
+            "resolved": "https://registry.npmjs.org/short-unique-id/-/short-unique-id-4.4.4.tgz",
+            "integrity": "sha512-oLF1NCmtbiTWl2SqdXZQbo5KM1b7axdp0RgQLq8qCBBLoq+o3A5wmLrNM6bZIh54/a8BJ3l69kTXuxwZ+XCYuw==",
+            "bin": {
+                "short-unique-id": "bin/short-unique-id",
+                "suid": "bin/short-unique-id"
+            }
+        },
         "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==",
-            "dev": true,
             "dependencies": {
                 "call-bind": "^1.0.0",
                 "get-intrinsic": "^1.0.2",
@@ -9343,6 +10886,51 @@
             "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
             "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
         },
+        "node_modules/simple-concat": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
+            "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==",
+            "funding": [
+                {
+                    "type": "github",
+                    "url": "https://github.com/sponsors/feross"
+                },
+                {
+                    "type": "patreon",
+                    "url": "https://www.patreon.com/feross"
+                },
+                {
+                    "type": "consulting",
+                    "url": "https://feross.org/support"
+                }
+            ],
+            "optional": true
+        },
+        "node_modules/simple-get": {
+            "version": "4.0.1",
+            "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz",
+            "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==",
+            "funding": [
+                {
+                    "type": "github",
+                    "url": "https://github.com/sponsors/feross"
+                },
+                {
+                    "type": "patreon",
+                    "url": "https://www.patreon.com/feross"
+                },
+                {
+                    "type": "consulting",
+                    "url": "https://feross.org/support"
+                }
+            ],
+            "optional": true,
+            "dependencies": {
+                "decompress-response": "^6.0.0",
+                "once": "^1.3.1",
+                "simple-concat": "^1.0.0"
+            }
+        },
         "node_modules/sisteransi": {
             "version": "1.0.5",
             "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
@@ -9385,11 +10973,19 @@
                 "source-map": "^0.6.0"
             }
         },
+        "node_modules/space-separated-tokens": {
+            "version": "1.1.5",
+            "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz",
+            "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==",
+            "funding": {
+                "type": "github",
+                "url": "https://github.com/sponsors/wooorm"
+            }
+        },
         "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
+            "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="
         },
         "node_modules/stack-utils": {
             "version": "2.0.6",
@@ -9412,6 +11008,11 @@
                 "node": ">=8"
             }
         },
+        "node_modules/stampit": {
+            "version": "4.3.2",
+            "resolved": "https://registry.npmjs.org/stampit/-/stampit-4.3.2.tgz",
+            "integrity": "sha512-pE2org1+ZWQBnIxRPrBM2gVupkuDD0TTNIo1H6GdT/vO82NXli2z8lRE8cu/nBIHrcOCXFBAHpb9ZldrB2/qOA=="
+        },
         "node_modules/stop-iteration-iterator": {
             "version": "1.0.0",
             "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz",
@@ -9654,7 +11255,6 @@
             "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"
             },
@@ -9673,6 +11273,140 @@
                 "url": "https://github.com/sponsors/ljharb"
             }
         },
+        "node_modules/swagger-client": {
+            "version": "3.19.10",
+            "resolved": "https://registry.npmjs.org/swagger-client/-/swagger-client-3.19.10.tgz",
+            "integrity": "sha512-r+uGryGdxYQf7Aa9WzK226RigDaWAutDqP903O1QFA47jnJZ5RCkaV3X8nadXkNoZRlsZv8sEKOB8UoDY99BBA==",
+            "dependencies": {
+                "@babel/runtime-corejs3": "^7.20.13",
+                "@swagger-api/apidom-core": ">=0.70.1 <1.0.0",
+                "@swagger-api/apidom-json-pointer": ">=0.70.1 <1.0.0",
+                "@swagger-api/apidom-ns-openapi-3-1": ">=0.70.2 <1.0.0",
+                "@swagger-api/apidom-reference": ">=0.70.2 <1.0.0",
+                "cookie": "~0.5.0",
+                "cross-fetch": "^3.1.5",
+                "deepmerge": "~4.3.0",
+                "fast-json-patch": "^3.0.0-1",
+                "form-data-encoder": "^1.4.3",
+                "formdata-node": "^4.0.0",
+                "is-plain-object": "^5.0.0",
+                "js-yaml": "^4.1.0",
+                "lodash": "^4.17.21",
+                "qs": "^6.10.2",
+                "traverse": "~0.6.6",
+                "url": "~0.11.0"
+            }
+        },
+        "node_modules/swagger-jsdoc": {
+            "version": "6.2.8",
+            "resolved": "https://registry.npmjs.org/swagger-jsdoc/-/swagger-jsdoc-6.2.8.tgz",
+            "integrity": "sha512-VPvil1+JRpmJ55CgAtn8DIcpBs0bL5L3q5bVQvF4tAW/k/9JYSj7dCpaYCAv5rufe0vcCbBRQXGvzpkWjvLklQ==",
+            "dependencies": {
+                "commander": "6.2.0",
+                "doctrine": "3.0.0",
+                "glob": "7.1.6",
+                "lodash.mergewith": "^4.6.2",
+                "swagger-parser": "^10.0.3",
+                "yaml": "2.0.0-1"
+            },
+            "bin": {
+                "swagger-jsdoc": "bin/swagger-jsdoc.js"
+            },
+            "engines": {
+                "node": ">=12.0.0"
+            }
+        },
+        "node_modules/swagger-jsdoc/node_modules/commander": {
+            "version": "6.2.0",
+            "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.0.tgz",
+            "integrity": "sha512-zP4jEKbe8SHzKJYQmq8Y9gYjtO/POJLgIdKgV7B9qNmABVFVc+ctqSX6iXh4mCpJfRBOabiZ2YKPg8ciDw6C+Q==",
+            "engines": {
+                "node": ">= 6"
+            }
+        },
+        "node_modules/swagger-jsdoc/node_modules/glob": {
+            "version": "7.1.6",
+            "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
+            "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
+            "dependencies": {
+                "fs.realpath": "^1.0.0",
+                "inflight": "^1.0.4",
+                "inherits": "2",
+                "minimatch": "^3.0.4",
+                "once": "^1.3.0",
+                "path-is-absolute": "^1.0.0"
+            },
+            "engines": {
+                "node": "*"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/isaacs"
+            }
+        },
+        "node_modules/swagger-jsdoc/node_modules/yaml": {
+            "version": "2.0.0-1",
+            "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.0.0-1.tgz",
+            "integrity": "sha512-W7h5dEhywMKenDJh2iX/LABkbFnBxasD27oyXWDS/feDsxiw0dD5ncXdYXgkvAsXIY2MpW/ZKkr9IU30DBdMNQ==",
+            "engines": {
+                "node": ">= 6"
+            }
+        },
+        "node_modules/swagger-parser": {
+            "version": "10.0.3",
+            "resolved": "https://registry.npmjs.org/swagger-parser/-/swagger-parser-10.0.3.tgz",
+            "integrity": "sha512-nF7oMeL4KypldrQhac8RyHerJeGPD1p2xDh900GPvc+Nk7nWP6jX2FcC7WmkinMoAmoO774+AFXcWsW8gMWEIg==",
+            "dependencies": {
+                "@apidevtools/swagger-parser": "10.0.3"
+            },
+            "engines": {
+                "node": ">=10"
+            }
+        },
+        "node_modules/swagger-ui-react": {
+            "version": "5.1.0",
+            "resolved": "https://registry.npmjs.org/swagger-ui-react/-/swagger-ui-react-5.1.0.tgz",
+            "integrity": "sha512-ivbw72f6mUZ431H4OC3cMhJy+ONBlmQ81TNAt7DKkUCW6nG+GboHCpLF1SXPCstzUskbAuZq0hOk3BuKb20pSA==",
+            "dependencies": {
+                "@babel/runtime-corejs3": "^7.22.5",
+                "@braintree/sanitize-url": "=6.0.2",
+                "base64-js": "^1.5.1",
+                "classnames": "^2.3.1",
+                "css.escape": "1.5.1",
+                "deep-extend": "0.6.0",
+                "dompurify": "=3.0.3",
+                "ieee754": "^1.2.1",
+                "immutable": "^3.x.x",
+                "js-file-download": "^0.4.12",
+                "js-yaml": "=4.1.0",
+                "lodash": "^4.17.21",
+                "patch-package": "^7.0.0",
+                "prop-types": "^15.8.1",
+                "randexp": "^0.5.3",
+                "randombytes": "^2.1.0",
+                "react-copy-to-clipboard": "5.1.0",
+                "react-debounce-input": "=3.3.0",
+                "react-immutable-proptypes": "2.2.0",
+                "react-immutable-pure-component": "^2.2.0",
+                "react-inspector": "^6.0.1",
+                "react-redux": "^8.0.5",
+                "react-syntax-highlighter": "^15.5.0",
+                "redux": "^4.1.2",
+                "redux-immutable": "^4.0.0",
+                "remarkable": "^2.0.1",
+                "reselect": "^4.1.8",
+                "serialize-error": "^8.1.0",
+                "sha.js": "^2.4.11",
+                "swagger-client": "^3.19.10",
+                "url-parse": "^1.5.10",
+                "xml": "=1.0.1",
+                "xml-but-prettier": "^1.0.1",
+                "zenscroll": "^4.0.2"
+            },
+            "peerDependencies": {
+                "react": ">=17.0.0",
+                "react-dom": ">=17.0.0"
+            }
+        },
         "node_modules/symbol-tree": {
             "version": "3.2.4",
             "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
@@ -9782,11 +11516,53 @@
                 "node": ">=10"
             }
         },
+        "node_modules/tar-fs": {
+            "version": "2.1.1",
+            "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz",
+            "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==",
+            "optional": true,
+            "dependencies": {
+                "chownr": "^1.1.1",
+                "mkdirp-classic": "^0.5.2",
+                "pump": "^3.0.0",
+                "tar-stream": "^2.1.4"
+            }
+        },
+        "node_modules/tar-fs/node_modules/chownr": {
+            "version": "1.1.4",
+            "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
+            "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
+            "optional": true
+        },
+        "node_modules/tar-stream": {
+            "version": "2.2.0",
+            "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
+            "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
+            "optional": true,
+            "dependencies": {
+                "bl": "^4.0.3",
+                "end-of-stream": "^1.4.1",
+                "fs-constants": "^1.0.0",
+                "inherits": "^2.0.3",
+                "readable-stream": "^3.1.1"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
         "node_modules/tar/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/terminal-columns": {
+            "version": "1.4.1",
+            "resolved": "https://registry.npmjs.org/terminal-columns/-/terminal-columns-1.4.1.tgz",
+            "integrity": "sha512-IKVL/itiMy947XWVv4IHV7a0KQXvKjj4ptbi7Ew9MPMcOLzkiQeyx3Gyvh62hKrfJ0RZc4M1nbhzjNM39Kyujw==",
+            "funding": {
+                "url": "https://github.com/privatenumber/terminal-columns?sponsor=1"
+            }
+        },
         "node_modules/test-exclude": {
             "version": "6.0.0",
             "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz",
@@ -9846,6 +11622,17 @@
                 "url": "https://github.com/sponsors/sindresorhus"
             }
         },
+        "node_modules/tmp": {
+            "version": "0.0.33",
+            "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
+            "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
+            "dependencies": {
+                "os-tmpdir": "~1.0.2"
+            },
+            "engines": {
+                "node": ">=0.6.0"
+            }
+        },
         "node_modules/tmpl": {
             "version": "1.0.5",
             "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",
@@ -9872,6 +11659,11 @@
                 "node": ">=8.0"
             }
         },
+        "node_modules/toggle-selection": {
+            "version": "1.0.6",
+            "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz",
+            "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ=="
+        },
         "node_modules/tough-cookie": {
             "version": "4.1.3",
             "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz",
@@ -9899,11 +11691,55 @@
                 "node": ">=12"
             }
         },
+        "node_modules/traverse": {
+            "version": "0.6.7",
+            "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.7.tgz",
+            "integrity": "sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg==",
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
+        },
+        "node_modules/tree-sitter": {
+            "version": "0.20.4",
+            "resolved": "https://registry.npmjs.org/tree-sitter/-/tree-sitter-0.20.4.tgz",
+            "integrity": "sha512-rjfR5dc4knG3jnJNN/giJ9WOoN1zL/kZyrS0ILh+eqq8RNcIbiXA63JsMEgluug0aNvfQvK4BfCErN1vIzvKog==",
+            "hasInstallScript": true,
+            "optional": true,
+            "dependencies": {
+                "nan": "^2.17.0",
+                "prebuild-install": "^7.1.1"
+            }
+        },
+        "node_modules/tree-sitter-json": {
+            "version": "0.20.0",
+            "resolved": "https://registry.npmjs.org/tree-sitter-json/-/tree-sitter-json-0.20.0.tgz",
+            "integrity": "sha512-PteOLH+Tx6Bz4ZA/d40/DbkiSXXRM/gKahhHI8hQ1lWNfFvdknnz9k3Mz84ol5srRyLboJ8wp8GSkhZ6ht9EGQ==",
+            "hasInstallScript": true,
+            "optional": true,
+            "dependencies": {
+                "nan": "^2.14.1"
+            }
+        },
+        "node_modules/tree-sitter-yaml": {
+            "version": "0.5.0",
+            "resolved": "https://registry.npmjs.org/tree-sitter-yaml/-/tree-sitter-yaml-0.5.0.tgz",
+            "integrity": "sha512-POJ4ZNXXSWIG/W4Rjuyg36MkUD4d769YRUGKRqN+sVaj/VCo6Dh6Pkssn1Rtewd5kybx+jT1BWMyWN0CijXnMA==",
+            "hasInstallScript": true,
+            "optional": true,
+            "dependencies": {
+                "nan": "^2.14.0"
+            }
+        },
         "node_modules/ts-interface-checker": {
             "version": "0.1.13",
             "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
             "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA=="
         },
+        "node_modules/ts-toolbelt": {
+            "version": "9.6.0",
+            "resolved": "https://registry.npmjs.org/ts-toolbelt/-/ts-toolbelt-9.6.0.tgz",
+            "integrity": "sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w=="
+        },
         "node_modules/tsconfig-paths": {
             "version": "3.14.2",
             "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz",
@@ -9963,6 +11799,18 @@
             "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
             "dev": true
         },
+        "node_modules/tunnel-agent": {
+            "version": "0.6.0",
+            "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+            "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
+            "optional": true,
+            "dependencies": {
+                "safe-buffer": "^5.0.1"
+            },
+            "engines": {
+                "node": "*"
+            }
+        },
         "node_modules/type-check": {
             "version": "0.4.0",
             "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
@@ -9988,7 +11836,6 @@
             "version": "0.20.2",
             "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
             "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
-            "dev": true,
             "engines": {
                 "node": ">=10"
             },
@@ -9996,6 +11843,14 @@
                 "url": "https://github.com/sponsors/sindresorhus"
             }
         },
+        "node_modules/type-flag": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/type-flag/-/type-flag-3.0.0.tgz",
+            "integrity": "sha512-3YaYwMseXCAhBB14RXW5cRQfJQlEknS6i4C8fCfeUdS3ihG9EdccdR9kt3vP73ZdeTGmPb4bZtkDn5XMIn1DLA==",
+            "funding": {
+                "url": "https://github.com/privatenumber/type-flag?sponsor=1"
+            }
+        },
         "node_modules/typed-array-length": {
             "version": "1.0.4",
             "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz",
@@ -10010,6 +11865,14 @@
                 "url": "https://github.com/sponsors/ljharb"
             }
         },
+        "node_modules/types-ramda": {
+            "version": "0.29.4",
+            "resolved": "https://registry.npmjs.org/types-ramda/-/types-ramda-0.29.4.tgz",
+            "integrity": "sha512-XO/820iRsCDwqLjE8XE+b57cVGPyk1h+U9lBGpDWvbEky+NQChvHVwaKM05WnW1c5z3EVQh8NhXFmh2E/1YazQ==",
+            "dependencies": {
+                "ts-toolbelt": "^9.6.0"
+            }
+        },
         "node_modules/typescript": {
             "version": "5.1.6",
             "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz",
@@ -10046,6 +11909,11 @@
                 "node": ">= 4.0.0"
             }
         },
+        "node_modules/unraw": {
+            "version": "2.0.1",
+            "resolved": "https://registry.npmjs.org/unraw/-/unraw-2.0.1.tgz",
+            "integrity": "sha512-tdOvLfRzHolwYcHS6HIX860MkK9LQ4+oLuNwFYL7bpgTEO64PZrcQxkisgwJYCfF8sKiWLwwu1c83DvMkbefIQ=="
+        },
         "node_modules/untildify": {
             "version": "4.0.0",
             "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz",
@@ -10103,16 +11971,29 @@
                 "punycode": "^2.1.0"
             }
         },
+        "node_modules/url": {
+            "version": "0.11.1",
+            "resolved": "https://registry.npmjs.org/url/-/url-0.11.1.tgz",
+            "integrity": "sha512-rWS3H04/+mzzJkv0eZ7vEDGiQbgquI1fGfOad6zKvgYQi1SzMmhl7c/DdRGxhaWrVH6z0qWITo8rpnxK/RfEhA==",
+            "dependencies": {
+                "punycode": "^1.4.1",
+                "qs": "^6.11.0"
+            }
+        },
         "node_modules/url-parse": {
             "version": "1.5.10",
             "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
             "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
-            "dev": true,
             "dependencies": {
                 "querystringify": "^2.1.1",
                 "requires-port": "^1.0.0"
             }
         },
+        "node_modules/url/node_modules/punycode": {
+            "version": "1.4.1",
+            "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+            "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ=="
+        },
         "node_modules/use-callback-ref": {
             "version": "1.3.0",
             "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.0.tgz",
@@ -10195,6 +12076,14 @@
             "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
             "dev": true
         },
+        "node_modules/validator": {
+            "version": "13.9.0",
+            "resolved": "https://registry.npmjs.org/validator/-/validator-13.9.0.tgz",
+            "integrity": "sha512-B+dGG8U3fdtM0/aNK4/X8CXq/EcxU2WPrPEkJGslb47qyHsxmbggTWK0yEA4qnYVNF+nxNlN88o14hIcPmSIEA==",
+            "engines": {
+                "node": ">= 0.10"
+            }
+        },
         "node_modules/w3c-xmlserializer": {
             "version": "4.0.0",
             "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz",
@@ -10228,6 +12117,20 @@
                 "node": ">=10.13.0"
             }
         },
+        "node_modules/web-streams-polyfill": {
+            "version": "4.0.0-beta.3",
+            "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz",
+            "integrity": "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==",
+            "engines": {
+                "node": ">= 14"
+            }
+        },
+        "node_modules/web-tree-sitter": {
+            "version": "0.20.3",
+            "resolved": "https://registry.npmjs.org/web-tree-sitter/-/web-tree-sitter-0.20.3.tgz",
+            "integrity": "sha512-zKGJW9r23y3BcJusbgvnOH2OYAW40MXAOi9bi3Gcc7T4Gms9WWgXF8m6adsJWpGJEhgOzCrfiz1IzKowJWrtYw==",
+            "optional": true
+        },
         "node_modules/webidl-conversions": {
             "version": "7.0.0",
             "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
@@ -10275,7 +12178,6 @@
             "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"
             },
@@ -10401,6 +12303,19 @@
                 }
             }
         },
+        "node_modules/xml": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz",
+            "integrity": "sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw=="
+        },
+        "node_modules/xml-but-prettier": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/xml-but-prettier/-/xml-but-prettier-1.0.1.tgz",
+            "integrity": "sha512-C2CJaadHrZTqESlH03WOyw0oZTtoy2uEg6dSDF6YRg+9GnYNub53RRemLpnvtbHDFelxMx4LajiFsYeR6XJHgQ==",
+            "dependencies": {
+                "repeat-string": "^1.5.2"
+            }
+        },
         "node_modules/xml-name-validator": {
             "version": "4.0.0",
             "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz",
@@ -10416,6 +12331,14 @@
             "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==",
             "dev": true
         },
+        "node_modules/xtend": {
+            "version": "4.0.2",
+            "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+            "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
+            "engines": {
+                "node": ">=0.4"
+            }
+        },
         "node_modules/y18n": {
             "version": "5.0.8",
             "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
@@ -10478,6 +12401,39 @@
                 "url": "https://github.com/sponsors/sindresorhus"
             }
         },
+        "node_modules/z-schema": {
+            "version": "5.0.5",
+            "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-5.0.5.tgz",
+            "integrity": "sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==",
+            "dependencies": {
+                "lodash.get": "^4.4.2",
+                "lodash.isequal": "^4.5.0",
+                "validator": "^13.7.0"
+            },
+            "bin": {
+                "z-schema": "bin/z-schema"
+            },
+            "engines": {
+                "node": ">=8.0.0"
+            },
+            "optionalDependencies": {
+                "commander": "^9.4.1"
+            }
+        },
+        "node_modules/z-schema/node_modules/commander": {
+            "version": "9.5.0",
+            "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz",
+            "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==",
+            "optional": true,
+            "engines": {
+                "node": "^12.20.0 || >=14"
+            }
+        },
+        "node_modules/zenscroll": {
+            "version": "4.0.2",
+            "resolved": "https://registry.npmjs.org/zenscroll/-/zenscroll-4.0.2.tgz",
+            "integrity": "sha512-jEA1znR7b4C/NnaycInCU6h/d15ZzCd1jmsruqOKnZP6WXQSMH3W2GL+OXbkruslU4h+Tzuos0HdswzRUk/Vgg=="
+        },
         "node_modules/zod": {
             "version": "3.21.4",
             "resolved": "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz",
diff --git a/package.json b/package.json
index ca890177e6a903c8b707709ac43c720700549855..eb931eb3d1e176e824517ba9963cb63459dd2a89 100644
--- a/package.json
+++ b/package.json
@@ -40,6 +40,7 @@
         "lucide-react": "^0.259.0",
         "next": "^13.4.9",
         "next-auth": "^4.22.1",
+        "next-swagger-doc": "^0.4.0",
         "next-themes": "^0.2.1",
         "normalize-diacritics": "^4.0.0",
         "react": "18.2.0",
@@ -48,6 +49,7 @@
         "react-hook-form": "^7.45.1",
         "react-infinite-scroll-component": "^6.1.0",
         "react-intersection-observer": "^9.5.2",
+        "swagger-ui-react": "^5.1.0",
         "tailwind-merge": "^1.13.2",
         "tailwindcss-animate": "^1.0.6",
         "uploadthing": "^5.1.0",
@@ -62,6 +64,7 @@
         "@types/node": "^20.4.0",
         "@types/react": "^18.2.14",
         "@types/react-dom": "^18.2.6",
+        "@types/swagger-ui-react": "^4.18.0",
         "autoprefixer": "10.4.14",
         "eslint": "^8.44.0",
         "eslint-config-next": "^13.4.9",