diff --git a/docsite/.gitignore b/docsite/.gitignore new file mode 100644 index 00000000..b2d6de30 --- /dev/null +++ b/docsite/.gitignore @@ -0,0 +1,20 @@ +# Dependencies +/node_modules + +# Production +/build + +# Generated files +.docusaurus +.cache-loader + +# Misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/docsite/README.md b/docsite/README.md new file mode 100644 index 00000000..aaba2fa1 --- /dev/null +++ b/docsite/README.md @@ -0,0 +1,41 @@ +# Website + +This website is built using [Docusaurus 2](https://docusaurus.io/), a modern static website generator. + +### Installation + +``` +$ yarn +``` + +### Local Development + +``` +$ yarn start +``` + +This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server. + +### Build + +``` +$ yarn build +``` + +This command generates static content into the `build` directory and can be served using any static contents hosting service. + +### Deployment + +Using SSH: + +``` +$ USE_SSH=true yarn deploy +``` + +Not using SSH: + +``` +$ GIT_USER= yarn deploy +``` + +If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch. diff --git a/docsite/babel.config.js b/docsite/babel.config.js new file mode 100644 index 00000000..e00595da --- /dev/null +++ b/docsite/babel.config.js @@ -0,0 +1,3 @@ +module.exports = { + presets: [require.resolve('@docusaurus/core/lib/babel/preset')], +}; diff --git a/docsite/docs/FAQ.md b/docsite/docs/FAQ.md new file mode 100644 index 00000000..d8f354a5 --- /dev/null +++ b/docsite/docs/FAQ.md @@ -0,0 +1,136 @@ +* [Connection Issues](#connection-issues) + * [Plex/Tautulli/Jellyfin don't connect](#plextautullijellyfin-dont-connect) + * [Jellyfin has warnings about undefined or missing data](#jellyfin-has-warnings-about-undefined-or-missing-data) + * [Spotify/Deezer/LastFM won't authenticate](#spotifydeezerlastfm-wont-authenticate) +* [Configuration Issues](#configuration-issues) + * [Config could not be parsed](#config-could-not-be-parsed) +* [Scrobbling Issues](#scrobbling-issues) + * [Last.fm does not scrobble tracks with multiple artists correctly](#lastfm-does-not-scrobble-tracks-with-multiple-artists-correctly) + * [Jellyfin does not scrobble tracks with multiple artists correctly](#jellyfin-does-not-scrobble-tracks-with-multiple-artists-correctly) + +# Connection Issues + +## Plex/Tautulli/Jellyfin don't connect + +These three [sources](/README.md#source) are **ingress-based** which means that multi-scrobbler waits for the Plex/Tautulli/Jellyfin server to contact multi-scrobbler, as opposed to multi-scrobbler contacting the server. + +multi-scrobbler will log information about any server that connects to it for these three services. In the logs it looks something like this: + +``` +2023-02-22T10:55:56-05:00 info : [Ingress - Plex ] Received request from a new remote address: ::ffff:192.168.0.140 (UA: PlexMediaServer/1.24.5.5173-8dcc73a59) +2023-02-22T10:55:56-05:00 info : [Ingress - Plex ] ::ffff:192.168.0.140 (UA: PlexMediaServer/1.24.5.5173-8dcc73a59) Received valid data from server examplePlex for the first time. +2023-02-22T10:55:56-05:00 warn : [Plex Request ] Received valid Plex webhook payload but no Plex sources are configured +``` +It also logs if a server tries to connect to a URL that it does not recognize: +``` +2023-02-22T11:16:12-05:00 debug : [App ] Server received POST request from ::ffff:192.168.0.140 (UA: PlexMediaServer/1.24.5.5173-8dcc73a59) to unknown route: /plkex +``` +**So, if you do not see either of these in your logs then Plex/Tautulli/Jellyfin is not able to connect to your multi-scrobbler instance at all.** + +This is not something multi-scrobbler can fix and means you have an issue in your network. + +### Troubleshooting + +Check or try all these steps before submitting an issue: + +#### Turn on Debug Logging + +First, turn on **debug** logging for multi-scrobbler by setting the environmental variable `LOG_LEVEL=debug`: + +* using node `LOG_LEVEL=debug ... node src/index.js` +* using docker `docker run -e LOG_LEVEL=debug ... foxxmd/multi-scrobbler` + +Check the output for any additional information. + +#### Check Host name and URL + +The URLs examples in the [configuration](/docs/configuration.md) documentation assume you are running Plex/Tautulli/Jellyfin on the same server as multi-scrobbler. If these are not the same machine then you need to determine the IP address or domain name that multi-scrobbler is reachable at and use that instead of `localhost` when configuring these sources. **This is likely the same host name that you would use to access the web interface for multi-scrobbler.** + +EX `http://localhost:9078/plex` -> `http://192.168.0.140:9078/plex` + +#### Check Firewall and Port Forwarding + +If the machine multi-scrobbler is running on has a firewall ensure that port **9078** is open. Or if it is in another network entirely make sure your router is forwarding this port and it is open to the correct machine. + +#### Check Source Service Logs + +Plex/Tautulli/Jellyfin all have logs that will log if they cannot connect to multi-scrobbler. Check these for further information. + +##### Plex + +Settings -> Manage -> Console + +##### Tautulli + +Check the command-line output of the application or docker logs. + +##### Jellyfin + +Administration -> Dashboard -> Advanced -> Logs + +## Jellyfin has warnings about undefined or missing data + +Make sure you have +* [Configured the webhook plugin correctly](/docs/configuration.md#jellyfin) + * Checked the **Send All Properties(ignores template)** option in the webhook settings and **Saved** + +multi-scrobbler is known to work on Jellyfin `10.8.9` with Webhook version `11.0.0.0`. + +You can verify the payload sent from the webhook by modifying your jellyfin configuration to include `logPayload: true` which will output the raw payload to DEBUG level logging: + +```json +[ + { + "name": "MyJellyfin", + "clients": [], + "data": { + "users": ["FoxxMD"], + "options": { + "logPayload": true + } + } + } +] +``` + +If your issue persists and you open an Issue for it please include the raw payload logs in your report. + + +## Spotify/Deezer/LastFM won't authenticate + +Ensure any **client id** or **secrets** are correct in your configuration. + +The callback/redirect URL for these services must be: + +* the same address you would use to access the multi-scrobbler web interface + * the web-interface must be accessible from the browser you are completing authentication from. + +If multi-scrobbler is not running on the same machine your browser is on then the default/example addresses (`http://localhost...`) **will not work.** You must determine the address you can reach the web interface at (such as `http://192.168.0.140:9078`) then use that in place of `localhost` in the callback URLs. + +EX `http://localhost:9078/lastfm/callback` -> `http://192.168.0.220:9078/lastfm/callback` + +# Configuration Issues + +## Config could not be parsed + +If you see something like this in your logs: + +``` +2023-02-19T10:05:42-06:00 warn : [App] App config file exists but could not be parsed! +2023-02-19T10:05:42-06:00 error : [App] Exited with uncaught error +2023-02-19T10:05:42-06:00 error : [App] Error: config.json could not be parsed +``` + +It means the JSON in your configuration file is not valid. Copy and paste your configuration into a site like [JSONLint](https://jsonlint.com/) to find out where errors you have and fix them. + +# Scrobbling Issues + +## Last.fm does not scrobble tracks with multiple artists correctly + +This is a limitation of the [Last.fm API](https://www.last.fm/api/show/track.scrobble) where the **artist** field is only one string and Last.fm does not recognize (play well) with "combined" artists. + +Multi-scrobbler works the same was the official Spotify-Last.fm integration works -- it only scrobbles the **first** artist on a multi-artist track. + +## Jellyfin does not scrobble tracks with multiple artists correctly + +This is a limitation caused by the [Jellyfin webhook plugin](https://github.com/FoxxMD/multi-scrobbler/issues/70#issuecomment-1443804712) only sending the first artist to multi-scrobbler. This issues needs to be [fixed upstream on the Jellyfin webhook repository.](https://github.com/jellyfin/jellyfin-plugin-webhook/issues/166) diff --git a/docsite/docs/configuration/_category_.json b/docsite/docs/configuration/_category_.json new file mode 100644 index 00000000..18e70148 --- /dev/null +++ b/docsite/docs/configuration/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "Configuration", + "position": 2, + "link": { + "type": "generated-index", + "description": "Configuring Multi-Scrobbler and examples" + } +} diff --git a/docsite/docs/configuration/configuration.md b/docsite/docs/configuration/configuration.md new file mode 100644 index 00000000..51dcb6f7 --- /dev/null +++ b/docsite/docs/configuration/configuration.md @@ -0,0 +1,768 @@ +--- +sidebar_position: 2 +title: Overview +--- + +# Configuration + +* [Overview](#overview) + * [ENV-Based Configuration](#env-based-configuration) + * [File-Based Configuration](#file-based-configuration) + * [All-in-One File Configuration](#all-in-one-file-configuration) + * [Specific File Configuration](#specific-file-configuration) +* [Source Configurations](#source-configurations) + * [Spotify](#spotify) + * [Plex](#plex) + * [Tautulli](#tautulli) + * [Subsonic](#subsonic) + * [Jellyfin](#jellyfin) + * [Last.fm (Source)](#lastfm--source-) + * [Listenbrainz (Source)](#listenbrainz--source-) + * [Deezer](#deezer) + * [Youtube Music](#youtube-music) + * [MPRIS (Linux Desktop)](#mpris) + * [Mopidy](#mopidy) + * [JRiver](#jriver) + * [Kodi](#kodi) +* [Client Configurations](#client-configurations) + * [Maloja](#maloja) + * [Last.fm](#lastfm) + * [Listenbrainz](#listenbrainz) +* [Monitoring](#monitoring) + * [Webhooks](#webhook-configurations) + * [Health Endpoint](#health-endpoint) + +# Overview + +[**Sources** and **Clients**](/README.md#how-does-multi-scrobbler-ms-work) are configured using environmental (ENV) variables and/or json files. + +**MS will parse configuration from both configuration types.** You can mix and match configurations but it is generally better to stick to one or the other. + +TIP: Check the [**FAQ**](/docs/FAQ.md) if you have any issues after configuration! + +## ENV-Based Configuration + +This is done by passing environmental variables and so does not require any files to run MS. + +* Using a docker container EX `docker run -e "SPOTIFY_CLIENT_ID=yourId" -e "SPOTIFY_CLIENT_SECRET=yourSecret" ...` +* Using a local installations by exporting variables before running MS EX `SPOTIFY_CLIENT_ID=yourId SPOTIFY_CLIENT_SECRET=yourSecret node index.js` + +Use ENV-based configuration if: + +* You are the only person for whom MS is scrobbling for +* You have a very simple setup for MS such as one scrobble [Client](/README.md#client) and one [Source](/README.md#source) IE Plex -> Maloja + +## File-Based Configuration + +MS will parse configuration files located in the directory specified by the `CONFIG_DIR` environmental variable. This variable defaults to: + +* Local installation -> `PROJECT_DIR/config` +* Docker -> `/config` (in the container) -- see the [install docs](/docs/installation.md#docker) for how to configure this correctly + +Use File-based configuration if: + +* You have many [Sources](/README.md#source) +* You have many of each type of **Source** you want to scrobble from IE 2x Plex accounts, 3x Spotify accounts, 1x + Funkwhale... +* You have more than one scrobble **Client** you want to scrobble to IE multiple Maloja servers +* You want only some **Sources** to scrobble to some **Clients** IE Fred's Spotify account scrobbles to Fred's Maloja + server, but not Mary's Maloja server + +File-based configurations located in the `CONFIG_DIR` directory can be parsed from + +* an **all-in-one** config file named `config.json` that contains information for all Sources and Clients and/or +* many **specific** files named based on the client/source to configure IE `plex.json` `spotify.json` + +There are **example configurations** for all Source/Client types and AIO config located in the [/config](/config) directory of this project. These can be used as-is by renaming them to `.json`. +For docker installations these examples are copied to your configuration directory on first-time use. + +There is also a [**kitchensink example**](/docs/kitchensink.md) that provides examples of using all sources/clients in a complex configuration. + +### All-in-One File Configuration + +[**Explore the schema for this configuration, along with an example generator and validator, here**](https://json-schema.app/view/%23?url=https%3A%2F%2Fraw.githubusercontent.com%2FFoxxMD%2Fmulti-scrobbler%2Fdevelop%2Fsrc%2Fcommon%2Fschema%2Faio.json) + +Example directory structure: + +``` +/CONFIG_DIR + config.json +``` + +
+Config Example + +```json5 +// in config.json +{ + //... + "sources": [ + { + "name": "myConfig", + "type": "spotify", + "clients": [ + "myMalojaClient" + ], + "data": { + "clientId": "anExample" + //... + } + } + ], + "clients": [ + { + "name": "myFirstMalojaClient", + "type": "maloja", + "data": { + "url": "http://myMalojaServer.example", + // ... + } + } + ] +} +``` + +
+ +`config.json` can also be used to set default behavior for all sources/clients using `sourceDefaults` and `clientDefaults` properties. + +See [config.json.example](/config/config.json.example) for an annotated example or check out [the kitchen sink example](kitchensink.md). + +### Specific File Configuration + +Each file is named by the **type** of the Client/Source found in below sections. Each file as an **array** of that type of Client/Source. + +Example directory structure: + +``` +/CONFIG_DIR + plex.json + spotify.json + maloja.json +``` + +
+Config Example + +```json5 +// in maloja.json +[ + { + "name": "myFirstMalojaClient", + "data": { + "url": "http://myMalojaServer.example", + "apiKey": "myKey" + } + }, + { + "name": "mySecondMalojaClient", + "data": { + "url": "http://my2ndMalojaServer.example", + "apiKey": "myKey" + } + } +] + +``` + +
+ +See the [/config](/config) directory of this project for examples of each type of config file or reference specific files below. + +# Source Configurations + +## [Spotify](https://www.spotify.com) + +To access your Spotify history you must [register an application](https://developer.spotify.com/dashboard) to get a +Client ID/Secret. Make sure to also whitelist your redirect URI in the application settings. + +### ENV-Based + +| Environmental Variable | Required? | Default | Description | +|----------------------------|-----------|----------------------------------|----------------------------------------------------| +| `SPOTIFY_CLIENT_ID` | Yes | | | +| `SPOTIFY_CLIENT_SECRET` | Yes | | | +| `SPOTIFY_REDIRECT_URI` | No | `http://localhost:9078/callback` | URI must end in `callback` | + +### File-Based + +See [`spotify.json.example`](/config/spotify.json.example) or [explore the schema with an example and live editor/validator](https://json-schema.app/view/%23/%23%2Fdefinitions%2FSpotifySourceConfig?url=https%3A%2F%2Fraw.githubusercontent.com%2FFoxxMD%2Fmulti-scrobbler%2Fdevelop%2Fsrc%2Fcommon%2Fschema%2Fsource.json) + +## [Plex](https://plex.tv) + +Check the [instructions](plex.md) on how to setup a [webhooks](https://support.plex.tv/articles/115002267687-webhooks) to scrobble your plays. + +### ENV-Based + +| Environmental Variable | Required | Default | Description | +|------------------------|----------|---------|-------------------------------------------------| +| `PLEX_USER` | No | | The a comma-delimited list of usernames to scrobble tracks for. No usernames specified means all tracks by all users will be scrobbled. | + +### File-Based + +See [`plex.json.example`](/config/plex.json.example) or [explore the schema with an example and live editor/validator](https://json-schema.app/view/%23/%23%2Fdefinitions%2FPlexSourceConfig?url=https%3A%2F%2Fraw.githubusercontent.com%2FFoxxMD%2Fmulti-scrobbler%2Fdevelop%2Fsrc%2Fcommon%2Fschema%2Fsource.json) + +## [Tautulli](https://tautulli.com) + +Check the [instructions](plex.md) on how to setup a notification agent. + +### ENV-Based + +| Environmental Variable | Required | Default | Description | +|------------------------|----------|---------|-------------------------------------------------| +| `TAUTULLI_USER` | No | | The a comma-delimited list of usernames to scrobble tracks for. No usernames specified means all tracks by all users will be scrobbled. | + +### File-Based + +See [`tautulli.json.example`](/config/tautulli.json.example) or [explore the schema with an example and live editor/validator](https://json-schema.app/view/%23/%23%2Fdefinitions%2FTautulliSourceConfig?url=https%3A%2F%2Fraw.githubusercontent.com%2FFoxxMD%2Fmulti-scrobbler%2Fdevelop%2Fsrc%2Fcommon%2Fschema%2Fsource.json) + +## [Subsonic](http://www.subsonic.org/) + +Can use this source for any application that implements the [Subsonic API](http://www.subsonic.org/pages/api.jsp) (such as [Airsonic](https://airsonic.github.io/)) + +**Known Issues:** +* "Time played at" is somewhat inaccurate since the api only reports "played X minutes ago" so... + * All scrobble times are therefore "on the minute" and you may experience occasional duplicate scrobbles + * "played X minutes ago" sometimes is also not reported correctly +* Multiple artists are reported as one value and cannot be separated +* If using [Airsonic Advanced](https://github.com/airsonic-advanced/airsonic-advanced) the password used (under **Credentials**) must be **Decodable** + +### ENV-Based + +| Environmental Variable | Required? | Default | Description | +|----------------------------|-----------|----------------------------------|----------------------------------------------------| +| `SUBSONIC_USER` | Yes | | | +| `SUBSONIC_PASSWORD` | Yes | | | +| `SUBSONIC_URL` | Yes | | Base url of your subsonic-api server | + +### File-Based + +See [`subsonic.json.example`](/config/subsonic.json.example) or [explore the schema with an example and live editor/validator](https://json-schema.app/view/%23/%23%2Fdefinitions%2FSubSonicSourceConfig?url=https%3A%2F%2Fraw.githubusercontent.com%2FFoxxMD%2Fmulti-scrobbler%2Fdevelop%2Fsrc%2Fcommon%2Fschema%2Fsource.json) + +## [Jellyfin](https://jellyfin.org/) + +Must be using Jellyfin 10.7 or greater + +* In the Jellyfin desktop web UI Navigate to -> Administration -> Dashboard -> Plugins -> Catalog + * Under Notifications -> **Webhook** -> Install, then restart your server +* Navigate back to -> Administration -> Dashboard -> Plugins -> My Plugins -> Webhook + * Click "..." -> Settings +* In Webhook settings: + * `Add Generic Destination` + * In the new `Generic` dropdown: + * Webhook Url: `http://localhost:9078/jellyfin` + * Notification Type: `Playback Progress` + * Item Type: `Songs` + * Check `Send All Properties` + * Save + +### ENV-Based + +| Environmental Variable | Required? | Default | Description | +|------------------------|-----------|---------|-------------------------------------------------------------------| +| `JELLYFIN_USER` | | | Comma-separated list of usernames (from Jellyfin) to scrobble for | +| `JELLYFIN_SERVER` | | | Comma-separated list of Jellyfin server names to scrobble from | + +### File-Based + +See [`jellyfin.json.example`](/config/jellyfin.json.example) or [explore the schema with an example and live editor/validator](https://json-schema.app/view/%23/%23%2Fdefinitions%2FJellySourceConfig?url=https%3A%2F%2Fraw.githubusercontent.com%2FFoxxMD%2Fmulti-scrobbler%2Fdevelop%2Fsrc%2Fcommon%2Fschema%2Fsource.json) + +## [Last.fm (Source)](https://www.last.fm) + +See the [Last.fm (Client)](#lastfm) setup for registration instructions. + +### ENV-Based + +No support for ENV based for Last.fm as a client (only source) + +### File-Based + +See [`lastfm.json.example`](/config/lastfm.json.example), change `configureAs` to `source`. Or [explore the schema with an example and live editor/validator](https://json-schema.app/view/%23/%23%2Fdefinitions%2FLastfmSourceConfig?url=https%3A%2F%2Fraw.githubusercontent.com%2FFoxxMD%2Fmulti-scrobbler%2Fdevelop%2Fsrc%2Fcommon%2Fschema%2Fsource.json) + +## [Listenbrainz (Source)](https://listenbrainz.org) + +You will need to run your own Listenbrainz server or have an account [on the official instance](https://listenbrainz.org/login/) + +On your [profile page](https://listenbrainz.org/profile/) find your **User Token** to use in the configuration. + +**NOTE:** You cannot use ENV variables shown in the [Listenbrainz Client config](#listenbrainz) -- multi-scrobbler assumes Listenbrainz ENVs are always used for the **client** configuration. You must use the file-based config from below to setup Listenbrainz as a Source. + +### File-Based + +See [`listenbrainz.json.example`](/config/listenbrainz.json.example) or [explore the schema with an example and live editor/validator](https://json-schema.app/view/%23%2Fdefinitions%2FListenBrainzSourceConfig?url=https%3A%2F%2Fraw.githubusercontent.com%2FFoxxMD%2Fmulti-scrobbler%2Fdevelop%2Fsrc%2Fcommon%2Fschema%2Fsource.json) + +**Change `configureAs` to `source`** + +## [Deezer](https://deezer.com/) + +Create a new application at [Deezer Developers](https://developers.deezer.com/myapps) + +* Application Domain must be the same as your multi-scrobbler domain. Default is `localhost:9078` +* Redirect URL must end in `deezer/callback` + * Default would be `http://localhost:9078/deezer/callback` + +After application creation you should have credentials displayed in the "My Apps" dashboard. You will need: + +* **Application ID** +* **Secret Key** +* **Redirect URL** (if not the default) + +**If no access token is provided...** + +After starting multi-scrobbler with credentials in-place open the dashboard (`http://localhost:9078`) and find your Deezer source. Click **(Re)authenticate and (re)start polling** to start the login process. After login is complete polling will begin automatically. + +### ENV-Based + +| Environmental Variable | Required? | Default | Description | +|----------------------------|-----------|-----------------------------------------|----------------------------------------------------| +| `DEEZER_CLIENT_ID` | Yes | | Your **Application ID** | +| `DEEZER_CLIENT_SECRET` | Yes | | Your **Secret Key** | +| `DEEZER_REDIRECT_URI` | No | `http://localhost:9078/deezer/callback` | URI must end in `deezer/callback` | + +### File-Based + +See [`deezer.json.example`](/config/deezer.json.example) or [explore the schema with an example and live editor/validator](https://json-schema.app/view/%23/%23%2Fdefinitions%2FDeezerSourceConfig?url=https%3A%2F%2Fraw.githubusercontent.com%2FFoxxMD%2Fmulti-scrobbler%2Fdevelop%2Fsrc%2Fcommon%2Fschema%2Fsource.json) + +## [Youtube Music](https://music.youtube.com) + +Credentials for YT Music are obtained from a browser request to https://music.youtube.com **once you are logged in.** [Specific requirements are here and summarized below:](https://github.com/nickp10/youtube-music-ts-api/blob/master/DOCUMENTATION.md#authenticate) + +* Open a new tab +* Open the developer tools (Ctrl-Shift-I) and select the “Network” tab +* Go to https://music.youtube.com and ensure you are logged in + +Then... + +1. Find and select an authenticated POST request. The simplest way is to filter by /browse using the search bar of the developer tools. If you don’t see the request, try scrolling down a bit or clicking on the library button in the top bar. +2. **Make sure **Headers** pane is selected and open +3. In the **Request Headers** section find and copy the **entire value** found after `Cookie:` and use this as the `cookie` value in your multi-scrobbler config +4. If present, in the **Request Headers** section find and copy the number found in `X-google-AuthUser` and use this as the value for `authUser` in your multi-scrobbler config + +![Google Headers](google-header.jpg) + +NOTES: + +* YT Music authentication is "browser based" which means your credentials may expire after a (long?) period of time OR if you log out of https://music.youtube.com. In the event this happens just repeat the steps above to get new credentials. +* Communication to YT Music is **unofficial** and not supported or endorsed by Google. This means that **this integration may stop working at any time** if Google decides to change how YT Music works in the browser. + +### File-Based + +See [`ytmusic.json.example`](/config/ytmusic.json.example) or [explore the schema with an example and live editor/validator](https://json-schema.app/view/%23/%23%2Fdefinitions%2FYTMusicSourceConfig?url=https%3A%2F%2Fraw.githubusercontent.com%2FFoxxMD%2Fmulti-scrobbler%2Fdevelop%2Fsrc%2Fcommon%2Fschema%2Fsource.json) + +## [MPRIS](https://specifications.freedesktop.org/mpris-spec/latest/) + +MPRIS is a standard interface for communicating with Music Players on **linux operating systems.** + +If you run Linux and have a notification tray that shows what media you are listening to, you likely have access to MPRIS. + +![Notification Tray](mpris.jpg) + +multi-scrobbler can listen to this interface and scrobble tracks played by **any media player** that communicates to the operating system with MPRIS. + +**NOTE:** multi-scrobbler needs to be running as a [**Local Installation**](/docs/installation.md#local) in order to use MPRIS. This cannot be used from docker. + +### ENV-Based + +| Environmental Variable | Required? | Default | Description | +|------------------------|-----------|---------|----------------------------------------------------------------------------------| +| MPRIS_ENABLE | No | | Use MPRIS as a Source (useful when you don't need any other options) | +| MPRIS_BLACKLIST | No | | Comma-delimited list of player names not to scrobble from | +| MPRIS_WHITELIST | No | | Comma-delimited list of players names to ONLY scrobble from. Overrides blacklist | + +### File-Based + +See [`mpris.json.example`](/config/mpris.json.example) or [explore the schema with an example and live editor/validator](https://json-schema.app/view/%23%2Fdefinitions%2FMPRISSourceConfig?url=https%3A%2F%2Fraw.githubusercontent.com%2FFoxxMD%2Fmulti-scrobbler%2Fdevelop%2Fsrc%2Fcommon%2Fschema%2Fsource.json) + +## [Mopidy](https://mopidy.com/) + +Mopidy is a headless music server that supports playing music from many [standard and non-standard sources such as Pandora, Bandcamp, and Tunein.](https://mopidy.com/ext/) + +multi-scrobbler can scrobble tracks played from any Mopidy backend source, regardless of where you listen to them. + +### File-Based + +See [`mopidy.json.example`](/config/mopidy.json.example) or [explore the schema with an example and live editor/validator](https://json-schema.app/view/%23%2Fdefinitions%2FMopidySourceConfig/%23%2Fdefinitions%2FMopidyData?url=https%3A%2F%2Fraw.githubusercontent.com%2FFoxxMD%2Fmulti-scrobbler%2Fdevelop%2Fsrc%2Fcommon%2Fschema%2Fsource.json) + +Configuration Options: + +##### `url` + +The URL used to connect to the Mopidy server. You MUST have [Mopidy-HTTP extension](https://mopidy.com/ext/http) enabled. + +If no `url` is provided a default is used which assumes Mopidy is installed on the same server as multi-scrobbler: `ws://localhost:6680/mopidy/ws/` + +Make sure the hostname and port number match what is found in the Mopidy configuration file `mopidy.conf`: + +``` +... + +[http] +hostname = localhost +port = 6680 + +... +``` + +The URL used to connect ultimately must be formed like this: `[protocol]://[hostname]:[port]/[path]` +If any part of this URL is missing multi-scrobbler will use a default value, for your convenience. This also means that if any part of your URL is **not** standard you must explicitly define it. + +Part => Default Value + +* Protocol => `ws://` +* Hostname => `localhost` +* Port => `6680` +* Path => `/mopidy/ws/` + +
+URL Transform Examples + +```json +{ + "url": "mopidy.mydomain.com" +} +``` + +MS transforms this to: `ws://mopidy.mydomain.com:6680/mopidy/ws/` + +```json +{ + "url": "192.168.0.101:3456" +} +``` + +MS transforms this to: `ws://192.168.0.101:3456/mopidy/ws/` + +```json +{ + "url": "mopidy.mydomain.com:80/MOPWS" +} +``` + +MS transforms this to: `ws://mopidy.mydomain.com:80/MOPWS` + +
+ + +#### URI Blacklist/Whitelist + +If you wish to disallow or only allow scrobbling from some sources played through Mopidy you can specify these using `uriBlacklist` or `uriWhitelist` in your config. multi-scrobbler will check the list to see if any string matches the START of the `uri` on a track. If whitelist is used then blacklist is ignored. All strings are case-insensitive. + +EX: + +```json +{ + "uriBlacklist": ["soundcloud"] +} +``` + +Will prevent multi-scrobbler from scrobbling any Mopidy track that start with a `uri` like `soundcloud:song:MySong-1234` + +#### Album Blacklist + +For certain sources (Soundcloud) Mopidy does not have all track info (Album) and will instead use "Soundcloud" as the Album name. You can prevent multi-scrobbler from using this bad Album data by adding the fake Album name to this list. Multi-scrobbler will still scrobble the track, just without the bad data. All strings are case-insensitive. + +EX: + +```json +{ + "albumBlacklist": ["SoundCloud", "Mixcloud"] +} +``` + +If a track would be scrobbled like `Album: Soundcloud, Track: My Cool Track, Artist: A Cool Artist` +then multi-scrobbler will instead scrobble `Track: My Cool Track, Artist: A Cool Artist` + +## [JRiver](https://jriver.com/) + +In order for multi-scrobbler to communicate with JRiver you must have [Web Server Interface](https://wiki.jriver.com/index.php/Web_Service_Interface#Documentation_of_Functions) enabled. This can can be in the JRiver GUI: + +* Tools -> Options -> Media Network + * Check `Use Media Network to share this library...` + * If you have `Authentication` checked you will need to provide the **Username** and **Password** in the ENV/File configuration below. + +#### URL + +If you do not provide a URL then a default is used which assumes JRiver is installed on the same server as multi-scrobbler: `http://localhost:52199/MCWS/v1/` + +* Make sure the port number matches what is found in `Advanced` section in the [Media Network](#jriver) options. +* If your installation is on the same machine but you cannot connect using `localhost` try `0.0.0.0` instead. + +The URL used to connect ultimately must be formed like this: `[protocol]://[hostname]:[port]/[path]` +If any part of this URL is missing multi-scrobbler will use a default value, for your convenience. This also means that if any part of your URL is **not** standard you must explicitly define it. + +Part => Default Value + +* Protocol => `http://` +* Hostname => `localhost` +* Port => `52199` +* Path => `/MCWS/v1/` + +
+URL Transform Examples + +```json +{ + "url": "jriver.mydomain.com" +} +``` + +MS transforms this to: `http://jriver.mydomain.com:52199/MCWS/v1/` + +```json +{ + "url": "192.168.0.101:3456" +} +``` + +MS transforms this to: `http://192.168.0.101:3456/MCWS/v1/` + +```json +{ + "url": "mydomain.com:80/jriverReverse/MCWS/v1/" +} +``` + +MS transforms this to: `http://mydomain.com:80/jriverReverse/MCWS/v1/` + +
+ +### ENV-Based + + +| Environmental Variable | Required | Default | Description | +|------------------------|----------|---------------------------------|------------------------------------------------| +| JRIVER_URL | Yes | http://localhost:52199/MCWS/v1/ | The URL of the JRiver server | +| JRIVER_USERNAME | No | | If authentication is enabled, the username set | +| JRIVER_PASSWORD | No | | If authenticated is enabled, the password set | + + +### File-Based + +See [`jriver.json.example`](/config/jriver.json.example) or [explore the schema with an example and live editor/validator](https://json-schema.app/view/%23%2Fdefinitions%2FJRiverSourceConfig/%23%2Fdefinitions%2FJRiverData?url=https%3A%2F%2Fraw.githubusercontent.com%2FFoxxMD%2Fmulti-scrobbler%2Fdevelop%2Fsrc%2Fcommon%2Fschema%2Fsource.json) + +## [Kodi](https://kodi.tv/) + +In order for multi-scrobbler to communicate with Kodi you must have the [Web Interface](https://kodi.wiki/view/Web_interface) enabled. This can can be in the Kodi GUI: + +* Settings -> Services -> Control + * Check `Allow remote control via HTTP` + * Ensure you have a **Username** and **Password** set, you will need to provide them in the ENV/File configuration below. + +#### URL + +If you do not provide a URL then a default is used which assumes Kodi is installed on the same server as multi-scrobbler: `http://localhost:8080/jsonrpc` + +* Make sure the port number matches what is found in **Port** in the [Control](#kodi) section mentioned above. +* If your installation is on the same machine but you cannot connect using `localhost` try `0.0.0.0` instead. + +The URL used to connect ultimately must be formed like this: `[protocol]://[hostname]:[port]/[path]` +If any part of this URL is missing multi-scrobbler will use a default value, for your convenience. This also means that if any part of your URL is **not** standard you must explicitly define it. + +Part => Default Value + +* Protocol => `http://` +* Hostname => `localhost` +* Port => `8080` +* Path => `/jsonrpc` + +
+URL Transform Examples + +```json +{ + "url": "kodi.mydomain.com" +} +``` + +MS transforms this to: `http://kodi.mydomain.com:8080/jsonrpc` + +```json +{ + "url": "192.168.0.101:3456" +} +``` + +MS transforms this to: `http://192.168.0.101:3456/jsonprc` + +```json +{ + "url": "mydomain.com:80/kodiReverse/jsonrpc" +} +``` + +MS transforms this to: `http://mydomain.com:80/kodiReverse/jsonrpc` + +
+ +### ENV-Based + + +| Environmental Variable | Required | Default | Description | +|------------------------|----------|-------------------------------|----------------------------| +| KODI_URL | Yes | http://localhost:8080/jsonrpc | The URL of the Kodi server | +| KODI_USERNAME | No | | The username set | +| KODI_PASSWORD | No | | The password set | + + +### File-Based + +See [`kodi.json.example`](/config/kodi.json.example) or [explore the schema with an example and live editor/validator](https://json-schema.app/view/%23%2Fdefinitions%2FKodiSourceConfig/%23%2Fdefinitions%2FKodiData?url=https%3A%2F%2Fraw.githubusercontent.com%2FFoxxMD%2Fmulti-scrobbler%2Fdevelop%2Fsrc%2Fcommon%2Fschema%2Fsource.json) + +# Client Configurations + +## [Maloja](https://github.com/krateng/maloja) + +### ENV-Based + +| Environmental Variable | Required? | Default | Description | +|----------------------------|-----------|---------|-------------------------------| +| `MALOJA_URL` | Yes | | Base URL of your installation | +| `MALOJA_API_KEY` | Yes | | Api Key | + +### File-Based + +See [`maloja.json.example`](/config/maloja.json.example) or [explore the schema with an example and live editor/validator](https://json-schema.app/view/%23/%23%2Fdefinitions%2FMalojaClientConfig?url=https%3A%2F%2Fraw.githubusercontent.com%2FFoxxMD%2Fmulti-scrobbler%2Fdevelop%2Fsrc%2Fcommon%2Fschema%2Fclient.json) + +## [Last.fm](https://www.last.fm) + +[Register for an API account here.](https://www.last.fm/api/account/create) + +The Callback URL is actually specified by multi-scrobbler but to keep things consistent you should use +``` +http://localhost:9078/lastfm/callback +``` +or replace `localhost:9078` with your own base URL + +### ENV-Based + +| Environmental Variable | Required? | Default | Description | +|----------------------------|-----------|-----------------------------------------|-------------------------------| +| `LASTFM_API_KEY` | Yes | | Api Key from your API Account | +| `LASTFM_SECRET` | Yes | | Shared secret from your API Account | +| `LASTFM_REDIRECT_URI` | No | `http://localhost:9078/lastfm/callback` | Url to use for authentication. Must include `lastfm/callback` somewhere in it | +| `LASTFM_SESSION` | No | | Session id. Will be generated by authentication flow if not provided. | + +### File-Based + +See [`lastfm.json.example`](/config/lastfm.json.example) or [explore the schema with an example and live editor/validator](https://json-schema.app/view/%23/%23%2Fdefinitions%2FLastfmClientConfig?url=https%3A%2F%2Fraw.githubusercontent.com%2FFoxxMD%2Fmulti-scrobbler%2Fdevelop%2Fsrc%2Fcommon%2Fschema%2Fclient.json) + +## [Listenbrainz](https://listenbrainz.org) + +You will need to run your own Listenbrainz server or have an account [on the official instance](https://listenbrainz.org/login/) + +On your [profile page](https://listenbrainz.org/profile/) find your **User Token** to use in the configuration. + +### ENV-Based + + +| Environmental Variable | Required? | Default | Description | +|------------------------|-----------|-------------------------------|---------------------------------| +| LZ_TOKEN | Yes | | User token from your LZ profile | +| LZ_USER | Yes | | Your LZ username | +| LZ_URL | No | https://api.listenbrainz.org/ | The base URL for the LZ server | + +### File-Based + +See [`listenbrainz.json.example`](/config/listenbrainz.json.example) or [explore the schema with an example and live editor/validator](https://json-schema.app/view/%23%2Fdefinitions%2FListenBrainzClientConfig?url=https%3A%2F%2Fraw.githubusercontent.com%2FFoxxMD%2Fmulti-scrobbler%2Fdevelop%2Fsrc%2Fcommon%2Fschema%2Fclient.json) + +# Monitoring + +multi-scrobbler supports some common webhooks and a healthcheck endpoint in order to monitor Sources and Clients for errors. + +## Webhook Configurations + +Webhooks will **push** a notification to your configured servers on these events: + +* Source polling started +* Source polling retry +* Source polling stopped on error +* Scrobble client scrobble failure + +Webhooks are configured in the main [config.json](#all-in-one-file-configuration) file under the `webhook` top-level property. Multiple webhooks may be configured for each webhook type. EX: + +```json +{ + "sources": [ + ... + ], + "clients": [ + ... + ], + "webhooks": [ + { + "name": "FirstGotifyServer", + "type": "gotify", + "url": "http://192.168.0.100:8070", + "token": "abcd" + }, + { + "name": "SecondGotifyServer", + "type": "gotify", + ... + }, + { + "name": "NtfyServerOne", + "type": "ntfy", + ... + }, + ... + ] +} +``` + +### [Gotify](https://gotify.net/) + +Refer to the [config schema for GotifyConfig](https://json-schema.app/view/%23/%23%2Fdefinitions%2FGotifyConfig?url=https%3A%2F%2Fraw.githubusercontent.com%2FFoxxMD%2Fmulti-scrobbler%2Fdevelop%2Fsrc%2Fcommon%2Fschema%2Faio.json) + +multi-scrobbler optionally supports setting message notification priority via `info` `warn` and `error` mappings. + +EX + +```json +{ + "type": "gotify", + "name": "MyGotifyFriendlyNameForLogs", + "url": "http://192.168.0.100:8070", + "token": "AQZI58fA.rfSZbm", + "priorities": { + "info": 5, + "warn": 7, + "error": 10 + } +} +``` + +### [Ntfy](https://ntfy.sh/) + +Refer to the [config schema for NtfyConfig](https://json-schema.app/view/%23/%23%2Fdefinitions%2FNtfyConfig?url=https%3A%2F%2Fraw.githubusercontent.com%2FFoxxMD%2Fmulti-scrobbler%2Fdevelop%2Fsrc%2Fcommon%2Fschema%2Faio.json) + +multi-scrobbler optionally supports setting message notification priority via `info` `warn` and `error` mappings. + +EX + +```json +{ + "type": "ntfy", + "name": "MyNtfyFriendlyNameForLogs", + "url": "http://192.168.0.100:9991", + "topic": "RvOwKJ1XtIVMXGLR", + "username": "Optional", + "password": "Optional", + "priorities": { + "info": 3, + "warn": 4, + "error": 5 + } +} +``` + +## Health Endpoint + +An endpoint for monitoring the health of sources/clients is available at GET `http://YourMultiScrobblerDomain/health` + +* Returns `200 OK` when **everything** is working or `500 Internal Server Error` if **anything** is not +* The plain url (`/health`) aggregates status of **all clients/sources** -- so any failing client/source will make status return 500 + * Use query params `type` or `name` to restrict client/sources aggregated IE `/health?type=spotify` or `/health?name=MyMaloja` +* On 500 the response returns a JSON payload with `messages` array that describes any issues + * For any clients/sources that require authentication `/health` will return 500 if they are **not authenticated** + * For sources that poll (spotify, yt music, subsonic) `/health` will 500 if they are **not polling** diff --git a/docsite/docs/configuration/google-header.jpg b/docsite/docs/configuration/google-header.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4ca5f28b25f0e2fc44930040dadb95fba912e770 GIT binary patch literal 231527 zcmex=Bm<7(6|-7&sUh7}yzv7?~Lu85qD= zijfseCowQENJH6K3=9k!P&Ld93=D>hObomX3=BmK3=Bq$Obj9n3=9nn3=Em=EMUD; z7#J9qF))Cv1M^j(X1ja(1}GTm85-yr8!<2#85kK`85mg^87mkXS(%zynVK^&GB7Sc zxP^g%fq|3Z9|OcxkP8_YA#9Mbj8OJW1_lNuMrH<(%On^X7?`0hWn*AqU_)YyLfIg7 zj7$)7!!^pt!|2Bg&0|y%$I~ywpJ3BikCkGdg2rmye zH;<%{Fu#bbl)Rj*l#Gmmik`ZHl8&;BjE1?Uj)9?xiHW?rrLBdLjh?ZI5y%imPEJl9 zZXO9gTWM0TY@5u?V53ptdX zHXalWy7)oGIH{I3zSIJR&kGIVCkM zJtH%#xTLhKyrQzIxuvzOy`!^h(&Q;qr%j(RbJn88OO`HMzGCI7O`ErD-L`$l&RvHN zA31vL_=%IJE?vHI_1g6tH*YTH}~t}yS*{VhlA zpDy}Wx_YJB!f(7rkv-hv_q#JrChe~KaQ^b=73%yj3f@jCaRzpQ_8b zdFq?HDjrpAJL8#i^s+*q<@Y~YImTh<13x@cyS>`GE$M#sTZRY8H~9Wsc^vp*(w^ow z+t;mkh=F(gek(LS@-Y##s;aCD=K{LD{}N_8X4|N>`A{ZvU2qg$C$~>Vm8g2z0Rum zP34#W3^vbh?|lY9& zVS-P6YK$Rw&+N%3C7(ARtFW7Ym2cxiC8l1z!p|uic33jcW4CvVD2%vkdgr`IVJE|l z6C3r|+$<#jx?fu+5IaFv?%vJ00SSAwcQZGh%h(|GJnTc;hr_-*?N&a2SpEC?<^BH| z;`)}acwrp9;_})h+h?Cqo#k21ySL%_i+ZaQ{|?XbQB-Ny-oeD~e{Pa3U!`}8${TBc z=Jn5A8z#RstUvGi=f!WI_|F&Xt;*&D#v*nSzlsWOx{_JU6-a;p?TK_Rr#HCOpX%sXV>s2c`VaCx_0m0BjEw&w`BCEyg6F4Kc?^J z%5}P>(z|!8OX)K@^{}DS>API}jo_zk-$TW%TC^GZSeP7jvK1wDD(=n?b`0_~TlB7F z-=(k8)e$Ol^Y)!%U_Nt9T=_@ks_sX4xMRy%twKWk4(+mPDXS}_e{``< z{m9Va$A4*S&5XW>e`i`G7+?AL_0ghP7f;u{JCz!+Q!CtJ0nhcVdtA~oKCHg-r0`#n z=0u%-rPa($4i?9&sh&OFT!sxz zM;`t*e;DMkLV;&nk>V}sGf#S|zPxXax-_e0-PN-zuJl?Kn-*C<>bm+iPGpy%byBjC z;(-(A?pb|Z&962`*;;+Z_JrJE=GSL~`d&S3;W9U?;F75R&(IrnyJTbfo6Wh(TUOuy zu+TF4?v3ZOTF<G9?50dMKB`qaE%TJ{=O?TRb){9=X`MckZk{tR zdVV&}-m5tCaufSaiK=Ibmp?sPxNJMiJd zP}lO$f3?oO(a%^FcXx8(gPF|fpO{wueExgUl0})5Onc85pLu8Z!f*xq*Cj35PBzbH zs=nW%$+qb8`R}fBmH%EW;FK(jTeW7B?f!Bu<~pYNO70s^`5R7N^{%&|ZqF5vipA&c z?}{*r<=fg%RRa;e&*#7Evibb?q63d-{$oqGRQop*GUi~f&kiiVDv(NiK z^#l>YmCt`K>bLpNP!hmW|MEcX<>oKXrkMU}YA)bmP*$F`W7gIy1wTCws4ru+$qru_ z>M}=zp}>N9DMQ&jh3w>qziT(WQh92BosIkQ9mX%ucAn_naV0U)^cLTz(!ww6rXLXx zIKR+Q>UF>!yW~4v-SgNto|pG}u2}Z(N}K=o<5OR1YaIG`C(Oi7SW2E#aM}&Q?%flL zul%k0`X@`fnCDilfhR2sbFG<@HJm2oEhphj9hILCmFXR5tpeV6#V=Nyw#u)BO!S(GNrK3r+t?08IC7g)=PZ#+kbA!o_N!#^IoPYBqSs=e_FC7Sf*v^ zp(BM?cgmld!OhqpuB&o)L$Yn%mRJc1HInZ?Zego8Rkdj zJ~lbi_-@aG1rr>O8DDEqw)1FZsAN2OLjCC<&Bz4;4VzBMG;mEmrs>6;({PT1<&lwP zTy5s(&8CYqck>z8m-plzWeD&0o4dGo-}z@spB!u*CEpYWukAekr|F)yPJn^WJhYG3w$hUza%4F9?Rj$bMVB8<=0zptB8x&H6_OAYc* z>bL$11QEeD*Z+Ng=|1Z}!@a*6jMPxA-geBpT~qwbfpi(J4YyQpMg3iRMW-@xl3S70 z$5{)X?f<^w^O9rca{}0|O!Uxw%NbE%yrpmX>tNq}qx-H?HdlK5Uj5x)_ETZ3*#2am zC=p({o@t+iW){4j=kDA*FMEF1(W6(4JX4ODh5=P zWU5*cyLXvG(De z^Z&X{ZoF9a{OPX;p53Ak2_FJpDAFbUH8JRBepCP3F*t}~`cF5l> zW~yRTF0%R+p!=!FWM^$bs!jjtmkvMMxZf_Bn3{TijeGyKiR)&iernyi>Yei3x%{%9 zgVyfU;JEZ8@w!s*KatCMaca|SjS`w1TDNZuDE?kmY7!HkY|~l3?sauy|LHHLei5BT z9-%5OOwvc=h^3T$YSkM$(YVv z-(Q|sEk5B+?c6`7t3_k~{EV$z%)T_Zja^^;m-Y$KodM6EzHL7K^Qh6gTM;)s8yB!7 zvu>Vbb!BQTht2%imhZ!#bmecDb2xKz#?NEs-@c#!&#>ldvZUAxA05u*-)H~UZVa-C zi`_MSOXAc6^#)(R9{;jHFD-gU<^rdQiP8U}Wb_}ujdD%6`CZ3gcjw=aCm*eFdFZ=Q zX9w^6nMU?{UrT&u#^1X+hbQ^XUwf||IjOqGlf-+QoRcJ{OGfrN{tA4m5VI-5oFVzF z<*zGgsh-R_-)`E-ZWKLUm-)6L%;-NuM#Bb4?u|QFPJI{Rp|`ZpAX#kN*`5ApCDmE} zGqk4X<~#okz5mv8|Bm@nHLs>A@OB>G>gg)G_V4ANfm`?Qs@K~8cfFb2llqBEtkxWt zS1Nq#AX2vdyZ=+SYhUcA#{auM|M$dyZnJhRIsJ$8X8@}%NMDeEdtelM*o^-SEcH`E zckIY+zjJ{3t%JZtR}qFl2xfe-PeGucKYGTw<#U$*dT_g{_)7B2h>spB(-W#sJnT+% zTKV}wijck7y2()nXO}p%heh@UD`-7$yxv!_=5$HemA8+j4)p2#XIPim8fU$}-s?82 zn-|~jtkjmHPP4MYuN)}eAap5S-{NFo&%aU@KW4L^dX_H&c;>G+y|_igG5&3d@@4kx zF9RZP9oyu+?XQA5v-*!+zw75*>*uy>czt=_bfcOV$K`5Yd&{A8^<&DSrz`e z>@(pF*Q9%;EGwDkU)%Qd@|t&iKTA{7Bi%wlroiedR;qiNO z`%Ck$YDF*Dw~<*(?B|`$F%RZXSs?i*Q*VCRdChhF@n3hmye+ytKbv7znE4~)-PYTl zm&aAr&$+Chvvz;k>FRIIy?c0fJG^winiXTWky&DMC6}>5&VPmjh3EY*O$++1wC8Ne*}h`SgSKaV=32ij|4~2F zGq@i_O}drx@$tEer1QR?`0BMXwl+qz?`!|Zu;%`yZK~Tm8}7+D?BO^3l%<%S<##r-vs8r%G?(^|Ic5~{|t5YzqPKInLRC1l%H#w zv%qJ1i{RJA^XyOUm;cP4DgPwC|L06(r8cYWfBu^M@6UgRZ=uV-We3l3ynJs;Wb~#s z0iN2-;^RNVAOA~ytNf??<9`NY{ZpI&Gt6IU|Ni`chE(^d>Hit*gX-_k|95K3(Yf3H zNU%Tm%2~Vl--5c5pVvRFKmO45HeFd4_J#SyM}vQn%l^*O|M{o+Q~f`+ zE&C1%CU>-17yF3`ygS*F{My~7erlclGr3FlC-%#KHu`s7{LeqfpZ5P5gxzmG`p+=` zhQ0cKhDX`HZ{8mFaDVRSEnU_luaf@S8{#?fE&U)%&z#?wl4d=-+^+H4e})$hA;HnU zdG51Xi!Xe$@6Gw!c3=J#`}5GeCDHB?mlP5UKOggFzklQReV`+-| z#LIn^>+(!Hw|XSyn(lqTd%E!Tuj_j94=i5PD9uzm_@BXb^Pgi?UtR~?^4Ib?W|8~7 zTu89-%gL1?(M{zqgWt-0|N1Mmx>zv%XwT$?63L%+J482b*q*P@V|p68R|T6b)n@G~>@voY^}bK9z5CTEr1`>#avRSW(zWth6z{N3UQMaGw3 zdY37?1?kE$_6XcP|M*8>MpAh~Zd9G!tB-$Ho(dNV6T1|CTkXVx{CJZ-yO}GOPm0(4 z9)0U^xhltrUkR6!Tr*R-lg@A5yyZhk@$pyoTI-8d> ztjOUpKYM@u)2NH5>Q3h+H(5MR{#-om+&zvpZ8vlS&u(Ox!&!Xg^X)%hRtLr`aT2Tc zWMW{Lu=DtjI?=scT|!r091ab6zJB_%#Hc5+ha67w?Mb$Mz37-_8CdR8iI~5ulH4~ z%VU?nRp|Y90ps~!&*OI=U+StEXRapvJbY7JbIn<6oAVVG-=6#{mEld}X^YHbdXRkj zRptA$K9_gcWHC&hYOl{w7k8C)+m(s^xBkrk*7V$dX;$pXJ$H@mU+X)3IbnbOwXeE| z{*Kw3uUj7Tf9-O?vEZ5KR)zPCCxicq%HLS?asGBa7i;^t=BI^S1Pe+&V6QtB6_nY4W@I>mU1Na@~3pedusTu-u)(mkwRm ze(T-iw=eSH;8yB+&%E*b@v3XpnF4R3%O@T}Ib*Jyf1Zn)RRG8aGcY zUN3&5RqM~$<_=Fv7>c9r`o?(&dxizo{o4J0^S^zr=k*FIH|$iYVyIuMVZ5^b$Mm~A z^&3NNmaDwoGKIlC`hekl=a5-_3SNGw~zyC8lV14rp z40h)A-;XNJ?U2~G>wNvRjkl_mcjwMtSCy9Y_{*v(@BP8*`M&J7-~W&C;!M9HoxJ}H z@4I*pmzs&kH(j@M6<>by?|+65Ob`_pX1AR`om|=XvuncL2MIUt@+ZqCFgc#EFjcy9 zZZWq>Llv7z-TTcfFH8M@{gk?N|JaPr3Ue9%eR|Y-^{o>_(sbpQ|4gUp=S^RF=I~3! zrQ+Wk{xclEa{v2>i&?ez@BU|C(e>W_d;f!3zN>EwA1V4b|FN%C*RDtRIKBTGpG}|r z`|y7T{op#jOy0LQCCq~b|1-q$iY>qU_x=Z`E4%ma{>NG3zw)ct`tyH{OeD7&)jz)G z|NBd}#c4%LBTKs_mn!@Je*5#{@BK9Kr8ob+{?qHIx8ex@rVYo}q=Xc$HeNIRlAEaI zr-}R0?BlH$w`BgxB@4Z{L-u`KdAVo{J7LC;{_^D# z=jEfGDS4h-omU=Z-M?%9!OMF~;uJT3`odintHdE~_~+CMkH^bpKF1spdsFH$b&YrW z8pR)Z+SBSFZ=g+J>KWc5Z^pbVqZ|*&E;P|8E*6R4&zktuF-{8qS zE$$52yHlb~?%nQle;O?<-gGX|ujF%|gF;&W<}*)NqZuS}A2Zw3fBhWte8a9uP8TEh zc=m}1)z5YRJG1&fgH4LPLk6>>%Wt;20}juhG0dC$a#QDAzxNv+H%?_JmtPtvmHP6S zvdtIC<-At!jMl601S|J^eZG{z>YMqI!cEcZ*d8PWo>yNfD!X;_$!A(K&V{q=msl2a z=+VRDQ=fePZZ6zayF}-lW8?D2?^X-`S=ng1Mab#W3bQ9GB|jU~Yw0IVyeN6^&Rdnb z*DHTr&V7`gemnbFYMXfF&#I5EZ})Tw{GI;hulxOTnGC(crb{XfriNJ@zxVw5r{#Ns zqm;j_%|7__`}+ zb$-FCwbdNV3nRS#Gx%rCRGHVR{Z+x-?794lzz_EO?mzbawt`*hn9lFb@|R7cTtg?c z)V{JZGn|#{aXPbFYGH6XGv7`2uE6p<>GB&&cDHZKpIdp+L0ssYh|1qK<~gM&|81$= zrFYFB{YBPX5ytYj8xr_8I3M4+>hqaNQ#H9<7@p`?b#*alEJEN{@852%`0_e@m#>RM z;qJ34%eNVaoa}$Qkt6J5Na->2f1;OuG?iHKu$s2*ND6+Uv3PqNTgAE}?&iPCg}L7@ zkpKFo{psUNo0qC<+?~wTm-Ws2g3rybM)Aon_RK%GsQKiXw(ynnfB9fMf$#od zllApl$Gl$oyxra^D0n{cY>3p-9}>d$F_*YIjeIUm+a7tw{!mQuuVD6D;nIID%zQTY z@8Ze{HP=tP^pAD>cxv&vgGQFh7SGoja`{L;iAmpA82VXj^2YhEdxF=cmF*~gCRtSX zGsxI~%iN1M_k3nN&LcACa^54a!*7|4JfC+@x+9Rt@SyyxcaiR&#ZSAh=HAzw!esa| z@TlH-3+_eD8#(IgKdgAS?s<8}pT{O%_q9cp?Y?yF6n}rrcz32vRp@1&+|-?Q7oSaV zVCgAfRDaoXwQS1Yne20SHYcCHRTp@^{`BY7ne|FH_9#8E`@*$xOT|G8_Q`K&?aI=< zVAnXmTd~+|KjM4u)hb;CvPxC^bXQ>G_HTi^qSmxHJ|pbs;dn+ef~I zDzkVvN_nl4cq;oOjojsC9>2Ep#PZUs3c250|1<1~=dgH}nU6Kh-)Pprw6ob%-Eut>?Z{`}p|dfT;T8PvZUmPFuS5pZ%{#8BEnHBYb!6nG})t z_o9USRNW z%{v;bzkFMvw=B^z&CoD^#?Rad+WP+@|1%s|^{al>u3zPfHl%Suan$E6K{t|C0hMG%br|K|UP zy!{y^B?VUc`gz5Ai7EL>sd~xzx%w4}1^R}12Ko#(_7w$*$=RtT3Q4KynR&KK?|1K4 zQpilPRSGxtHSjHPPR+>ls47YguJQ{>uF6ifOi{A8Q?RM9s>m(KO)W`OsL0L9E4Hez zRRSAsl~-&964qBz04piUwpEJo4N!2-FG^J~(KFFA&~>fIEHhHFQ?MyYNwW%aaf6yr zl#*tv1a)e8dAVM>v0i>ry1t>MrKP@sk-m|UZc$2_ZgFK^Nn(X=Ua>OF1ees}m&XE5hn{kktjgzE&>z$)zAmJY8&+KqgtG>lriMx8X_jfaCP{{= zx+W$TNxF$imd3hiW`@bh76uk+DW<6~b3F5kOA_;vQ$glbY7+snCV&=nVRStnxz>V8K#&S8ziT}^!pcOrf23Q<{-NVWKK$Eid9;gWs<2y znx(FZd7^=?iKV%ju0^tmfv&l+QDUlzg}I55rGb({O0tz(eo<~>iLFv*Zen_>epW$h zx{?AYysR7pJZ+VX^bDZffSkmVwEUu6TP2^&ywVD&Xh>#mYH&#+DC7*y%*_qWO$`h! zOiV0{O%0(c!cvQhGxPI6MuFETfgNwztAtq56k-Tn(WGl&YGq&mRh*xanN~?iDJU0#5~r0%W^qY=Q6)4-1g924Svi>s z;Phyfm<&qYwo1i`WvMAjP{HJk#Ju#>6k8>Im`Em;sIxG&v@}RGPt`RrHZ<2YF|bJ0 zwMb4e(KWL)PBJqxN;a}Iw1nv|&QB{TPb^AxOi#@#u~l-<%q;+ifPw}%bTwh>$}>_y zL1$oOtZQJTYh(-x17mY5Lqlj7=u^@C#;FErW{KwJx~3_H7P=;u1_rv8hDPSPmMJF5 zW+~>$rWPp%Fn3Yne$c8k3ncgJgNhPJROo|?5TsZF%OMpzb_zCNp&%DG5EESPfyzKT zg;6jX0;3@?8UmvsFd71*Au#en0MWTh%}cRWDp#_%`~Qe(gQv4|d_a)Do2QQ}18AKy z(}JAj++r3728P_clA<7YCxwW}C=Bc#RZN50Y0$R-k9{aYoMj_ z3=EfbL1tmf;}zjeNi9xhU|<9-jCV*bC@NuKU`$|OU@$8$DFCr&FfcHPBxfY1FfcH# zVPIg;DT;`UVqjpr0TNGwu-|~#>0mY!$TE?lkRWFU1}4y+0flrVb`lahIio0-fq}_{ zfq_9KB{wgHfq^Lk!cGCPYe4MWoYG{FfzZ7LJgIr1!60!41_l`hcLq-eUxok%1%@Ps zQie>19EK7GU4~4CJO%}ZVum0FcLpaM`lZ170~ksfk{EIrG8vK?6c}6>@)>d&62bZz zKyd)E7ZJ9_X`l@aAeZnsF)*;+`~Uy5Dgy)iWCn)66aN4Iz3~74zl#_cnC~z!9LPiH z&tJg6VDXiKfq4Q#Ol3X;1Ahwx!?q&`v83q?4BOio7$j~MBo-xt?FQ{(U`k74VEDA0 zfq^%YfkF5J0|QqyB-|JnzGcz*_GcyY-2WVRXD;GOE8wU>;4-YpNH#aYzkN_{AARjlkfS7=w zu!yLrC=b85gqVngkcg-V$Ph+m78X_(R!&w{P7z*iUJ;VP|3eId9L#F0F3gOAh|Lf( z46t1T;1B~5puG@`Z0sEWk1$BXwi7`26M*6lB+bVDAG$7IfLVZnf$@*Y2arzkv8@ua z-aNY(KY}lm`UNswzWnBV2fN3!8IE6$FBf<>tH)hr;un?kGp*fa4)J~TylYpnr16{j zsiw*6in@H;oL~4!-m|MYmd|?Z@vN$nzQo(6@&*}pD;j4sZh0gwli)D(w{lc8jeP#YVaCfjBes}&HgWZ*%%9a9fK?VlqO?8Xn ziqCZ>E_pQj{29N_Uy>b%iv1KFubIdP)O=j<%Xvbwu9;Nt@#FKQO8PqYyq#bsuT|3b zaEhQs+u=&jD~7Xq(oe|yRk+;9G?Zn2);ICf@|pvMopTQt-n2NDyf4*Ax+k@561%{) zIFDl`TxXu99`Q-|Wz5;}t7hk|!p?bfgJ;y)z+CfYF7wmIYxbV@3JiZE{v0`10h55x zvc(f13=nDcTw#U+1AD^b1_lPE6i_@~wR8YUV8w+8kcHW!U;HrrRdaxWLEyL_|A}9q zO-#u0c-hR0$_{>fR{TYHO3g(FhKT|>b}!D=7*_TOsfF-g@QeKP?6RZ>1M`>9mp^@8 zmZqV=>lRR(V3%?sh3!$3S^@t`tMs#SGLsW~7#K|C%ZmEvusJZWzg*t_?AT!j2Ikj| zpVTf3upL_TSb+WB4E~8`5@*w#TuwDuS)4f+_w~9Z>rqgd40E2!{`}Kl_v`OJn|^)v zVas0|d;VNusNJ~cN?k=r-I^3TmAA4%&9h2)*iXnVe$S(RLYl9!FmT78H}dNw`_J<| z{Gu*%C!+ZLJWKUg%P+}Ko%{HepX7!m3;rCCU(Ec7f1{x^U*I((ae1xc{*_kjHd}6` zTBVz8*>H}($145aBs+_Da*}=%PuV%huVDVX_$|+Zmm>1>o4+R171dUr*D)6~ntjgm zlfvH_Pv-N~WLj zQlhJYVaF2rApU6#(moE-jvWjPtWOzUNuEhPu!Mm@H~rEy)VOBM4E*}M{X_%*;!B^J zK&c39I2OVOtWQ`Wri#lSU0MxnJy-?H2{F;8&EH=9y!?69f?p9&q_|cEPTFPIwps&S z6Nt~5UmL&imt@u_JN@U$J&cu(Up9UYv0G=EuC%Yq>iFRcf8`A2B}3%X<>LzbTg*z% z&5Pc?UN2tn&)($R67J%ch)*XI7qG8(W!r?q`_KhQCo3?$1l?!}=6I zmO9?*)6Gz;aM&PV3=SfYzmTx%-oNgz|1*>y{`39m#4q;C|F)m1GyeIv<|p?lzMUu7 z<1D{AuK88*v+G2yPQIPj3cG#J_s%W$@3(n5+cNLoj_=ccR?XsNoAEfb-EXJmzSpub zuX;6&j&;4*>{rh6{My}T@2an^iJe<~E;VCq&*rtFXM48p+LGF|!s=>ZX2T+VyVGCn zh2PkdYR*A{Bz9bI`t>F7RsZCiY{~=10E$C2PO+m!5zB^Pg{i$?O08&v5#0`TWz@ z?HC@(C$ITi^t1Q!<$3pP?dq5OdF6QR%8Sz%%q6uXt{;i%ySDj@*7k7Cb1(NzEB^T| zw`$VuFOtfp+C4X4`~A#2`%@=->I!T1OC?8TtV3^4510CBb5C!#pQJKApke6x8XuR~*F0{FeXd5#=>ps8b{=CDJ6p)tWmDaz%;Oiu>J#D_)) zJiZ*O;6BU3liJ?e!Z|^kVZ(O~C<40{%UcEtKPFfhK27D12Sy1k$GrCz9A2bHDlKm8)9TnqLvG=8H!s zrJCjxui!N_UX*4$PhhpuW6vqVno2%0T?`REm!;3TYc%$)VqG3)B5xh6V?d-O>E;UUlex=ekC1v#@QH_^#CVLis{sPiJv9Ko3ROS$y*AlV05j%eVnpn8a zMj@hT1*f<;$Jqd@z|d%!R|h3}pA{=!e}DMarZq{tzH=h){hN8evS81@dHdI&o_zjA zyU&i-XU~=MySwSEOr7lK0x}mnmi>9Y+=efnn0Q!ZD9dc%-r$kkTNjt_-> z!s8|>O1?s_`BCj*{LB7fpZG;kEX?}rzx3z*%fD<_Y&lk(y8i#JMo z_dG34$u^eqa@_J*nyXjcX66NjqScxg)TR69tY~0db5mr_tC<&i8@^mB%AUc^`*F#` z3me`XO`AMD=Ej;^0ZDfK*PnjYTfe!*W^eA>^UY7cme>#^i)=zMS4 z;76}(($z}*M8hJoyH>sUuxi)GhA$G`+AdW-r!tMNb%;u6A37WpQM5{dA)<8AX5Ns9 z5~WRQn^}`Una4MPd-3H+-=fEgJ5Gf$Fo?Z2O~>sBuw(ca&H48Ez_ZfV(knn2fq@fV z$bc$zMk5Ac1#knC&3;bHM)-cZo(+kQU8f#Fh4*SS)U7gCQeHD{hO2$*=m#9geV zZwI!x*@YYIzu zud1pFclTMr6DvTSek@^uER>}d6p(Y?_Ra^(+Nxu(V1W)*0g3_!A6OvnJSKKJ=nnf-X_(G^e=Fet0IUEjm*IQ#M+i@z(^6Al| zs%?`EA68De5tL&*vx_nDx<#nPotmdE47_P4mOKwR*OFta5?ADx3e7<8k0~AQ4c2D6 zwc+Nps8xz<4qIKT4(KY`k*d|=lDTwVUU?|4qMXUCNi?Lq%Zo4ZSNNHq^Wz_Vb~=A< z-~5X|<6q&hd^ULH_HL>|UPtJ87T6LPYFf^k>n&*MUs~e#onRe~7QFHn5WukA2 z>CtwrMGUO%QQ8JqUE7_sHP?P@+Q@V$ZN;(`>>f)tS#IT6@ItbSd+V&?1-5Fjk&99K zNf@EVz<1~Q_Id2a>m%+ufID5FJOWk)=0S>NP~@pOFr;F%ZKndhHg zp8M=eNuS8QYOn^}#J|oT@!Y$gKK8Av{c1P;`F{rg7k_OMEVe2m*C}h#HP&u?n0RV! zi?XLt(IOFvs!V*q49i*L?9=Vm0!Yf7z?P`4*SmGnM&;^0J!RoNlkI6VI=B z`>jdPVQ*S2E-u|CSeQBE%Z`bYwz;Zw_l3s9i_FkqFq3-3X0_y=p8_{uD5KKnl++a> zv$_}UTJrRm@ro3K`QdLre%|?Ycf@C_wtVl4&kr8ID06Q4;&$ul6~%kj#a8=z>p6Z2 zxAWDSR-s#KQ!_CZ<}wVLJ*WXuqeEmt83k0=gCdD@0w`KEdeS~y&bfM7DlaMXTIHTy zZ(pD4$;-_5dG`GB>g(<7?TcR&uDRN!yDB*}AUvw*$pwfxSV-Ql-)#10pW3h7e)++f z-{PxhJ^#GUOqM-Xn`P3ob6!5VdB43SZ9~D^D_<**s~>$OCfeZhOFcPK;>Grfb8`#t?CgmMW6-gFcXLv9 zRKaqc;~_^}`*Z^qXF`O`uNTk1*SGQL z^&>MEmRThiH=6CzjkwBlXCu4eDV4s-%N?&zd1`EICH3XQPPdeo=B>TCpYCiov(?L< zb@WJ|yT4iAjQ#5*1AD*N%GJbJUw!uFnWt!j&kOU7yCz*dGue2vv&qr~ro&5Kv$^<% z994HYlVmsf=Hu^HnM>z|>+Rb0*zMzLo?kidPs_Jo{Pbt9e6UQ}HkYrH{mT8G>&T^j z1dX3UT!~Kd?PX9SoXL6=7(6;yRvEA_Z(wr4SHQEE?b|&4ZRPeSg;h0@vfs039XT$0 zy1M%IrR##H*SwxNFMC?b#H7E{`&kdKdR-iIP2t?NA9~;>hf2&mN6fJN zBBaEq{35P#X7Af)>E1Ezdf7rs3@YV!SNMl*`FZm690t3~FMjA8o_v0N_{BqeUd4R< z9OoZjZN0x@&UJ}bn`hgae|>Bx`}5Y3t@HCXecErj1KrmMKHuB2&EFTDmyhRjPrNo+ zc`oOLeCIH|kiBU;?tC_O%8Wa_k4--hR$~r@K$g zuTsP7DcjPG{LROK(>yh6Bf{HPc;zkH?$Vzl=QG*lirA}( z#+PphtY@$&>^P3>7Up044{P)nfBLv=zv-{}-km#>h3wh%O-VGWU@sFgVfoH%5y_yB|hx=aHZxcV`AYx z<2kQ3yp&2>#4d0qU&Cl_z5l$(jn`s!Sv~u5{&aci^XBPs^Q>O4Hk|Ko9(LMLV3Niz z{b}5bFHLQ%HnQyx6MguKYi-wExp_BVKDP6mm!+NSF~hdsBfLQ-<3tK_XM*w9`Ln2X z*{07S$?N$S^{xC^x=k%O?6_6SxjpF$X=??ISdT9=t~|ebk?Qdle$Q!BnP-PfaV5`p zVBB$CRASZU5}yV=OA*%AwinAbPo2y0p|SFa(OhH6Ikzv*v#Zs=SNu5qwcX6mt4-&Z zDxNM}z}9SmNLiSyUz+fqlGT5P@-H{-%1<1B`~lqXgQ~`8gD{(^PS?{Y$i+Q%o63&Byz( z=R&6Ca=n&bw;zuJCf@Hkny$C;xW%1RZEUVU6_ejsbARSnJAD(KANI??)Op{0v*#E8 z-d{D$v1WDEpXM4rew`8(9OiDf$m6Pz=Guuun+|Z!cy;5;L?ebq&q?<_B^!#1A64UG z;BDK{*tb&854 z{m-uYUh>{{6rH$LrER?hpKR{!Zvm{lj1SXRj4xzSQ-6 zn)K;KsjkNk3kEVLdKN~Q&vC9?vVv)oS{6z+8jsufA57{HiVg{x$mc{;f|=Fml&| z;|NU1rEQ(M6x3W{U|?JM`1z-F_5Oq1hd&or?%AinfZS876@P7?|9Su9KMvwmwxORM z$|P{&>$kPMknG}(wS4yc@+FndZ1c^NZ5fzDBj5e9{<}XofA`C%^OLTo+SQ3Z@AKDh z>(`%d&#xP^16$jW>E7O@>t@^T`@8S{(&ZOl&HI)5slu-QL0yz(L%qu%{nopnLfH;f zDF0_z{-xS5v;O{Hv-Owij-BuS`Bzw`p8x#SmtPZp+H;#XKL-zutcgoj<5{+dZ4wK2 z&(UMba~&8|N|X~ljXNC}m)xnA&}v>PcWuU!OEq5^l>?1W91gPn*t287&(E4$s%rD& z_pe<)J6)gc`*b#|_xJVtKUCK>-+lJt>s$M!zvSZmw|+5SJ~3{yd;9b7&vvzP@e?P@ zmfZ1<`C;+?7|vQ(>Tlfrg@5H=8~&&(KmUjSbU#M>x8$+^oxgni_Or#${P@q{DT^oy zqDqq`UmCeDP0@OBCML^hqR}-62A1yb?njeZ8Q2cTI2;d|ed1Wtq{CAkJZ?magu13J z+VtZ>%|rW@-}Wtk_iyslCm)Oc<)66z=6lAMsyEmDC7JHcUAk|+?a%)VryhQ&x%r%F z0fUJ&;{#ikMgayJ1qM9^K~R0|&%${@(5BI<(?f;dk;%2eNa4Z$M5}{KYsmq;(66pUU1b9PHyPL$>U$F_O-v>@td~2;ZzpS^ty|v>0(peKMpD*366dWgNtemz@cxL9T4=X0_j{Kz6uXL7yn%M$Nk37 zTG_tpANRv$ZQhv957*m#`eoyG>oD!QD}jM+&As)uzfDiQ?wNHwyFaMp zXUWMuUpB6@kE^k}bKq^^>$^{{KeDY0u$z7U)~w@uihd=BU--B3=kW*js=JLX=e#I+ zUYI&B)aH%xTHn;JRd3VR_ZEG*DA%0W!X`O;0z?Mr(=KVEp0Zu^%21X@tbDe>K z0mNfaaRK)SJUSRAzK;)2eqZ<9eDbFqcIn4!`R~@ufBK(6hT+ZT+u4`Om5(ef{(L(q z)aaS7TF<#>x=JapShRL5*|DdQEmcg;G*BtUUoX+rQ!u#OL*&kVX%5rSed;|&*DF=U z>iBakoE+3BHSz5!o9s)452fd;E!Y_K-XQD6C6|vA7Q1#nnA~@s?*;#h`K=#z?~60J z{``LM%ewk6|N7H(jbu)}KlZsX{0OJyYeuEVo2C0S)CymKGo+ANl|}4jfuo(u_hJ(g zo?pl`k$K>8qhzt9fzP?(EO&=p7GG4#k|yu|^`GJHpXW#Z+{@dye$J2k^B8K)c7FN1 z>Qtu?Z@A7@+w{{b9{pUA6n5I`OU!Q}rK{dazVrQ)5Ak|T3(1@uxp!^kJ^_dIE@%4l z_9*IH@;TCag)8gCCAGb$4@o^!Eq(dsY;Jn?<=f{^bw#K3lzd>mwPw{5a96;qp@#=o_<%>WdGeS z{-(dIPi~*iBQO5>O1Q~`n)zJ}Z;kIMgjIQ%N=8lE*>ip7T93_I^Ga+}Jh}rSRc?Oy zrsTNZGu3bA*4eWz&ldS0cfsdGEQj~2i1WSS0b08Hg75NYZ73Gn_2paIwv`!Y)+NWO zcGs0YWbj%LUi{$Pl1PV2!Jz86Bj-!!1%96FQ2v~_fjHyv%fDscU#MIC)L#0}@5Nv3 z&K0+Qs?%WJy5?K)%8;9}m9tz<^p)z`US$2KbY|J!v(uKmOLAg*QFYcWb5$32Z|Q@6 ze!U$1485AJTOT?Tb1N#R_)E@At#Di@=D2d&8X=ylee)QqQfD2UZFJV#Wb3R`n^)hw zp5B!ymv%hJ+^Bo=s;_G}KYhbD`u*&+i^G>iJD;{5_tG<%t2`+*5}d-A4u>ypy<5mv z;u*8c;rZtmrnC4G)UvH6w#-z%)I2jx`f=uzCs*6kbbs5|y^Gly6;iOz|0qMr`30)M z>8F=vIV)LS*^>E2WS-Hi?`Bc+?)-4G$ud>GmYr=A78H}QUV-Dzjfg9)XVMl`a86#x z)82DtuFFS|kHqvl#cTo?zMM5}H#_Ui`7-59-pW(YN&`%vxSOt&p6Pn?YE|K_2QiHp zT_mL8zTD0!S2vzp_^@!9l24;AWKj?|w^efa^0PeeB>g=;yz05}a?YJ-nNz}M(_B@r z&bTi+*jD`0$eqp@shvZ809@nO?gX4Ra=uJwHfKZ`Ih zCtm9EI+vTH6r}`e#qGE)nZ>H^rQo*3b^f})=MVpL|8RisBh3z zhYuf1x$@cb?Ge?rtGQ21v=LWI5VT=QxLD&Ob^cs>;6maDV)z&QwSQCR|DZ0}e)cK$ zi?8QPo@6-86iriE}V%TaUp=eX-Emb%S##`12l zMNVOJW?M$W3#9vV{)K-1xBR)i|BJsOK?Pce_sc57OQiNVEfa}zji0aH?VN848s1?{ zykO?4a!!FEyfc5z9H<$QNHr|1&uLnm_f=_Q#<5 z+qOCA^355hLV?DI#0?coBt2(d_@;10gLB%vD?4wM8jDN4%hpgfeQ0zn;fk22Ri{{u zV%YRl!IFMSxr+-mz6dN}5K3eYf>#-|l>4;>(9p6O-)(vo1Ru zXl1#tndSX#iKNL{ITeo!UvqROAKLmo;7pRP$IOS(X47NC0_U8VR&r@qr*BNw=|kp5 zs-+T5laD2Zd2C$od4=oKWaAB+Iz&xub@a70RQzs;xSxt(k0WAq+}Oo--uq>L&EMGB zf85{n(Ms@k`lWJ5AzK^eAhnYVjh-bqu6H)d)XDic^-8gajbhxS_@En|tdVL-S2*RG zkEKPHGVN*KS-E^_WNb|4DfQ`gTeW%|Js*nI@cMLeeQ1l@Y{l_$Rijes5iWnv+bqxK z1eDvIzyJO5AO1B@f5+wil!=?q=6=IA=DPj-!ikqkFKzG-HF2Z8+(wzx|^R>T)rZWH~4(m^w)EB)8Z08Zv$7m3=CHC&aeLJ zzp_t1{>S}u-L<+ek&j1=s(p%Q~i z$=!q#A0GM?H|EFP5C66PcI4^PXa4+Wc(&>1o)8yqo@0kLrFe2J*Ds%2an+>b!iAu8 zla6%@d~T$u2b?}7s8&%G<#SSa$-YRV6eSZIwV)WDw#~P;86Vy1X>6NucGbyg$GD)= zn#`9seyex9_$xmAX}#u;b$_1kp2x0F%nVteB;U%8Qzf-?_w~Q6n;gFRVt0S^bhET(Zv< zVpc>%d2)Y51A}zmnly!?*PG>L`Za!@!m#0{w9j&*HCBR4Bv8P5U(0iI z@6Z4At7>z2*uH&TdEcsQUwq!bIKJMOoB7VEUp_akT0snDO#5|y*#XAVH}kv}E3hm~ zV31ngKL42O-ddpx3}?UlE0)as*1*8P@O9PBk7u8L{A`zh^z_qD4D7G%&7alQcc109 zxB6A@{-k!^xjBgoAASkEY8SIaHh5Obs*|%8xjxf60Xt16&x(dHcK8DMK;Ys0{N8MFH@{{0JMxSrq{h+!ZSd8i3A9EEpq z$?<~GjQ$nhE53hy%5NXNyZFa{2KMbQ(!Pn@d46nbSkUX)o7efxewLYCdn%u2(zVox zo$sH21zCa>V;>EEbfxc4zFpp~z~ifYj|sURcQTXcbu)Gh%oIvZ;pUKHGzT=1p6=xCWyOB(il=Nx*AmY8 zyx*PTrMA3i<)P<(rIS|brp;dabLaMRHoMNRw|E@6>eQu*jMKW_k>~p+ra#Mody9bq zWeAvHzH9+cbuhks0L%33%RxmAvUyN8o<{zhLz7ev9$zUgJL6PvRPvH^qlu;ybPOk$ zOqcYWGRx;#^X19093LKCVBl4IvFF*f;03Y5dI}kKX)S$?7Hgh|^i9dt)Uc~Lm2WK3 zzx3(QH)D`!jJzuj8#dU?#w8tbd)*FCyDkF8u9>;@bJtl?~;^XK); zzw#47rKX$JhhG}6=IaIVtvqWKnsPQ!>9c4OM8A%X`Ek1y3=DauN8Pm6T&wW2UA+sygpAGzA<_T_ngwMq;O8$|I06Z4DZ zwtGHU&aEQ6u8P?tAXmds-uv~ZFVzJ<|1*ehUi;>A#`Bt&^UP;oyz}MfpPdgY{?6L@ z_00^03e$Ph_2%?Ge}+=@Kzsuuv5fp(KE~V~Wc_i^&s{Iw-aQ4JU1oUGXH$fPrmtiObWFzB#-Njm(`+ZYN&K+dH`@DO44{mMQK% z76e)J!5oRvD1teGfq?RUwKjqm@yz|t;6Ly0 z=b!i0H@{dET5?W$on0QGMNY2*m{JI5lAe3%#?xL~TP3s0?dE0Sd1@GnPj;5bmaGx-p4q$hM}bU^Ufk`yJ}YaRqpG(cUaq0 zuXU!dv`n}H1Jj{e%ddOqc^U57ymxNJc|ZUDtJC`f6C+s8FDf&g*wvFE5Go?Om!SQjyM>CzHW-K>*x2aEh<7%(PwZ(i>Qts6pTfZ{Qz)2xK zDtWfl>s!lg%;z1m)j56ZOlHs2D_vV=oNb-lbM>KZn#KKDM?Z%h<632my5fj&-|jj8 zzLfUq?Nd2-dR?*hT+QlQu{Bw3c@fPso(etN?YC!}uB}R1dT_F|)U8G#*X~1w3=BH9 z_pP^^et$TBdSuM8%(>T(uM63*hAG`~Z|{|9>r!UUoh7+cn?X!gJ=!*IrJKKb|5QWI zi^dXt&)1*b^=MtK;q7bhkGmD0&7b)2YxdI_vBTx2T-s3L4QF$}>YQLS&p5Awl z3x6E5xopa_&*j}8_evdG^Lpmenc0^ReAYua|M=lH119^8JTA2 zT)JlFInWkEq&TzdD!zT5dFJ&sc?-ZZ)oQSe1m>}vfUQOqRw(<=;QZ@c`N<#Vzy9v& zpZW3U9nj`9mJU359%K)eTCHxLflSoI`@PT4UiY&2>bc{P$Bq|nhXq$0%h1wQ@>$cE z$n2mNlWab-XKKS+ccqOD3?{P|f!1g9UYzh!f;asfY_aK`+`s8>f9{|B$8G=hf1jV& zEB>%6VE8Rx-ahm6_VoQ6nR-^wwqJYyZ1Z#<-OPKQpYG|Whpr3f{rnx|EL@oRoBr(2 zcFT`GYn{*j(CUYBf!IoRYluV_@cqg-VY;Z8oqH-2LT0!-iL7U#h?U`_FKo z-u_?sndc2w^}%m)zSZ)~v**~ofAQMaZ`);=41fG9DP~|6?|ydi@Ht%01c?)0&)H4> zI)D35|C4pf0<3eb{+eI9SNr?>m#6-Am3!)JHrLwyk-UBR%jdK2zZ9H){HA1=&prQ{ z^7@wdDxUlPI;~~$&Dd@3Gl@HIjxNvVkv{jQWa*shbAR$@r!7t?=6;Q};KkBdeG^l2 zHlqCTlA4d1=hjV0Skv12+)FLUXQHs-Y4FM%F)`U2kFO~(usvQa*&(y*&GBWy3u>M+ z=$N@();zPC?@yAB$-mX#<{SQuKl+40*6z-t%xg7ke;t>fA9-x;=hgE*ul;L0z1{Qd z*H1?md^TI_Iq9_BWWmLe%cZ}a);_a%$)-=+!Zc?+d!AYq*|Oy^EQx~x5r#3BD7-u- zB`5DH8~pT?<5kOLUTbDv>N&n_v*oM>>0mwhdV85_krGz<{+E8s=uiI0AYD~_es0E< zv*)^QZF_#^otev?&cK%z>sq?Kzy@I_YDI`%;u^g7^Uep1U*_%Ci>rR|^~vSsm#3fq zX=`cm%Ua#*`TX9{#kyj;&!4@$m#o*8IQQ<#SRNTzNeLnDNfz853 zv;F5SVCkDu!jl#(Tk^<#nbqUt77Pr!*AnNtfcm~T+rS{x7;smWKQ~P%0s|nsy;Nc#Id8*t0mG|mmu|F1%B*7W*l}A#G?ew|gAb36TQJndZ$5tVc-*$1 z&QksE-ZhpsyI;QUEV#2bX5){)QdXaK2lqdFyLz4Kwv%1o&Yv#JwwWjUe)i3?I;B5r zAAsG2h2SG$j76e>_19U;Yjca`UY%HNR&{>nmD1T>o7euWEVd}WdVT7xbH^$zUdy~< z>3AM4=N5&qEq4%od^3bQXS7f|y7ueMvIt5m$|@J3N#i>)y!46=QH43n$3_sqC^E&F9(zTURi zR(Tn^TFXq$va{99FP>Wjx^EBc3M>Twg+Fn2+w}tM$}hh7IX`^)s-S>$yOtO8b#iny z*^JniJxXz$aVID)RmT!EJ1jR{im&ki14E`2%Q;KtMIjjq5k(HRCQ=?EGtWM6o80Gc ziox3UN5Z*ZQP1l(d%fPQay96jX~{9W>g851zdz*3k}BGBulJZwJ};iCN8Y9OW6KZY zNws2|&ma4_jX_sS*Y;Z3x*Xpdroi)=o-#_*v%;#7+ z$FyvdExY;qc{Y9exNm)4&3f}FlVsm#pUp}xCv#ojb6%(Np3Dnw@2`6*5Bv5_ z+K{{JQ8CWUgcMly|Bo=33NSFTFflT-Ffy^SGB7hTg02N*Vqp~)5fl<-6HqWTQcO@* zF>rKJQZ;r6U>7rSHY@mli-CiYk%5tw>DPaTe^cG|8$H~s#yKNoO$0yN<@3$y{SyyO znyBh@CMRNL(jqmh8|eoXIFm2$IFLN6cV-x`w3+*(st0c_ZuY(t5x%+YWWq^*)x#S; zAARJUGBZaYGx|`%>FIlu=62;LP3`K*_nS~R$9`EKk2>G+TpP*dH6}R`^4qw@pKV%v zYP1;LCc#y!4II}e{%o>Wu1O=IJBzK!?h@1DFt zr*`p_eRDV5*rUd@FSkI~Qd+R~asQWZR)2ZwxFsiU)?p}%{c^Nx-omXfJsD=!*ms)h z``_58empwKSw3UKTxq3^Hnj^Q+UySBJNv70qv@x4bNdVy9*Q&6OIRPgzx&JI?wjFX z4)6(A`3RdYuQk>AW3X?IUfwqC%STQn`@Wp%t~>F|;VXyPFQrVC+M(wcFmK-RD{K7y zlV63+v%B#6>X&&RuN>%onexH?_?@E(-SwuuM}A5;U-I+0|DPd7X?f?ytZ(sx{m1HW zFAob}Cw)lm4asZ9IKx>!z&_b#y-#ynMpslfQa-$c0Z5A=Ni#wqLZAmz{AS z=5GHqzqxykMO;0ewajTl{ZD4Tsu?r=Ris4sMo*l$>hjsp<<0*Y-k82&SjK1LyxmD| z;l!QuW-ZK@WBAFV^=0d=g(xmXT}SNf_MUmT^T&O^i#+ct`;8;6uS`qNR^k>ba9?Tg_+WO}&eV;ZTduEZiHoxP>oV|q)80RkLn&HhX zCVshH%s`^@NZqWHRg3lqr5|=y6MCFgwOIOY+*g~wUSDUc$4zsH?6kC$_>i)+s(;c~ z&XrFLZ|>gODRaz4DEvL!_LYT|RViO>j1^BM|7VzXxT2$gp0CmZM^j%N zzFhJ-H1omPR|d0Ye>5!LEVslq%d$U6ZmYnJW zC;c@$9sZx;<-ZlDuiI%oOPalZwNA`t`Cm8I%bz&)BhG%C)|HG@^?3)`>VDi04>=mJ zaee(iH*GZ^+y4x|=lRUjbeJUa&3p6X-c!@X|JqJ^^KarNH(UN2dseOsxvrHx)%4V? zr@lqYb_T~#AQ0xLW1YF~R`#}8Zm>%Wg&QwGM@+7;b$mC6kYJA1^;weR(wri@& zZ^zQe_mkYHQz@<1D;b*EhI)Vi;}w)a@?>f}uUEh>?-IvxHq=$MJL@0@vPg1G3c zwq^ewuW;IMSXuLm#{D}p_7qFqv+G#-cXcVZ%ZpNv2(|8$KKc9&tbEtkU2fXgwK56iM%qo{{s(hxC-Ok=Vw$AD`$6J}Rr^1fp@Y!8u zOzJX>S{b-HLh}%#@2XSARUcSRhS~jF{NePsQ|+<>^VznbO4MJKX;u(Oy}cxPR}dbi+1C!I>&Dxy{w zU;cM<$E5!Z%Rfw1<@dj+$eIx>nrYmiPv6kt9tb_%S-YZPq2sc#%LU>^oy={0-Hy4% zEidfrle^F9c2_plLdlz*vHj0{qnYd(ayMt+DQ(-kH)PJy6l30OrAt>IIr`mCjVnwI z2;I9^c$z`ZuiHAwkqZo`J=dET`0(ycrO=$1J2JcO6v!2=JH^gheV6UWe}-&!WqD2G ziZ@|9;?^sqh$M1$2`yK4Q!d=u#LVxXJa2(VTDK&_-1W0gZcA1)e>eAbsK2)GO6{`J zo9$kO`hR~Ny_ot;yM6Z*md`tdIQr}l3jb&La&OwV&+%{EzuNu2X+6*Dv-Q!l6SpVk zOxxkT@q(|_lkbwt?x-msWBZeR0+r0X(-`jfVa#)_&^DpK8?%SvA zI8r@LMMT+$U)YcN=YdI5GnbnEXE@Qb%gBCp(KW{GtCi7P|H*!Gl7J)er+SH%X!r%bPzB5@St>~FgB zZ1Y3EZ8i9pq1f7Rr!dbn!{PFJxsw4Z^3j>C7AGZiSrRkm|JxJ!yL+qqZT5&T9fw6{gTEaLT%}dXwQ;M9{AY#w!;f8=Zi%={ z@BcS3`Fq&Zti|1r5}xl3Gu^w2agEpx?Wp-oR<(N)ZfV(C&ljKm&adK z=0-QTrv{(6{wVeH+p-n*&qChv_{#hgTz}x>cD1>EE?fPcJloSbas7L#b(LZIDz*Ro zqC@1j@#{|Jk#N6$F8HLU9Uy&ip9T7 zy{5e;JYw0~QZT)4V{8&wPUP;ozYvxvsst8paM|v!U9V9k>aNv+jjCUIJpyhhNJ((n zE~wJ=U%r4@VOD{?cUBwZx;I`;d^z4dY2^uRl#uiDp}xw7J^( zBd@ervc?{jg`8q3(rtB@MHUMFb7a)Dd>-yr`LP6 zY&+MZ)+E1;t0wK=kS*}>hm(=Yn?T*LsI&(&p7J*^TB~jJ*qZ!aV$VLY!ZI!AU%Xu# zzMimTOO~EiFLBYN@$I(`$=3f2pAGLH5f7Z0(#*cqz~WYY&wJJwvEP^4J@`Kz+g_5W zk(GR8*SI(GMm3lH~N{gJ3MNtHNYEWL8liZvHzxO}jXm&#V^sthhab$%D~pN*R) zNvw9Nc0TI=pFz~>sfBlUrd?9woEuSlr>z&Sey9|-JVtz7aXZkygn*Y z$!~RX#39i|b#>Quu3CC{{n^1~C{t1OEb3GDN6Si0r?9`Xav#ZDZHf@u7;|*3;UwjZ zr%}4;x7KIAJQq@WqI%Xx2ElnZ+GRGl2h9JOaOBQbe&NE3)jj=AMn-MH+RW?~=4yHoNq#1)&Q029WGmE^XQwI7bM8)% zo~F1+cbDr?rAHGBJ$5XK!6RUBK4A~4^w#oJqhN%Y6{xR4&jlvC>KYhU|V3K^Y{N&Rv7Gw0H{l-)*dk&{l!tKVk0|9I+q&x@T~ z=AHi~eOh$c_2dJAza-}bhJ7g}ZBr;EfcQ-N@ zWWbEuyTJw}qL{dKQ^(D0h-KM%cOmv@Zue-p#AvjkH=wJqH?3krTyn9L?~P!`=eBtf z7LU_ceEHh*pCR>fS9TzFW%@c@Y<{NiCiIDk?ut8rKKem$vShr+drJWbQtN^_q{mRCFv; zjx}@KyC6N|p2ghv{gc^mFbZl1t(4{xRr+#oew6r&7J=`n9!eXc7-gHKq|WT$VE93o z>&DN>=46$BN7BpQO!}vMe3SPOfL^(p=ONBqGD~(+EELAgKXrx8C^E-ofzLF)>?=PF zo)&pYa=J?0`yp|za?|0I<9(4j5A=dtJ9!FEOkDcp$&slq{TR1hSig0y&F&LIJ9wY^ z%zAP|_=HEFaf{IN(~(B8i|6j`+_bdQxyW$&Uyr{n=Qz(jIVqWXS|z97gYCP_o|{%W z-zMK)@A)%m%dI;Vc887o6i?n*Z+7xl!m*FaQOBIz^UEBK8zyX&SQ&N0eR{-yhQ#|5 zjz~}DX8Y5$T<_QYl##3r7H72{>*>u_n)D}KKVLpcmAVI z+DB6Y&DiqXUv9j1JX+SF?>(5#DTPu@_I1ajW#L??C>F}0|2~@Nl@ot|gLGaN{DrC? z$&%k@RySTJukGvmo3P`qAnVO{QlB?|YFOs}oww*lt;*X=ZgVnjPO(^4aB6M`OUWCl z+=z33H@*4W{~~RA%e;s)!q0gHt3EHEG5tE5uJ9Gsg8KrD8nq8KKAoL%{CuO|j_3YI zCO*~4b`aM*HF3@3rx985a|KLSI~`}wX^b)W@LuV->_w*)Z`KRBrK^O>h~~x)2-N?wb?Cn!Q!tmOuE@W{>i9%)Yz=EGYR=v(E9s9gX&xUT?~S!yppr* z?mrBgkkj^6&nBMROmUS5qxl2zj2XsLlkHzdGW++eD-2)D*;an%>Y-MvRkOp2oeZa# zU7!4)fw@yTd~Wy0x6>?tx0x?v-21^W*Ty%>xI0Gi^~ZNvI~C`c%DrUrsee;XbXCy! zMA2Wv)85X{IKJ5F>JN`VZKL*Q%%^sy)=Uz}eJz~QeNX#|NP6}f=BYO_?^jwHNrx2q zbyZ5*p4|Co=I_UoRa|9`uA8viaLcEbNvbc!+)m9ntFuxralfL^<|IG)8T<;u^KIpP z)@0g8)};RuxS1>|t*C4*I@A3{TA@>=rXbgs)rZbL-^hM?n#;!2H`RyVs1*o_m$p}z zd&MUIW42G|O+2$_ro{Q880R{UAnRjAQHk~<(paG*4( zoJJJzSPF53B(l;|%z1AiMK@e@8MLODfhNAlEDB;-)a~uy>fqX`(bbXdCg3dSGfSn-8Dj^${Vdrm=|*z03kUOD8(D@a`5{@eOu zu0F5L#u@78q?Eqy_t)A{m@#jKcH56bl17Jvo=U4a#Yi>Cy!x?n&wSY%(xIvW+cLa% zT&a7>xaOuT!`lfA5*0UgHLzwC9zA=~%30LmajLS^jMwK%7z~*jZk_Lazt+aTwCl%< z-8a^Aux=EX@+0(yzXS8sSyrk^OB}8YizEUw^4c9Wk)h_AN?3gxI2(C}QIaQ(SV0u8V_wC;-33C%3FG;jB z%QS@yHx$g7@P=Du z%@dVw`yFE@;L z8ZDUl`utp5JD1rhe^WpHXE1u|6B7N&cw^+=wse{F2~(~s{^rbmHebW@)WLg4_ReHE z$K-TBVf*$-?=|(?o?qmi+{~?P=qq@4_Fx+wBFa5p3O2L*6aCnP-cMS`Eq4ECN_f|a zML9fo`Y$K1?b~M6D0?4FgNx>ERySU;)cx(-1}UlWQ;qWbQFOjeUODmiH;~R{%3ol{ zfeL&SOTIzt2hU%J`Tgd;jPEVHVewF^_)yuoh=)5|J2Q?XxBd|y*O!+(sWS< zZHW~^X9^EhGObCRB=dVklAN)LHE-18zN^WXx`R(R7=|}peOGtrs7Y$URF+_O0dqeN zu7CRCeigR`d-%;V9jhdlK2)D(%<}WFOWdB9&s4u2>~{Ie7-N2f!Ariv%Vu+`;pYdz z>ntySRH^iqy1;s>Xi2uk&oHU>=PtZi7d9Tetq{&*6C=W)UEHUZ7kNP@-pb4&d&Y8M>im1;LL!b%Ie&e(8~cP-n}sTW zep;NZJbP|;=0Dft=vT2H5b@^IX~CeG(>-22zj8XpbU8!Gus>E=k8$D-TYl)X7S z=CQ$_nPt~bOxp7E$RmF>PtQ$8NoKw`mrt6g_*CbGoKIsau*+3fsD_f_|Ko^q@3nH<>plwId0Sirkx+E3k2 z(NDIY986q~LDR?4*1e=y*4b; zPi?Nd{3Y7^u)j_k=jXPLz4@0Nkw9Cm%mMMZ@#qBab5=uF1(rywo%D zi5GE^YPypX^Ca_;FXst?#2*LWJ^adJ7~6kn(s3p+-F+I9WV?8T?k_s}mTK0hMGEfE{#CCXAaOEvqfnz!gys6+Cx@q=RJt)SE&7tO$C{T<@7kF8R6Lz@ zj_IjI#DwEAolhsijA13{tD)i*keW^!i+H+4_oAYU=_0;tX4ktQW$V{$X5V0oSXp7-n)p!|g?PL70uWYxy z30e32L1r!KV8_ zdn<5_NS3^T)-u*#+aV1T?FnviZihaxWlAe+UNwB4lt0P(M0tTIcO3)?iC z#nR$rvaV{prlH~5okySQ>`^ahiHo|_`}wHYv5Uf*DVzWHM{PL7-PrP4v(}$ee7)7w zv{UjWFKkZ;^Lglt_^KT*a}nW85;!C=X?gb(N9WJS+0?f`@_Dqqzp80*+r}E@LpKal zn>6l4T)ZyxQJOnlO03~U?@1j`WwXP+7dG}bI%iDxC!7U#@@+|LfPI{Y^q|DEA zLFJ=M(M{H>Rp(?x@9day)q?38r%lZ)!{d{Jv*uoyU3MzsQF);?^IQA#_v|BXnZ99} zaqP`JEhqOwLSdY(8tPi2w-qO?m6|SM_fP&|RD&m1#L9c^J#R(-q^wY`6U=)qp{(NJ zzAB!Vfv+ANf~Z4Z39VN=Qtqb*7i7uc2wO&8*%|@t(Yshn%O2oEK)8`jks$ zBENq>+q!U(7dK>PO>J*Z*7<&_=hoSVBSL?Bv>Ru9vXo2TvadHSedeYjla#WOPd5^y zCOGqKOtv?2)A>}S(O9Rn@|n-MpP8liPVe8dwO?!5r=xFnm#t*^?sljz;$rjNmz+;I zJg=Rav>|@+3rKJT{WE8e z^{i8LI`&+QHGtI4wewvWwlR8N56s%_72=sLsc`()#osG5W?WdTIl0B%ZKc*{Rre-|R>c{~ z3BSGHKkQw?+*Wbz%{(I~_rrc+>g@{YS_;`exjwGUH9!74Y=M%~JiYM5$Gct2rM0xK zUq39&*teN2aIK4ML}*0ki>tlS4O6s|j|#_ktez8RP%t^5*{8I69lxC3^W*)lt8}x@ z&YJM}Nk$i!iSm5|2IiCD91nl1gtZ#p-+%ghTTp@f?mcBXUPo>Q@6|GH3ku9k<2LsC zcI0NzhCf?=zq$KlC(q@;-)oaXeV?7Y_k6vo%}TXBH+MN}YH&=y^T96o$Ng*lH+&aN zIN?#$`|^;1NzD1eqWWg*T+4TPUGen{v6tixGQA=#h3pc}Ev%2qnX;38$2UQq%f27~ z9XcVPxV~cQl>AAiZ{p^*X21Tm#`0vd5X&aXbX}GxjxB;2N*7$0bbE?T(p8D_*fJ5q z^|{uBkX_L22$qE^261Pu4TdQOaiNNBR8BAc&+u@NjqF(Ds8()NbHAnP)T7g8qV~qe z<7UOBY&COdcR|g_j~jcGJ9L(0MJ47z|1+5UXORD+?`*P1<}?jh%t=pK7@E_XoB zshRmHNA9*Cht!UFUTv^Vc7N62RCz%lN5<48E8lyay`qEZ!}t8V9^SSL>YuVn@JRL_ z?ch$vZ24pBWukX@_9!IeAJV_|*X^CB>w?BsxE)uDYQ5bArvyJvMVL z?&s?gjl9Tq=7h=VB>i7Dj7pp=#x`d-!zaynVj{S++v1!5Lk6$JzcaX0xBTP#^r3vB z_6g%c(3roL#E;t(S052G1##d5Mf90c05!MgZ92SbquMzIjU8)(M0Y)2Xw%cuJ&AAC z@^z<{JPfT2{C-~Zg5e1^!<~BTo&IFEmAia-b%RHd`)YFZ2?4>alen9|#V@)QCsmnj z;6KO2^>y96P;XILqxEqf@h1@xK+5o{xVN`l9)-$4Cc6tw?&0!9F%4%J#X@WR6Z?qMv-#Z`ulJHHuiPCwphJG|5|V6 z>UfVpYq!EFslSUa|BPxl=B?W?g>%xuvsLreWY&3#9qG1mo4Q%-+38CAOV6a$Y>G~% zGZxL!@ks7->D5fOUf+fGgki#-o(fkRr}n5}CZ!~7Hv?C%tuq*(p8Ipykgm0LSmUvsMo zf9k#Qtyk0Upx0+ht_4Y)MZRk)qXqJwznlA-rQA|wdBW26H|Nny`8_r%I#U$tvvu!w z9}0XrTeE*Y(^~b-oR3bjKK5L)#X7=dS%pSj#RIpa=Oxv;le}IZow=CDa#_}n4?EjC z4AX5Aoi#4?oXKL$tl0nP$G6suq$iix#)v(CE z+5PC0#U>;CrTh+-sB2kWCVyh$)`iPUX;tiS`uo8_=v(_;29Bo^uRgr%P-^owk3Y z$C+0`_qzy`%WFGBEcHDm%=6jgdUC>rX+gz_(G$|2ELT1A_V{7lEa94!9qOlcPd<6_ zR8G&Vn8xovolWL__9!^HWBwFdxtRAUk(?ZMQCagm9~Go>axi>iRLy)Qlp=Ftds@by z>~qR{Y!)(HKH>Qw+3U#TFUA&&zW+KTzCPvp+p>0kT*A!>iGh{^<7R0>bJ`oV- z)bvS2e8Pe~t*lQp^c5W|xyTaS8F5Mf+tQm|vp#H?^r8EZKF1yfR_8J;s_a0_RJt|$WAZwh-hAUt zj`X`LY#yJMw~BdUT2=bmPg9HBm=`9jsEBrnQ($mf-*?mcYxe%RFXr23+7;biubJuh z@Y$Tr)Bl}&WOUCh@Z_zozM{+eR-a>M{62BRn%VEX_;)&>Z`aOn&}ybW_PVx z7`At6+8W2mHt7Y6?j zH1km>leDZ@f48>2xRTe=j0Ss+zmFTa#qNuE@*QR4%)gjW)5^O|UdH9dO{)#;>q0#o zH`>$|-ZatZyrB7hNt9yNy*H~3o_HQm+*)ABIu%@-NF-#{>E2RX;J|hLLhPc1bD=#} zPfhE^Gi{muntPI#OFQ(wTbL!dh2x&K^J15BBLNv6=D_kEgW#s#s=NrdW;aQ$3mxlb zzL9!g)h@kHO}a~fTca>4oRgXPn}Dv^=520kkCux(?BBlp(^kfwY0-ij!m7=)zS{X% z#!PB+3Uof{rgijE#AF>}Mva{ID{4GZvGi8)^sDsrbKCcH<&)0)+?Ryff&xt5<;YJ` z_OsO3Tdx)#=P>u^hNtqU>=TWz&sp=mW%`{J)78R$T$|!vB&o!>w9cPd^1KOm6)U%4 z(*G{F3?&Z(cR}JPqDy!EMOCw)2B#~?Epx*J>% z&3bSar0YlwlOCfuNCYeew%(%SstU)Y6GBtg1hhW1E-84dnpmN&eK0b3@v54PU5}0y zChgc5ld%cPh*+l+E~ecrdbI1Y>vRYMLk5=s7DFB#EnM^(WEzNZ8p;4!2(hPEEC#~p z7CqJlGj`>r`&mzS9CHNEG-?>UzMNC-Q@XJr+u&%q*VVwV5DB9h8O|x%Tpt`mLf^Ja zpY8Z4P-GGpyx93~aKprphvwYsczM&bVB%sIku~+9|MouqSs%OaU(ui7n#JEg_doq> z{qfzJ)i+dwoJ@)ezpVEC7z|x|685EL(mXEyxRO^B_wF_Bd4BWkBhN=GljptRY}L5l zq0DgO+==VQC!Mifd2Q-xIU~i@$y`~Fr!UuaQ98;J*59mhCWm#RS1G%oGl#fJ;omHN z_Ep74CwldUo$%(eoo;w&o#G|N!h*#oKn-mTY5 zJvOtenj^Z=Q0_#c+fRo``x2(&FqZt7o*7Rco%znGUd=DIHTCJqnAQ_9t*2s+#hhC` zWvBO)o!XOjYEQhHTe|hyb)UTc(=o?luEku7S$ZmF>zUM3uXb`*J<;=evd-zrmzb@m zK*Cc`#%%ev-*?@%UH7)@zOK6Uvg`Gvo!V1&dQaHNU6uT$E(z0U* ze?NSGt<5a_LwzxVEfFUfcLsnX-!K8}((z3l6Qhzv|VKjZNDX+9aEf z)#Xey`7~K$^%Etn*|!&_Z>s1vTwZ@hNNZpDt|#kHOg&xYW`sl+gIx6 zw}m-%8m&pU3kx%Re&SR7Dc|WcCLgktJIJkPlu|Qs)=Xm+!=>{~p4u$*=8nAnDfrBk z-mo((XMScYj@YQp|7n3o+lyk?wUSTMK5R@1OIvmSF;k@3gv9Cq-}>B&=X{qoS69@& zo~JNbayv$kXPOyhW!bC)AezFzs^*fASZ`9{0F55Irz-?DF_ z-GqNv_AdT5|Ec}@irSTb75;g}v;PYC?f;kU_s{)X_U%3TQ~lSE{rkKh@cAx(m@=JP zr6Z}WW~R|o&!QzegJNb{K^ZIcLZ)kZPgOlNDch*@)Fcd1JOYy=C$EEPMkt$nb28M( zlUSsE=7OyU*{bGc?#V9Z#vX1KIz`7T_$$x;-VevcyceZjE&Znc>aMu!Md#bAUhVp$ z{8m5n-`a~8ZZBS`*JYo1f6=Rx^B+`o>blhcCpEvKX z_@!4fOJl=B?yo<1`v*1k#m9nw z`F{T^_S1fI?eG1U@{{W{;wRO=u-{y5zvbVAe}C`4er&(KsJL68z1%MM#p9FL1Ag8(a6x zcZ&B6W`*sZ;&t|IRG{qf-Rk^%tBcm$`I+0h^Vr7qCtjWHb9p|+){iT&=f|8t65H!kse#qo}Ngv|7*{anR5QB_ruG#mw)-Co_f)^M)sH9 z>eWW?yOcL?cd@_tYkBF_+CNpxzvXZF&)}7_OT+y2yZ;RFlG|Uty|qiPOFr{IgX?|K zyP|ha`MicWmym$BR+RlD|TP4%P_I1xOkdz$4xR3RQke7a zp!s~LBr>(Y{XH@lG|8U=ndE=j@fW%%3p&-0WXa#DpVZdvZ=WJ|Jhgv*^vwSM4E~4Z z?Dn1g{-X6Gz5h^te^2fF*N^4XfBn4iN2GS)x8+}&f7Zm`vb+3i zhsIv{di3ty4#SLj3$)vQG;lh<=X9Tzv&^oBYsfI{hy=s##yiK??^TEQO*I3p{ zADP|rBXXm(ysduooVRRiy4HqQE&I2}-YTi{EKf~G9HZb$ubteU$C|^8WRB_SZ&BQK z^Ti3qZ~Yfuc}!i}v{CfHWNi_d;GNy3EI*oErCJWCg6Gtw6l{t@lLJowVe|-YQxST< zy+<+kLjLnl{~7+RZ{`0vx%NMU^ZNa+m+$VK|FSgp%&twZmVdqIJAZl3gqt_7-{0<^ z@vnR5^sw0I`^!Twy6)0jz3SDzzq7x@*6ymYTCwZZ+>&^2kaT$HRrwDu7M

$-Q@ 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 literal 0 HcmV?d00001 diff --git a/docsite/docs/configuration/kitchensink.md b/docsite/docs/configuration/kitchensink.md new file mode 100644 index 00000000..fad0d7d3 --- /dev/null +++ b/docsite/docs/configuration/kitchensink.md @@ -0,0 +1,293 @@ +--- +sidebar_position: 3 +title: Kitchen Sink +--- + +# Example Config using all Possible Features + +Scenario: + +* You want to scrobble plays for yourself (Foxx), Fred, and Mary +* Each person has their own Maloja server +* Each person has their own Spotify account +* You have your own Airsonic (subsonic) server you to scrobble from +* You have your own Youtube Music account you want to scrobble from +* Mary has her own Last.fm account she also wants to scrobble to +* Fred has his own Spotify application and provides you with just his access and refresh token because he doesn't trust you (wtf Fred) +* Fred has a Plex server and wants to scrobble everything he plays +* Mary uses Fred's Plex server but only wants to scrobble her plays from the `podcast` library +* The three of you have a shared library on Plex called `party` that you only play when you are hanging out. You want plays from that library to be scrobbled to everyone's servers. +* Fred also has his own Jellyfin server and wants to scrobble everything he plays + +### All-in-one Config + +Using just one config file located at `CONFIG_DIR/config.json`: + +```json5 +{ + "sourceDefaults": { + "maxPollRetries": 0, // optional, default # of automatic polling restarts on error. can be overridden by property in individual config + "maxRequestRetries": 1, // optional, default # of http request retries a source can make before error is thrown. can be overridden by property in individual config + "retryMultiplier": 1.5, // optional, default retry delay multiplier (retry attempt * multiplier = # of seconds to wait before retrying). can be overridden by property in individual config + }, + "clientDefaults": { + "maxRequestRetries": 1, // optional, default # of http request retries a client can make before error is thrown. can be overridden by property in individual config + "retryMultiplier": 1.5, // optional, default retry delay multiplier (retry attempt * multiplier = # of seconds to wait before retrying). can be overridden by property in individual config + }, + "sources": [ + { + "type": "spotify", + "name": "foxxSpot", + "clients": ["foxxMaloja"], + "data": { + "clientId": "foxxSpotifyAppId", + "clientSecret": "foxxSpotifyAppSecret", + "maxRequestRetries": 2, // override default max retries because spotify can...spotty + } + }, + { + "type": "spotify", + "name": "marySpot", + "clients": ["maryMaloja"], + "data": { + "clientId": "foxxSpotifyAppId", // only need one application, it can be used by all users of this multi-scrobbler instance + "clientSecret": "foxxSpotifyAppSecret", + } + }, + { + "type": "spotify", + "name": "fredSpot", + "clients": ["fredMaloja"], + "data": { + "accessToken": "fredsToken", + "refreshToken": "fredsRefreshToken", + "interval": 120, // he also wants a slower check interval because his application already has heavy api usage + } + }, + { + "type": "plex", + "name": "fredPlex", + "clients": ["fredMaloja"], + "data": { + "user": ["fred@email.com"] + } + }, + { + "type": "plex", + "name": "maryPlex", + "clients": ["maryMaloja"], + "data": { + "user": ["mary@email.com"], // still need to specify mary as user so not all users who play from 'podcasts' get scrobbled + "libraries": ["podcasts"] + } + }, + { + "type": "plex", + "name": "partyPlex", + // omitting clients (or making it empty) will make this Source scrobble to all Clients + "data": { + "libraries": ["party"], + } + }, + { + "type": "jellyfin", + "name": "FredJelly", + // omitting clients (or making it empty) will make this Source scrobble to all Clients + "data": { + "user": ["fred@email.com"] + } + }, + { + "type": "subsonic", + "name": "foxxAirsonic", + "clients": ["foxxMaloja"], + "data": { + "user": "foxx", + "password": "foxxPassword", + "url": "https://airsonic.foxx.example" + } + }, + { + "type": "ytmusic", + "name": "foxxYoutube", + "clients": ["foxxMaloja"], + "data": { + "cookie": "__Secure-3PAPISID=3AxsXpy0MKGu75Qb/AkISXGqOnSDn1jEKn; DEVICE_INFO=ChxOekU0Tmpjek5EWTBPRGd3TlRBMk16QXpNdz09EJbS8Z0GGJbS8Z0G; ...", + "authUser": 1 + } + }, + ], + "clients": [ + { + "type": "maloja", + "name": "foxxMaloja", + "data": { + "url": "https://maloja.foxx.example", + "apiKey": "foxxApiKey" + } + }, + { + "type": "maloja", + "name": "fredMaloja", + "data": { + "url": "https://maloja.fred.example", + "apiKey": "fredApiKey" + } + }, + { + "type": "maloja", + "name": "maryMaloja", + "data": { + "url": "https://maloja.mary.example", + "apiKey": "maryApiKey" + } + }, + { + "type": "lastfm", + "name": "maryLFM", + "data": { + "apiKey": "maryApiKey", + "secret": "marySecret", + "redirectUri": "http://localhost:9078/lastfm/callback" + } + } + ] +} + +``` + +### Separate JSON files + +In `CONFIG_DIR/spotify.json`: + +```json5 +[ + { + // may omit 'type' property since app knows this is file is for spotify configs + "name": "foxxSpot", + "clients": ["foxxMaloja"], + "data": { + "clientId": "foxxSpotifyAppId", + "clientSecret": "foxxSpotifyAppSecret" + } + }, + { + "name": "marySpot", + "clients": ["maryMaloja"], + "data": { + "clientId": "foxxSpotifyAppId", + "clientSecret": "foxxSpotifyAppSecret" + } + }, + { + "name": "fredSpot", + "clients": ["fredMaloja"], + "data": { + "accessToken": "fredsToken", + "refreshToken": "fredsRefreshToken", + "interval": 120 + } + }, +] +``` + +In `CONFIG_DIR/plex.json` + +```json5 +[ + { + "name": "fredPlex", + "clients": ["fredMaloja"], + "data": { + "user": ["fred@email.com"] + } + }, + { + "name": "maryPlex", + "clients": ["maryMaloja"], + "data": { + "user": ["mary@email.com"], + "libraries": ["podcasts"] + } + }, + { + "name": "partyPlex", + "data": { + "libraries": ["party"] + } + } +] +``` + +In `CONFIG_DIR/jellyfin.json` + +```json5 +[ + { + "name": "FredJelly", + "data": { + "user": ["fred@email.com"] + } + } +] +``` + +In `CONFIG_DIR/ytmusic.json` + +```json5 +[ + { + "type": "ytmusic", + "name": "foxxYoutube", + "clients": ["foxxMaloja"], + "data": { + "cookie": "__Secure-3PAPISID=3AxsXpy0MKGu75Qb/AkISXGqOnSDn1jEKn; DEVICE_INFO=ChxOekU0Tmpjek5EWTBPRGd3TlRBMk16QXpNdz09EJbS8Z0GGJbS8Z0G; ...", + "authUser": 1 + } + } +] +``` + +In `CONFIG_DIR/maloja.json`: + +```json5 +[ + { + "name": "foxxMaloja", + "data": { + "url": "https://maloja.foxx.example", + "apiKey": "foxxApiKey" + } + }, + { + "name": "fredMaloja", + "data": { + "url": "https://maloja.fred.example", + "apiKey": "fredApiKey" + } + }, + { + "name": "maryMaloja", + "data": { + "url": "https://maloja.mary.example", + "apiKey": "maryApiKey" + } + } +] +``` + +In `CONFIG_DIR/lastfm.json`: + +```json5 +[ + { + "name": "maryLFM", + "data": { + "apiKey": "maryApiKey", + "secret": "marySecret", + "redirectUri": "http://localhost:9078/lastfm/callback" + } + } +] +``` + diff --git a/docsite/docs/configuration/mpris.jpg b/docsite/docs/configuration/mpris.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e4ebb006d0c4733c937e48ac805d7a3abbd64f89 GIT binary patch literal 36520 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 literal 0 HcmV?d00001 diff --git a/docsite/docs/configuration/plex.md b/docsite/docs/configuration/plex.md new file mode 100644 index 00000000..834a67ec --- /dev/null +++ b/docsite/docs/configuration/plex.md @@ -0,0 +1,73 @@ +--- +sidebar_position: 2 +title: Plex/Tautulli +--- + +Tracks played on [Plex](https://plex.tv/) can be scrobbled either by: + * A [Tautulli](https://tautulli.com/) notification agent with a webhook. + * Using Plex [Webhooks](https://support.plex.tv/articles/115002267687-webhooks) (restricted to Plex Pass users) + +# Using Tautulli + +## Create a new Notification Agent + +* Navigate to the **Notification Agents** page in **Settings** +* Click **Add a new notification agent** +* Select **Webhook** + +## Configure the Agent + +The below sections correspond with the tabs available in the notification agent configuration popup. + +### Configuration +* Webhook URL -- `http://localhost:9078/tautulli` (substitute your domain if different than the default) +* Webhook Method -- POST + +### Triggers + +Select **Watched** + +### Conditions + +Refer to [Tautulli's documentation](https://github.com/Tautulli/Tautulli-Wiki/wiki/Custom-Notification-Conditions) if you need help here. It may be a good idea to restrict notifications to only one library (if you have a Music library, for instance) + +**This app will only scrobble an item if `media_type` is a "track", which is the default for all music.** + +### Data + +Expand the **Watched** dropdown and add the following code block to the **JSON Data** text field: + +``` +{ +"artist_name": "{artist_name}", +"track_name": "{track_name}", +"track_artist": "{track_artist}", +"album_name": "{album_name}", +"media_type": "{media_type}", +"title": "{title}", +"duration": "{duration_sec}", +"username": "{username}", +"server": "{server_name}", +"version": "{server_version}", +"library": "{library_name}", +"player": "{player}", +"device": "{device}", +"platform": "{platform}", +"action": "{action}", +"machine_id": "{machine_id}", +"session_key": "{session_key}" +} +``` + +**Click the Save button to finish.** + +Your agent is now configured and ready to scrobble. + +# Using Plex Webhooks + +* Navigate to your **Account/Settings** and find the **Webhooks** page +* Click **Add Webhook** +* URL -- `http://localhost:9078/plex` (substitute your domain if different than the default) +* **Save Changes** + +Plex is now configured to scrobble. diff --git a/docsite/docs/installation/_category_.json b/docsite/docs/installation/_category_.json new file mode 100644 index 00000000..89454591 --- /dev/null +++ b/docsite/docs/installation/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "Installation", + "position": 1, + "link": { + "type": "generated-index", + "description": "Way to install Multi-Scrobbler" + } +} diff --git a/docsite/docs/installation/installation.md b/docsite/docs/installation/installation.md new file mode 100644 index 00000000..b3274442 --- /dev/null +++ b/docsite/docs/installation/installation.md @@ -0,0 +1,123 @@ +--- +sidebar_position: 1 +title: 'Overview' +--- + +# Installation + +# Local + +After installation see [service.md](/docs/service.md) to configure multi-scrobbler to run automatically in the background. + +## Nodejs + +Clone this repository somewhere and then install from the working directory + +```shell +git clone https://github.com/FoxxMD/multi-scrobbler.git . +cd multi-scrobbler +nvm use # optional, to set correct Node version +npm install +npm build +npm start +``` + +### Usage Examples + +* The web UI is served on port `9078`. This can be modified using the `PORT` environmental variable. + +#### Using [file-based](/docs/configuration.md#file-based-configuration) configuration + +```shell +npm start +``` + +#### Using [env-based](/docs/configuration.md#env-based-configuration) configuration + +```shell +SPOTIFY_CLIENT_ID=yourId SPOTIFY_CLIENT_SECRET=yourSecret MALOJA_URL="http://domain.tld" node src/index.js +``` + +## Flatpak + +You must have [Flatpak](https://flatpak.org/) installed on your system. + +```shell +flatpak install flathub io.github.foxxmd.multiscrobbler +``` + +### Usage Examples + +#### Using [file-based](/docs/configuration.md#file-based-configuration) configuration + +The config directory for multi-scrobbler as a flatpak can be found under `/home/YourUser/.var/app/io.github.foxxmd.multiscrobbler/config` + +```shell +flatpak run io.github.multiscrobbler +``` + +#### Using [env-based](/docs/configuration.md#env-based-configuration) configuration + +There are a few [options for running flatpak applications with temporary or permanent environmental variables.](https://ardasevinc.dev/launch-flatpak-apps-with-custom-args-and-environment-variables) + +```shell +flatpak run --env=SPOTIFY_CLIENT_ID=yourId --envSPOTIFY_CLIENT_SECRET=yourSecret --env=MALOJA_URL="http://domain.tld" io.github.foxxmd.multiscrobbler +``` + +# Docker + +Cross-platform images are built for x86 (Intel/AMD) and ARM64 (IE Raspberry Pi) + +[Dockerhub](https://hub.docker.com/r/foxxmd/multi-scrobbler) +``` +docker.io/foxxmd/multi-scrobbler:latest +``` + +[Github Packages](https://github.com/FoxxMD/multi-scrobbler/pkgs/container/multi-scrobbler) +``` +ghcr.io/foxxmd/multi-scrobbler:latest +``` + +Or use the provided [docker-compose.yml](/docker-compose.yml) after modifying it to fit your configuration. + +Recommended configuration steps for docker or docker-compose usage: + +* If you must **bind a host directory into the container for storing configurations and credentials:** + * [Using `-v` method for docker](https://docs.docker.com/storage/bind-mounts/#start-a-container-with-a-bind-mount): `-v /path/on/host/config:/config` + * [Using docker-compose](https://docs.docker.com/compose/compose-file/compose-file-v3/#short-syntax-3): `- /path/on/host/config:/config` +* (Optionally) map the web UI port in the container **9078** to the host + * With [docker](https://docs.docker.com/engine/reference/commandline/run/#publish): `-p 9078:9078` (first port is the port on the host to use) + * With [docker-compose](https://docs.docker.com/compose/compose-file/compose-file-v3/#short-syntax-1): `- "9078:9078"` +* (Optionally) set the [timezone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) for the container using the environmental variable `TZ` ([docker](https://docs.docker.com/engine/reference/commandline/run/#env)) ([docker-compose](https://docs.docker.com/compose/compose-file/compose-file-v3/#environment)) + +### Linux Host + +If you are + +* using [rootless containers with Podman](https://developers.redhat.com/blog/2020/09/25/rootless-containers-with-podman-the-basics#why_podman_) +* running docker on MacOS or Windows + +this **DOES NOT** apply to you. + +If you are running Docker on a **Linux Host** you must specify `user:group` permissions of the user who owns the **configuration directory** on the host to avoid [docker file permission problems.](https://ikriv.com/blog/?p=4698) These can be specified using the [environmental variables **PUID** and **PGID**.](https://docs.linuxserver.io/general/understanding-puid-and-pgid) + +To get the UID and GID for the current user run these commands from a terminal: + +* `id -u` -- prints UID +* `id -g` -- prints GID + +## Docker Usage Examples + +### Using [env-based](/docs/configuration.md#env-based-configuration) configuration + +```bash +docker run -e "SPOTIFY_CLIENT_ID=yourId" -e "SPOTIFY_CLIENT_SECRET=yourSecret" -e "MALOJA_URL=http://domain.tld" -e "MALOJA_API_KEY=1234" -e "PUID=1000" -e "PGID=1000" -p 9078:9078 -v /path/on/host/config:/config foxxmd/multi-scrobbler +``` + +### Using [file-based](/docs/configuration.md#file-based-configuration) configuration + +```bash +docker run -e "PUID=1000" -e "PGID=1000" -p 9078:9078 -v /path/on/host/config:/config foxxmd/multi-scrobbler +``` + +See the [docker-compose.yml](/docker-compose.yml) file for how to use with docker-compose. diff --git a/docsite/docs/installation/service.md b/docsite/docs/installation/service.md new file mode 100644 index 00000000..97a28116 --- /dev/null +++ b/docsite/docs/installation/service.md @@ -0,0 +1,73 @@ +--- +sidebar_position: 2 +title: 'As a Service' +--- + +If you have multi-scrobbler installed [locally](/docs/installation.md#local) you can enable it to run as a background service when you login. + +Before running as a service you should run it at least once in the foreground to ensure it can start up correctly! + +# [Systemd](https://systemd.io/) + +Systemd is system and service manager that is used by [most popular linux distros](https://en.wikipedia.org/wiki/Systemd#Adoption) including [Ubuntu](https://wiki.ubuntu.com/SystemdForUpstartUsers), [Fedora](https://docs.fedoraproject.org/en-US/quick-docs/understanding-and-administering-systemd/), Pop!_OS, [Debian](https://wiki.debian.org/systemd), and [Arch](https://wiki.archlinux.org/title/systemd). + +This setup will create a [user service](https://wiki.archlinux.org/title/systemd/User) that runs on login. + +## Create A Unit File + +Create a new service file for multi-scrobbler under your HOME config: + +```console +mkdir -p ~/.config/systemd/user +touch ~/.config/systemd/user/multi-scrobbler.service +``` + +In a text editor add contents below to the file you created, `multi-scrobbler.service`: + +```ini +[Unit] +Description=multi-scrobbler +After=network.target + +[Service] +Type=simple +ExecStart=flatpak run io.github.multiscrobbler +Restart=no + +[Install] +WantedBy=default.target +``` + +The above assumes you [installed multi-scrobbler using flatpak](/docs/installation.md#flatpak) + +### Node.js Installs + +If you are running multi-scrobbler directly with [nodejs from a clone repository directory](/docs/installation.md#nodejs) you should modify the `[Service]`: + +```ini +[Service] +Type=simple +WorkingDirectory=/path/to/multi-scrobbler/directory +ExecStart=node src/index.js +Restart=no +``` + +## Start the Service + +Save the file then run: + +```console +systemctl daemon-reload +systemctl --user enable multi-scrobbler.service +systemctl --user start multi-scrobbler.service +``` + +This will + +* scan for new services and pickup our multi-scrobbler user service +* enable the service to run at login automatically +* start the service now + +# Other Service Methods + +Open a PR if you would like to document setting up multi-scrobbler for other service managers! diff --git a/docsite/docusaurus.config.js b/docsite/docusaurus.config.js new file mode 100644 index 00000000..5e61904e --- /dev/null +++ b/docsite/docusaurus.config.js @@ -0,0 +1,146 @@ +// @ts-check +// Note: type annotations allow type checking and IDEs autocompletion + +const lightCodeTheme = require('prism-react-renderer/themes/github'); +const darkCodeTheme = require('prism-react-renderer/themes/dracula'); + +/** @type {import('@docusaurus/types').Config} */ +const config = { + title: 'My Site', + tagline: 'Dinosaurs are cool', + favicon: 'img/favicon.ico', + + // Set the production url of your site here + url: 'https://your-docusaurus-test-site.com', + // Set the // pathname under which your site is served + // For GitHub pages deployment, it is often '//' + baseUrl: '/', + + // GitHub pages deployment config. + // If you aren't using GitHub pages, you don't need these. + organizationName: 'facebook', // Usually your GitHub org/user name. + projectName: 'docusaurus', // Usually your repo name. + + onBrokenLinks: 'throw', + onBrokenMarkdownLinks: 'warn', + + // Even if you don't use internalization, you can use this field to set useful + // metadata like html lang. For example, if your site is Chinese, you may want + // to replace "en" with "zh-Hans". + i18n: { + defaultLocale: 'en', + locales: ['en'], + }, + + presets: [ + [ + 'classic', + /** @type {import('@docusaurus/preset-classic').Options} */ + ({ + docs: { + sidebarPath: require.resolve('./sidebars.js'), + // Please change this to your repo. + // Remove this to remove the "edit this page" links. + editUrl: + 'https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/', + }, + // blog: { + // showReadingTime: true, + // // Please change this to your repo. + // // Remove this to remove the "edit this page" links. + // editUrl: + // 'https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/', + // }, + blog: false, + + theme: { + customCss: require.resolve('./src/css/custom.css'), + }, + }), + ], + ], + themes: ["docusaurus-json-schema-plugin"], + plugins: [require.resolve("@cmfcmf/docusaurus-search-local")], + themeConfig: + /** @type {import('@docusaurus/preset-classic').ThemeConfig} */ + ({ + // Replace with your project's social card + image: 'img/docusaurus-social-card.jpg', + navbar: { + title: 'Multi-Scrobbler', + logo: { + alt: 'Logo', + src: 'img/icon.svg', + }, + items: [ + { + type: 'docSidebar', + sidebarId: 'tutorialSidebar', + position: 'left', + label: 'Docs', + }, + { + to: 'playground', + position: 'left', + label: 'Config Playground', + }, + { + href: 'https://github.com/foxxmd/multi-scrobbler', + label: 'GitHub', + position: 'right', + }, + ], + }, + footer: { + style: 'dark', + links: [ + { + title: 'Docs', + items: [ + { + label: 'Installation', + to: '/docs/installation', + }, + { + label: 'Configuration', + to: '/docs/configuration', + }, + ], + }, +/* { + title: 'Community', + items: [ + { + label: 'Stack Overflow', + href: 'https://stackoverflow.com/questions/tagged/docusaurus', + }, + { + label: 'Discord', + href: 'https://discordapp.com/invite/docusaurus', + }, + { + label: 'Twitter', + href: 'https://twitter.com/docusaurus', + }, + ], + },*/ + { + title: 'More', + items: [ + { + label: 'GitHub', + href: 'https://github.com/foxxmd/multi-scrobbler', + }, + ], + }, + ], + copyright: `Copyright © ${new Date().getFullYear()} Multi-Scrobbler. Built with Docusaurus.`, + }, + prism: { + theme: lightCodeTheme, + darkTheme: darkCodeTheme, + }, + }), +}; + +module.exports = config; diff --git a/docsite/package-lock.json b/docsite/package-lock.json new file mode 100644 index 00000000..7336e8c6 --- /dev/null +++ b/docsite/package-lock.json @@ -0,0 +1,12912 @@ +{ + "name": "my-website", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "my-website", + "version": "0.0.0", + "dependencies": { + "@cmfcmf/docusaurus-search-local": "^1.1.0", + "@docusaurus/core": "2.4.1", + "@docusaurus/preset-classic": "2.4.1", + "@mdx-js/react": "^1.6.22", + "clsx": "^1.2.1", + "docusaurus-json-schema-plugin": "^1.6.1", + "prism-react-renderer": "^1.3.5", + "react": "^17.0.2", + "react-dom": "^17.0.2" + }, + "devDependencies": { + "@docusaurus/module-type-aliases": "2.4.1", + "@tsconfig/docusaurus": "^1.0.5", + "typescript": "^4.7.4" + }, + "engines": { + "node": ">=16.14" + } + }, + "node_modules/@algolia/autocomplete-core": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.9.3.tgz", + "integrity": "sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==", + "dependencies": { + "@algolia/autocomplete-plugin-algolia-insights": "1.9.3", + "@algolia/autocomplete-shared": "1.9.3" + } + }, + "node_modules/@algolia/autocomplete-js": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-js/-/autocomplete-js-1.10.0.tgz", + "integrity": "sha512-PpDNZs6/H5u9yOvpZ1HWb5Uf40zXOGCmhjDEfODQ6Q506hxAKhquxNLI+o8Chgda4bvRai1gGfFdZ5RSr0oHbA==", + "dependencies": { + "@algolia/autocomplete-core": "1.10.0", + "@algolia/autocomplete-preset-algolia": "1.10.0", + "@algolia/autocomplete-shared": "1.10.0", + "htm": "^3.1.1", + "preact": "^10.13.2" + }, + "peerDependencies": { + "@algolia/client-search": ">= 4.5.1 < 6", + "algoliasearch": ">= 4.9.1 < 6" + } + }, + "node_modules/@algolia/autocomplete-js/node_modules/@algolia/autocomplete-core": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.10.0.tgz", + "integrity": "sha512-zaQ4ZOtGkeUvDGObZvaULuZmU4kAcVu/Wm9EP6Vzij5wQ98FAKz1uHn2EPiCI0aFIoUfZi/WhJvn5l6qVBdYEA==", + "dependencies": { + "@algolia/autocomplete-plugin-algolia-insights": "1.10.0", + "@algolia/autocomplete-shared": "1.10.0" + } + }, + "node_modules/@algolia/autocomplete-js/node_modules/@algolia/autocomplete-plugin-algolia-insights": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.10.0.tgz", + "integrity": "sha512-mXKrO9gBIgjLHKfIN9aGqdMfWEXlk+ttiR1mgXrUtyMp6IKhZiXoNpvG2Xg2SiQakmZOtxagut3Wq1DpdwCq6Q==", + "dependencies": { + "@algolia/autocomplete-shared": "1.10.0" + }, + "peerDependencies": { + "search-insights": ">= 1 < 3" + } + }, + "node_modules/@algolia/autocomplete-js/node_modules/@algolia/autocomplete-preset-algolia": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.10.0.tgz", + "integrity": "sha512-CABQm+VJvuwl5XeVYbPISc8OAac7+nX+yDzG0nJRsSd64IeI6e/Jxrg13quxpTvOe7JZXYdW1y1kV7srPuFpmA==", + "dependencies": { + "@algolia/autocomplete-shared": "1.10.0" + }, + "peerDependencies": { + "@algolia/client-search": ">= 4.9.1 < 6", + "algoliasearch": ">= 4.9.1 < 6" + } + }, + "node_modules/@algolia/autocomplete-js/node_modules/@algolia/autocomplete-shared": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.10.0.tgz", + "integrity": "sha512-JKZGomjcUeKKtkymeZuWjKNIJU7UzuaCN3/eKlpOXxmvWCd5aJrVTDgbOm0pOjv0Ef9xVzIZx9cS/GL1Snxo1g==", + "peerDependencies": { + "@algolia/client-search": ">= 4.9.1 < 6", + "algoliasearch": ">= 4.9.1 < 6" + } + }, + "node_modules/@algolia/autocomplete-plugin-algolia-insights": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.9.3.tgz", + "integrity": "sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==", + "dependencies": { + "@algolia/autocomplete-shared": "1.9.3" + }, + "peerDependencies": { + "search-insights": ">= 1 < 3" + } + }, + "node_modules/@algolia/autocomplete-preset-algolia": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.9.3.tgz", + "integrity": "sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==", + "dependencies": { + "@algolia/autocomplete-shared": "1.9.3" + }, + "peerDependencies": { + "@algolia/client-search": ">= 4.9.1 < 6", + "algoliasearch": ">= 4.9.1 < 6" + } + }, + "node_modules/@algolia/autocomplete-shared": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.9.3.tgz", + "integrity": "sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==", + "peerDependencies": { + "@algolia/client-search": ">= 4.9.1 < 6", + "algoliasearch": ">= 4.9.1 < 6" + } + }, + "node_modules/@algolia/autocomplete-theme-classic": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-theme-classic/-/autocomplete-theme-classic-1.10.0.tgz", + "integrity": "sha512-YiKqXxWoQdbcxHnC9TK2PSoEHQtlqfnhBnbfejjS3U//5ASLvkF/rAcSFGfcZUzo8IvDKA/oYgK1CDQJ3+lMMQ==" + }, + "node_modules/@algolia/cache-browser-local-storage": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.18.0.tgz", + "integrity": "sha512-rUAs49NLlO8LVLgGzM4cLkw8NJLKguQLgvFmBEe3DyzlinoqxzQMHfKZs6TSq4LZfw/z8qHvRo8NcTAAUJQLcw==", + "dependencies": { + "@algolia/cache-common": "4.18.0" + } + }, + "node_modules/@algolia/cache-common": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.18.0.tgz", + "integrity": "sha512-BmxsicMR4doGbeEXQu8yqiGmiyvpNvejYJtQ7rvzttEAMxOPoWEHrWyzBQw4x7LrBY9pMrgv4ZlUaF8PGzewHg==" + }, + "node_modules/@algolia/cache-in-memory": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.18.0.tgz", + "integrity": "sha512-evD4dA1nd5HbFdufBxLqlJoob7E2ozlqJZuV3YlirNx5Na4q1LckIuzjNYZs2ddLzuTc/Xd5O3Ibf7OwPskHxw==", + "dependencies": { + "@algolia/cache-common": "4.18.0" + } + }, + "node_modules/@algolia/client-account": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.18.0.tgz", + "integrity": "sha512-XsDnlROr3+Z1yjxBJjUMfMazi1V155kVdte6496atvBgOEtwCzTs3A+qdhfsAnGUvaYfBrBkL0ThnhMIBCGcew==", + "dependencies": { + "@algolia/client-common": "4.18.0", + "@algolia/client-search": "4.18.0", + "@algolia/transporter": "4.18.0" + } + }, + "node_modules/@algolia/client-analytics": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.18.0.tgz", + "integrity": "sha512-chEUSN4ReqU7uRQ1C8kDm0EiPE+eJeAXiWcBwLhEynfNuTfawN9P93rSZktj7gmExz0C8XmkbBU19IQ05wCNrQ==", + "dependencies": { + "@algolia/client-common": "4.18.0", + "@algolia/client-search": "4.18.0", + "@algolia/requester-common": "4.18.0", + "@algolia/transporter": "4.18.0" + } + }, + "node_modules/@algolia/client-common": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.18.0.tgz", + "integrity": "sha512-7N+soJFP4wn8tjTr3MSUT/U+4xVXbz4jmeRfWfVAzdAbxLAQbHa0o/POSdTvQ8/02DjCLelloZ1bb4ZFVKg7Wg==", + "dependencies": { + "@algolia/requester-common": "4.18.0", + "@algolia/transporter": "4.18.0" + } + }, + "node_modules/@algolia/client-personalization": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.18.0.tgz", + "integrity": "sha512-+PeCjODbxtamHcPl+couXMeHEefpUpr7IHftj4Y4Nia1hj8gGq4VlIcqhToAw8YjLeCTfOR7r7xtj3pJcYdP8A==", + "dependencies": { + "@algolia/client-common": "4.18.0", + "@algolia/requester-common": "4.18.0", + "@algolia/transporter": "4.18.0" + } + }, + "node_modules/@algolia/client-search": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.18.0.tgz", + "integrity": "sha512-F9xzQXTjm6UuZtnsLIew6KSraXQ0AzS/Ee+OD+mQbtcA/K1sg89tqb8TkwjtiYZ0oij13u3EapB3gPZwm+1Y6g==", + "dependencies": { + "@algolia/client-common": "4.18.0", + "@algolia/requester-common": "4.18.0", + "@algolia/transporter": "4.18.0" + } + }, + "node_modules/@algolia/events": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@algolia/events/-/events-4.0.1.tgz", + "integrity": "sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==" + }, + "node_modules/@algolia/logger-common": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.18.0.tgz", + "integrity": "sha512-46etYgSlkoKepkMSyaoriSn2JDgcrpc/nkOgou/lm0y17GuMl9oYZxwKKTSviLKI5Irk9nSKGwnBTQYwXOYdRg==" + }, + "node_modules/@algolia/logger-console": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.18.0.tgz", + "integrity": "sha512-3P3VUYMl9CyJbi/UU1uUNlf6Z8N2ltW3Oqhq/nR7vH0CjWv32YROq3iGWGxB2xt3aXobdUPXs6P0tHSKRmNA6g==", + "dependencies": { + "@algolia/logger-common": "4.18.0" + } + }, + "node_modules/@algolia/requester-browser-xhr": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.18.0.tgz", + "integrity": "sha512-/AcWHOBub2U4TE/bPi4Gz1XfuLK6/7dj4HJG+Z2SfQoS1RjNLshZclU3OoKIkFp8D2NC7+BNsPvr9cPLyW8nyQ==", + "dependencies": { + "@algolia/requester-common": "4.18.0" + } + }, + "node_modules/@algolia/requester-common": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.18.0.tgz", + "integrity": "sha512-xlT8R1qYNRBCi1IYLsx7uhftzdfsLPDGudeQs+xvYB4sQ3ya7+ppolB/8m/a4F2gCkEO6oxpp5AGemM7kD27jA==" + }, + "node_modules/@algolia/requester-node-http": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.18.0.tgz", + "integrity": "sha512-TGfwj9aeTVgOUhn5XrqBhwUhUUDnGIKlI0kCBMdR58XfXcfdwomka+CPIgThRbfYw04oQr31A6/95ZH2QVJ9UQ==", + "dependencies": { + "@algolia/requester-common": "4.18.0" + } + }, + "node_modules/@algolia/transporter": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.18.0.tgz", + "integrity": "sha512-xbw3YRUGtXQNG1geYFEDDuFLZt4Z8YNKbamHPkzr3rWc6qp4/BqEeXcI2u/P/oMq2yxtXgMxrCxOPA8lyIe5jw==", + "dependencies": { + "@algolia/cache-common": "4.18.0", + "@algolia/logger-common": "4.18.0", + "@algolia/requester-common": "4.18.0" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz", + "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==", + "dependencies": { + "@babel/highlight": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz", + "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.9.tgz", + "integrity": "sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w==", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.22.5", + "@babel/generator": "^7.22.9", + "@babel/helper-compilation-targets": "^7.22.9", + "@babel/helper-module-transforms": "^7.22.9", + "@babel/helpers": "^7.22.6", + "@babel/parser": "^7.22.7", + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.8", + "@babel/types": "^7.22.5", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.2", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.9.tgz", + "integrity": "sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==", + "dependencies": { + "@babel/types": "^7.22.5", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.5.tgz", + "integrity": "sha512-m1EP3lVOPptR+2DwD125gziZNcmoNSHGmJROKoy87loWUQyJaVXDgpmruWqDARZSmtYQ+Dl25okU8+qhVzuykw==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.9.tgz", + "integrity": "sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw==", + "dependencies": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-validator-option": "^7.22.5", + "browserslist": "^4.21.9", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.9.tgz", + "integrity": "sha512-Pwyi89uO4YrGKxL/eNJ8lfEH55DnRloGPOseaA8NFNL6jAUnn+KccaISiFazCj5IolPPDjGSdzQzXVzODVRqUQ==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.9.tgz", + "integrity": "sha512-+svjVa/tFwsNSG4NEy1h85+HQ5imbT92Q5/bgtS7P0GTQlP8WuFdqsiABmQouhiFGyV66oGxZFpeYHza1rNsKw==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.1.tgz", + "integrity": "sha512-kX4oXixDxG197yhX+J3Wp+NpL2wuCFjWQAr6yX2jtCnflK9ulMI51ULFGIrWiX1jGfvAxdHp+XQCcP2bZGPs9A==", + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0-0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", + "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", + "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", + "dependencies": { + "@babel/template": "^7.22.5", + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.5.tgz", + "integrity": "sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", + "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz", + "integrity": "sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.9.tgz", + "integrity": "sha512-8WWC4oR4Px+tr+Fp0X3RHDVfINGpF3ad1HIbrc8A77epiR6eMMc6jsgozkzT2uDiOOdoS9cLIQ+XD2XvI2WSmQ==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-wrap-function": "^7.22.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz", + "integrity": "sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", + "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", + "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.9.tgz", + "integrity": "sha512-sZ+QzfauuUEfxSEjKFmi3qDSHgLsTPK/pEpoD/qonZKOtTPTLbf59oabPQ4rKekt9lFcj/hTZaOhWwFYrgjk+Q==", + "dependencies": { + "@babel/helper-function-name": "^7.22.5", + "@babel/template": "^7.22.5", + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.6.tgz", + "integrity": "sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==", + "dependencies": { + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.6", + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz", + "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/parser": { + "version": "7.22.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.7.tgz", + "integrity": "sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.5.tgz", + "integrity": "sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.5.tgz", + "integrity": "sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", + "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.12.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-unicode-property-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz", + "integrity": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz", + "integrity": "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", + "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", + "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz", + "integrity": "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.22.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.7.tgz", + "integrity": "sha512-7HmE7pk/Fmke45TODvxvkxRMV9RazV+ZZzhOL9AG8G29TLrr3jkjwF7uJfxZ30EoXpO+LJkq4oA8NjO2DTnEDg==", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.5", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz", + "integrity": "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==", + "dependencies": { + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz", + "integrity": "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.5.tgz", + "integrity": "sha512-EcACl1i5fSQ6bt+YGuU/XGCeZKStLmyVGytWkpyhCLeQVA0eu6Wtiw92V+I1T/hnezUv7j74dA/Ro69gWcU+hg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz", + "integrity": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.5.tgz", + "integrity": "sha512-SPToJ5eYZLxlnp1UzdARpOGeC2GbHvr9d/UV0EukuVx8atktg194oe+C5BqQ8jRTkgLRVOPYeXRSBg1IlMoVRA==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.6.tgz", + "integrity": "sha512-58EgM6nuPNG6Py4Z3zSuu0xWu2VfodiMi72Jt5Kj2FECmaYk1RrTXA45z6KBFsu9tRgwQDwIiY4FXTt+YsSFAQ==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz", + "integrity": "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/template": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.5.tgz", + "integrity": "sha512-GfqcFuGW8vnEqTUBM7UtPd5A4q797LTvvwKxXTgRsFjoqaJiEg9deBG6kWeQYkVEL569NpnmpC0Pkr/8BLKGnQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz", + "integrity": "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz", + "integrity": "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.5.tgz", + "integrity": "sha512-0MC3ppTB1AMxd8fXjSrbPa7LT9hrImt+/fcj+Pg5YMD7UQyWp/02+JWpdnCymmsXwIx5Z+sYn1bwCn4ZJNvhqQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz", + "integrity": "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==", + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.5.tgz", + "integrity": "sha512-X4hhm7FRnPgd4nDA4b/5V280xCx6oL7Oob5+9qVS5C13Zq4bh1qq7LU0GgRU6b5dBWBvhGaXYVB4AcN6+ol6vg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.5.tgz", + "integrity": "sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz", + "integrity": "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==", + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.5.tgz", + "integrity": "sha512-DuCRB7fu8MyTLbEQd1ew3R85nx/88yMoqo2uPSjevMj3yoN7CDM8jkgrY0wmVxfJZyJ/B9fE1iq7EQppWQmR5A==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz", + "integrity": "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.5.tgz", + "integrity": "sha512-MQQOUW1KL8X0cDWfbwYP+TbVbZm16QmQXJQ+vndPtH/BoO0lOKpVoEDMI7+PskYxH+IiE0tS8xZye0qr1lGzSA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz", + "integrity": "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz", + "integrity": "sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==", + "dependencies": { + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.5.tgz", + "integrity": "sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA==", + "dependencies": { + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.5.tgz", + "integrity": "sha512-emtEpoaTMsOs6Tzz+nbmcePl6AKVtS1yC4YNAeMun9U8YCsgadPNxnOPQ8GhHFB2qdx+LZu9LgoC0Lthuu05DQ==", + "dependencies": { + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz", + "integrity": "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==", + "dependencies": { + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", + "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz", + "integrity": "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.5.tgz", + "integrity": "sha512-6CF8g6z1dNYZ/VXok5uYkkBBICHZPiGEl7oDnAx2Mt1hlHVHOSIKWJaXHjQJA5VB43KZnXZDIexMchY4y2PGdA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.5.tgz", + "integrity": "sha512-NbslED1/6M+sXiwwtcAB/nieypGw02Ejf4KtDeMkCEpP6gWFMX1wI9WKYua+4oBneCCEmulOkRpwywypVZzs/g==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.5.tgz", + "integrity": "sha512-Kk3lyDmEslH9DnvCDA1s1kkd3YWQITiBOHngOtDL9Pt6BZjzqb6hiOlb8VfjiiQJ2unmegBqZu0rx5RxJb5vmQ==", + "dependencies": { + "@babel/compat-data": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz", + "integrity": "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.5.tgz", + "integrity": "sha512-pH8orJahy+hzZje5b8e2QIlBWQvGpelS76C63Z+jhZKsmzfNaPQ+LaW6dcJ9bxTpo1mtXbgHwy765Ro3jftmUg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.6.tgz", + "integrity": "sha512-Vd5HiWml0mDVtcLHIoEU5sw6HOUW/Zk0acLs/SAeuLzkGNOPc9DB4nkUajemhCmTIz3eiaKREZn2hQQqF79YTg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.5.tgz", + "integrity": "sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz", + "integrity": "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.5.tgz", + "integrity": "sha512-/9xnaTTJcVoBtSSmrVyhtSvO3kbqS2ODoh2juEU72c3aYonNF0OMGiaz2gjukyKM2wBBYJP38S4JiE0Wfb5VMQ==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz", + "integrity": "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-constant-elements": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.22.5.tgz", + "integrity": "sha512-BF5SXoO+nX3h5OhlN78XbbDrBOffv+AxPP2ENaJOVqjWCgBDeOY3WcaUcddutGSfoap+5NEQ/q/4I3WZIvgkXA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.22.5.tgz", + "integrity": "sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.5.tgz", + "integrity": "sha512-rog5gZaVbUip5iWDMTYbVM15XQq+RkUKhET/IHR6oizR+JEoN6CAfTTuHcK4vwUyzca30qqHqEpzBOnaRMWYMA==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-jsx": "^7.22.5", + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz", + "integrity": "sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==", + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.22.5.tgz", + "integrity": "sha512-gP4k85wx09q+brArVinTXhWiyzLl9UpmGva0+mWyKxk6JZequ05x3eUcIUE+FyttPKJFRRVtAvQaJ6YF9h1ZpA==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.5.tgz", + "integrity": "sha512-rR7KePOE7gfEtNTh9Qw+iO3Q/e4DEsoQ+hdvM6QUDH7JRJ5qxq5AA52ZzBWbI5i9lfNuvySgOGP8ZN7LAmaiPw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "regenerator-transform": "^0.15.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz", + "integrity": "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.22.9.tgz", + "integrity": "sha512-9KjBH61AGJetCPYp/IEyLEp47SyybZb0nDRpBvmtEkm+rUIwxdlKpyNHI1TmsGkeuLclJdleQHRZ8XLBnnh8CQ==", + "dependencies": { + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "babel-plugin-polyfill-corejs2": "^0.4.4", + "babel-plugin-polyfill-corejs3": "^0.8.2", + "babel-plugin-polyfill-regenerator": "^0.5.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz", + "integrity": "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz", + "integrity": "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz", + "integrity": "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz", + "integrity": "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz", + "integrity": "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.9.tgz", + "integrity": "sha512-BnVR1CpKiuD0iobHPaM1iLvcwPYN2uVFAqoLVSpEDKWuOikoCv5HbKLxclhKYUXlWkX86DoZGtqI4XhbOsyrMg==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.9", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-typescript": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.5.tgz", + "integrity": "sha512-biEmVg1IYB/raUO5wT1tgfacCef15Fbzhkx493D3urBI++6hpJ+RFG4SrWMn0NEZLfvilqKf3QDrRVZHo08FYg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz", + "integrity": "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz", + "integrity": "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz", + "integrity": "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.9.tgz", + "integrity": "sha512-wNi5H/Emkhll/bqPjsjQorSykrlfY5OWakd6AulLvMEytpKasMVUpVy8RL4qBIBs5Ac6/5i0/Rv0b/Fg6Eag/g==", + "dependencies": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-compilation-targets": "^7.22.9", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.5", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.5", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.22.5", + "@babel/plugin-syntax-import-attributes": "^7.22.5", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.22.5", + "@babel/plugin-transform-async-generator-functions": "^7.22.7", + "@babel/plugin-transform-async-to-generator": "^7.22.5", + "@babel/plugin-transform-block-scoped-functions": "^7.22.5", + "@babel/plugin-transform-block-scoping": "^7.22.5", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-class-static-block": "^7.22.5", + "@babel/plugin-transform-classes": "^7.22.6", + "@babel/plugin-transform-computed-properties": "^7.22.5", + "@babel/plugin-transform-destructuring": "^7.22.5", + "@babel/plugin-transform-dotall-regex": "^7.22.5", + "@babel/plugin-transform-duplicate-keys": "^7.22.5", + "@babel/plugin-transform-dynamic-import": "^7.22.5", + "@babel/plugin-transform-exponentiation-operator": "^7.22.5", + "@babel/plugin-transform-export-namespace-from": "^7.22.5", + "@babel/plugin-transform-for-of": "^7.22.5", + "@babel/plugin-transform-function-name": "^7.22.5", + "@babel/plugin-transform-json-strings": "^7.22.5", + "@babel/plugin-transform-literals": "^7.22.5", + "@babel/plugin-transform-logical-assignment-operators": "^7.22.5", + "@babel/plugin-transform-member-expression-literals": "^7.22.5", + "@babel/plugin-transform-modules-amd": "^7.22.5", + "@babel/plugin-transform-modules-commonjs": "^7.22.5", + "@babel/plugin-transform-modules-systemjs": "^7.22.5", + "@babel/plugin-transform-modules-umd": "^7.22.5", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.22.5", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.5", + "@babel/plugin-transform-numeric-separator": "^7.22.5", + "@babel/plugin-transform-object-rest-spread": "^7.22.5", + "@babel/plugin-transform-object-super": "^7.22.5", + "@babel/plugin-transform-optional-catch-binding": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.22.6", + "@babel/plugin-transform-parameters": "^7.22.5", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/plugin-transform-private-property-in-object": "^7.22.5", + "@babel/plugin-transform-property-literals": "^7.22.5", + "@babel/plugin-transform-regenerator": "^7.22.5", + "@babel/plugin-transform-reserved-words": "^7.22.5", + "@babel/plugin-transform-shorthand-properties": "^7.22.5", + "@babel/plugin-transform-spread": "^7.22.5", + "@babel/plugin-transform-sticky-regex": "^7.22.5", + "@babel/plugin-transform-template-literals": "^7.22.5", + "@babel/plugin-transform-typeof-symbol": "^7.22.5", + "@babel/plugin-transform-unicode-escapes": "^7.22.5", + "@babel/plugin-transform-unicode-property-regex": "^7.22.5", + "@babel/plugin-transform-unicode-regex": "^7.22.5", + "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.22.5", + "babel-plugin-polyfill-corejs2": "^0.4.4", + "babel-plugin-polyfill-corejs3": "^0.8.2", + "babel-plugin-polyfill-regenerator": "^0.5.1", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-react": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.22.5.tgz", + "integrity": "sha512-M+Is3WikOpEJHgR385HbuCITPTaPRaNkibTEa9oiofmJvIsrceb4yp9RL9Kb+TE8LznmeyZqpP+Lopwcx59xPQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.5", + "@babel/plugin-transform-react-display-name": "^7.22.5", + "@babel/plugin-transform-react-jsx": "^7.22.5", + "@babel/plugin-transform-react-jsx-development": "^7.22.5", + "@babel/plugin-transform-react-pure-annotations": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.22.5.tgz", + "integrity": "sha512-YbPaal9LxztSGhmndR46FmAbkJ/1fAsw293tSU+I5E5h+cnJ3d4GTwyUgGYmOXJYdGA+uNePle4qbaRzj2NISQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.5", + "@babel/plugin-syntax-jsx": "^7.22.5", + "@babel/plugin-transform-modules-commonjs": "^7.22.5", + "@babel/plugin-transform-typescript": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" + }, + "node_modules/@babel/runtime": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.6.tgz", + "integrity": "sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ==", + "dependencies": { + "regenerator-runtime": "^0.13.11" + }, + "engines": { + "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", + "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", + "dependencies": { + "@babel/code-frame": "^7.22.5", + "@babel/parser": "^7.22.5", + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.22.8", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.8.tgz", + "integrity": "sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw==", + "dependencies": { + "@babel/code-frame": "^7.22.5", + "@babel/generator": "^7.22.7", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.22.7", + "@babel/types": "^7.22.5", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", + "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", + "dependencies": { + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.5", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@cmfcmf/docusaurus-search-local": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@cmfcmf/docusaurus-search-local/-/docusaurus-search-local-1.1.0.tgz", + "integrity": "sha512-0IVb/aA0IK8ZlktuxmgXmluXfcSpo6Vdd2nG21y1aOH9nVYnPP231Dn0H8Ng9Qf9ronQQCDWHnuWpYOr9rUrEQ==", + "dependencies": { + "@algolia/autocomplete-js": "^1.8.2", + "@algolia/autocomplete-theme-classic": "^1.8.2", + "@algolia/client-search": "^4.12.0", + "algoliasearch": "^4.12.0", + "cheerio": "^1.0.0-rc.9", + "clsx": "^1.1.1", + "lunr-languages": "^1.4.0", + "mark.js": "^8.11.1" + }, + "peerDependencies": { + "@docusaurus/core": "^2.0.0", + "nodejieba": "^2.5.0" + }, + "peerDependenciesMeta": { + "nodejieba": { + "optional": true + } + } + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@docsearch/css": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.5.1.tgz", + "integrity": "sha512-2Pu9HDg/uP/IT10rbQ+4OrTQuxIWdKVUEdcw9/w7kZJv9NeHS6skJx1xuRiFyoGKwAzcHXnLp7csE99sj+O1YA==" + }, + "node_modules/@docsearch/react": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.5.1.tgz", + "integrity": "sha512-t5mEODdLzZq4PTFAm/dvqcvZFdPDMdfPE5rJS5SC8OUq9mPzxEy6b+9THIqNM9P0ocCb4UC5jqBrxKclnuIbzQ==", + "dependencies": { + "@algolia/autocomplete-core": "1.9.3", + "@algolia/autocomplete-preset-algolia": "1.9.3", + "@docsearch/css": "3.5.1", + "algoliasearch": "^4.0.0" + }, + "peerDependencies": { + "@types/react": ">= 16.8.0 < 19.0.0", + "react": ">= 16.8.0 < 19.0.0", + "react-dom": ">= 16.8.0 < 19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, + "node_modules/@docusaurus/core": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-2.4.1.tgz", + "integrity": "sha512-SNsY7PshK3Ri7vtsLXVeAJGS50nJN3RgF836zkyUfAD01Fq+sAk5EwWgLw+nnm5KVNGDu7PRR2kRGDsWvqpo0g==", + "dependencies": { + "@babel/core": "^7.18.6", + "@babel/generator": "^7.18.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-runtime": "^7.18.6", + "@babel/preset-env": "^7.18.6", + "@babel/preset-react": "^7.18.6", + "@babel/preset-typescript": "^7.18.6", + "@babel/runtime": "^7.18.6", + "@babel/runtime-corejs3": "^7.18.6", + "@babel/traverse": "^7.18.8", + "@docusaurus/cssnano-preset": "2.4.1", + "@docusaurus/logger": "2.4.1", + "@docusaurus/mdx-loader": "2.4.1", + "@docusaurus/react-loadable": "5.5.2", + "@docusaurus/utils": "2.4.1", + "@docusaurus/utils-common": "2.4.1", + "@docusaurus/utils-validation": "2.4.1", + "@slorber/static-site-generator-webpack-plugin": "^4.0.7", + "@svgr/webpack": "^6.2.1", + "autoprefixer": "^10.4.7", + "babel-loader": "^8.2.5", + "babel-plugin-dynamic-import-node": "^2.3.3", + "boxen": "^6.2.1", + "chalk": "^4.1.2", + "chokidar": "^3.5.3", + "clean-css": "^5.3.0", + "cli-table3": "^0.6.2", + "combine-promises": "^1.1.0", + "commander": "^5.1.0", + "copy-webpack-plugin": "^11.0.0", + "core-js": "^3.23.3", + "css-loader": "^6.7.1", + "css-minimizer-webpack-plugin": "^4.0.0", + "cssnano": "^5.1.12", + "del": "^6.1.1", + "detect-port": "^1.3.0", + "escape-html": "^1.0.3", + "eta": "^2.0.0", + "file-loader": "^6.2.0", + "fs-extra": "^10.1.0", + "html-minifier-terser": "^6.1.0", + "html-tags": "^3.2.0", + "html-webpack-plugin": "^5.5.0", + "import-fresh": "^3.3.0", + "leven": "^3.1.0", + "lodash": "^4.17.21", + "mini-css-extract-plugin": "^2.6.1", + "postcss": "^8.4.14", + "postcss-loader": "^7.0.0", + "prompts": "^2.4.2", + "react-dev-utils": "^12.0.1", + "react-helmet-async": "^1.3.0", + "react-loadable": "npm:@docusaurus/react-loadable@5.5.2", + "react-loadable-ssr-addon-v5-slorber": "^1.0.1", + "react-router": "^5.3.3", + "react-router-config": "^5.1.1", + "react-router-dom": "^5.3.3", + "rtl-detect": "^1.0.4", + "semver": "^7.3.7", + "serve-handler": "^6.1.3", + "shelljs": "^0.8.5", + "terser-webpack-plugin": "^5.3.3", + "tslib": "^2.4.0", + "update-notifier": "^5.1.0", + "url-loader": "^4.1.1", + "wait-on": "^6.0.1", + "webpack": "^5.73.0", + "webpack-bundle-analyzer": "^4.5.0", + "webpack-dev-server": "^4.9.3", + "webpack-merge": "^5.8.0", + "webpackbar": "^5.0.2" + }, + "bin": { + "docusaurus": "bin/docusaurus.mjs" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/cssnano-preset": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-2.4.1.tgz", + "integrity": "sha512-ka+vqXwtcW1NbXxWsh6yA1Ckii1klY9E53cJ4O9J09nkMBgrNX3iEFED1fWdv8wf4mJjvGi5RLZ2p9hJNjsLyQ==", + "dependencies": { + "cssnano-preset-advanced": "^5.3.8", + "postcss": "^8.4.14", + "postcss-sort-media-queries": "^4.2.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.14" + } + }, + "node_modules/@docusaurus/logger": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-2.4.1.tgz", + "integrity": "sha512-5h5ysIIWYIDHyTVd8BjheZmQZmEgWDR54aQ1BX9pjFfpyzFo5puKXKYrYJXbjEHGyVhEzmB9UXwbxGfaZhOjcg==", + "dependencies": { + "chalk": "^4.1.2", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.14" + } + }, + "node_modules/@docusaurus/mdx-loader": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-2.4.1.tgz", + "integrity": "sha512-4KhUhEavteIAmbBj7LVFnrVYDiU51H5YWW1zY6SmBSte/YLhDutztLTBE0PQl1Grux1jzUJeaSvAzHpTn6JJDQ==", + "dependencies": { + "@babel/parser": "^7.18.8", + "@babel/traverse": "^7.18.8", + "@docusaurus/logger": "2.4.1", + "@docusaurus/utils": "2.4.1", + "@mdx-js/mdx": "^1.6.22", + "escape-html": "^1.0.3", + "file-loader": "^6.2.0", + "fs-extra": "^10.1.0", + "image-size": "^1.0.1", + "mdast-util-to-string": "^2.0.0", + "remark-emoji": "^2.2.0", + "stringify-object": "^3.3.0", + "tslib": "^2.4.0", + "unified": "^9.2.2", + "unist-util-visit": "^2.0.3", + "url-loader": "^4.1.1", + "webpack": "^5.73.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/module-type-aliases": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-2.4.1.tgz", + "integrity": "sha512-gLBuIFM8Dp2XOCWffUDSjtxY7jQgKvYujt7Mx5s4FCTfoL5dN1EVbnrn+O2Wvh8b0a77D57qoIDY7ghgmatR1A==", + "dependencies": { + "@docusaurus/react-loadable": "5.5.2", + "@docusaurus/types": "2.4.1", + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router-config": "*", + "@types/react-router-dom": "*", + "react-helmet-async": "*", + "react-loadable": "npm:@docusaurus/react-loadable@5.5.2" + }, + "peerDependencies": { + "react": "*", + "react-dom": "*" + } + }, + "node_modules/@docusaurus/plugin-content-blog": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.4.1.tgz", + "integrity": "sha512-E2i7Knz5YIbE1XELI6RlTnZnGgS52cUO4BlCiCUCvQHbR+s1xeIWz4C6BtaVnlug0Ccz7nFSksfwDpVlkujg5Q==", + "dependencies": { + "@docusaurus/core": "2.4.1", + "@docusaurus/logger": "2.4.1", + "@docusaurus/mdx-loader": "2.4.1", + "@docusaurus/types": "2.4.1", + "@docusaurus/utils": "2.4.1", + "@docusaurus/utils-common": "2.4.1", + "@docusaurus/utils-validation": "2.4.1", + "cheerio": "^1.0.0-rc.12", + "feed": "^4.2.2", + "fs-extra": "^10.1.0", + "lodash": "^4.17.21", + "reading-time": "^1.5.0", + "tslib": "^2.4.0", + "unist-util-visit": "^2.0.3", + "utility-types": "^3.10.0", + "webpack": "^5.73.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/plugin-content-docs": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.4.1.tgz", + "integrity": "sha512-Lo7lSIcpswa2Kv4HEeUcGYqaasMUQNpjTXpV0N8G6jXgZaQurqp7E8NGYeGbDXnb48czmHWbzDL4S3+BbK0VzA==", + "dependencies": { + "@docusaurus/core": "2.4.1", + "@docusaurus/logger": "2.4.1", + "@docusaurus/mdx-loader": "2.4.1", + "@docusaurus/module-type-aliases": "2.4.1", + "@docusaurus/types": "2.4.1", + "@docusaurus/utils": "2.4.1", + "@docusaurus/utils-validation": "2.4.1", + "@types/react-router-config": "^5.0.6", + "combine-promises": "^1.1.0", + "fs-extra": "^10.1.0", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "lodash": "^4.17.21", + "tslib": "^2.4.0", + "utility-types": "^3.10.0", + "webpack": "^5.73.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/plugin-content-pages": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.4.1.tgz", + "integrity": "sha512-/UjuH/76KLaUlL+o1OvyORynv6FURzjurSjvn2lbWTFc4tpYY2qLYTlKpTCBVPhlLUQsfyFnshEJDLmPneq2oA==", + "dependencies": { + "@docusaurus/core": "2.4.1", + "@docusaurus/mdx-loader": "2.4.1", + "@docusaurus/types": "2.4.1", + "@docusaurus/utils": "2.4.1", + "@docusaurus/utils-validation": "2.4.1", + "fs-extra": "^10.1.0", + "tslib": "^2.4.0", + "webpack": "^5.73.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/plugin-debug": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-2.4.1.tgz", + "integrity": "sha512-7Yu9UPzRShlrH/G8btOpR0e6INFZr0EegWplMjOqelIwAcx3PKyR8mgPTxGTxcqiYj6hxSCRN0D8R7YrzImwNA==", + "dependencies": { + "@docusaurus/core": "2.4.1", + "@docusaurus/types": "2.4.1", + "@docusaurus/utils": "2.4.1", + "fs-extra": "^10.1.0", + "react-json-view": "^1.21.3", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/plugin-google-analytics": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.4.1.tgz", + "integrity": "sha512-dyZJdJiCoL+rcfnm0RPkLt/o732HvLiEwmtoNzOoz9MSZz117UH2J6U2vUDtzUzwtFLIf32KkeyzisbwUCgcaQ==", + "dependencies": { + "@docusaurus/core": "2.4.1", + "@docusaurus/types": "2.4.1", + "@docusaurus/utils-validation": "2.4.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/plugin-google-gtag": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.4.1.tgz", + "integrity": "sha512-mKIefK+2kGTQBYvloNEKtDmnRD7bxHLsBcxgnbt4oZwzi2nxCGjPX6+9SQO2KCN5HZbNrYmGo5GJfMgoRvy6uA==", + "dependencies": { + "@docusaurus/core": "2.4.1", + "@docusaurus/types": "2.4.1", + "@docusaurus/utils-validation": "2.4.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/plugin-google-tag-manager": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-2.4.1.tgz", + "integrity": "sha512-Zg4Ii9CMOLfpeV2nG74lVTWNtisFaH9QNtEw48R5QE1KIwDBdTVaiSA18G1EujZjrzJJzXN79VhINSbOJO/r3g==", + "dependencies": { + "@docusaurus/core": "2.4.1", + "@docusaurus/types": "2.4.1", + "@docusaurus/utils-validation": "2.4.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/plugin-sitemap": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.4.1.tgz", + "integrity": "sha512-lZx+ijt/+atQ3FVE8FOHV/+X3kuok688OydDXrqKRJyXBJZKgGjA2Qa8RjQ4f27V2woaXhtnyrdPop/+OjVMRg==", + "dependencies": { + "@docusaurus/core": "2.4.1", + "@docusaurus/logger": "2.4.1", + "@docusaurus/types": "2.4.1", + "@docusaurus/utils": "2.4.1", + "@docusaurus/utils-common": "2.4.1", + "@docusaurus/utils-validation": "2.4.1", + "fs-extra": "^10.1.0", + "sitemap": "^7.1.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/preset-classic": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-2.4.1.tgz", + "integrity": "sha512-P4//+I4zDqQJ+UDgoFrjIFaQ1MeS9UD1cvxVQaI6O7iBmiHQm0MGROP1TbE7HlxlDPXFJjZUK3x3cAoK63smGQ==", + "dependencies": { + "@docusaurus/core": "2.4.1", + "@docusaurus/plugin-content-blog": "2.4.1", + "@docusaurus/plugin-content-docs": "2.4.1", + "@docusaurus/plugin-content-pages": "2.4.1", + "@docusaurus/plugin-debug": "2.4.1", + "@docusaurus/plugin-google-analytics": "2.4.1", + "@docusaurus/plugin-google-gtag": "2.4.1", + "@docusaurus/plugin-google-tag-manager": "2.4.1", + "@docusaurus/plugin-sitemap": "2.4.1", + "@docusaurus/theme-classic": "2.4.1", + "@docusaurus/theme-common": "2.4.1", + "@docusaurus/theme-search-algolia": "2.4.1", + "@docusaurus/types": "2.4.1" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/react-loadable": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-5.5.2.tgz", + "integrity": "sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ==", + "dependencies": { + "@types/react": "*", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": "*" + } + }, + "node_modules/@docusaurus/theme-classic": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-2.4.1.tgz", + "integrity": "sha512-Rz0wKUa+LTW1PLXmwnf8mn85EBzaGSt6qamqtmnh9Hflkc+EqiYMhtUJeLdV+wsgYq4aG0ANc+bpUDpsUhdnwg==", + "dependencies": { + "@docusaurus/core": "2.4.1", + "@docusaurus/mdx-loader": "2.4.1", + "@docusaurus/module-type-aliases": "2.4.1", + "@docusaurus/plugin-content-blog": "2.4.1", + "@docusaurus/plugin-content-docs": "2.4.1", + "@docusaurus/plugin-content-pages": "2.4.1", + "@docusaurus/theme-common": "2.4.1", + "@docusaurus/theme-translations": "2.4.1", + "@docusaurus/types": "2.4.1", + "@docusaurus/utils": "2.4.1", + "@docusaurus/utils-common": "2.4.1", + "@docusaurus/utils-validation": "2.4.1", + "@mdx-js/react": "^1.6.22", + "clsx": "^1.2.1", + "copy-text-to-clipboard": "^3.0.1", + "infima": "0.2.0-alpha.43", + "lodash": "^4.17.21", + "nprogress": "^0.2.0", + "postcss": "^8.4.14", + "prism-react-renderer": "^1.3.5", + "prismjs": "^1.28.0", + "react-router-dom": "^5.3.3", + "rtlcss": "^3.5.0", + "tslib": "^2.4.0", + "utility-types": "^3.10.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/theme-common": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-2.4.1.tgz", + "integrity": "sha512-G7Zau1W5rQTaFFB3x3soQoZpkgMbl/SYNG8PfMFIjKa3M3q8n0m/GRf5/H/e5BqOvt8c+ZWIXGCiz+kUCSHovA==", + "dependencies": { + "@docusaurus/mdx-loader": "2.4.1", + "@docusaurus/module-type-aliases": "2.4.1", + "@docusaurus/plugin-content-blog": "2.4.1", + "@docusaurus/plugin-content-docs": "2.4.1", + "@docusaurus/plugin-content-pages": "2.4.1", + "@docusaurus/utils": "2.4.1", + "@docusaurus/utils-common": "2.4.1", + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router-config": "*", + "clsx": "^1.2.1", + "parse-numeric-range": "^1.3.0", + "prism-react-renderer": "^1.3.5", + "tslib": "^2.4.0", + "use-sync-external-store": "^1.2.0", + "utility-types": "^3.10.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/theme-search-algolia": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.4.1.tgz", + "integrity": "sha512-6BcqW2lnLhZCXuMAvPRezFs1DpmEKzXFKlYjruuas+Xy3AQeFzDJKTJFIm49N77WFCTyxff8d3E4Q9pi/+5McQ==", + "dependencies": { + "@docsearch/react": "^3.1.1", + "@docusaurus/core": "2.4.1", + "@docusaurus/logger": "2.4.1", + "@docusaurus/plugin-content-docs": "2.4.1", + "@docusaurus/theme-common": "2.4.1", + "@docusaurus/theme-translations": "2.4.1", + "@docusaurus/utils": "2.4.1", + "@docusaurus/utils-validation": "2.4.1", + "algoliasearch": "^4.13.1", + "algoliasearch-helper": "^3.10.0", + "clsx": "^1.2.1", + "eta": "^2.0.0", + "fs-extra": "^10.1.0", + "lodash": "^4.17.21", + "tslib": "^2.4.0", + "utility-types": "^3.10.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/theme-translations": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-translations/-/theme-translations-2.4.1.tgz", + "integrity": "sha512-T1RAGP+f86CA1kfE8ejZ3T3pUU3XcyvrGMfC/zxCtc2BsnoexuNI9Vk2CmuKCb+Tacvhxjv5unhxXce0+NKyvA==", + "dependencies": { + "fs-extra": "^10.1.0", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.14" + } + }, + "node_modules/@docusaurus/types": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-2.4.1.tgz", + "integrity": "sha512-0R+cbhpMkhbRXX138UOc/2XZFF8hiZa6ooZAEEJFp5scytzCw4tC1gChMFXrpa3d2tYE6AX8IrOEpSonLmfQuQ==", + "dependencies": { + "@types/history": "^4.7.11", + "@types/react": "*", + "commander": "^5.1.0", + "joi": "^17.6.0", + "react-helmet-async": "^1.3.0", + "utility-types": "^3.10.0", + "webpack": "^5.73.0", + "webpack-merge": "^5.8.0" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/utils": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-2.4.1.tgz", + "integrity": "sha512-1lvEZdAQhKNht9aPXPoh69eeKnV0/62ROhQeFKKxmzd0zkcuE/Oc5Gpnt00y/f5bIsmOsYMY7Pqfm/5rteT5GA==", + "dependencies": { + "@docusaurus/logger": "2.4.1", + "@svgr/webpack": "^6.2.1", + "escape-string-regexp": "^4.0.0", + "file-loader": "^6.2.0", + "fs-extra": "^10.1.0", + "github-slugger": "^1.4.0", + "globby": "^11.1.0", + "gray-matter": "^4.0.3", + "js-yaml": "^4.1.0", + "lodash": "^4.17.21", + "micromatch": "^4.0.5", + "resolve-pathname": "^3.0.0", + "shelljs": "^0.8.5", + "tslib": "^2.4.0", + "url-loader": "^4.1.1", + "webpack": "^5.73.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "@docusaurus/types": "*" + }, + "peerDependenciesMeta": { + "@docusaurus/types": { + "optional": true + } + } + }, + "node_modules/@docusaurus/utils-common": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-2.4.1.tgz", + "integrity": "sha512-bCVGdZU+z/qVcIiEQdyx0K13OC5mYwxhSuDUR95oFbKVuXYRrTVrwZIqQljuo1fyJvFTKHiL9L9skQOPokuFNQ==", + "dependencies": { + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "@docusaurus/types": "*" + }, + "peerDependenciesMeta": { + "@docusaurus/types": { + "optional": true + } + } + }, + "node_modules/@docusaurus/utils-validation": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-2.4.1.tgz", + "integrity": "sha512-unII3hlJlDwZ3w8U+pMO3Lx3RhI4YEbY3YNsQj4yzrkZzlpqZOLuAiZK2JyULnD+TKbceKU0WyWkQXtYbLNDFA==", + "dependencies": { + "@docusaurus/logger": "2.4.1", + "@docusaurus/utils": "2.4.1", + "joi": "^17.6.0", + "js-yaml": "^4.1.0", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.14" + } + }, + "node_modules/@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" + }, + "node_modules/@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.0", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.0.tgz", + "integrity": "sha512-rxLjXyJBTL4LQeJW3aKo0M/+GkCOXsO+8i9Iu7eDb6KwtP65ayoDsitrdPBtujxQ88k4wI2FNYfa6TOGwSn6cQ==", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types": { + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.1.tgz", + "integrity": "sha512-tPKQNMPuXgvdOn2/Lg9HNfUvjYVGolt04Hp03f5hAk878uwOLikN+JzeLY0HcVgKgFl9Hs3EIqpu3WX27XNhnw==", + "dependencies": { + "@jest/schemas": "^29.6.0", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", + "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", + "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==" + }, + "node_modules/@mdx-js/mdx": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-1.6.22.tgz", + "integrity": "sha512-AMxuLxPz2j5/6TpF/XSdKpQP1NlG0z11dFOlq+2IP/lSgl11GY8ji6S/rgsViN/L0BDvHvUMruRb7ub+24LUYA==", + "dependencies": { + "@babel/core": "7.12.9", + "@babel/plugin-syntax-jsx": "7.12.1", + "@babel/plugin-syntax-object-rest-spread": "7.8.3", + "@mdx-js/util": "1.6.22", + "babel-plugin-apply-mdx-type-prop": "1.6.22", + "babel-plugin-extract-import-names": "1.6.22", + "camelcase-css": "2.0.1", + "detab": "2.0.4", + "hast-util-raw": "6.0.1", + "lodash.uniq": "4.5.0", + "mdast-util-to-hast": "10.0.1", + "remark-footnotes": "2.0.0", + "remark-mdx": "1.6.22", + "remark-parse": "8.0.3", + "remark-squeeze-paragraphs": "4.0.0", + "style-to-object": "0.3.0", + "unified": "9.2.0", + "unist-builder": "2.0.3", + "unist-util-visit": "2.0.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/mdx/node_modules/@babel/core": { + "version": "7.12.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz", + "integrity": "sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.5", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.5", + "@babel/parser": "^7.12.7", + "@babel/template": "^7.12.7", + "@babel/traverse": "^7.12.9", + "@babel/types": "^7.12.7", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@mdx-js/mdx/node_modules/@babel/plugin-syntax-jsx": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz", + "integrity": "sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@mdx-js/mdx/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/@mdx-js/mdx/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@mdx-js/mdx/node_modules/unified": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz", + "integrity": "sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==", + "dependencies": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/react": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-1.6.22.tgz", + "integrity": "sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "react": "^16.13.1 || ^17.0.0" + } + }, + "node_modules/@mdx-js/util": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/@mdx-js/util/-/util-1.6.22.tgz", + "integrity": "sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@nicolo-ribaudo/semver-v6": { + "version": "6.3.3", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/semver-v6/-/semver-v6-6.3.3.tgz", + "integrity": "sha512-3Yc1fUTs69MG/uZbJlLSI3JISMn2UV2rg+1D/vROUqZyh3l6iYHCs7GMp+M40ZD7yOdDbYjJcU1oTJhrc+dGKg==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.21", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", + "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==" + }, + "node_modules/@sideway/address": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", + "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@sideway/formula": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==" + }, + "node_modules/@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==" + }, + "node_modules/@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@slorber/static-site-generator-webpack-plugin": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/@slorber/static-site-generator-webpack-plugin/-/static-site-generator-webpack-plugin-4.0.7.tgz", + "integrity": "sha512-Ug7x6z5lwrz0WqdnNFOMYrDQNTPAprvHLSh6+/fmml3qUiz6l5eq+2MzLKWtn/q5K5NpSiFsZTP/fck/3vjSxA==", + "dependencies": { + "eval": "^0.1.8", + "p-map": "^4.0.0", + "webpack-sources": "^3.2.2" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@stoplight/json": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/@stoplight/json/-/json-3.21.0.tgz", + "integrity": "sha512-5O0apqJ/t4sIevXCO3SBN9AHCEKKR/Zb4gaj7wYe5863jme9g02Q0n/GhM7ZCALkL+vGPTe4ZzTETP8TFtsw3g==", + "dependencies": { + "@stoplight/ordered-object-literal": "^1.0.3", + "@stoplight/path": "^1.3.2", + "@stoplight/types": "^13.6.0", + "jsonc-parser": "~2.2.1", + "lodash": "^4.17.21", + "safe-stable-stringify": "^1.1" + }, + "engines": { + "node": ">=8.3.0" + } + }, + "node_modules/@stoplight/json-ref-resolver": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@stoplight/json-ref-resolver/-/json-ref-resolver-3.1.5.tgz", + "integrity": "sha512-uaKLITor7UF+JBtI84zs3aOWM0L79zp7w9TrBTwPtx5SLbaQQ4HadDKgX5yhFOLMApLdhwhiftF4c0GFanOxGg==", + "dependencies": { + "@stoplight/json": "^3.17.0", + "@stoplight/path": "^1.3.2", + "@stoplight/types": "^12.3.0 || ^13.0.0", + "@types/urijs": "^1.19.19", + "dependency-graph": "~0.11.0", + "fast-memoize": "^2.5.2", + "immer": "^9.0.6", + "lodash": "^4.17.21", + "tslib": "^2.3.1", + "urijs": "^1.19.11" + }, + "engines": { + "node": ">=8.3.0" + } + }, + "node_modules/@stoplight/ordered-object-literal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@stoplight/ordered-object-literal/-/ordered-object-literal-1.0.4.tgz", + "integrity": "sha512-OF8uib1jjDs5/cCU+iOVy+GJjU3X7vk/qJIkIJFqwmlJKrrtijFmqwbu8XToXrwTYLQTP+Hebws5gtZEmk9jag==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@stoplight/path": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@stoplight/path/-/path-1.3.2.tgz", + "integrity": "sha512-lyIc6JUlUA8Ve5ELywPC8I2Sdnh1zc1zmbYgVarhXIp9YeAB0ReeqmGEOWNtlHkbP2DAA1AL65Wfn2ncjK/jtQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@stoplight/types": { + "version": "13.15.0", + "resolved": "https://registry.npmjs.org/@stoplight/types/-/types-13.15.0.tgz", + "integrity": "sha512-pBLjVRrWGVd+KzTbL3qrmufSKIEp0UfziDBdt/nrTHPKrlrtVwaHdrrQMcpM23yJDU1Wcg4cHvhIuGtKCT5OmA==", + "dependencies": { + "@types/json-schema": "^7.0.4", + "utility-types": "^3.10.0" + }, + "engines": { + "node": "^12.20 || >=14.13" + } + }, + "node_modules/@svgr/babel-plugin-add-jsx-attribute": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.5.1.tgz", + "integrity": "sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz", + "integrity": "sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz", + "integrity": "sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.5.1.tgz", + "integrity": "sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg==", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-svg-dynamic-title": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.5.1.tgz", + "integrity": "sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw==", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-svg-em-dimensions": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.5.1.tgz", + "integrity": "sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA==", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-transform-react-native-svg": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.5.1.tgz", + "integrity": "sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg==", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-transform-svg-component": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.5.1.tgz", + "integrity": "sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ==", + "engines": { + "node": ">=12" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-preset": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-6.5.1.tgz", + "integrity": "sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw==", + "dependencies": { + "@svgr/babel-plugin-add-jsx-attribute": "^6.5.1", + "@svgr/babel-plugin-remove-jsx-attribute": "*", + "@svgr/babel-plugin-remove-jsx-empty-expression": "*", + "@svgr/babel-plugin-replace-jsx-attribute-value": "^6.5.1", + "@svgr/babel-plugin-svg-dynamic-title": "^6.5.1", + "@svgr/babel-plugin-svg-em-dimensions": "^6.5.1", + "@svgr/babel-plugin-transform-react-native-svg": "^6.5.1", + "@svgr/babel-plugin-transform-svg-component": "^6.5.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/core": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-6.5.1.tgz", + "integrity": "sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==", + "dependencies": { + "@babel/core": "^7.19.6", + "@svgr/babel-preset": "^6.5.1", + "@svgr/plugin-jsx": "^6.5.1", + "camelcase": "^6.2.0", + "cosmiconfig": "^7.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/hast-util-to-babel-ast": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.5.1.tgz", + "integrity": "sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw==", + "dependencies": { + "@babel/types": "^7.20.0", + "entities": "^4.4.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/plugin-jsx": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-6.5.1.tgz", + "integrity": "sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw==", + "dependencies": { + "@babel/core": "^7.19.6", + "@svgr/babel-preset": "^6.5.1", + "@svgr/hast-util-to-babel-ast": "^6.5.1", + "svg-parser": "^2.0.4" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "^6.0.0" + } + }, + "node_modules/@svgr/plugin-svgo": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-6.5.1.tgz", + "integrity": "sha512-omvZKf8ixP9z6GWgwbtmP9qQMPX4ODXi+wzbVZgomNFsUIlHA1sf4fThdwTWSsZGgvGAG6yE+b/F5gWUkcZ/iQ==", + "dependencies": { + "cosmiconfig": "^7.0.1", + "deepmerge": "^4.2.2", + "svgo": "^2.8.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "*" + } + }, + "node_modules/@svgr/webpack": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-6.5.1.tgz", + "integrity": "sha512-cQ/AsnBkXPkEK8cLbv4Dm7JGXq2XrumKnL1dRpJD9rIO2fTIlJI9a1uCciYG1F2aUsox/hJQyNGbt3soDxSRkA==", + "dependencies": { + "@babel/core": "^7.19.6", + "@babel/plugin-transform-react-constant-elements": "^7.18.12", + "@babel/preset-env": "^7.19.4", + "@babel/preset-react": "^7.18.6", + "@babel/preset-typescript": "^7.18.6", + "@svgr/core": "^6.5.1", + "@svgr/plugin-jsx": "^6.5.1", + "@svgr/plugin-svgo": "^6.5.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "dependencies": { + "defer-to-connect": "^1.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@tsconfig/docusaurus": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@tsconfig/docusaurus/-/docusaurus-1.0.7.tgz", + "integrity": "sha512-ffTXxGIP/IRMCjuzHd6M4/HdIrw1bMfC7Bv8hMkTadnePkpe0lG0oDSdbRpSDZb2rQMAgpbWiR10BvxvNYwYrg==", + "dev": true + }, + "node_modules/@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", + "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", + "integrity": "sha512-4x5FkPpLipqwthjPsF7ZRbOv3uoLUFkTA9G9v583qi4pACvq0uTELrB8OLUzPWUI4IJIyvM85vzkV1nyiI2Lig==", + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/eslint": { + "version": "8.44.0", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.0.tgz", + "integrity": "sha512-gsF+c/0XOguWgaOgvFs+xnnRqt9GwgTvIks36WpE6ueeI4KCEHHd8K/CKHqhOqrJKsYH8m27kRzQEvWXAwXUTw==", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", + "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==" + }, + "node_modules/@types/express": { + "version": "4.17.17", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", + "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.35", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.35.tgz", + "integrity": "sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/hast": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.5.tgz", + "integrity": "sha512-SvQi0L/lNpThgPoleH53cdjB3y9zpLlVjRbqB3rH8hx1jiRSBGAhyjV3H+URFjNVRqt2EdYNrbZE5IsGlNfpRg==", + "dependencies": { + "@types/unist": "^2" + } + }, + "node_modules/@types/history": { + "version": "4.7.11", + "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.11.tgz", + "integrity": "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==" + }, + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==" + }, + "node_modules/@types/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==" + }, + "node_modules/@types/http-proxy": { + "version": "1.17.11", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.11.tgz", + "integrity": "sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA==", + "dependencies": { + "@types/node": "*" + } + }, + "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", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "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/mdast": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.12.tgz", + "integrity": "sha512-DT+iNIRNX884cx0/Q1ja7NyUPpZuv0KPyL5rGNxm1WC1OtHstl7n4Jb7nk+xacNShQMbczJjt8uFzznpp6kYBg==", + "dependencies": { + "@types/unist": "^2" + } + }, + "node_modules/@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" + }, + "node_modules/@types/node": { + "version": "20.4.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.2.tgz", + "integrity": "sha512-Dd0BYtWgnWJKwO1jkmTrzofjK2QXXcai0dmtzvIBhcA+RsG5h8R3xlyta0kGOZRNfL9GuRtb1knmPEhQrePCEw==" + }, + "node_modules/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + }, + "node_modules/@types/parse5": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-5.0.3.tgz", + "integrity": "sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==" + }, + "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==" + }, + "node_modules/@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" + }, + "node_modules/@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" + }, + "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==", + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-router": { + "version": "5.1.20", + "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.20.tgz", + "integrity": "sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==", + "dependencies": { + "@types/history": "^4.7.11", + "@types/react": "*" + } + }, + "node_modules/@types/react-router-config": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/@types/react-router-config/-/react-router-config-5.0.7.tgz", + "integrity": "sha512-pFFVXUIydHlcJP6wJm7sDii5mD/bCmmAY0wQzq+M+uX7bqS95AQqHZWP1iNMKrWVQSuHIzj5qi9BvrtLX2/T4w==", + "dependencies": { + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router": "^5.1.0" + } + }, + "node_modules/@types/react-router-dom": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.3.3.tgz", + "integrity": "sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==", + "dependencies": { + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router": "*" + } + }, + "node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==" + }, + "node_modules/@types/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-pSAff4IAxJjfAXUG6tFkO7dsSbTmf8CtUpfhhZ5VhkRpC4628tJhh3+V6H1E+/Gs9piSzYKT5yzHO5M4GG9jkw==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/scheduler": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", + "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==" + }, + "node_modules/@types/send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", + "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.2.tgz", + "integrity": "sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==", + "dependencies": { + "@types/http-errors": "*", + "@types/mime": "*", + "@types/node": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.33", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/unist": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.7.tgz", + "integrity": "sha512-cputDpIbFgLUaGQn6Vqg3/YsJwxUwHLO13v3i5ouxT4lat0khip9AEWxtERujXV9wxIB1EyF97BSJFt6vpdI8g==" + }, + "node_modules/@types/urijs": { + "version": "1.19.19", + "resolved": "https://registry.npmjs.org/@types/urijs/-/urijs-1.19.19.tgz", + "integrity": "sha512-FDJNkyhmKLw7uEvTxx5tSXfPeQpO0iy73Ry+PmYZJvQy0QIWX8a7kJ4kLWRf+EbTPJEPDSgPXHaM7pzr5lmvCg==" + }, + "node_modules/@types/ws": { + "version": "8.5.5", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.5.tgz", + "integrity": "sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/yargs": { + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==" + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/accepts/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/accepts/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/address": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", + "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/algoliasearch": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.18.0.tgz", + "integrity": "sha512-pCuVxC1SVcpc08ENH32T4sLKSyzoU7TkRIDBMwSLfIiW+fq4znOmWDkAygHZ6pRcO9I1UJdqlfgnV7TRj+MXrA==", + "dependencies": { + "@algolia/cache-browser-local-storage": "4.18.0", + "@algolia/cache-common": "4.18.0", + "@algolia/cache-in-memory": "4.18.0", + "@algolia/client-account": "4.18.0", + "@algolia/client-analytics": "4.18.0", + "@algolia/client-common": "4.18.0", + "@algolia/client-personalization": "4.18.0", + "@algolia/client-search": "4.18.0", + "@algolia/logger-common": "4.18.0", + "@algolia/logger-console": "4.18.0", + "@algolia/requester-browser-xhr": "4.18.0", + "@algolia/requester-common": "4.18.0", + "@algolia/requester-node-http": "4.18.0", + "@algolia/transporter": "4.18.0" + } + }, + "node_modules/algoliasearch-helper": { + "version": "3.13.3", + "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.13.3.tgz", + "integrity": "sha512-jhbbuYZ+fheXpaJlqdJdFa1jOsrTWKmRRTYDM3oVTto5VodZzM7tT+BHzslAotaJf/81CKrm6yLRQn8WIr/K4A==", + "dependencies": { + "@algolia/events": "^4.0.1" + }, + "peerDependencies": { + "algoliasearch": ">= 3.1 < 6" + } + }, + "node_modules/ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "dependencies": { + "string-width": "^4.1.0" + } + }, + "node_modules/ansi-align/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/ansi-align/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" + }, + "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==" + }, + "node_modules/array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" + }, + "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/autoprefixer": { + "version": "10.4.14", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz", + "integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + } + ], + "dependencies": { + "browserslist": "^4.21.5", + "caniuse-lite": "^1.0.30001464", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/axios": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz", + "integrity": "sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==", + "dependencies": { + "follow-redirects": "^1.14.7" + } + }, + "node_modules/babel-loader": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz", + "integrity": "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==", + "dependencies": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "engines": { + "node": ">= 8.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "webpack": ">=2" + } + }, + "node_modules/babel-plugin-apply-mdx-type-prop": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/babel-plugin-apply-mdx-type-prop/-/babel-plugin-apply-mdx-type-prop-1.6.22.tgz", + "integrity": "sha512-VefL+8o+F/DfK24lPZMtJctrCVOfgbqLAGZSkxwhazQv4VxPg3Za/i40fu22KR2m8eEda+IfSOlPLUSIiLcnCQ==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4", + "@mdx-js/util": "1.6.22" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "@babel/core": "^7.11.6" + } + }, + "node_modules/babel-plugin-apply-mdx-type-prop/node_modules/@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" + }, + "node_modules/babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dependencies": { + "object.assign": "^4.1.0" + } + }, + "node_modules/babel-plugin-extract-import-names": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/babel-plugin-extract-import-names/-/babel-plugin-extract-import-names-1.6.22.tgz", + "integrity": "sha512-yJ9BsJaISua7d8zNT7oRG1ZLBJCIdZ4PZqmH8qa9N5AK01ifk3fnkc98AXhtzE7UkfCsEumvoQWgoYLhOnJ7jQ==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/babel-plugin-extract-import-names/node_modules/@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.4.tgz", + "integrity": "sha512-9WeK9snM1BfxB38goUEv2FLnA6ja07UMfazFHzCXUb3NyDZAwfXvQiURQ6guTTMeHcOsdknULm1PDhs4uWtKyA==", + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.4.1", + "@nicolo-ribaudo/semver-v6": "^6.3.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.2.tgz", + "integrity": "sha512-Cid+Jv1BrY9ReW9lIfNlNpsI53N+FN7gE+f73zLAUbr9C52W4gKLWSByx47pfDJsEysojKArqOtOKZSVIIUTuQ==", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.4.1", + "core-js-compat": "^3.31.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.1.tgz", + "integrity": "sha512-L8OyySuI6OSQ5hFy9O+7zFjyr4WhAfRjLIOkhQGYl+emwJkd/S4XXT1JpfrgR1jrQ1NcGiOh+yAdGlF8pnC3Jw==", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.4.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/bail": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", + "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/base16": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base16/-/base16-1.0.0.tgz", + "integrity": "sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ==" + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==" + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/bonjour-service": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.1.1.tgz", + "integrity": "sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg==", + "dependencies": { + "array-flatten": "^2.1.2", + "dns-equal": "^1.0.0", + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + }, + "node_modules/boxen": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-6.2.1.tgz", + "integrity": "sha512-H4PEsJXfFI/Pt8sjDWbHlQPx4zL/bvSQjcilJmaulGt5mLDorHOHpmdXAJcBcmru7PhYSp/cDMWRko4ZUMFkSw==", + "dependencies": { + "ansi-align": "^3.0.1", + "camelcase": "^6.2.0", + "chalk": "^4.1.2", + "cli-boxes": "^3.0.0", + "string-width": "^5.0.1", + "type-fest": "^2.5.0", + "widest-line": "^4.0.1", + "wrap-ansi": "^8.0.1" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.21.9", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz", + "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001503", + "electron-to-chromium": "^1.4.431", + "node-releases": "^2.0.12", + "update-browserslist-db": "^1.0.11" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cacheable-request/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cacheable-request/node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/cacheable-request/node_modules/normalize-url": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001515", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001515.tgz", + "integrity": "sha512-eEFDwUOZbE24sb+Ecsx3+OvNETqjWIdabMy52oOkIgcUtAsQifjUG9q4U9dgTHJM2mfk4uEPxc0+xuFdJ629QA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/ccount": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz", + "integrity": "sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "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/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/cheerio": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", + "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", + "dependencies": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "htmlparser2": "^8.0.1", + "parse5": "^7.0.0", + "parse5-htmlparser2-tree-adapter": "^7.0.0" + }, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/cheerio-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "dependencies": { + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/ci-info": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/clean-css": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz", + "integrity": "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==", + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-boxes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", + "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-table3": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", + "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/cli-table3/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/cli-table3/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clone-response": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "dependencies": { + "mimic-response": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clsx": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", + "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/collapse-white-space": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.6.tgz", + "integrity": "sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==" + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==" + }, + "node_modules/combine-promises": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/combine-promises/-/combine-promises-1.1.0.tgz", + "integrity": "sha512-ZI9jvcLDxqwaXEixOhArm3r7ReIivsXkpbyEWyeOhzz1QS0iSgBPnWvEqvIQtYyamGCYA88gFhmUrs9hrrQ0pg==", + "engines": { + "node": ">=10" + } + }, + "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": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compressible/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "dependencies": { + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/consola": { + "version": "2.15.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", + "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==" + }, + "node_modules/content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "node_modules/copy-text-to-clipboard": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/copy-text-to-clipboard/-/copy-text-to-clipboard-3.2.0.tgz", + "integrity": "sha512-RnJFp1XR/LOBDckxTib5Qjr/PMfkatD0MUCQgdpqS8MdKiNUzBjAQBEN6oUy+jW7LI93BBG3DtMB2KOOKpGs2Q==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/copy-webpack-plugin": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", + "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", + "dependencies": { + "fast-glob": "^3.2.11", + "glob-parent": "^6.0.1", + "globby": "^13.1.1", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/copy-webpack-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/copy-webpack-plugin/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/globby": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", + "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", + "dependencies": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.3.0", + "ignore": "^5.2.4", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/copy-webpack-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/copy-webpack-plugin/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/copy-webpack-plugin/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/core-js": { + "version": "3.31.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.31.1.tgz", + "integrity": "sha512-2sKLtfq1eFST7l7v62zaqXacPc7uG8ZAya8ogijLhTtaKNcpzpB4TMoTw2Si+8GYKRwFPMMtUT0263QFWFfqyQ==", + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.31.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.31.1.tgz", + "integrity": "sha512-wIDWd2s5/5aJSdpOJHfSibxNODxoGoWOBHt8JSPB41NOE94M7kuTPZCYLOlTtuoXTsBPKobpJ6T+y0SSy5L9SA==", + "dependencies": { + "browserslist": "^4.21.9" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "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/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/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==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/css-declaration-sorter": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz", + "integrity": "sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==", + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/css-loader": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.8.1.tgz", + "integrity": "sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==", + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.21", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.3", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.3.8" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/css-minimizer-webpack-plugin": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-4.2.2.tgz", + "integrity": "sha512-s3Of/4jKfw1Hj9CxEO1E5oXhQAxlayuHO2y/ML+C6I9sQ7FdzfEV6QgMLN3vI+qFsjJGIAFLKtQK7t8BOXAIyA==", + "dependencies": { + "cssnano": "^5.1.8", + "jest-worker": "^29.1.2", + "postcss": "^8.4.17", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@parcel/css": { + "optional": true + }, + "@swc/css": { + "optional": true + }, + "clean-css": { + "optional": true + }, + "csso": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "lightningcss": { + "optional": true + } + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano": { + "version": "5.1.15", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.15.tgz", + "integrity": "sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==", + "dependencies": { + "cssnano-preset-default": "^5.2.14", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/cssnano" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-preset-advanced": { + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/cssnano-preset-advanced/-/cssnano-preset-advanced-5.3.10.tgz", + "integrity": "sha512-fnYJyCS9jgMU+cmHO1rPSPf9axbQyD7iUhLO5Df6O4G+fKIOMps+ZbU0PdGFejFBBZ3Pftf18fn1eG7MAPUSWQ==", + "dependencies": { + "autoprefixer": "^10.4.12", + "cssnano-preset-default": "^5.2.14", + "postcss-discard-unused": "^5.1.0", + "postcss-merge-idents": "^5.1.1", + "postcss-reduce-idents": "^5.2.0", + "postcss-zindex": "^5.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-preset-default": { + "version": "5.2.14", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz", + "integrity": "sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==", + "dependencies": { + "css-declaration-sorter": "^6.3.1", + "cssnano-utils": "^3.1.0", + "postcss-calc": "^8.2.3", + "postcss-colormin": "^5.3.1", + "postcss-convert-values": "^5.1.3", + "postcss-discard-comments": "^5.1.2", + "postcss-discard-duplicates": "^5.1.0", + "postcss-discard-empty": "^5.1.1", + "postcss-discard-overridden": "^5.1.0", + "postcss-merge-longhand": "^5.1.7", + "postcss-merge-rules": "^5.1.4", + "postcss-minify-font-values": "^5.1.0", + "postcss-minify-gradients": "^5.1.1", + "postcss-minify-params": "^5.1.4", + "postcss-minify-selectors": "^5.2.1", + "postcss-normalize-charset": "^5.1.0", + "postcss-normalize-display-values": "^5.1.0", + "postcss-normalize-positions": "^5.1.1", + "postcss-normalize-repeat-style": "^5.1.1", + "postcss-normalize-string": "^5.1.0", + "postcss-normalize-timing-functions": "^5.1.0", + "postcss-normalize-unicode": "^5.1.1", + "postcss-normalize-url": "^5.1.0", + "postcss-normalize-whitespace": "^5.1.1", + "postcss-ordered-values": "^5.1.3", + "postcss-reduce-initial": "^5.1.2", + "postcss-reduce-transforms": "^5.1.0", + "postcss-svgo": "^5.1.0", + "postcss-unique-selectors": "^5.1.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", + "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dependencies": { + "css-tree": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "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==" + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", + "dependencies": { + "mimic-response": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/del": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", + "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", + "dependencies": { + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dependency-graph": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", + "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detab": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detab/-/detab-2.0.4.tgz", + "integrity": "sha512-8zdsQA5bIkoRECvCrNKPla84lyoR7DSAyf7p0YgXzBO9PDJx8KntPUay7NS6yp+KdxdVtiE5SpHKtbp2ZQyA9g==", + "dependencies": { + "repeat-string": "^1.5.4" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" + }, + "node_modules/detect-port": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.5.1.tgz", + "integrity": "sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==", + "dependencies": { + "address": "^1.0.1", + "debug": "4" + }, + "bin": { + "detect": "bin/detect-port.js", + "detect-port": "bin/detect-port.js" + } + }, + "node_modules/detect-port-alt": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", + "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==", + "dependencies": { + "address": "^1.0.1", + "debug": "^2.6.0" + }, + "bin": { + "detect": "bin/detect-port", + "detect-port": "bin/detect-port" + }, + "engines": { + "node": ">= 4.2.1" + } + }, + "node_modules/detect-port-alt/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/detect-port-alt/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==" + }, + "node_modules/dns-packet": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.0.tgz", + "integrity": "sha512-rza3UH1LwdHh9qyPXp8lkwpjSNk/AMD3dPytUoRoqnypDUhY0xvbdmVhWOfxO68frEfV9BU8V12Ez7ZsHGZpCQ==", + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/docusaurus-json-schema-plugin": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/docusaurus-json-schema-plugin/-/docusaurus-json-schema-plugin-1.6.1.tgz", + "integrity": "sha512-CcFcQPIZ8aTtvUmg8p5q+7Zyk+VW+5lUsiZmuFFDZPxAAsYbSnBEUMaM9AueOCWY8W0zFSSbYLXHJe2bnNyUkg==", + "dependencies": { + "@stoplight/json-ref-resolver": "^3.1.5", + "monaco-editor": "^0.36.1", + "monaco-editor-webpack-plugin": "^7.0.1", + "react-monaco-editor": "^0.52.0" + }, + "peerDependencies": { + "@docusaurus/core": "^2.4.0", + "@docusaurus/theme-classic": "^2.4.0", + "react": "^17.0.2 || ^18.0.0" + } + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dependencies": { + "utila": "~0.4" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dot-prop/node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" + }, + "node_modules/duplexer3": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", + "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==" + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/electron-to-chromium": { + "version": "1.4.459", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.459.tgz", + "integrity": "sha512-XXRS5NFv8nCrBL74Rm3qhJjA2VCsRFx0OjHKBMPI0otij56aun8UWiKTDABmd5/7GTR021pA4wivs+Ri6XCElg==" + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/emoticon": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/emoticon/-/emoticon-3.2.0.tgz", + "integrity": "sha512-SNujglcLTTg+lDAcApPNgEdudaqQFiAbJCqzjNxJkvN9vAwCGi0uu8IUVvx+f16h+V44KCY6Y2yboroc9pilHg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/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==", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-module-lexer": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz", + "integrity": "sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==" + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-goat": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", + "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eta": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/eta/-/eta-2.2.0.tgz", + "integrity": "sha512-UVQ72Rqjy/ZKQalzV5dCCJP80GrmPrMxh6NlNf+erV6ObL0ZFkhCstWRawS85z3smdr3d2wXPsZEY7rDPfGd2g==", + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "url": "https://github.com/eta-dev/eta?sponsor=1" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eval": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/eval/-/eval-0.1.8.tgz", + "integrity": "sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==", + "dependencies": { + "@types/node": "*", + "require-like": ">= 0.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/execa/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "node_modules/express/node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/express/node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "node_modules/express/node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-glob": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.0.tgz", + "integrity": "sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "node_modules/fast-memoize": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/fast-memoize/-/fast-memoize-2.5.2.tgz", + "integrity": "sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw==" + }, + "node_modules/fast-url-parser": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", + "integrity": "sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==", + "dependencies": { + "punycode": "^1.3.2" + } + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fbemitter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/fbemitter/-/fbemitter-3.0.0.tgz", + "integrity": "sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==", + "dependencies": { + "fbjs": "^3.0.0" + } + }, + "node_modules/fbjs": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.5.tgz", + "integrity": "sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==", + "dependencies": { + "cross-fetch": "^3.1.5", + "fbjs-css-vars": "^1.0.0", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^1.0.35" + } + }, + "node_modules/fbjs-css-vars": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", + "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==" + }, + "node_modules/feed": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/feed/-/feed-4.2.2.tgz", + "integrity": "sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==", + "dependencies": { + "xml-js": "^1.6.11" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/file-loader/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/filesize": { + "version": "8.0.7", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz", + "integrity": "sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flux": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/flux/-/flux-4.0.4.tgz", + "integrity": "sha512-NCj3XlayA2UsapRpM7va6wU1+9rE5FIL7qoMcmxWHRzbp0yujihMBm9BBHZ1MDIk5h5o2Bl6eGiCe8rYELAmYw==", + "dependencies": { + "fbemitter": "^3.0.0", + "fbjs": "^3.0.1" + }, + "peerDependencies": { + "react": "^15.0.2 || ^16.0.0 || ^17.0.0" + } + }, + "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/fork-ts-checker-webpack-plugin": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz", + "integrity": "sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==", + "dependencies": { + "@babel/code-frame": "^7.8.3", + "@types/json-schema": "^7.0.5", + "chalk": "^4.1.0", + "chokidar": "^3.4.2", + "cosmiconfig": "^6.0.0", + "deepmerge": "^4.2.2", + "fs-extra": "^9.0.0", + "glob": "^7.1.6", + "memfs": "^3.1.2", + "minimatch": "^3.0.4", + "schema-utils": "2.7.0", + "semver": "^7.3.2", + "tapable": "^1.0.0" + }, + "engines": { + "node": ">=10", + "yarn": ">=1.0.0" + }, + "peerDependencies": { + "eslint": ">= 6", + "typescript": ">= 2.7", + "vue-template-compiler": "*", + "webpack": ">= 4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + } + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/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/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", + "dependencies": { + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", + "ajv-keywords": "^3.4.1" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fraction.js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://www.patreon.com/infusion" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs-monkey": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.4.tgz", + "integrity": "sha512-INM/fWAxMICjttnD0DX1rBvinKskj5G1w+oy/pnm9u/tSlnBrzFonJMcalKJ30P8RRsPzKcCG7Q8l0jx5Fh9YQ==" + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==" + }, + "node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/github-slugger": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.5.0.tgz", + "integrity": "sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==" + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + }, + "node_modules/global-dirs": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", + "dependencies": { + "ini": "2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/global-dirs/node_modules/ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "dependencies": { + "global-prefix": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "dependencies": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "dependencies": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "node_modules/gray-matter": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", + "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", + "dependencies": { + "js-yaml": "^3.13.1", + "kind-of": "^6.0.2", + "section-matter": "^1.0.0", + "strip-bom-string": "^1.0.0" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/gray-matter/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/gray-matter/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "dependencies": { + "duplexer": "^0.1.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-yarn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/hast-to-hyperscript": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz", + "integrity": "sha512-zQgLKqF+O2F72S1aa4y2ivxzSlko3MAvxkwG8ehGmNiqd98BIN3JM1rAJPmplEyLmGLO2QZYJtIneOSZ2YbJuA==", + "dependencies": { + "@types/unist": "^2.0.3", + "comma-separated-tokens": "^1.0.0", + "property-information": "^5.3.0", + "space-separated-tokens": "^1.0.0", + "style-to-object": "^0.3.0", + "unist-util-is": "^4.0.0", + "web-namespaces": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-6.0.1.tgz", + "integrity": "sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA==", + "dependencies": { + "@types/parse5": "^5.0.0", + "hastscript": "^6.0.0", + "property-information": "^5.0.0", + "vfile": "^4.0.0", + "vfile-location": "^3.2.0", + "web-namespaces": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "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/hast-util-raw": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-6.0.1.tgz", + "integrity": "sha512-ZMuiYA+UF7BXBtsTBNcLBF5HzXzkyE6MLzJnL605LKE8GJylNjGc4jjxazAHUtcwT5/CEt6afRKViYB4X66dig==", + "dependencies": { + "@types/hast": "^2.0.0", + "hast-util-from-parse5": "^6.0.0", + "hast-util-to-parse5": "^6.0.0", + "html-void-elements": "^1.0.0", + "parse5": "^6.0.0", + "unist-util-position": "^3.0.0", + "vfile": "^4.0.0", + "web-namespaces": "^1.0.0", + "xtend": "^4.0.0", + "zwitch": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-raw/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + }, + "node_modules/hast-util-to-parse5": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-6.0.0.tgz", + "integrity": "sha512-Lu5m6Lgm/fWuz8eWnrKezHtVY83JeRGaNQ2kn9aJgqaxvVkFCZQBEhgodZUDUvoodgyROHDb3r5IxAEdl6suJQ==", + "dependencies": { + "hast-to-hyperscript": "^9.0.0", + "property-information": "^5.0.0", + "web-namespaces": "^1.0.0", + "xtend": "^4.0.0", + "zwitch": "^1.0.0" + }, + "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/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "bin": { + "he": "bin/he" + } + }, + "node_modules/history": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", + "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", + "dependencies": { + "@babel/runtime": "^7.1.2", + "loose-envify": "^1.2.0", + "resolve-pathname": "^3.0.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0", + "value-equal": "^1.0.1" + } + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hpack.js/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/htm": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/htm/-/htm-3.1.1.tgz", + "integrity": "sha512-983Vyg8NwUE7JkZ6NmOqpCZ+sh1bKv2iYTlUkzlWmA5JD2acKoxd4KVxbMmxX/85mtfdnDmTFoNKcg5DGAvxNQ==" + }, + "node_modules/html-entities": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.4.0.tgz", + "integrity": "sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ] + }, + "node_modules/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html-minifier-terser/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "engines": { + "node": ">= 12" + } + }, + "node_modules/html-tags": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", + "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/html-void-elements": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-1.0.5.tgz", + "integrity": "sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/html-webpack-plugin": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz", + "integrity": "sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg==", + "dependencies": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" + }, + "peerDependencies": { + "webpack": "^5.20.0" + } + }, + "node_modules/htmlparser2": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==" + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==" + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/http-proxy-middleware/node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/image-size": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.0.2.tgz", + "integrity": "sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg==", + "dependencies": { + "queue": "6.0.2" + }, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/immer": { + "version": "9.0.21", + "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", + "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==", + "engines": { + "node": ">=4" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/infima": { + "version": "0.2.0-alpha.43", + "resolved": "https://registry.npmjs.org/infima/-/infima-0.2.0-alpha.43.tgz", + "integrity": "sha512-2uw57LvUqW0rK/SWYnd/2rRfxNA5DDNOh33jxF7fy46VWoNhGxiUQyVZHbBMjQ33mQem0cjdDVwgWVAmlRfgyQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "node_modules/inline-style-parser": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", + "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" + }, + "node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/ipaddr.js": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz", + "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==", + "engines": { + "node": ">= 10" + } + }, + "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-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "engines": { + "node": ">=4" + } + }, + "node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-ci/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "node_modules/is-core-module": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", + "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "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": "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/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-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-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "dependencies": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-npm": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", + "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-root": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", + "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + }, + "node_modules/is-whitespace-character": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz", + "integrity": "sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-word-character": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.4.tgz", + "integrity": "sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-yarn-global": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", + "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==" + }, + "node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-util": { + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.6.1.tgz", + "integrity": "sha512-NRFCcjc+/uO3ijUVyNOQJluf8PtGCe/W6cix36+M3cTFgiYqFOOW5MgN4JOOcvbUhcKTYVd1CvHz/LWi8d16Mg==", + "dependencies": { + "@jest/types": "^29.6.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker": { + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.6.1.tgz", + "integrity": "sha512-U+Wrbca7S8ZAxAe9L6nb6g8kPdia5hj32Puu5iOqBCMTMWFHXuK6dOV2IFrpedbTV8fjMFLdWNttQTBL6u2MRA==", + "dependencies": { + "@types/node": "*", + "jest-util": "^29.6.1", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jiti": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.19.1.tgz", + "integrity": "sha512-oVhqoRDaBXf7sjkll95LHVS6Myyyb1zaunVwk4Z0+WPSW4gjS0pl01zYKHScTuyEhQsFxV5L4DR5r+YqSyqyyg==", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/joi": { + "version": "17.9.2", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.9.2.tgz", + "integrity": "sha512-Itk/r+V4Dx0V3c7RLFdRh12IOjySm2/WGPMubBT92cQvRfYZhPM2W0hZlctjj72iES8jsRCwp7S/cRmWBnJ4nw==", + "dependencies": { + "@hapi/hoek": "^9.0.0", + "@hapi/topo": "^5.0.0", + "@sideway/address": "^4.1.3", + "@sideway/formula": "^3.0.1", + "@sideway/pinpoint": "^2.0.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonc-parser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.2.1.tgz", + "integrity": "sha512-o6/yDBYccGvTz1+QFevz6l6OBZ2+fMVu2JZ9CIhzsYRX4mjaK5IyX9eldUdCmga16zlgQxyrj5pt9kzuj2C02w==" + }, + "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/keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "dependencies": { + "json-buffer": "3.0.0" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "engines": { + "node": ">=6" + } + }, + "node_modules/latest-version": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", + "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", + "dependencies": { + "package-json": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/launch-editor": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.0.tgz", + "integrity": "sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==", + "dependencies": { + "picocolors": "^1.0.0", + "shell-quote": "^1.7.3" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.curry": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.curry/-/lodash.curry-4.1.1.tgz", + "integrity": "sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA==" + }, + "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.flow": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/lodash.flow/-/lodash.flow-3.5.0.tgz", + "integrity": "sha512-ff3BX/tSioo+XojX4MOsOMhJw0nZoUEF011LX8g8d3gvjVbxd89cCio4BCXronjxcTUIJUoqKEUA+n4CqvvRPw==" + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lunr-languages": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/lunr-languages/-/lunr-languages-1.12.0.tgz", + "integrity": "sha512-C2z02jt74ymrDocBwxYB4Cr1LNZj9rHGLTH/00+JuoT6eJOSSuPBzeqQG8kjnlPUQe+/PAWv1/KHbDT+YYYRnA==" + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/mark.js": { + "version": "8.11.1", + "resolved": "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz", + "integrity": "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==" + }, + "node_modules/markdown-escapes": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.4.tgz", + "integrity": "sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-squeeze-paragraphs": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-squeeze-paragraphs/-/mdast-squeeze-paragraphs-4.0.0.tgz", + "integrity": "sha512-zxdPn69hkQ1rm4J+2Cs2j6wDEv7O17TfXTJ33tl/+JPIoEmtV9t2ZzBM5LPHE8QlHsmVD8t3vPKCyY3oH+H8MQ==", + "dependencies": { + "unist-util-remove": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-definitions": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz", + "integrity": "sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==", + "dependencies": { + "unist-util-visit": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-10.0.1.tgz", + "integrity": "sha512-BW3LM9SEMnjf4HXXVApZMt8gLQWVNXc3jryK0nJu/rOXPOnlkUjmdkDlmxMirpbU9ILncGFIwLH/ubnWBbcdgA==", + "dependencies": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "mdast-util-definitions": "^4.0.0", + "mdurl": "^1.0.0", + "unist-builder": "^2.0.0", + "unist-util-generated": "^1.0.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", + "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" + }, + "node_modules/mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "dependencies": { + "fs-monkey": "^1.0.4" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "dependencies": { + "mime-db": "~1.33.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "2.7.6", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.6.tgz", + "integrity": "sha512-Qk7HcgaPkGG6eD77mLvZS1nmxlao3j+9PkrT9Uc7HAE1id3F41+DdBRYRYkbyfNRGzm8/YWtzhw7nVPmwhqTQw==", + "dependencies": { + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/monaco-editor": { + "version": "0.36.1", + "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.36.1.tgz", + "integrity": "sha512-/CaclMHKQ3A6rnzBzOADfwdSJ25BFoFT0Emxsc4zYVyav5SkK9iA6lEtIeuN/oRYbwPgviJT+t3l+sjFa28jYg==" + }, + "node_modules/monaco-editor-webpack-plugin": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/monaco-editor-webpack-plugin/-/monaco-editor-webpack-plugin-7.1.0.tgz", + "integrity": "sha512-ZjnGINHN963JQkFqjjcBtn1XBtUATDZBMgNQhDQwd78w2ukRhFXAPNgWuacaQiDZsUr4h1rWv5Mv6eriKuOSzA==", + "dependencies": { + "loader-utils": "^2.0.2" + }, + "peerDependencies": { + "monaco-editor": ">= 0.31.0", + "webpack": "^4.5.0 || 5.x" + } + }, + "node_modules/mrmime": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", + "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-emoji": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", + "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", + "dependencies": { + "lodash": "^4.17.21" + } + }, + "node_modules/node-fetch": { + "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" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-releases": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nprogress": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz", + "integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==" + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "dependencies": { + "got": "^9.6.0", + "registry-auth-token": "^4.0.0", + "registry-url": "^5.0.0", + "semver": "^6.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/package-json/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "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", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-numeric-range": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz", + "integrity": "sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==" + }, + "node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", + "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", + "dependencies": { + "domhandler": "^5.0.2", + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==" + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/path-to-regexp": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", + "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "dependencies": { + "isarray": "0.0.1" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-up": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", + "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-up/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss": { + "version": "8.4.25", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.25.tgz", + "integrity": "sha512-7taJ/8t2av0Z+sQEvNzCkpDynl0tX3uJMCODi6nT3PfASC7dYCWV9aQ+uiCf+KBD4SEFcu+GvJdGdwzQ6OSjCw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-calc": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", + "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", + "dependencies": { + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0" + }, + "peerDependencies": { + "postcss": "^8.2.2" + } + }, + "node_modules/postcss-colormin": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.1.tgz", + "integrity": "sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==", + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "colord": "^2.9.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-convert-values": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz", + "integrity": "sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==", + "dependencies": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-comments": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", + "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", + "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-empty": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", + "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", + "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-unused": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-5.1.0.tgz", + "integrity": "sha512-KwLWymI9hbwXmJa0dkrzpRbSJEh0vVUd7r8t0yOGPcfKzyJJxFM8kLyC5Ev9avji6nY95pOp1W6HqIrfT+0VGw==", + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-loader": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.3.3.tgz", + "integrity": "sha512-YgO/yhtevGO/vJePCQmTxiaEwER94LABZN0ZMT4A0vsak9TpO+RvKRs7EmJ8peIlB9xfXCsS7M8LjqncsUZ5HA==", + "dependencies": { + "cosmiconfig": "^8.2.0", + "jiti": "^1.18.2", + "semver": "^7.3.8" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + } + }, + "node_modules/postcss-loader/node_modules/cosmiconfig": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.2.0.tgz", + "integrity": "sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==", + "dependencies": { + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + } + }, + "node_modules/postcss-merge-idents": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-5.1.1.tgz", + "integrity": "sha512-pCijL1TREiCoog5nQp7wUe+TUonA2tC2sQ54UGeMmryK3UFGIYKqDyjnqd6RcuI4znFn9hWSLNN8xKE/vWcUQw==", + "dependencies": { + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-merge-longhand": { + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz", + "integrity": "sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^5.1.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-merge-rules": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz", + "integrity": "sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==", + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^3.1.0", + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", + "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-gradients": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", + "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", + "dependencies": { + "colord": "^2.9.1", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-params": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz", + "integrity": "sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==", + "dependencies": { + "browserslist": "^4.21.4", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz", + "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==", + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz", + "integrity": "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==", + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", + "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", + "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-positions": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz", + "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz", + "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-string": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", + "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", + "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-unicode": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz", + "integrity": "sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==", + "dependencies": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", + "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", + "dependencies": { + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-whitespace": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", + "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-ordered-values": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz", + "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==", + "dependencies": { + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-idents": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-5.2.0.tgz", + "integrity": "sha512-BTrLjICoSB6gxbc58D5mdBK8OhXRDqud/zodYfdSi52qvDHdMwk+9kB9xsM8yJThH/sZU5A6QVSmMmaN001gIg==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-initial": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz", + "integrity": "sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==", + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", + "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.13", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", + "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-sort-media-queries": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/postcss-sort-media-queries/-/postcss-sort-media-queries-4.4.1.tgz", + "integrity": "sha512-QDESFzDDGKgpiIh4GYXsSy6sek2yAwQx1JASl5AxBtU1Lq2JfKBljIPNdil989NcSKRQX1ToiaKphImtBuhXWw==", + "dependencies": { + "sort-css-media-queries": "2.1.0" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "postcss": "^8.4.16" + } + }, + "node_modules/postcss-svgo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", + "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "svgo": "^2.7.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-unique-selectors": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", + "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + }, + "node_modules/postcss-zindex": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-5.1.0.tgz", + "integrity": "sha512-fgFMf0OtVSBR1va1JNHYgMxYk73yhn/qb4uQDq1DLGYolz8gHCyr/sesEuGUaYs58E3ZJRcpoGuPVoB7Meiq9A==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/preact": { + "version": "10.16.0", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.16.0.tgz", + "integrity": "sha512-XTSj3dJ4roKIC93pald6rWuB2qQJO9gO2iLLyTe87MrjQN+HklueLsmskbywEWqCHlclgz3/M4YLL2iBr9UmMA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/preact" + } + }, + "node_modules/prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "node_modules/pretty-time": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pretty-time/-/pretty-time-1.1.0.tgz", + "integrity": "sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/prism-react-renderer": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-1.3.5.tgz", + "integrity": "sha512-IJ+MSwBWKG+SM3b2SUfdrhC+gu01QkV2KmRQgREThBfSQRoufqRfxfHUxpG1WcaFjP+kojcFyO9Qqtpgt3qLCg==", + "peerDependencies": { + "react": ">=0.14.9" + } + }, + "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-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dependencies": { + "asap": "~2.0.3" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "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-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" + }, + "node_modules/pupa": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", + "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", + "dependencies": { + "escape-goat": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pure-color": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/pure-color/-/pure-color-1.3.0.tgz", + "integrity": "sha512-QFADYnsVoBMw1srW7OVKEYjG+MbIa49s54w1MA1EDY6r2r/sTcKKYqRX1f4GYvnXP7eN/Pe9HFcX+hwzmrXRHA==" + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", + "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", + "dependencies": { + "inherits": "~2.0.3" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "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/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/range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/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==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", + "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-base16-styling": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/react-base16-styling/-/react-base16-styling-0.6.0.tgz", + "integrity": "sha512-yvh/7CArceR/jNATXOKDlvTnPKPmGZz7zsenQ3jUwLzHkNUR0CvY3yGYJbWJ/nnxsL8Sgmt5cO3/SILVuPO6TQ==", + "dependencies": { + "base16": "^1.0.0", + "lodash.curry": "^4.0.1", + "lodash.flow": "^3.3.0", + "pure-color": "^1.2.0" + } + }, + "node_modules/react-dev-utils": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz", + "integrity": "sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==", + "dependencies": { + "@babel/code-frame": "^7.16.0", + "address": "^1.1.2", + "browserslist": "^4.18.1", + "chalk": "^4.1.2", + "cross-spawn": "^7.0.3", + "detect-port-alt": "^1.1.6", + "escape-string-regexp": "^4.0.0", + "filesize": "^8.0.6", + "find-up": "^5.0.0", + "fork-ts-checker-webpack-plugin": "^6.5.0", + "global-modules": "^2.0.0", + "globby": "^11.0.4", + "gzip-size": "^6.0.0", + "immer": "^9.0.7", + "is-root": "^2.1.0", + "loader-utils": "^3.2.0", + "open": "^8.4.0", + "pkg-up": "^3.1.0", + "prompts": "^2.4.2", + "react-error-overlay": "^6.0.11", + "recursive-readdir": "^2.2.2", + "shell-quote": "^1.7.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/react-dev-utils/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/react-dev-utils/node_modules/loader-utils": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz", + "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==", + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/react-dev-utils/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/react-dev-utils/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/react-dev-utils/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/react-dom": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", + "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "scheduler": "^0.20.2" + }, + "peerDependencies": { + "react": "17.0.2" + } + }, + "node_modules/react-error-overlay": { + "version": "6.0.11", + "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz", + "integrity": "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==" + }, + "node_modules/react-fast-compare": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz", + "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==" + }, + "node_modules/react-helmet-async": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.3.0.tgz", + "integrity": "sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "invariant": "^2.2.4", + "prop-types": "^15.7.2", + "react-fast-compare": "^3.2.0", + "shallowequal": "^1.1.0" + }, + "peerDependencies": { + "react": "^16.6.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.6.0 || ^17.0.0 || ^18.0.0" + } + }, + "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/react-json-view": { + "version": "1.21.3", + "resolved": "https://registry.npmjs.org/react-json-view/-/react-json-view-1.21.3.tgz", + "integrity": "sha512-13p8IREj9/x/Ye4WI/JpjhoIwuzEgUAtgJZNBJckfzJt1qyh24BdTm6UQNGnyTq9dapQdrqvquZTo3dz1X6Cjw==", + "dependencies": { + "flux": "^4.0.1", + "react-base16-styling": "^0.6.0", + "react-lifecycles-compat": "^3.0.4", + "react-textarea-autosize": "^8.3.2" + }, + "peerDependencies": { + "react": "^17.0.0 || ^16.3.0 || ^15.5.4", + "react-dom": "^17.0.0 || ^16.3.0 || ^15.5.4" + } + }, + "node_modules/react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" + }, + "node_modules/react-loadable": { + "name": "@docusaurus/react-loadable", + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-5.5.2.tgz", + "integrity": "sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ==", + "dependencies": { + "@types/react": "*", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": "*" + } + }, + "node_modules/react-loadable-ssr-addon-v5-slorber": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/react-loadable-ssr-addon-v5-slorber/-/react-loadable-ssr-addon-v5-slorber-1.0.1.tgz", + "integrity": "sha512-lq3Lyw1lGku8zUEJPDxsNm1AfYHBrO9Y1+olAYwpUJ2IGFBskM0DMKok97A6LWUpHm+o7IvQBOWu9MLenp9Z+A==", + "dependencies": { + "@babel/runtime": "^7.10.3" + }, + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "react-loadable": "*", + "webpack": ">=4.41.1 || 5.x" + } + }, + "node_modules/react-monaco-editor": { + "version": "0.52.0", + "resolved": "https://registry.npmjs.org/react-monaco-editor/-/react-monaco-editor-0.52.0.tgz", + "integrity": "sha512-jhQSekf2JABbcpN45gKZlWfTS0QcBOZAbAWKGyfqy/KEcMXTwJpCOYGcn2Ur11SUUxWJUzhKjE2fx9BGBc5S8g==", + "dependencies": { + "prop-types": "^15.8.1" + }, + "peerDependencies": { + "@types/react": ">=16 <= 18", + "monaco-editor": "^0.36.1", + "react": ">=16 <= 18" + } + }, + "node_modules/react-router": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz", + "integrity": "sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==", + "dependencies": { + "@babel/runtime": "^7.12.13", + "history": "^4.9.0", + "hoist-non-react-statics": "^3.1.0", + "loose-envify": "^1.3.1", + "path-to-regexp": "^1.7.0", + "prop-types": "^15.6.2", + "react-is": "^16.6.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + }, + "peerDependencies": { + "react": ">=15" + } + }, + "node_modules/react-router-config": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/react-router-config/-/react-router-config-5.1.1.tgz", + "integrity": "sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==", + "dependencies": { + "@babel/runtime": "^7.1.2" + }, + "peerDependencies": { + "react": ">=15", + "react-router": ">=5" + } + }, + "node_modules/react-router-dom": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.4.tgz", + "integrity": "sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==", + "dependencies": { + "@babel/runtime": "^7.12.13", + "history": "^4.9.0", + "loose-envify": "^1.3.1", + "prop-types": "^15.6.2", + "react-router": "5.3.4", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + }, + "peerDependencies": { + "react": ">=15" + } + }, + "node_modules/react-textarea-autosize": { + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.5.2.tgz", + "integrity": "sha512-uOkyjkEl0ByEK21eCJMHDGBAAd/BoFQBawYK5XItjAmCTeSbjxghd8qnt7nzsLYzidjnoObu6M26xts0YGKsGg==", + "dependencies": { + "@babel/runtime": "^7.20.13", + "use-composed-ref": "^1.3.0", + "use-latest": "^1.2.1" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/reading-time": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/reading-time/-/reading-time-1.5.0.tgz", + "integrity": "sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==" + }, + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/recursive-readdir": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", + "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", + "dependencies": { + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", + "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + }, + "node_modules/regenerator-transform": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", + "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "dependencies": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/registry-auth-token": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz", + "integrity": "sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==", + "dependencies": { + "rc": "1.2.8" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/registry-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", + "dependencies": { + "rc": "^1.2.8" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/remark-emoji": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/remark-emoji/-/remark-emoji-2.2.0.tgz", + "integrity": "sha512-P3cj9s5ggsUvWw5fS2uzCHJMGuXYRb0NnZqYlNecewXt8QBU9n5vW3DUUKOhepS8F9CwdMx9B8a3i7pqFWAI5w==", + "dependencies": { + "emoticon": "^3.2.0", + "node-emoji": "^1.10.0", + "unist-util-visit": "^2.0.3" + } + }, + "node_modules/remark-footnotes": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/remark-footnotes/-/remark-footnotes-2.0.0.tgz", + "integrity": "sha512-3Clt8ZMH75Ayjp9q4CorNeyjwIxHFcTkaektplKGl2A1jNGEUey8cKL0ZC5vJwfcD5GFGsNLImLG/NGzWIzoMQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-mdx": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-1.6.22.tgz", + "integrity": "sha512-phMHBJgeV76uyFkH4rvzCftLfKCr2RZuF+/gmVcaKrpsihyzmhXjA0BEMDaPTXG5y8qZOKPVo83NAOX01LPnOQ==", + "dependencies": { + "@babel/core": "7.12.9", + "@babel/helper-plugin-utils": "7.10.4", + "@babel/plugin-proposal-object-rest-spread": "7.12.1", + "@babel/plugin-syntax-jsx": "7.12.1", + "@mdx-js/util": "1.6.22", + "is-alphabetical": "1.0.4", + "remark-parse": "8.0.3", + "unified": "9.2.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-mdx/node_modules/@babel/core": { + "version": "7.12.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz", + "integrity": "sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.5", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.5", + "@babel/parser": "^7.12.7", + "@babel/template": "^7.12.7", + "@babel/traverse": "^7.12.9", + "@babel/types": "^7.12.7", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/remark-mdx/node_modules/@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" + }, + "node_modules/remark-mdx/node_modules/@babel/plugin-syntax-jsx": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz", + "integrity": "sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/remark-mdx/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/remark-mdx/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/remark-mdx/node_modules/unified": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz", + "integrity": "sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==", + "dependencies": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-parse": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-8.0.3.tgz", + "integrity": "sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q==", + "dependencies": { + "ccount": "^1.0.0", + "collapse-white-space": "^1.0.2", + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "is-word-character": "^1.0.0", + "markdown-escapes": "^1.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "trim": "0.0.1", + "trim-trailing-lines": "^1.0.0", + "unherit": "^1.0.4", + "unist-util-remove-position": "^2.0.0", + "vfile-location": "^3.0.0", + "xtend": "^4.0.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-squeeze-paragraphs": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-squeeze-paragraphs/-/remark-squeeze-paragraphs-4.0.0.tgz", + "integrity": "sha512-8qRqmL9F4nuLPIgl92XUuxI3pFxize+F1H0e/W3llTk0UsjJaj01+RrirkMw7P21RKe4X6goQhYRSvNWX+70Rw==", + "dependencies": { + "mdast-squeeze-paragraphs": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "node_modules/renderkid/node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/renderkid/node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/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-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-like": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/require-like/-/require-like-0.1.2.tgz", + "integrity": "sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A==", + "engines": { + "node": "*" + } + }, + "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==" + }, + "node_modules/resolve": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", + "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "dependencies": { + "is-core-module": "^2.11.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-pathname": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", + "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==" + }, + "node_modules/responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", + "dependencies": { + "lowercase-keys": "^1.0.0" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rtl-detect": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/rtl-detect/-/rtl-detect-1.0.4.tgz", + "integrity": "sha512-EBR4I2VDSSYr7PkBmFy04uhycIpDKp+21p/jARYXlCSjQksTBQcJ0HFUPOO79EPPH5JS6VAhiIQbycf0O3JAxQ==" + }, + "node_modules/rtlcss": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-3.5.0.tgz", + "integrity": "sha512-wzgMaMFHQTnyi9YOwsx9LjOxYXJPzS8sYnFaKm6R5ysvTkwzHiB0vxnbHwchHQT65PTdBjDG21/kQBWI7q9O7A==", + "dependencies": { + "find-up": "^5.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.3.11", + "strip-json-comments": "^3.1.1" + }, + "bin": { + "rtlcss": "bin/rtlcss.js" + } + }, + "node_modules/rtlcss/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/rtlcss/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/rtlcss/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/rtlcss/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safe-stable-stringify": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-1.1.1.tgz", + "integrity": "sha512-ERq4hUjKDbJfE4+XtZLFPCDi8Vb1JqaxAPTxWFLBx8XcAlf9Bda/ZJdVezs/NAfsMQScyIlUMx+Yeu7P7rx5jw==" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "node_modules/scheduler": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", + "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "node_modules/schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/search-insights": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.7.0.tgz", + "integrity": "sha512-GLbVaGgzYEKMvuJbHRhLi1qoBFnjXZGZ6l4LxOYPCp4lI2jDRB3jPU9/XNhMwv6kvnA9slTreq6pvK+b3o3aqg==", + "peer": true, + "engines": { + "node": ">=8.16.0" + } + }, + "node_modules/section-matter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", + "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", + "dependencies": { + "extend-shallow": "^2.0.1", + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==" + }, + "node_modules/selfsigned": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", + "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", + "dependencies": { + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver-diff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", + "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "dependencies": { + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semver-diff/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/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/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/send/node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-handler": { + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.5.tgz", + "integrity": "sha512-ijPFle6Hwe8zfmBxJdE+5fta53fdIY0lHISJvuikXB3VYFafRjMRpOffSPvCYsbKyBA7pvy9oYr/BT1O3EArlg==", + "dependencies": { + "bytes": "3.0.0", + "content-disposition": "0.5.2", + "fast-url-parser": "1.1.3", + "mime-types": "2.1.18", + "minimatch": "3.1.2", + "path-is-inside": "1.0.2", + "path-to-regexp": "2.2.1", + "range-parser": "1.2.0" + } + }, + "node_modules/serve-handler/node_modules/path-to-regexp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz", + "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==" + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" + }, + "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==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/shelljs": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "dependencies": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + }, + "bin": { + "shjs": "bin/shjs" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "node_modules/sirv": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.19.tgz", + "integrity": "sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==", + "dependencies": { + "@polka/url": "^1.0.0-next.20", + "mrmime": "^1.0.0", + "totalist": "^1.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" + }, + "node_modules/sitemap": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-7.1.1.tgz", + "integrity": "sha512-mK3aFtjz4VdJN0igpIJrinf3EO8U8mxOPsTBzSsy06UtjZQJ3YY3o3Xa7zSc5nMqcMrRwlChHZ18Kxg0caiPBg==", + "dependencies": { + "@types/node": "^17.0.5", + "@types/sax": "^1.2.1", + "arg": "^5.0.0", + "sax": "^1.2.4" + }, + "bin": { + "sitemap": "dist/cli.js" + }, + "engines": { + "node": ">=12.0.0", + "npm": ">=5.6.0" + } + }, + "node_modules/sitemap/node_modules/@types/node": { + "version": "17.0.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==" + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/sort-css-media-queries": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/sort-css-media-queries/-/sort-css-media-queries-2.1.0.tgz", + "integrity": "sha512-IeWvo8NkNiY2vVYdPa27MCQiR0MN0M80johAYFVxWWXQ44KU84WNxjslwBHmc/7ZL2ccwkM7/e6S5aiKZXm7jA==", + "engines": { + "node": ">= 6.3.0" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dependencies": { + "buffer-from": "^1.0.0", + "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/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + }, + "node_modules/stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility" + }, + "node_modules/state-toggle": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz", + "integrity": "sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/std-env": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.3.3.tgz", + "integrity": "sha512-Rz6yejtVyWnVjC1RFvNmYL10kgjC49EOghxWn0RFqlCHGFpQx+Xe7yW3I4ceK1SGrWIGMjD5Kbue8W/udkbMJg==" + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "dependencies": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/style-to-object": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.3.0.tgz", + "integrity": "sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==", + "dependencies": { + "inline-style-parser": "0.1.1" + } + }, + "node_modules/stylehacks": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz", + "integrity": "sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==", + "dependencies": { + "browserslist": "^4.21.4", + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svg-parser": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", + "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==" + }, + "node_modules/svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/svgo/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/svgo/node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/svgo/node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/svgo/node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/svgo/node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/svgo/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/terser": { + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.0.tgz", + "integrity": "sha512-JpcpGOQLOXm2jsomozdMDpd5f8ZHh1rR48OFgWUH3QsyZcfPgv2qDCYbcDEAYNd4OZRj2bWYKpwdll/udZCk/Q==", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", + "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.17", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.16.8" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/terser-webpack-plugin/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" + }, + "node_modules/tiny-invariant": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz", + "integrity": "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==" + }, + "node_modules/tiny-warning": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", + "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/totalist": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz", + "integrity": "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==", + "engines": { + "node": ">=6" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/trim": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", + "integrity": "sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ==", + "deprecated": "Use String.prototype.trim() instead" + }, + "node_modules/trim-trailing-lines": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz", + "integrity": "sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/trough": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", + "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/tslib": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz", + "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==" + }, + "node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/type-is/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/type-is/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/ua-parser-js": { + "version": "1.0.35", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.35.tgz", + "integrity": "sha512-fKnGuqmTBnIE+/KXSzCn4db8RTigUzw1AN0DmdU6hJovUTbYJKyqj+8Mt1c4VfRDnOVJnENmfYkIPZ946UrSAA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + } + ], + "engines": { + "node": "*" + } + }, + "node_modules/unherit": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.3.tgz", + "integrity": "sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==", + "dependencies": { + "inherits": "^2.0.0", + "xtend": "^4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "engines": { + "node": ">=4" + } + }, + "node_modules/unified": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz", + "integrity": "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==", + "dependencies": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/unist-builder": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-2.0.3.tgz", + "integrity": "sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-generated": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.6.tgz", + "integrity": "sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.1.0.tgz", + "integrity": "sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-2.1.0.tgz", + "integrity": "sha512-J8NYPyBm4baYLdCbjmf1bhPu45Cr1MWTm77qd9istEkzWpnN6O9tMsEbB2JhNnBCqGENRqEWomQ+He6au0B27Q==", + "dependencies": { + "unist-util-is": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove-position": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz", + "integrity": "sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA==", + "dependencies": { + "unist-util-visit": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "dependencies": { + "@types/unist": "^2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", + "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "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/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", + "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/update-notifier": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", + "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", + "dependencies": { + "boxen": "^5.0.0", + "chalk": "^4.1.0", + "configstore": "^5.0.1", + "has-yarn": "^2.1.0", + "import-lazy": "^2.1.0", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.4.0", + "is-npm": "^5.0.0", + "is-yarn-global": "^0.3.0", + "latest-version": "^5.1.0", + "pupa": "^2.1.1", + "semver": "^7.3.4", + "semver-diff": "^3.1.1", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/yeoman/update-notifier?sponsor=1" + } + }, + "node_modules/update-notifier/node_modules/boxen": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", + "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", + "dependencies": { + "ansi-align": "^3.0.0", + "camelcase": "^6.2.0", + "chalk": "^4.1.0", + "cli-boxes": "^2.2.1", + "string-width": "^4.2.2", + "type-fest": "^0.20.2", + "widest-line": "^3.1.0", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/update-notifier/node_modules/cli-boxes": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/update-notifier/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/update-notifier/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/update-notifier/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/update-notifier/node_modules/widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "dependencies": { + "string-width": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/update-notifier/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/uri-js/node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/urijs": { + "version": "1.19.11", + "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.11.tgz", + "integrity": "sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==" + }, + "node_modules/url-loader": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", + "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==", + "dependencies": { + "loader-utils": "^2.0.0", + "mime-types": "^2.1.27", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "file-loader": "*", + "webpack": "^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "file-loader": { + "optional": true + } + } + }, + "node_modules/url-loader/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/url-loader/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/url-loader/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", + "dependencies": { + "prepend-http": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/use-composed-ref": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.3.0.tgz", + "integrity": "sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/use-isomorphic-layout-effect": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz", + "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-latest": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/use-latest/-/use-latest-1.2.1.tgz", + "integrity": "sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==", + "dependencies": { + "use-isomorphic-layout-effect": "^1.1.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sync-external-store": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", + "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==" + }, + "node_modules/utility-types": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.10.0.tgz", + "integrity": "sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/value-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", + "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==" + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vfile": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", + "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", + "dependencies": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-location": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.2.0.tgz", + "integrity": "sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/wait-on": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-6.0.1.tgz", + "integrity": "sha512-zht+KASY3usTY5u2LgaNqn/Cd8MukxLGjdcZxT2ns5QzDmTFc4XoWBgC+C/na+sMRZTuVygQoMYwdcVjHnYIVw==", + "dependencies": { + "axios": "^0.25.0", + "joi": "^17.6.0", + "lodash": "^4.17.21", + "minimist": "^1.2.5", + "rxjs": "^7.5.4" + }, + "bin": { + "wait-on": "bin/wait-on" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/web-namespaces": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-1.1.4.tgz", + "integrity": "sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/webpack": { + "version": "5.88.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.1.tgz", + "integrity": "sha512-FROX3TxQnC/ox4N+3xQoWZzvGXSuscxR32rbzjpXgEzWudJFEJBpdlkkob2ylrv5yzzufD1zph1OoFsLtm6stQ==", + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.7", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-bundle-analyzer": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.9.0.tgz", + "integrity": "sha512-+bXGmO1LyiNx0i9enBu3H8mv42sj/BJWhZNFwjz92tVnBa9J3JMGo2an2IXlEleoDOPn/Hofl5hr/xCpObUDtw==", + "dependencies": { + "@discoveryjs/json-ext": "0.5.7", + "acorn": "^8.0.4", + "acorn-walk": "^8.0.0", + "chalk": "^4.1.0", + "commander": "^7.2.0", + "gzip-size": "^6.0.0", + "lodash": "^4.17.20", + "opener": "^1.5.2", + "sirv": "^1.0.7", + "ws": "^7.3.1" + }, + "bin": { + "webpack-bundle-analyzer": "lib/bin/analyzer.js" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-dev-middleware": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", + "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/webpack-dev-middleware/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/webpack-dev-middleware/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/webpack-dev-middleware/node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/webpack-dev-middleware/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server": { + "version": "4.15.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz", + "integrity": "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==", + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.5", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.1.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.13.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-server/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-server/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/webpack-dev-server/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server/node_modules/ws": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/webpack-merge": { + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.9.0.tgz", + "integrity": "sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg==", + "dependencies": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/webpack/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpackbar": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-5.0.2.tgz", + "integrity": "sha512-BmFJo7veBDgQzfWXl/wwYXr/VFus0614qZ8i9znqcl9fnEdiVkdbi0TedLQ6xAK92HZHDJ0QmyQ0fmuZPAgCYQ==", + "dependencies": { + "chalk": "^4.1.0", + "consola": "^2.15.3", + "pretty-time": "^1.1.0", + "std-env": "^3.0.1" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "webpack": "3 || 4 || 5" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/widest-line": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", + "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", + "dependencies": { + "string-width": "^5.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==" + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xdg-basedir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/xml-js": { + "version": "1.6.11", + "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz", + "integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==", + "dependencies": { + "sax": "^1.2.4" + }, + "bin": { + "xml-js": "bin/cli.js" + } + }, + "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/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zwitch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", + "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + } + } +} diff --git a/docsite/package.json b/docsite/package.json new file mode 100644 index 00000000..b1570263 --- /dev/null +++ b/docsite/package.json @@ -0,0 +1,48 @@ +{ + "name": "my-website", + "version": "0.0.0", + "private": true, + "scripts": { + "docusaurus": "docusaurus", + "start": "docusaurus start", + "build": "docusaurus build", + "swizzle": "docusaurus swizzle", + "deploy": "docusaurus deploy", + "clear": "docusaurus clear", + "serve": "docusaurus serve", + "write-translations": "docusaurus write-translations", + "write-heading-ids": "docusaurus write-heading-ids", + "typecheck": "tsc" + }, + "dependencies": { + "@cmfcmf/docusaurus-search-local": "^1.1.0", + "@docusaurus/core": "2.4.1", + "@docusaurus/preset-classic": "2.4.1", + "@mdx-js/react": "^1.6.22", + "clsx": "^1.2.1", + "docusaurus-json-schema-plugin": "^1.6.1", + "prism-react-renderer": "^1.3.5", + "react": "^17.0.2", + "react-dom": "^17.0.2" + }, + "devDependencies": { + "@docusaurus/module-type-aliases": "2.4.1", + "@tsconfig/docusaurus": "^1.0.5", + "typescript": "^4.7.4" + }, + "browserslist": { + "production": [ + ">0.5%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + }, + "engines": { + "node": ">=16.14" + } +} diff --git a/docsite/sidebars.js b/docsite/sidebars.js new file mode 100644 index 00000000..b233bcdc --- /dev/null +++ b/docsite/sidebars.js @@ -0,0 +1,40 @@ +/** + * Creating a sidebar enables you to: + - create an ordered group of docs + - render a sidebar for each doc of that group + - provide next/previous navigation + + The sidebars can be generated from the filesystem, or explicitly defined here. + + Create as many sidebars as you want. + */ + +// @ts-check + +/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */ +const sidebars = { + // By default, Docusaurus generates a sidebar from the docs folder structure + tutorialSidebar: [ + {type: 'autogenerated', dirName: '.'}, + { + type: "link", + label: "Config Playground", + href: "/pages/playground" + } + ], + + // But you can create a sidebar manually + /* + tutorialSidebar: [ + 'intro', + 'hello', + { + type: 'category', + label: 'Tutorial', + items: ['tutorial-basics/create-a-document'], + }, + ], + */ +}; + +module.exports = sidebars; diff --git a/docsite/src/components/JSONSchemaData.tsx b/docsite/src/components/JSONSchemaData.tsx new file mode 100644 index 00000000..76414edc --- /dev/null +++ b/docsite/src/components/JSONSchemaData.tsx @@ -0,0 +1,44 @@ +import React from "react" +import BrowserOnly from "@docusaurus/BrowserOnly" +import { useColorMode } from "@docusaurus/theme-common" + +import JSONSchemaEditor from "@theme/JSONSchemaEditor" +// Context +import { usePlaygroundContext } from "@site/src/contexts/PlaygroundContext" + +// Common stringify of the JSON +const STRINGIFY_JSON = (json: unknown) => JSON.stringify(json, null, "\t") + +function JSONSchemaDataInner(): JSX.Element { + const { + state: { userSchema, editorRef, data: value }, + updateState, + } = usePlaygroundContext() + + const { colorMode } = useColorMode() + + return ( +
+ { + updateState({ editorRef: editor }) + }} + height={"70vh"} + key={STRINGIFY_JSON(userSchema)} + /> +
+ ) +} + +export default function JSONSchemaDataComponent(): JSX.Element { + return ( + Loading...}> + {() => { + return + }} + + ) +} diff --git a/docsite/src/components/PlaygroundInner.tsx b/docsite/src/components/PlaygroundInner.tsx new file mode 100644 index 00000000..e0f15bd6 --- /dev/null +++ b/docsite/src/components/PlaygroundInner.tsx @@ -0,0 +1,59 @@ +import React from "react" +import BrowserOnly from "@docusaurus/BrowserOnly" + +import Schema from "@site/static/aio.json"; +import ConfigExample from "@site/static/configExample.json"; +import JSONSchemaViewer from "@theme/JSONSchemaViewer" +import JSONSchemaEditor from "@theme/JSONSchemaEditor"; +import {useColorMode} from "@docusaurus/theme-common"; +const STRINGIFY_JSON = (json: unknown) => JSON.stringify(json, null, "\t") + +// based on https://github.com/jy95/docusaurus-json-schema-plugin/blob/main/testsite/src/components/PlaygroundInner.tsx +function PlaygroundInner(): JSX.Element { + + const { colorMode } = useColorMode() + + return ( +
+
+
+ +
+
+ +
+
+
+ ) +} + +export default function PlaygroundComponent(): JSX.Element { + return ( + Loading...}> + {() => { + return + }} + + ) +} diff --git a/docsite/src/contexts/PlaygroundContext.tsx b/docsite/src/contexts/PlaygroundContext.tsx new file mode 100644 index 00000000..99159c33 --- /dev/null +++ b/docsite/src/contexts/PlaygroundContext.tsx @@ -0,0 +1,50 @@ +import { useContext, createContext } from "react" + +// Type I need for useRef +import type { MonacoEditorTypes } from "@theme/MonacoEditor" + +export type State = { + // The full schema + // We might need to scope it with a JSON Pointer + fullSchema: unknown + // The current schema displayed (after the json pointer) + userSchema: unknown + // The current json pointer + jsonPointer: string + // Schema editor ref + schemaRef: undefined | MonacoEditorTypes.IStandaloneCodeEditor + // Data editor ref + editorRef: undefined | MonacoEditorTypes.IStandaloneCodeEditor + // Data on the data editor + // When using "Infer schema from data", it would be annoying to lose our written + data: string + // Errors in schema + schemaErrors: MonacoEditorTypes.IMarkerData[] + // Errors in data + dataErrors: MonacoEditorTypes.IMarkerData[] +} + +export type Playground = { + // state + state: State + // update function + updateState: (_: Partial) => void +} + +export const PlaygroundContext = createContext({ + state: { + fullSchema: {}, + userSchema: {}, + jsonPointer: "", + data: "{}", + schemaRef: undefined, + editorRef: undefined, + schemaErrors: [], + dataErrors: [], + }, + updateState: () => {}, +}) + +export const usePlaygroundContext = () => useContext(PlaygroundContext) + +export const PlaygroundContextProvider = PlaygroundContext.Provider diff --git a/docsite/src/css/custom.css b/docsite/src/css/custom.css new file mode 100644 index 00000000..2bc6a4cf --- /dev/null +++ b/docsite/src/css/custom.css @@ -0,0 +1,30 @@ +/** + * Any CSS included here will be global. The classic template + * bundles Infima by default. Infima is a CSS framework designed to + * work well for content-centric websites. + */ + +/* You can override the default Infima variables here. */ +:root { + --ifm-color-primary: #2e8555; + --ifm-color-primary-dark: #29784c; + --ifm-color-primary-darker: #277148; + --ifm-color-primary-darkest: #205d3b; + --ifm-color-primary-light: #33925d; + --ifm-color-primary-lighter: #359962; + --ifm-color-primary-lightest: #3cad6e; + --ifm-code-font-size: 95%; + --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.1); +} + +/* For readability concerns, you should choose a lighter palette in dark mode. */ +[data-theme='dark'] { + --ifm-color-primary: #25c2a0; + --ifm-color-primary-dark: #21af90; + --ifm-color-primary-darker: #1fa588; + --ifm-color-primary-darkest: #1a8870; + --ifm-color-primary-light: #29d5b0; + --ifm-color-primary-lighter: #32d8b4; + --ifm-color-primary-lightest: #4fddbf; + --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.3); +} diff --git a/docsite/src/pages/index.mdx b/docsite/src/pages/index.mdx new file mode 100644 index 00000000..2be09e18 --- /dev/null +++ b/docsite/src/pages/index.mdx @@ -0,0 +1,100 @@ +--- +title: Multi-Scrobbler +--- + +# multi-scrobbler + +![Latest Release](https://img.shields.io/github/v/release/foxxmd/multi-scrobbler) +![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg) +![Docker Pulls](https://img.shields.io/docker/pulls/foxxmd/multi-scrobbler) + +multi-scrobbler logo + +A javascript app to scrobble music you listened to, to [Maloja](https://github.com/krateng/maloja), [Last.fm](https://www.last.fm), and [ListenBrainz](https://listenbrainz.org) + +* Supports scrobbling from many **Sources** + * [Spotify](/docs/configuration.md#spotify) + * [Plex](/docs/configuration.md#plex) or [Tautulli](/docs/configuration.md#tautulli) + * [Subsonic-compatible APIs](/docs/configuration.md#subsonic) (like [Airsonic](https://airsonic.github.io/)) + * [Jellyfin](/docs/configuration.md#jellyfin) + * [Youtube Music](/docs/configuration.md#youtube-music) + * [Last.fm](/docs/configuration.md#lastfm-source) + * [ListenBrainz](/docs/configuration.md#listenbrainz--source-) + * [Deezer](/docs/configuration.md#deezer) + * [MPRIS (Linux Desktop)](/docs/configuration.md#mpris) + * [Mopidy](/docs/configuration.md#mopidy) + * [JRiver](/docs/configuration.md#jriver) + * [Kodi](/docs/configuration.md#kodi) +* Supports scrobbling to many **Clients** + * [Maloja](/docs/configuration.md#maloja) + * [Last.fm](/docs/configuration.md#lastfm) + * [ListenBrainz](/docs/configuration.md#listenbrainz) +* Monitor status of Sources and Clients using [webhooks (Gotify or Ntfy)](/docs/configuration.md#webhook-configurations) or [healthcheck endpoint](/docs/configuration.md#health-endpoint) +* Supports configuring for single or multiple users (scrobbling for your friends and family!) +* Web server interface for stats, basic control, and detailed logs +* Smart handling of credentials (persistent, authorization through app) +* Easy configuration through ENVs or JSON +* Install using [Docker images for x86/ARM](/docs/installation.md#docker), [flatpak](/docs/installation.md#flatpak), or [locally with NodeJS](/docs/installation.md#nodejs) + +**Why should I use this over a browser extension and/or mobile app scrobbler?** + +* **Platform independent** -- Because multi-scrobbler communicates directly with service APIs it will scrobble everything you play regardless of where you play it. No more need for apps on every platform you use! +* **Open-source** -- Get peace of mind knowing exactly how your personal data is being handled. +* **Track your activity regardless of where you listen** -- Scrobble from many Sources to one Client with ease and without duplicating tracks. +* **Manage scrobbling for others** -- Scrobble for your friends and family without any setup on their part. Easily silo sources to specific clients to keep plays separate. + +**But I already scrobble my music to Last.fm/ListenBrainz, is multi-scrobbler for me?** + +Yes! You can use [Last.fm as a **Source**](/docs/configuration.md#lastfm--source-) or [Listenbrainz as a **Source**](/docs/configuration.md#listenbrainz--source-) to forward scrobbles from your profile to any other Client! That way you can keep your current scrobble setup as-is but still get the benefit of capturing your data to a self-hosted location. + + + +## How Does multi-scrobbler (MS) Work? + +You set up configurations for one or more **Sources** and one or more **Clients**. MS monitors all of your configured **Sources**. When new tracks are played by a Source it grabs that information and then sends it (scrobbles it) to all **Clients** that Source is configured to scrobble to. + +### Source + +A **Source** is a data source that contains information about tracks you are playing like a music player or platform. Examples are **Spotify, Jellyfin, Plex, Youtube Music, Airsonic**, etc... + +Source configurations consist of: + +* A friendly name. +* Any data needed to communicate or authenticate with the Source. +* An optional list of Client names that the Source should scrobble to. If omitted the Source also scrobbles to all configured Clients. + +### Client + +A **Client** is an application that stores the historical information about what songs you have played (scrobbles). Examples are **Maloja, Last.fm, Listenbrainz**... + +Client configurations consist of: + +* A friendly name. +* Any data needed to communicate or authenticate with the Client. + +## Installation + +[See the **Installation** documentation](/docs/installation.md) + +## Configuration + +[See the **Configuration** documentation](/docs/configuration.md) + +## Usage + +A status page with statistics, recent logs, and some runtime configuration options can be found at + +``` +http://localhost:9078 +``` +Output is also provided to stdout/stderr as well as file if specified in configuration. + +On first startup you may need to authorize Spotify and/or Last.fm by visiting the callback URL (which can also be accessed from the status page). Visit the status page above to find the applicable link to trigger this. + +## Help/FAQ + +Having issues with connections or configuration? Check the [FAQ](/docs/FAQ.md) before creating an issue! + +## License + +MIT diff --git a/docsite/src/pages/playground.tsx b/docsite/src/pages/playground.tsx new file mode 100644 index 00000000..fc1f8a42 --- /dev/null +++ b/docsite/src/pages/playground.tsx @@ -0,0 +1,38 @@ +import React from "react" +import Layout from "@theme/Layout" +import BrowserOnly from "@docusaurus/BrowserOnly" +import ErrorBoundary from "@docusaurus/ErrorBoundary" +// based on https://github.com/jy95/docusaurus-json-schema-plugin/blob/main/testsite/src/pages/playground.tsx +function PlaygroundComponent(): JSX.Element { + // No SSR for the live preview + // See https://github.com/facebook/docusaurus/issues/5747 + return ( + ( +
+

Playground component crashed because of error: {error.message}.

+ +
+ )} + > + Loading...}> + {() => { + const PlaygroundInnerComponent = + require("@site/src/components/PlaygroundInner").default + return + }} + +
+ ) +} + +export default function Playground(): JSX.Element { + return ( + + + + ) +} diff --git a/docsite/static/.nojekyll b/docsite/static/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/docsite/static/aio.json b/docsite/static/aio.json new file mode 100644 index 00000000..e20f612c --- /dev/null +++ b/docsite/static/aio.json @@ -0,0 +1,2439 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "definitions": { + "ClientAIOConfig": { + "anyOf": [ + { + "$ref": "#/definitions/LastfmClientAIOConfig" + }, + { + "$ref": "#/definitions/ListenBrainzClientAIOConfig" + }, + { + "$ref": "#/definitions/MalojaClientAIOConfig" + } + ], + "title": "ClientAIOConfig" + }, + "CommonClientData": { + "properties": { + "maxRequestRetries": { + "default": 1, + "description": "default # of http request retries a client can make before error is thrown.", + "examples": [ + 1 + ], + "title": "maxRequestRetries", + "type": "number" + }, + "options": { + "properties": { + "checkExistingScrobbles": { + "default": true, + "description": "Check client for an existing scrobble at the same recorded time as the \"new\" track to be scrobbled. If an existing scrobble is found this track is not track scrobbled.", + "examples": [ + true + ], + "title": "checkExistingScrobbles", + "type": "boolean" + }, + "refreshEnabled": { + "default": true, + "description": "Try to get fresh scrobble history from client when tracks to be scrobbled are newer than the last scrobble found in client history", + "examples": [ + true + ], + "title": "refreshEnabled", + "type": "boolean" + }, + "verbose": { + "description": "Options used for increasing verbosity of logging in MS (used for debugging)", + "properties": { + "match": { + "$ref": "#/definitions/MatchLoggingOptions", + "title": "match" + } + }, + "title": "verbose", + "type": "object" + } + }, + "title": "options", + "type": "object" + }, + "retryMultiplier": { + "default": 1.5, + "description": "default retry delay multiplier (retry attempt * multiplier = # of seconds to wait before retrying).", + "examples": [ + 1.5 + ], + "title": "retryMultiplier", + "type": "number" + } + }, + "title": "CommonClientData", + "type": "object" + }, + "DeezerData": { + "properties": { + "clientId": { + "description": "deezer client id", + "examples": [ + "a89cba1569901a0671d5a9875fed4be1" + ], + "title": "clientId", + "type": "string" + }, + "clientSecret": { + "description": "deezer client secret", + "examples": [ + "ec42e09d5ae0ee0f0816ca151008412a" + ], + "title": "clientSecret", + "type": "string" + }, + "interval": { + "default": 60, + "description": "optional, how long to wait before calling spotify for new tracks (in seconds)", + "examples": [ + 60 + ], + "title": "interval", + "type": "number" + }, + "maxPollRetries": { + "default": 5, + "description": "default # of automatic polling restarts on error", + "examples": [ + 5 + ], + "title": "maxPollRetries", + "type": "number" + }, + "maxRequestRetries": { + "default": 1, + "description": "default # of http request retries a source can make before error is thrown", + "examples": [ + 1 + ], + "title": "maxRequestRetries", + "type": "number" + }, + "options": { + "$ref": "#/definitions/Record", + "title": "options" + }, + "redirectUri": { + "default": "http://localhost:9078/deezer/callback", + "description": "deezer redirect URI -- required only if not the default shown here. URI must end in \"callback\"", + "examples": [ + "http://localhost:9078/deezer/callback" + ], + "title": "redirectUri", + "type": "string" + }, + "retryMultiplier": { + "default": 1.5, + "description": "default retry delay multiplier (retry attempt * multiplier = # of seconds to wait before retrying)", + "examples": [ + 1.5 + ], + "title": "retryMultiplier", + "type": "number" + }, + "scrobbleThresholds": { + "$ref": "#/definitions/ScrobbleThresholds", + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" + } + }, + "required": [ + "clientId", + "clientSecret", + "redirectUri" + ], + "title": "DeezerData", + "type": "object" + }, + "DeezerSourceAIOConfig": { + "properties": { + "clients": { + "description": "Restrict scrobbling tracks played from this source to Clients with names from this list. If list is empty is not present Source scrobbles to all configured Clients.", + "examples": [ + [ + "MyMalojaConfigName", + "MyLastFMConfigName" + ] + ], + "items": { + "type": "string" + }, + "title": "clients", + "type": "array" + }, + "data": { + "$ref": "#/definitions/DeezerData", + "title": "data" + }, + "name": { + "description": "Unique identifier for this source.", + "title": "name", + "type": "string" + }, + "type": { + "enum": [ + "deezer" + ], + "title": "type", + "type": "string" + } + }, + "required": [ + "data", + "type" + ], + "title": "DeezerSourceAIOConfig", + "type": "object" + }, + "GotifyConfig": { + "properties": { + "name": { + "description": "A friendly name used to identify webhook config in logs", + "title": "name", + "type": "string" + }, + "priorities": { + "$ref": "#/definitions/PrioritiesConfig", + "description": "Priority of messages\n\n* Info -> 5\n* Warn -> 7\n* Error -> 10", + "title": "priorities" + }, + "token": { + "description": "The token created for this Application in Gotify", + "examples": [ + "AQZI58fA.rfSZbm" + ], + "title": "token", + "type": "string" + }, + "type": { + "description": "Webhook type. Valid values are:\n\n* gotify\n* ntfy", + "enum": [ + "gotify", + "ntfy" + ], + "examples": [ + "gotify" + ], + "title": "type", + "type": "string" + }, + "url": { + "description": "The URL of the Gotify server. Same URL that would be used to reach the Gotify UI", + "examples": [ + "http://192.168.0.100:8078" + ], + "title": "url", + "type": "string" + } + }, + "required": [ + "token", + "type", + "url" + ], + "title": "GotifyConfig", + "type": "object" + }, + "JRiverData": { + "properties": { + "interval": { + "default": 30, + "description": "How long to wait before polling the source API for new tracks (in seconds)", + "examples": [ + 30 + ], + "title": "interval", + "type": "number" + }, + "maxInterval": { + "default": 60, + "description": "When there has been no new activity from the Source API multi-scrobbler will gradually increase the wait time between polling up to this value (in seconds)", + "examples": [ + 60 + ], + "title": "maxInterval", + "type": "number" + }, + "maxPollRetries": { + "default": 5, + "description": "default # of automatic polling restarts on error", + "examples": [ + 5 + ], + "title": "maxPollRetries", + "type": "number" + }, + "maxRequestRetries": { + "default": 1, + "description": "default # of http request retries a source can make before error is thrown", + "examples": [ + 1 + ], + "title": "maxRequestRetries", + "type": "number" + }, + "options": { + "$ref": "#/definitions/Record", + "title": "options" + }, + "password": { + "description": "If you have enabled authentication, the password you set", + "title": "password", + "type": "string" + }, + "retryMultiplier": { + "default": 1.5, + "description": "default retry delay multiplier (retry attempt * multiplier = # of seconds to wait before retrying)", + "examples": [ + 1.5 + ], + "title": "retryMultiplier", + "type": "number" + }, + "scrobbleThresholds": { + "$ref": "#/definitions/ScrobbleThresholds", + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" + }, + "url": { + "default": "http://localhost:52199/MCWS/v1/", + "description": "URL of the JRiver HTTP server to connect to\n\nmulti-scrobbler connects to the Web Service Interface endpoint that ultimately looks like this => `http://yourDomain:52199/MCWS/v1/`\n\nThe URL you provide here will have all parts not explicitly defined filled in for you so if these are not the default you must define them.\n\nParts => [default value]\n\n* Protocol => `http://`\n* Hostname => `localhost`\n* Port => `52199`\n* Path => `/MCWS/v1/`", + "examples": [ + "http://localhost:52199/MCWS/v1/" + ], + "title": "url", + "type": "string" + }, + "username": { + "description": "If you have enabled authentication, the username you set", + "title": "username", + "type": "string" + } + }, + "required": [ + "url" + ], + "title": "JRiverData", + "type": "object" + }, + "JRiverSourceAIOConfig": { + "properties": { + "clients": { + "description": "Restrict scrobbling tracks played from this source to Clients with names from this list. If list is empty is not present Source scrobbles to all configured Clients.", + "examples": [ + [ + "MyMalojaConfigName", + "MyLastFMConfigName" + ] + ], + "items": { + "type": "string" + }, + "title": "clients", + "type": "array" + }, + "data": { + "$ref": "#/definitions/JRiverData", + "title": "data" + }, + "name": { + "description": "Unique identifier for this source.", + "title": "name", + "type": "string" + }, + "type": { + "enum": [ + "jriver" + ], + "title": "type", + "type": "string" + } + }, + "required": [ + "data", + "type" + ], + "title": "JRiverSourceAIOConfig", + "type": "object" + }, + "JellyData": { + "properties": { + "maxPollRetries": { + "default": 5, + "description": "default # of automatic polling restarts on error", + "examples": [ + 5 + ], + "title": "maxPollRetries", + "type": "number" + }, + "maxRequestRetries": { + "default": 1, + "description": "default # of http request retries a source can make before error is thrown", + "examples": [ + 1 + ], + "title": "maxRequestRetries", + "type": "number" + }, + "options": { + "description": "Additional options for jellyfin logging and tuning", + "properties": { + "logFilterFailure": { + "default": "warn", + "description": "How MS should log when a Jellyfin event fails a defined filter (users/servers)\n\n* `false` => do not log\n* `debug` => log to DEBUG level\n* `warn` => log to WARN level (default)\n\nHint: This is useful if you are sure this source is setup correctly and you have multiple other Jellyfin sources. Set to `debug` or `false` to reduce log noise.", + "enum": [ + "debug", + false, + "warn" + ], + "examples": [ + "warn" + ], + "title": "logFilterFailure" + }, + "logPayload": { + "default": false, + "description": "Log raw Jellyfin webhook payload to debug", + "examples": [ + false + ], + "title": "logPayload", + "type": "boolean" + } + }, + "title": "options", + "type": "object" + }, + "retryMultiplier": { + "default": 1.5, + "description": "default retry delay multiplier (retry attempt * multiplier = # of seconds to wait before retrying)", + "examples": [ + 1.5 + ], + "title": "retryMultiplier", + "type": "number" + }, + "scrobbleThresholds": { + "$ref": "#/definitions/ScrobbleThresholds", + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" + }, + "servers": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "string" + } + ], + "description": "optional list of servers to scrobble tracks from\n\nIf none are provided tracks from all servers will be scrobbled", + "examples": [ + [ + "MyServerName1" + ] + ], + "title": "servers" + }, + "users": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "string" + } + ], + "description": "optional list of users to scrobble tracks from\n\nIf none are provided tracks from all users will be scrobbled", + "examples": [ + [ + "MyUser1", + "MyUser2" + ] + ], + "title": "users" + } + }, + "title": "JellyData", + "type": "object" + }, + "JellySourceAIOConfig": { + "properties": { + "clients": { + "description": "Restrict scrobbling tracks played from this source to Clients with names from this list. If list is empty is not present Source scrobbles to all configured Clients.", + "examples": [ + [ + "MyMalojaConfigName", + "MyLastFMConfigName" + ] + ], + "items": { + "type": "string" + }, + "title": "clients", + "type": "array" + }, + "data": { + "$ref": "#/definitions/JellyData", + "title": "data" + }, + "name": { + "description": "Unique identifier for this source.", + "title": "name", + "type": "string" + }, + "type": { + "enum": [ + "jellyfin" + ], + "title": "type", + "type": "string" + } + }, + "required": [ + "data", + "type" + ], + "title": "JellySourceAIOConfig", + "type": "object" + }, + "KodiData": { + "properties": { + "interval": { + "default": 30, + "description": "How long to wait before polling the source API for new tracks (in seconds)", + "examples": [ + 30 + ], + "title": "interval", + "type": "number" + }, + "maxInterval": { + "default": 60, + "description": "When there has been no new activity from the Source API multi-scrobbler will gradually increase the wait time between polling up to this value (in seconds)", + "examples": [ + 60 + ], + "title": "maxInterval", + "type": "number" + }, + "maxPollRetries": { + "default": 5, + "description": "default # of automatic polling restarts on error", + "examples": [ + 5 + ], + "title": "maxPollRetries", + "type": "number" + }, + "maxRequestRetries": { + "default": 1, + "description": "default # of http request retries a source can make before error is thrown", + "examples": [ + 1 + ], + "title": "maxRequestRetries", + "type": "number" + }, + "options": { + "$ref": "#/definitions/Record", + "title": "options" + }, + "password": { + "description": "The password set for Remote Control via Web Sever", + "title": "password", + "type": "string" + }, + "retryMultiplier": { + "default": 1.5, + "description": "default retry delay multiplier (retry attempt * multiplier = # of seconds to wait before retrying)", + "examples": [ + 1.5 + ], + "title": "retryMultiplier", + "type": "number" + }, + "scrobbleThresholds": { + "$ref": "#/definitions/ScrobbleThresholds", + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" + }, + "url": { + "default": "http://localhost:8080/jsonrpc", + "description": "URL of the Kodi HTTP server to connect to\n\nmulti-scrobbler connects to the Web Service Interface endpoint that ultimately looks like this => `http://yourDomain:8080/jsonrpc`\n\nThe URL you provide here will have all parts not explicitly defined filled in for you so if these are not the default you must define them.\n\nParts => [default value]\n\n* Protocol => `http://`\n* Hostname => `localhost`\n* Port => `8080`\n* Path => `/jsonrpc`", + "examples": [ + "http://localhost:8080/jsonrpc" + ], + "title": "url", + "type": "string" + }, + "username": { + "description": "The username set for Remote Control via Web Sever", + "title": "username", + "type": "string" + } + }, + "required": [ + "password", + "url", + "username" + ], + "title": "KodiData", + "type": "object" + }, + "KodiSourceAIOConfig": { + "properties": { + "clients": { + "description": "Restrict scrobbling tracks played from this source to Clients with names from this list. If list is empty is not present Source scrobbles to all configured Clients.", + "examples": [ + [ + "MyMalojaConfigName", + "MyLastFMConfigName" + ] + ], + "items": { + "type": "string" + }, + "title": "clients", + "type": "array" + }, + "data": { + "$ref": "#/definitions/KodiData", + "title": "data" + }, + "name": { + "description": "Unique identifier for this source.", + "title": "name", + "type": "string" + }, + "type": { + "enum": [ + "kodi" + ], + "title": "type", + "type": "string" + } + }, + "required": [ + "data", + "type" + ], + "title": "KodiSourceAIOConfig", + "type": "object" + }, + "LastFmSouceAIOConfig": { + "properties": { + "clients": { + "description": "Restrict scrobbling tracks played from this source to Clients with names from this list. If list is empty is not present Source scrobbles to all configured Clients.", + "examples": [ + [ + "MyMalojaConfigName", + "MyLastFMConfigName" + ] + ], + "items": { + "type": "string" + }, + "title": "clients", + "type": "array" + }, + "configureAs": { + "default": "source", + "description": "When used in `lastfm.config` this tells multi-scrobbler whether to use this data to configure a source or client.", + "enum": [ + "source" + ], + "examples": [ + "source" + ], + "title": "configureAs", + "type": "string" + }, + "data": { + "$ref": "#/definitions/LastFmSourceData", + "title": "data" + }, + "name": { + "description": "Unique identifier for this source.", + "title": "name", + "type": "string" + }, + "type": { + "enum": [ + "lastfm" + ], + "title": "type", + "type": "string" + } + }, + "required": [ + "data", + "type" + ], + "title": "LastFmSouceAIOConfig", + "type": "object" + }, + "LastFmSourceData": { + "properties": { + "apiKey": { + "description": "API Key generated from Last.fm account", + "examples": [ + "787c921a2a2ab42320831aba0c8f2fc2" + ], + "title": "apiKey", + "type": "string" + }, + "maxPollRetries": { + "default": 5, + "description": "default # of automatic polling restarts on error", + "examples": [ + 5 + ], + "title": "maxPollRetries", + "type": "number" + }, + "maxRequestRetries": { + "default": 1, + "description": "default # of http request retries a source can make before error is thrown", + "examples": [ + 1 + ], + "title": "maxRequestRetries", + "type": "number" + }, + "options": { + "$ref": "#/definitions/Record", + "title": "options" + }, + "redirectUri": { + "default": "http://localhost:9078/lastfm/callback", + "description": "Optional URI to use for callback. Specify this if callback should be different than the default. MUST have \"lastfm/callback\" in the URL somewhere.", + "examples": [ + "http://localhost:9078/lastfm/callback" + ], + "title": "redirectUri", + "type": "string" + }, + "retryMultiplier": { + "default": 1.5, + "description": "default retry delay multiplier (retry attempt * multiplier = # of seconds to wait before retrying)", + "examples": [ + 1.5 + ], + "title": "retryMultiplier", + "type": "number" + }, + "scrobbleThresholds": { + "$ref": "#/definitions/ScrobbleThresholds", + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" + }, + "secret": { + "description": "Secret generated from Last.fm account", + "examples": [ + "ec42e09d5ae0ee0f0816ca151008412a" + ], + "title": "secret", + "type": "string" + }, + "session": { + "description": "Optional session id returned from a completed auth flow", + "title": "session", + "type": "string" + } + }, + "required": [ + "apiKey", + "secret" + ], + "title": "LastFmSourceData", + "type": "object" + }, + "LastfmClientAIOConfig": { + "properties": { + "configureAs": { + "default": "client", + "description": "Should always be `client` when using LastFM as a client", + "enum": [ + "client", + "source" + ], + "examples": [ + "client" + ], + "title": "configureAs", + "type": "string" + }, + "data": { + "allOf": [ + { + "$ref": "#/definitions/CommonClientData" + }, + { + "$ref": "#/definitions/LastfmData" + } + ], + "description": "Specific data required to configure this client", + "title": "data" + }, + "name": { + "description": "Unique identifier for this client. Used with sources to restrict where scrobbles are sent.", + "examples": [ + "MyConfig" + ], + "title": "name", + "type": "string" + }, + "type": { + "enum": [ + "lastfm" + ], + "title": "type", + "type": "string" + } + }, + "required": [ + "data", + "name", + "type" + ], + "title": "LastfmClientAIOConfig", + "type": "object" + }, + "LastfmData": { + "properties": { + "apiKey": { + "description": "API Key generated from Last.fm account", + "examples": [ + "787c921a2a2ab42320831aba0c8f2fc2" + ], + "title": "apiKey", + "type": "string" + }, + "maxRequestRetries": { + "default": 1, + "description": "default # of http request retries a source can make before error is thrown", + "examples": [ + 1 + ], + "title": "maxRequestRetries", + "type": "number" + }, + "redirectUri": { + "default": "http://localhost:9078/lastfm/callback", + "description": "Optional URI to use for callback. Specify this if callback should be different than the default. MUST have \"lastfm/callback\" in the URL somewhere.", + "examples": [ + "http://localhost:9078/lastfm/callback" + ], + "title": "redirectUri", + "type": "string" + }, + "retryMultiplier": { + "default": 1.5, + "description": "default retry delay multiplier (retry attempt * multiplier = # of seconds to wait before retrying)", + "examples": [ + 1.5 + ], + "title": "retryMultiplier", + "type": "number" + }, + "secret": { + "description": "Secret generated from Last.fm account", + "examples": [ + "ec42e09d5ae0ee0f0816ca151008412a" + ], + "title": "secret", + "type": "string" + }, + "session": { + "description": "Optional session id returned from a completed auth flow", + "title": "session", + "type": "string" + } + }, + "required": [ + "apiKey", + "secret" + ], + "title": "LastfmData", + "type": "object" + }, + "ListenBrainzClientAIOConfig": { + "properties": { + "configureAs": { + "default": "client", + "description": "Should always be `client` when using Listenbrainz as a client", + "enum": [ + "client", + "source" + ], + "examples": [ + "client" + ], + "title": "configureAs", + "type": "string" + }, + "data": { + "$ref": "#/definitions/ListenBrainzClientData", + "description": "Specific data required to configure this client", + "title": "data" + }, + "name": { + "description": "Unique identifier for this client. Used with sources to restrict where scrobbles are sent.", + "examples": [ + "MyConfig" + ], + "title": "name", + "type": "string" + }, + "type": { + "enum": [ + "listenbrainz" + ], + "title": "type", + "type": "string" + } + }, + "required": [ + "data", + "name", + "type" + ], + "title": "ListenBrainzClientAIOConfig", + "type": "object" + }, + "ListenBrainzClientData": { + "properties": { + "maxRequestRetries": { + "default": 1, + "description": "default # of http request retries a source can make before error is thrown", + "examples": [ + 1 + ], + "title": "maxRequestRetries", + "type": "number" + }, + "options": { + "properties": { + "checkExistingScrobbles": { + "default": true, + "description": "Check client for an existing scrobble at the same recorded time as the \"new\" track to be scrobbled. If an existing scrobble is found this track is not track scrobbled.", + "examples": [ + true + ], + "title": "checkExistingScrobbles", + "type": "boolean" + }, + "refreshEnabled": { + "default": true, + "description": "Try to get fresh scrobble history from client when tracks to be scrobbled are newer than the last scrobble found in client history", + "examples": [ + true + ], + "title": "refreshEnabled", + "type": "boolean" + }, + "verbose": { + "description": "Options used for increasing verbosity of logging in MS (used for debugging)", + "properties": { + "match": { + "$ref": "#/definitions/MatchLoggingOptions", + "title": "match" + } + }, + "title": "verbose", + "type": "object" + } + }, + "title": "options", + "type": "object" + }, + "retryMultiplier": { + "default": 1.5, + "description": "default retry delay multiplier (retry attempt * multiplier = # of seconds to wait before retrying)", + "examples": [ + 1.5 + ], + "title": "retryMultiplier", + "type": "number" + }, + "token": { + "description": "User token for the user to scrobble for", + "examples": [ + "6794186bf-1157-4de6-80e5-uvb411f3ea2b" + ], + "title": "token", + "type": "string" + }, + "url": { + "default": "https://api.listenbrainz.org/", + "description": "URL for the ListenBrainz server, if not using the default", + "examples": [ + "https://api.listenbrainz.org/" + ], + "title": "url", + "type": "string" + }, + "username": { + "description": "Username of the user to scrobble for", + "title": "username", + "type": "string" + } + }, + "required": [ + "token", + "username" + ], + "title": "ListenBrainzClientData", + "type": "object" + }, + "ListenBrainzSourceAIOConfig": { + "properties": { + "clients": { + "description": "Restrict scrobbling tracks played from this source to Clients with names from this list. If list is empty is not present Source scrobbles to all configured Clients.", + "examples": [ + [ + "MyMalojaConfigName", + "MyLastFMConfigName" + ] + ], + "items": { + "type": "string" + }, + "title": "clients", + "type": "array" + }, + "configureAs": { + "default": "source", + "description": "When used in `listenbrainz.config` this tells multi-scrobbler whether to use this data to configure a source or client.", + "enum": [ + "source" + ], + "examples": [ + "source" + ], + "title": "configureAs", + "type": "string" + }, + "data": { + "$ref": "#/definitions/ListenBrainzSourceData", + "title": "data" + }, + "name": { + "description": "Unique identifier for this source.", + "title": "name", + "type": "string" + }, + "type": { + "enum": [ + "listenbrainz" + ], + "title": "type", + "type": "string" + } + }, + "required": [ + "data", + "type" + ], + "title": "ListenBrainzSourceAIOConfig", + "type": "object" + }, + "ListenBrainzSourceData": { + "properties": { + "maxPollRetries": { + "default": 5, + "description": "default # of automatic polling restarts on error", + "examples": [ + 5 + ], + "title": "maxPollRetries", + "type": "number" + }, + "maxRequestRetries": { + "default": 1, + "description": "default # of http request retries a source can make before error is thrown", + "examples": [ + 1 + ], + "title": "maxRequestRetries", + "type": "number" + }, + "options": { + "$ref": "#/definitions/Record", + "title": "options" + }, + "retryMultiplier": { + "default": 1.5, + "description": "default retry delay multiplier (retry attempt * multiplier = # of seconds to wait before retrying)", + "examples": [ + 1.5 + ], + "title": "retryMultiplier", + "type": "number" + }, + "scrobbleThresholds": { + "$ref": "#/definitions/ScrobbleThresholds", + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" + }, + "token": { + "description": "User token for the user to scrobble for", + "examples": [ + "6794186bf-1157-4de6-80e5-uvb411f3ea2b" + ], + "title": "token", + "type": "string" + }, + "url": { + "default": "https://api.listenbrainz.org/", + "description": "URL for the ListenBrainz server, if not using the default", + "examples": [ + "https://api.listenbrainz.org/" + ], + "title": "url", + "type": "string" + }, + "username": { + "description": "Username of the user to scrobble for", + "title": "username", + "type": "string" + } + }, + "required": [ + "token", + "username" + ], + "title": "ListenBrainzSourceData", + "type": "object" + }, + "LogLevel": { + "enum": [ + "debug", + "error", + "info", + "verbose", + "warn" + ], + "title": "LogLevel", + "type": "string" + }, + "LogOptions": { + "properties": { + "console": { + "$ref": "#/definitions/LogLevel", + "description": "Specify the minimum log level streamed to the console (or docker container)", + "title": "console" + }, + "file": { + "description": "Specify the minimum log level to output to rotating files. If `false` no log files will be created.", + "enum": [ + "debug", + "error", + false, + "info", + "verbose", + "warn" + ], + "title": "file" + }, + "level": { + "$ref": "#/definitions/LogLevel", + "default": "'info'", + "description": "Specify the minimum log level for all log outputs without their own level specified.\n\nDefaults to env `LOG_LEVEL` or `info` if not specified.", + "title": "level" + }, + "stream": { + "$ref": "#/definitions/LogLevel", + "description": "Specify the minimum log level streamed to the UI", + "title": "stream" + } + }, + "title": "LogOptions", + "type": "object" + }, + "MPRISData": { + "properties": { + "blacklist": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "string" + } + ], + "description": "DO NOT scrobble from any players that START WITH these values, case-insensitive", + "examples": [ + [ + "spotify", + "vlc" + ] + ], + "title": "blacklist" + }, + "maxPollRetries": { + "default": 5, + "description": "default # of automatic polling restarts on error", + "examples": [ + 5 + ], + "title": "maxPollRetries", + "type": "number" + }, + "maxRequestRetries": { + "default": 1, + "description": "default # of http request retries a source can make before error is thrown", + "examples": [ + 1 + ], + "title": "maxRequestRetries", + "type": "number" + }, + "options": { + "$ref": "#/definitions/Record", + "title": "options" + }, + "retryMultiplier": { + "default": 1.5, + "description": "default retry delay multiplier (retry attempt * multiplier = # of seconds to wait before retrying)", + "examples": [ + 1.5 + ], + "title": "retryMultiplier", + "type": "number" + }, + "scrobbleThresholds": { + "$ref": "#/definitions/ScrobbleThresholds", + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" + }, + "whitelist": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "string" + } + ], + "description": "ONLY from any players that START WITH these values, case-insensitive\n\nIf whitelist is present then blacklist is ignored", + "examples": [ + [ + "spotify", + "vlc" + ] + ], + "title": "whitelist" + } + }, + "title": "MPRISData", + "type": "object" + }, + "MPRISSourceAIOConfig": { + "properties": { + "clients": { + "description": "Restrict scrobbling tracks played from this source to Clients with names from this list. If list is empty is not present Source scrobbles to all configured Clients.", + "examples": [ + [ + "MyMalojaConfigName", + "MyLastFMConfigName" + ] + ], + "items": { + "type": "string" + }, + "title": "clients", + "type": "array" + }, + "data": { + "$ref": "#/definitions/MPRISData", + "title": "data" + }, + "name": { + "description": "Unique identifier for this source.", + "title": "name", + "type": "string" + }, + "type": { + "enum": [ + "mpris" + ], + "title": "type", + "type": "string" + } + }, + "required": [ + "data", + "type" + ], + "title": "MPRISSourceAIOConfig", + "type": "object" + }, + "MalojaClientAIOConfig": { + "properties": { + "data": { + "$ref": "#/definitions/MalojaClientData", + "description": "Specific data required to configure this client", + "title": "data" + }, + "name": { + "description": "Unique identifier for this client. Used with sources to restrict where scrobbles are sent.", + "examples": [ + "MyConfig" + ], + "title": "name", + "type": "string" + }, + "type": { + "enum": [ + "maloja" + ], + "title": "type", + "type": "string" + } + }, + "required": [ + "data", + "name", + "type" + ], + "title": "MalojaClientAIOConfig", + "type": "object" + }, + "MalojaClientData": { + "properties": { + "apiKey": { + "description": "API Key for Maloja server", + "examples": [ + "myApiKey" + ], + "title": "apiKey", + "type": "string" + }, + "maxRequestRetries": { + "default": 1, + "description": "default # of http request retries a source can make before error is thrown", + "examples": [ + 1 + ], + "title": "maxRequestRetries", + "type": "number" + }, + "options": { + "properties": { + "checkExistingScrobbles": { + "default": true, + "description": "Check client for an existing scrobble at the same recorded time as the \"new\" track to be scrobbled. If an existing scrobble is found this track is not track scrobbled.", + "examples": [ + true + ], + "title": "checkExistingScrobbles", + "type": "boolean" + }, + "refreshEnabled": { + "default": true, + "description": "Try to get fresh scrobble history from client when tracks to be scrobbled are newer than the last scrobble found in client history", + "examples": [ + true + ], + "title": "refreshEnabled", + "type": "boolean" + }, + "verbose": { + "description": "Options used for increasing verbosity of logging in MS (used for debugging)", + "properties": { + "match": { + "$ref": "#/definitions/MatchLoggingOptions", + "title": "match" + } + }, + "title": "verbose", + "type": "object" + } + }, + "title": "options", + "type": "object" + }, + "retryMultiplier": { + "default": 1.5, + "description": "default retry delay multiplier (retry attempt * multiplier = # of seconds to wait before retrying)", + "examples": [ + 1.5 + ], + "title": "retryMultiplier", + "type": "number" + }, + "url": { + "description": "URL for maloja server", + "examples": [ + "http://localhost:42010" + ], + "title": "url", + "type": "string" + } + }, + "required": [ + "apiKey", + "url" + ], + "title": "MalojaClientData", + "type": "object" + }, + "MatchLoggingOptions": { + "description": "Scrobble matching (between new source track and existing client scrobbles) logging options. Used for debugging.", + "properties": { + "confidenceBreakdown": { + "default": false, + "description": "Include confidence breakdowns in track match logging, if applicable", + "examples": [ + false + ], + "title": "confidenceBreakdown", + "type": "boolean" + }, + "onMatch": { + "default": false, + "description": "Log to DEBUG when a new track DOES match an existing scrobble", + "examples": [ + false + ], + "title": "onMatch", + "type": "boolean" + }, + "onNoMatch": { + "default": false, + "description": "Log to DEBUG when a new track does NOT match an existing scrobble", + "examples": [ + false + ], + "title": "onNoMatch", + "type": "boolean" + } + }, + "title": "MatchLoggingOptions", + "type": "object" + }, + "MopidyData": { + "properties": { + "albumBlacklist": { + "default": [ + "Soundcloud" + ], + "description": "Remove album data that matches any case-insensitive string from this list when scrobbling,\n\nFor certain sources (Soundcloud) Mopidy does not have all track info (Album) and will instead use \"Soundcloud\" as the Album name. You can prevent multi-scrobbler from using this bad Album data by adding the fake name to this list. Multi-scrobbler will still scrobble the track, just without the bad data.", + "examples": [ + [ + "Soundcloud", + "Mixcloud" + ] + ], + "items": { + "type": "string" + }, + "title": "albumBlacklist", + "type": "array" + }, + "interval": { + "default": 10, + "description": "How long to wait before polling the source API for new tracks (in seconds)", + "examples": [ + 10 + ], + "title": "interval", + "type": "number" + }, + "maxInterval": { + "default": 30, + "description": "When there has been no new activity from the Source API multi-scrobbler will gradually increase the wait time between polling up to this value (in seconds)", + "examples": [ + 30 + ], + "title": "maxInterval", + "type": "number" + }, + "maxPollRetries": { + "default": 5, + "description": "default # of automatic polling restarts on error", + "examples": [ + 5 + ], + "title": "maxPollRetries", + "type": "number" + }, + "maxRequestRetries": { + "default": 1, + "description": "default # of http request retries a source can make before error is thrown", + "examples": [ + 1 + ], + "title": "maxRequestRetries", + "type": "number" + }, + "options": { + "$ref": "#/definitions/Record", + "title": "options" + }, + "retryMultiplier": { + "default": 1.5, + "description": "default retry delay multiplier (retry attempt * multiplier = # of seconds to wait before retrying)", + "examples": [ + 1.5 + ], + "title": "retryMultiplier", + "type": "number" + }, + "scrobbleThresholds": { + "$ref": "#/definitions/ScrobbleThresholds", + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" + }, + "uriBlacklist": { + "description": "Do not scrobble tracks whose URI STARTS WITH any of these strings, case-insensitive\n\nEX: Don't scrobble tracks from soundcloud by adding 'soundcloud' to this list.\n\nList is ignored if uriWhitelist is used.", + "items": { + "type": "string" + }, + "title": "uriBlacklist", + "type": "array" + }, + "uriWhitelist": { + "description": "Only scrobble tracks whose URI STARTS WITH any of these strings, case-insensitive\n\nEX: Only scrobble tracks from soundcloud by adding 'soundcloud' to this list.", + "items": { + "type": "string" + }, + "title": "uriWhitelist", + "type": "array" + }, + "url": { + "default": "ws://localhost:6680/mopidy/ws/", + "description": "URL of the Mopidy HTTP server to connect to\n\nYou MUST have Mopidy-HTTP extension enabled: https://mopidy.com/ext/http\n\nmulti-scrobbler connects to the WebSocket endpoint that ultimately looks like this => `ws://localhost:6680/mopidy/ws/`\n\nThe URL you provide here will have all parts not explicitly defined filled in for you so if these are not the default you must define them.\n\nParts => [default value]\n\n* Protocol => `ws://`\n* Hostname => `localhost`\n* Port => `6680`\n* Path => `/mopidy/ws/`", + "examples": [ + "ws://localhost:6680/mopidy/ws/" + ], + "title": "url", + "type": "string" + } + }, + "title": "MopidyData", + "type": "object" + }, + "MopidySourceAIOConfig": { + "properties": { + "clients": { + "description": "Restrict scrobbling tracks played from this source to Clients with names from this list. If list is empty is not present Source scrobbles to all configured Clients.", + "examples": [ + [ + "MyMalojaConfigName", + "MyLastFMConfigName" + ] + ], + "items": { + "type": "string" + }, + "title": "clients", + "type": "array" + }, + "data": { + "$ref": "#/definitions/MopidyData", + "title": "data" + }, + "name": { + "description": "Unique identifier for this source.", + "title": "name", + "type": "string" + }, + "type": { + "enum": [ + "mopidy" + ], + "title": "type", + "type": "string" + } + }, + "required": [ + "data", + "type" + ], + "title": "MopidySourceAIOConfig", + "type": "object" + }, + "NtfyConfig": { + "properties": { + "name": { + "description": "A friendly name used to identify webhook config in logs", + "title": "name", + "type": "string" + }, + "password": { + "description": "Required if topic is protected", + "title": "password", + "type": "string" + }, + "priorities": { + "$ref": "#/definitions/PrioritiesConfig", + "description": "Priority of messages\n\n* Info -> 3\n* Warn -> 4\n* Error -> 5", + "title": "priorities" + }, + "topic": { + "description": "The topic mutli-scrobbler should POST to", + "title": "topic", + "type": "string" + }, + "type": { + "description": "Webhook type. Valid values are:\n\n* gotify\n* ntfy", + "enum": [ + "gotify", + "ntfy" + ], + "examples": [ + "gotify" + ], + "title": "type", + "type": "string" + }, + "url": { + "description": "The URL of the Ntfy server", + "examples": [ + "http://192.168.0.100:8078" + ], + "title": "url", + "type": "string" + }, + "username": { + "description": "Required if topic is protected", + "title": "username", + "type": "string" + } + }, + "required": [ + "topic", + "type", + "url" + ], + "title": "NtfyConfig", + "type": "object" + }, + "PlexSourceAIOConfig": { + "properties": { + "clients": { + "description": "Restrict scrobbling tracks played from this source to Clients with names from this list. If list is empty is not present Source scrobbles to all configured Clients.", + "examples": [ + [ + "MyMalojaConfigName", + "MyLastFMConfigName" + ] + ], + "items": { + "type": "string" + }, + "title": "clients", + "type": "array" + }, + "data": { + "$ref": "#/definitions/PlexSourceData", + "title": "data" + }, + "name": { + "description": "Unique identifier for this source.", + "title": "name", + "type": "string" + }, + "type": { + "enum": [ + "plex" + ], + "title": "type", + "type": "string" + } + }, + "required": [ + "data", + "type" + ], + "title": "PlexSourceAIOConfig", + "type": "object" + }, + "PlexSourceData": { + "properties": { + "libraries": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "string" + } + ], + "description": "optional list of libraries to scrobble tracks from\n\nIf none are provided tracks from all libraries will be scrobbled", + "examples": [ + [ + "Audio", + "Music" + ] + ], + "title": "libraries" + }, + "maxPollRetries": { + "default": 5, + "description": "default # of automatic polling restarts on error", + "examples": [ + 5 + ], + "title": "maxPollRetries", + "type": "number" + }, + "maxRequestRetries": { + "default": 1, + "description": "default # of http request retries a source can make before error is thrown", + "examples": [ + 1 + ], + "title": "maxRequestRetries", + "type": "number" + }, + "options": { + "description": "Additional options for Plex/Tautulli logging and tuning", + "properties": { + "logFilterFailure": { + "default": "warn", + "description": "How MS should log when a Plex/Tautulli event fails a defined filter (users/servers)\n\n* `false` => do not log\n* `debug` => log to DEBUG level\n* `warn` => log to WARN level (default)\n\nHint: This is useful if you are sure this source is setup correctly and you have multiple other Plex/Tautulli sources. Set to `debug` or `false` to reduce log noise.", + "enum": [ + "debug", + false, + "warn" + ], + "examples": [ + "warn" + ], + "title": "logFilterFailure" + } + }, + "title": "options", + "type": "object" + }, + "retryMultiplier": { + "default": 1.5, + "description": "default retry delay multiplier (retry attempt * multiplier = # of seconds to wait before retrying)", + "examples": [ + 1.5 + ], + "title": "retryMultiplier", + "type": "number" + }, + "scrobbleThresholds": { + "$ref": "#/definitions/ScrobbleThresholds", + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" + }, + "servers": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "string" + } + ], + "description": "optional list of servers to scrobble tracks from\n\nIf none are provided tracks from all servers will be scrobbled", + "examples": [ + [ + "MyServerName" + ] + ], + "title": "servers" + }, + "user": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "string" + } + ], + "description": "optional list of users to scrobble tracks from\n\nIf none are provided tracks from all users will be scrobbled", + "examples": [ + [ + "MyUser1", + "MyUser2" + ] + ], + "title": "user" + } + }, + "title": "PlexSourceData", + "type": "object" + }, + "PrioritiesConfig": { + "properties": { + "error": { + "examples": [ + 10 + ], + "title": "error", + "type": "number" + }, + "info": { + "examples": [ + 5 + ], + "title": "info", + "type": "number" + }, + "warn": { + "examples": [ + 7 + ], + "title": "warn", + "type": "number" + } + }, + "required": [ + "error", + "info", + "warn" + ], + "title": "PrioritiesConfig", + "type": "object" + }, + "Record": { + "title": "Record", + "type": "object" + }, + "RequestRetryOptions": { + "properties": { + "maxRequestRetries": { + "default": 1, + "description": "default # of http request retries a source can make before error is thrown", + "examples": [ + 1 + ], + "title": "maxRequestRetries", + "type": "number" + }, + "retryMultiplier": { + "default": 1.5, + "description": "default retry delay multiplier (retry attempt * multiplier = # of seconds to wait before retrying)", + "examples": [ + 1.5 + ], + "title": "retryMultiplier", + "type": "number" + } + }, + "title": "RequestRetryOptions", + "type": "object" + }, + "ScrobbleThresholds": { + "properties": { + "duration": { + "default": 30, + "description": "The number of seconds before a track should be considered scrobbled.", + "examples": [ + 30 + ], + "title": "duration", + "type": "number" + }, + "percent": { + "description": "The percentage of a track that should have been seen played before it should be scrobbled. Only used if the Source provides information about how long the track is.\n\nNOTE: This should be used with care when the Source is a \"polling\" type (has an 'interval' property). If the track is short and the interval is too high MS may ignore the track if percentage is high because it had not \"seen\" the track for long enough from first discovery, even if you have been playing the track for longer.", + "title": "percent", + "type": "number" + } + }, + "title": "ScrobbleThresholds", + "type": "object" + }, + "SourceAIOConfig": { + "anyOf": [ + { + "$ref": "#/definitions/SpotifySourceAIOConfig" + }, + { + "$ref": "#/definitions/PlexSourceAIOConfig" + }, + { + "$ref": "#/definitions/TautulliSourceAIOConfig" + }, + { + "$ref": "#/definitions/DeezerSourceAIOConfig" + }, + { + "$ref": "#/definitions/SubsonicSourceAIOConfig" + }, + { + "$ref": "#/definitions/JellySourceAIOConfig" + }, + { + "$ref": "#/definitions/LastFmSouceAIOConfig" + }, + { + "$ref": "#/definitions/YTMusicSourceAIOConfig" + }, + { + "$ref": "#/definitions/MPRISSourceAIOConfig" + }, + { + "$ref": "#/definitions/MopidySourceAIOConfig" + }, + { + "$ref": "#/definitions/ListenBrainzSourceAIOConfig" + }, + { + "$ref": "#/definitions/JRiverSourceAIOConfig" + }, + { + "$ref": "#/definitions/KodiSourceAIOConfig" + } + ], + "title": "SourceAIOConfig" + }, + "SourceRetryOptions": { + "properties": { + "maxPollRetries": { + "default": 5, + "description": "default # of automatic polling restarts on error", + "examples": [ + 5 + ], + "title": "maxPollRetries", + "type": "number" + }, + "maxRequestRetries": { + "default": 1, + "description": "default # of http request retries a source can make before error is thrown", + "examples": [ + 1 + ], + "title": "maxRequestRetries", + "type": "number" + }, + "retryMultiplier": { + "default": 1.5, + "description": "default retry delay multiplier (retry attempt * multiplier = # of seconds to wait before retrying)", + "examples": [ + 1.5 + ], + "title": "retryMultiplier", + "type": "number" + } + }, + "title": "SourceRetryOptions", + "type": "object" + }, + "SpotifySourceAIOConfig": { + "properties": { + "clients": { + "description": "Restrict scrobbling tracks played from this source to Clients with names from this list. If list is empty is not present Source scrobbles to all configured Clients.", + "examples": [ + [ + "MyMalojaConfigName", + "MyLastFMConfigName" + ] + ], + "items": { + "type": "string" + }, + "title": "clients", + "type": "array" + }, + "data": { + "$ref": "#/definitions/SpotifySourceData", + "title": "data" + }, + "name": { + "description": "Unique identifier for this source.", + "title": "name", + "type": "string" + }, + "type": { + "enum": [ + "spotify" + ], + "title": "type", + "type": "string" + } + }, + "required": [ + "data", + "type" + ], + "title": "SpotifySourceAIOConfig", + "type": "object" + }, + "SpotifySourceData": { + "properties": { + "clientId": { + "description": "spotify client id", + "examples": [ + "787c921a2a2ab42320831aba0c8f2fc2" + ], + "title": "clientId", + "type": "string" + }, + "clientSecret": { + "description": "spotify client secret", + "examples": [ + "ec42e09d5ae0ee0f0816ca151008412a" + ], + "title": "clientSecret", + "type": "string" + }, + "interval": { + "default": 30, + "description": "How long to wait before polling the source API for new tracks (in seconds)\n\nIt is unlikely you should need to change this unless you scrobble many very short tracks often\n\nReading:\n* https://developer.spotify.com/documentation/web-api/guides/rate-limits/\n* https://medium.com/mendix/limiting-your-amount-of-calls-in-mendix-most-of-the-time-rest-835dde55b10e\n * The rate limit is ~180 req/min", + "examples": [ + 30 + ], + "title": "interval", + "type": "number" + }, + "maxInterval": { + "default": 60, + "description": "When there has been no new activity from the Source API multi-scrobbler will gradually increase the wait time between polling up to this value (in seconds)", + "examples": [ + 60 + ], + "title": "maxInterval", + "type": "number" + }, + "maxPollRetries": { + "default": 5, + "description": "default # of automatic polling restarts on error", + "examples": [ + 5 + ], + "title": "maxPollRetries", + "type": "number" + }, + "maxRequestRetries": { + "default": 1, + "description": "default # of http request retries a source can make before error is thrown", + "examples": [ + 1 + ], + "title": "maxRequestRetries", + "type": "number" + }, + "options": { + "$ref": "#/definitions/Record", + "title": "options" + }, + "redirectUri": { + "default": "http://localhost:9078/callback", + "description": "spotify redirect URI -- required only if not the default shown here. URI must end in \"callback\"", + "examples": [ + "http://localhost:9078/callback" + ], + "title": "redirectUri", + "type": "string" + }, + "retryMultiplier": { + "default": 1.5, + "description": "default retry delay multiplier (retry attempt * multiplier = # of seconds to wait before retrying)", + "examples": [ + 1.5 + ], + "title": "retryMultiplier", + "type": "number" + }, + "scrobbleThresholds": { + "$ref": "#/definitions/ScrobbleThresholds", + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" + } + }, + "required": [ + "clientId", + "clientSecret", + "redirectUri" + ], + "title": "SpotifySourceData", + "type": "object" + }, + "SubsonicData": { + "properties": { + "interval": { + "default": 10, + "description": "How long to wait before polling the source API for new tracks (in seconds)", + "examples": [ + 10 + ], + "title": "interval", + "type": "number" + }, + "maxInterval": { + "default": 30, + "description": "When there has been no new activity from the Source API multi-scrobbler will gradually increase the wait time between polling up to this value (in seconds)", + "examples": [ + 30 + ], + "title": "maxInterval", + "type": "number" + }, + "maxPollRetries": { + "default": 5, + "description": "default # of automatic polling restarts on error", + "examples": [ + 5 + ], + "title": "maxPollRetries", + "type": "number" + }, + "maxRequestRetries": { + "default": 1, + "description": "default # of http request retries a source can make before error is thrown", + "examples": [ + 1 + ], + "title": "maxRequestRetries", + "type": "number" + }, + "options": { + "$ref": "#/definitions/Record", + "title": "options" + }, + "password": { + "description": "Password for the user to login to the server with", + "examples": [ + "MyPassword" + ], + "title": "password", + "type": "string" + }, + "retryMultiplier": { + "default": 1.5, + "description": "default retry delay multiplier (retry attempt * multiplier = # of seconds to wait before retrying)", + "examples": [ + 1.5 + ], + "title": "retryMultiplier", + "type": "number" + }, + "scrobbleThresholds": { + "$ref": "#/definitions/ScrobbleThresholds", + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" + }, + "url": { + "description": "URL of the subsonic media server to query", + "examples": [ + "http://airsonic.local" + ], + "title": "url", + "type": "string" + }, + "user": { + "description": "Username to login to the server with", + "title": "user", + "type": "string" + } + }, + "required": [ + "password", + "url", + "user" + ], + "title": "SubsonicData", + "type": "object" + }, + "SubsonicSourceAIOConfig": { + "properties": { + "clients": { + "description": "Restrict scrobbling tracks played from this source to Clients with names from this list. If list is empty is not present Source scrobbles to all configured Clients.", + "examples": [ + [ + "MyMalojaConfigName", + "MyLastFMConfigName" + ] + ], + "items": { + "type": "string" + }, + "title": "clients", + "type": "array" + }, + "data": { + "$ref": "#/definitions/SubsonicData", + "title": "data" + }, + "name": { + "description": "Unique identifier for this source.", + "title": "name", + "type": "string" + }, + "type": { + "enum": [ + "subsonic" + ], + "title": "type", + "type": "string" + } + }, + "required": [ + "data", + "type" + ], + "title": "SubsonicSourceAIOConfig", + "type": "object" + }, + "TautulliSourceAIOConfig": { + "properties": { + "clients": { + "description": "Restrict scrobbling tracks played from this source to Clients with names from this list. If list is empty is not present Source scrobbles to all configured Clients.", + "examples": [ + [ + "MyMalojaConfigName", + "MyLastFMConfigName" + ] + ], + "items": { + "type": "string" + }, + "title": "clients", + "type": "array" + }, + "data": { + "$ref": "#/definitions/PlexSourceData", + "title": "data" + }, + "name": { + "description": "Unique identifier for this source.", + "title": "name", + "type": "string" + }, + "type": { + "enum": [ + "tautulli" + ], + "title": "type", + "type": "string" + } + }, + "required": [ + "data", + "type" + ], + "title": "TautulliSourceAIOConfig", + "type": "object" + }, + "WebhookConfig": { + "anyOf": [ + { + "$ref": "#/definitions/GotifyConfig" + }, + { + "$ref": "#/definitions/NtfyConfig" + } + ], + "title": "WebhookConfig" + }, + "YTMusicData": { + "properties": { + "authUser": { + "description": "If the 'X-Goog-AuthUser' header is present in the Request Headers for music.youtube.com it must also be included", + "title": "authUser", + "type": "number" + }, + "cookie": { + "description": "The cookie retrieved from the Request Headers of music.youtube.com after logging in.\n\nSee https://github.com/nickp10/youtube-music-ts-api/blob/master/DOCUMENTATION.md#authenticate and https://ytmusicapi.readthedocs.io/en/latest/setup.html#copy-authentication-headers for how to retrieve this value.", + "examples": [ + "VISITOR_INFO1_LIVE=jMp2xA1Xz2_PbVc; __Secure-3PAPISID=3AxsXpy0M/AkISpjek; ..." + ], + "title": "cookie", + "type": "string" + }, + "interval": { + "default": 30, + "description": "How long to wait before polling the source API for new tracks (in seconds)", + "examples": [ + 30 + ], + "title": "interval", + "type": "number" + }, + "maxInterval": { + "default": 60, + "description": "When there has been no new activity from the Source API multi-scrobbler will gradually increase the wait time between polling up to this value (in seconds)", + "examples": [ + 60 + ], + "title": "maxInterval", + "type": "number" + }, + "maxPollRetries": { + "default": 5, + "description": "default # of automatic polling restarts on error", + "examples": [ + 5 + ], + "title": "maxPollRetries", + "type": "number" + }, + "maxRequestRetries": { + "default": 1, + "description": "default # of http request retries a source can make before error is thrown", + "examples": [ + 1 + ], + "title": "maxRequestRetries", + "type": "number" + }, + "options": { + "$ref": "#/definitions/Record", + "title": "options" + }, + "retryMultiplier": { + "default": 1.5, + "description": "default retry delay multiplier (retry attempt * multiplier = # of seconds to wait before retrying)", + "examples": [ + 1.5 + ], + "title": "retryMultiplier", + "type": "number" + }, + "scrobbleThresholds": { + "$ref": "#/definitions/ScrobbleThresholds", + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" + } + }, + "required": [ + "cookie" + ], + "title": "YTMusicData", + "type": "object" + }, + "YTMusicSourceAIOConfig": { + "properties": { + "clients": { + "description": "Restrict scrobbling tracks played from this source to Clients with names from this list. If list is empty is not present Source scrobbles to all configured Clients.", + "examples": [ + [ + "MyMalojaConfigName", + "MyLastFMConfigName" + ] + ], + "items": { + "type": "string" + }, + "title": "clients", + "type": "array" + }, + "data": { + "$ref": "#/definitions/YTMusicData", + "title": "data" + }, + "name": { + "description": "Unique identifier for this source.", + "title": "name", + "type": "string" + }, + "type": { + "enum": [ + "ytmusic" + ], + "title": "type", + "type": "string" + } + }, + "required": [ + "data", + "type" + ], + "title": "YTMusicSourceAIOConfig", + "type": "object" + } + }, + "properties": { + "clientDefaults": { + "$ref": "#/definitions/RequestRetryOptions", + "title": "clientDefaults" + }, + "clients": { + "items": { + "$ref": "#/definitions/ClientAIOConfig" + }, + "title": "clients", + "type": "array" + }, + "logging": { + "$ref": "#/definitions/LogOptions", + "title": "logging" + }, + "port": { + "default": 9078, + "description": "Set the port the multi-scrobbler UI will be served from", + "examples": [ + 9078 + ], + "title": "port", + "type": "number" + }, + "sourceDefaults": { + "allOf": [ + { + "$ref": "#/definitions/SourceRetryOptions" + }, + { + "properties": { + "scrobbleThresholds": { + "$ref": "#/definitions/ScrobbleThresholds", + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" + } + }, + "type": "object" + } + ], + "title": "sourceDefaults" + }, + "sources": { + "items": { + "$ref": "#/definitions/SourceAIOConfig" + }, + "title": "sources", + "type": "array" + }, + "webhooks": { + "items": { + "$ref": "#/definitions/WebhookConfig" + }, + "title": "webhooks", + "type": "array" + } + }, + "type": "object" +} + diff --git a/docsite/static/configExample.json b/docsite/static/configExample.json new file mode 100644 index 00000000..bd49c58f --- /dev/null +++ b/docsite/static/configExample.json @@ -0,0 +1,59 @@ +{ + "sourceDefaults": { + "maxPollRetries": 0, + "maxRequestRetries": 1, + "retryMultiplier": 1.5 + }, + "clientDefaults": { + "maxRequestRetries": 1, + "retryMultiplier": 1.5 + }, + "sources": [ + { + "type": "spotify", + "clients": ["myConfig"], + "name": "mySpotifySource", + "data": { + "clientId": "a89cba1569901a0671d5a9875fed4be1", + "clientSecret": "ec42e09d5ae0ee0f0816ca151008412a", + "redirectUri": "http://localhost:9078/callback" + } + } + ], + "clients": [ + { + "type": "maloja", + "name": "myConfig", + "data": { + "url": "http://localhost:42010", + "apiKey": "myMalojaKey" + } + } + ], + "webhooks": [ + { + "name": "FirstGotifyServer", + "type": "gotify", + "url": "http://localhost:8070", + "token": "MyGotifyToken", + "priorities": { + "info": 5, + "warn": 7, + "error": 10 + } + }, + { + "type": "ntfy", + "name": "MyNtfyFriendlyNameForLogs", + "url": "http://localhost:9991", + "topic": "MyMultiScrobblerTopic", + "username": "Optional", + "password": "Optional", + "priorities": { + "info": 3, + "warn": 4, + "error": 5 + } + } + ] +} diff --git a/docsite/static/img/icon.png b/docsite/static/img/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..0d73da594f1d053206920d337f78685e7b984d96 GIT binary patch literal 4306 zcmeAS@N?(olHy`uVBq!ia0y~yU}6Aa4mJh`hA$OYelajGwq!ax2Y5O=D-;yvr)B1( zGB9XNtet4f6fYxgLr79CZylc3Eid^632U&83@UWAX0z?&|*C#*>-+3f^NkLu3ml)B7jZ=Ti1F-c z=PKu0obj6ERO4rpc!9N3ey85i_RhKwNa>Gpns>_Q-IraB6+>B@WgXE&&i2QCVyL*KGeD0pTf+R-+0e-`}S*g ze)0`GrBin?^6@o(R7zc6y=V9G&D-nGZ~66`v2JH=O_UFvv0y6qC)!`Bh41DK3T^vIyZoR#G zI!xJ8%ptHfSFNUh+VL8zWc^xx;Xf-JgKvtQJbYszhiCcwK>Jlj8+#tjo6tM+Qtr0j zbNV@@iZoI;ab4MV{%4YC#+zH)eKqIS|9J6DV3zo0@U1j=lcxiR#2<{0tP=6 zA8gIpln4>BGP`M_z`|44QO)8D7iP^1x>d>M$iQ%L&yzn{ zq7DoUjed+Wf14Q?9=#2{F1jJGapt=f{`l9U`Pn`mN{$v4`K{R0|OI7gxlHcFZTZ9XJTN0n8^Uv-f${wPvm)N21f=42Id=) zOL&5&@sF2JDbu&y&(+X2e+mEp z`&-Wcd~^Gz)M19|!s$U)wcGt$58Tb(4?1V9`*B<^{9kcI zaz?Ge+_YPpYxb5+he#cgauyM48VUc~?2+QlfqaNt4n|K023IT{!k*yMlN+bqkR z|M})-9wr8fiVyXV9)&QlFid##uVSu1!`GiO3=!!Jd4F>Do)>3OXGnO_8qdF+QGwyW z192vY)Ho)F!}p^ag&7VQ6iYGqF)$pyFV!T>kkE7R>&J7up058MaO#N)0}I0zyC2&% zmxkKEeK#%f=jHvy8mZHRtU4J47#x(#|9bNrt37x8`~SZir?fwx(wDtvy#NCvLt^{? zTh1R;pI`s$)qg*e;mqOL3=8K!w0~Q?Z;QpBY5#WZu@soYaNxt?{mXaX{T`qFc59&! zgC9e}iHG-J-L3PE-#?i_fWhF>2l-d$zP;U;V^yo?z`*d8{oL)?&y`zDZ$GbDC286o z6m$B)^gZkhbq_aAY40jOdHDDD!my4Nr;|1L^)2`R(qmO;FxdT^%l^0A$KD)MxzC>u z&G%+tVrW`X_(lF_>>E?L-QSrT7#fzbd%u7GA-_`Ag@J=1qwGiY)m_<2Ob!eOE;OIJ z#lXZMwg0#IgK4qK%R%MN2XV#*hK4%!S*FY^3?&8M^Czs`U*^Z?z;IwIbMiF*6DEIV zcQIVI5@7hSc(STQp9C`_!~J`jR=?!GiyZJ~RA5-}x3Sffm62iYoxjo{x$X_Y3_tAm z^GWdJAK+wY2nHptw>P7h1Q;Cl1UD=WWng4D($lazj_ZRFG<}1tVqj?gWXT|KWNY~z zJAOtM27#0p^MFU|-G!8`^=hPL_( zlNlTs8XoF1)qR%u)0N1=;L!i>PvL>hqAm;!@BT5*V*+KYw&(8Y1@0$u&R3qFf9iR) zm^!!^W?*4BFkNPGGq@acsP(^hgNKQseWR7GQADcYggSn*mfu9hMhhP+)q*Q*W=v&cxu-VEz9> zKRZ}L=*J{~rWQu!gm=n?^Cz)0F>r`5z5C(Fz#!XxAU{dr(gkq~4u%68UQc*jzhkaB zBgoqwh2P)*kcarC99o@R_<@pm|I>e-u|e{^4)63==cX~tVK}hn znZ&)m<*ZU13M}D zMK&`B!;2>(2Np!9`Q8DkPE&T^koc#-ppd}gV$W+aWs~6_M+OJ|wEt5MbO?Uy*bJ)NQAcGf7>)K5j85!E>k>Lnu zqh8%iK@Nt5vjR7kPVsy9jggUIqtk;Q@9W=v4FM}TW8zVpX0O1YP{FfBfQ8MDgCXIA zg29_a9XoagHtr^==35}|fbuG?+5%h6fK803DhZlBzzq}P>m315<%vys#%a6f-OKMv zHQTy=F)d?aNLcZZCE-ne&g_Fy&53>4_ZZX}KsE52*lZaChPsa|K4#6PZI0g_UHh

huQt=1<85tZLm>33K zy9QKn zPEi8OIDljvE*#Wga$sO^WM9Mqu37FJfA@=-iNT5Qz>EE+?~`~P7#xl~e82tK(vmVE z1}26@JpX$i{=e?okS)l;AW`+hUvp{q)E_2Hdkh6w7dd_`M*?Ribvxoih?&RJ(Ol=J@c{dCZ7HA{F=6=(U+;7j*Xn9X?= z!=Bw@-5$Gp4nxC1`y-zfSsok{W{~FKsZ(bXcy48O()X@TbDj)sc1aA!c7OhF$dDt#Q+tG=r@D7`jzA7a!CK{eTk|$q z8hkit+Fx;fPqcoYU6b%(xj=^8nBUu8w%vdIncwS^;K4pw + + + + + + + \ No newline at end of file diff --git a/docsite/static/img/status-ui.jpg b/docsite/static/img/status-ui.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3a6581f6a3606d1fee8dc4800a5d23c7a5fa087c GIT binary patch literal 196020 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%0Dcl=44c8Y`Zq{P06iM~@GuBlz) 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 E01P!tt^fc4 literal 0 HcmV?d00001 diff --git a/docsite/static/source.json b/docsite/static/source.json new file mode 100644 index 00000000..7bf320eb --- /dev/null +++ b/docsite/static/source.json @@ -0,0 +1,1568 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "anyOf": [ + { + "$ref": "#/definitions/SpotifySourceConfig" + }, + { + "$ref": "#/definitions/PlexSourceConfig" + }, + { + "$ref": "#/definitions/TautulliSourceConfig" + }, + { + "$ref": "#/definitions/DeezerSourceConfig" + }, + { + "$ref": "#/definitions/SubSonicSourceConfig" + }, + { + "$ref": "#/definitions/JellySourceConfig" + }, + { + "$ref": "#/definitions/LastfmSourceConfig" + }, + { + "$ref": "#/definitions/YTMusicSourceConfig" + }, + { + "$ref": "#/definitions/MPRISSourceConfig" + }, + { + "$ref": "#/definitions/MopidySourceConfig" + }, + { + "$ref": "#/definitions/ListenBrainzSourceConfig" + }, + { + "$ref": "#/definitions/JRiverSourceConfig" + }, + { + "$ref": "#/definitions/KodiSourceConfig" + } + ], + "definitions": { + "DeezerData": { + "properties": { + "clientId": { + "description": "deezer client id", + "examples": [ + "a89cba1569901a0671d5a9875fed4be1" + ], + "title": "clientId", + "type": "string" + }, + "clientSecret": { + "description": "deezer client secret", + "examples": [ + "ec42e09d5ae0ee0f0816ca151008412a" + ], + "title": "clientSecret", + "type": "string" + }, + "interval": { + "default": 60, + "description": "optional, how long to wait before calling spotify for new tracks (in seconds)", + "examples": [ + 60 + ], + "title": "interval", + "type": "number" + }, + "maxPollRetries": { + "default": 5, + "description": "default # of automatic polling restarts on error", + "examples": [ + 5 + ], + "title": "maxPollRetries", + "type": "number" + }, + "maxRequestRetries": { + "default": 1, + "description": "default # of http request retries a source can make before error is thrown", + "examples": [ + 1 + ], + "title": "maxRequestRetries", + "type": "number" + }, + "options": { + "$ref": "#/definitions/Record", + "title": "options" + }, + "redirectUri": { + "default": "http://localhost:9078/deezer/callback", + "description": "deezer redirect URI -- required only if not the default shown here. URI must end in \"callback\"", + "examples": [ + "http://localhost:9078/deezer/callback" + ], + "title": "redirectUri", + "type": "string" + }, + "retryMultiplier": { + "default": 1.5, + "description": "default retry delay multiplier (retry attempt * multiplier = # of seconds to wait before retrying)", + "examples": [ + 1.5 + ], + "title": "retryMultiplier", + "type": "number" + }, + "scrobbleThresholds": { + "$ref": "#/definitions/ScrobbleThresholds", + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" + } + }, + "required": [ + "clientId", + "clientSecret", + "redirectUri" + ], + "title": "DeezerData", + "type": "object" + }, + "DeezerSourceConfig": { + "properties": { + "clients": { + "description": "Restrict scrobbling tracks played from this source to Clients with names from this list. If list is empty is not present Source scrobbles to all configured Clients.", + "examples": [ + [ + "MyMalojaConfigName", + "MyLastFMConfigName" + ] + ], + "items": { + "type": "string" + }, + "title": "clients", + "type": "array" + }, + "data": { + "$ref": "#/definitions/DeezerData", + "title": "data" + }, + "name": { + "description": "Unique identifier for this source.", + "title": "name", + "type": "string" + } + }, + "required": [ + "data" + ], + "title": "DeezerSourceConfig", + "type": "object" + }, + "JRiverData": { + "properties": { + "interval": { + "default": 30, + "description": "How long to wait before polling the source API for new tracks (in seconds)", + "examples": [ + 30 + ], + "title": "interval", + "type": "number" + }, + "maxInterval": { + "default": 60, + "description": "When there has been no new activity from the Source API multi-scrobbler will gradually increase the wait time between polling up to this value (in seconds)", + "examples": [ + 60 + ], + "title": "maxInterval", + "type": "number" + }, + "maxPollRetries": { + "default": 5, + "description": "default # of automatic polling restarts on error", + "examples": [ + 5 + ], + "title": "maxPollRetries", + "type": "number" + }, + "maxRequestRetries": { + "default": 1, + "description": "default # of http request retries a source can make before error is thrown", + "examples": [ + 1 + ], + "title": "maxRequestRetries", + "type": "number" + }, + "options": { + "$ref": "#/definitions/Record", + "title": "options" + }, + "password": { + "description": "If you have enabled authentication, the password you set", + "title": "password", + "type": "string" + }, + "retryMultiplier": { + "default": 1.5, + "description": "default retry delay multiplier (retry attempt * multiplier = # of seconds to wait before retrying)", + "examples": [ + 1.5 + ], + "title": "retryMultiplier", + "type": "number" + }, + "scrobbleThresholds": { + "$ref": "#/definitions/ScrobbleThresholds", + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" + }, + "url": { + "default": "http://localhost:52199/MCWS/v1/", + "description": "URL of the JRiver HTTP server to connect to\n\nmulti-scrobbler connects to the Web Service Interface endpoint that ultimately looks like this => `http://yourDomain:52199/MCWS/v1/`\n\nThe URL you provide here will have all parts not explicitly defined filled in for you so if these are not the default you must define them.\n\nParts => [default value]\n\n* Protocol => `http://`\n* Hostname => `localhost`\n* Port => `52199`\n* Path => `/MCWS/v1/`", + "examples": [ + "http://localhost:52199/MCWS/v1/" + ], + "title": "url", + "type": "string" + }, + "username": { + "description": "If you have enabled authentication, the username you set", + "title": "username", + "type": "string" + } + }, + "required": [ + "url" + ], + "title": "JRiverData", + "type": "object" + }, + "JRiverSourceConfig": { + "properties": { + "clients": { + "description": "Restrict scrobbling tracks played from this source to Clients with names from this list. If list is empty is not present Source scrobbles to all configured Clients.", + "examples": [ + [ + "MyMalojaConfigName", + "MyLastFMConfigName" + ] + ], + "items": { + "type": "string" + }, + "title": "clients", + "type": "array" + }, + "data": { + "$ref": "#/definitions/JRiverData", + "title": "data" + }, + "name": { + "description": "Unique identifier for this source.", + "title": "name", + "type": "string" + } + }, + "required": [ + "data" + ], + "title": "JRiverSourceConfig", + "type": "object" + }, + "JellyData": { + "properties": { + "maxPollRetries": { + "default": 5, + "description": "default # of automatic polling restarts on error", + "examples": [ + 5 + ], + "title": "maxPollRetries", + "type": "number" + }, + "maxRequestRetries": { + "default": 1, + "description": "default # of http request retries a source can make before error is thrown", + "examples": [ + 1 + ], + "title": "maxRequestRetries", + "type": "number" + }, + "options": { + "description": "Additional options for jellyfin logging and tuning", + "properties": { + "logFilterFailure": { + "default": "warn", + "description": "How MS should log when a Jellyfin event fails a defined filter (users/servers)\n\n* `false` => do not log\n* `debug` => log to DEBUG level\n* `warn` => log to WARN level (default)\n\nHint: This is useful if you are sure this source is setup correctly and you have multiple other Jellyfin sources. Set to `debug` or `false` to reduce log noise.", + "enum": [ + "debug", + false, + "warn" + ], + "examples": [ + "warn" + ], + "title": "logFilterFailure" + }, + "logPayload": { + "default": false, + "description": "Log raw Jellyfin webhook payload to debug", + "examples": [ + false + ], + "title": "logPayload", + "type": "boolean" + } + }, + "title": "options", + "type": "object" + }, + "retryMultiplier": { + "default": 1.5, + "description": "default retry delay multiplier (retry attempt * multiplier = # of seconds to wait before retrying)", + "examples": [ + 1.5 + ], + "title": "retryMultiplier", + "type": "number" + }, + "scrobbleThresholds": { + "$ref": "#/definitions/ScrobbleThresholds", + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" + }, + "servers": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "string" + } + ], + "description": "optional list of servers to scrobble tracks from\n\nIf none are provided tracks from all servers will be scrobbled", + "examples": [ + [ + "MyServerName1" + ] + ], + "title": "servers" + }, + "users": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "string" + } + ], + "description": "optional list of users to scrobble tracks from\n\nIf none are provided tracks from all users will be scrobbled", + "examples": [ + [ + "MyUser1", + "MyUser2" + ] + ], + "title": "users" + } + }, + "title": "JellyData", + "type": "object" + }, + "JellySourceConfig": { + "properties": { + "clients": { + "description": "Restrict scrobbling tracks played from this source to Clients with names from this list. If list is empty is not present Source scrobbles to all configured Clients.", + "examples": [ + [ + "MyMalojaConfigName", + "MyLastFMConfigName" + ] + ], + "items": { + "type": "string" + }, + "title": "clients", + "type": "array" + }, + "data": { + "$ref": "#/definitions/JellyData", + "title": "data" + }, + "name": { + "description": "Unique identifier for this source.", + "title": "name", + "type": "string" + } + }, + "required": [ + "data" + ], + "title": "JellySourceConfig", + "type": "object" + }, + "KodiData": { + "properties": { + "interval": { + "default": 30, + "description": "How long to wait before polling the source API for new tracks (in seconds)", + "examples": [ + 30 + ], + "title": "interval", + "type": "number" + }, + "maxInterval": { + "default": 60, + "description": "When there has been no new activity from the Source API multi-scrobbler will gradually increase the wait time between polling up to this value (in seconds)", + "examples": [ + 60 + ], + "title": "maxInterval", + "type": "number" + }, + "maxPollRetries": { + "default": 5, + "description": "default # of automatic polling restarts on error", + "examples": [ + 5 + ], + "title": "maxPollRetries", + "type": "number" + }, + "maxRequestRetries": { + "default": 1, + "description": "default # of http request retries a source can make before error is thrown", + "examples": [ + 1 + ], + "title": "maxRequestRetries", + "type": "number" + }, + "options": { + "$ref": "#/definitions/Record", + "title": "options" + }, + "password": { + "description": "The password set for Remote Control via Web Sever", + "title": "password", + "type": "string" + }, + "retryMultiplier": { + "default": 1.5, + "description": "default retry delay multiplier (retry attempt * multiplier = # of seconds to wait before retrying)", + "examples": [ + 1.5 + ], + "title": "retryMultiplier", + "type": "number" + }, + "scrobbleThresholds": { + "$ref": "#/definitions/ScrobbleThresholds", + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" + }, + "url": { + "default": "http://localhost:8080/jsonrpc", + "description": "URL of the Kodi HTTP server to connect to\n\nmulti-scrobbler connects to the Web Service Interface endpoint that ultimately looks like this => `http://yourDomain:8080/jsonrpc`\n\nThe URL you provide here will have all parts not explicitly defined filled in for you so if these are not the default you must define them.\n\nParts => [default value]\n\n* Protocol => `http://`\n* Hostname => `localhost`\n* Port => `8080`\n* Path => `/jsonrpc`", + "examples": [ + "http://localhost:8080/jsonrpc" + ], + "title": "url", + "type": "string" + }, + "username": { + "description": "The username set for Remote Control via Web Sever", + "title": "username", + "type": "string" + } + }, + "required": [ + "password", + "url", + "username" + ], + "title": "KodiData", + "type": "object" + }, + "KodiSourceConfig": { + "properties": { + "clients": { + "description": "Restrict scrobbling tracks played from this source to Clients with names from this list. If list is empty is not present Source scrobbles to all configured Clients.", + "examples": [ + [ + "MyMalojaConfigName", + "MyLastFMConfigName" + ] + ], + "items": { + "type": "string" + }, + "title": "clients", + "type": "array" + }, + "data": { + "$ref": "#/definitions/KodiData", + "title": "data" + }, + "name": { + "description": "Unique identifier for this source.", + "title": "name", + "type": "string" + } + }, + "required": [ + "data" + ], + "title": "KodiSourceConfig", + "type": "object" + }, + "LastFmSourceData": { + "properties": { + "apiKey": { + "description": "API Key generated from Last.fm account", + "examples": [ + "787c921a2a2ab42320831aba0c8f2fc2" + ], + "title": "apiKey", + "type": "string" + }, + "maxPollRetries": { + "default": 5, + "description": "default # of automatic polling restarts on error", + "examples": [ + 5 + ], + "title": "maxPollRetries", + "type": "number" + }, + "maxRequestRetries": { + "default": 1, + "description": "default # of http request retries a source can make before error is thrown", + "examples": [ + 1 + ], + "title": "maxRequestRetries", + "type": "number" + }, + "options": { + "$ref": "#/definitions/Record", + "title": "options" + }, + "redirectUri": { + "default": "http://localhost:9078/lastfm/callback", + "description": "Optional URI to use for callback. Specify this if callback should be different than the default. MUST have \"lastfm/callback\" in the URL somewhere.", + "examples": [ + "http://localhost:9078/lastfm/callback" + ], + "title": "redirectUri", + "type": "string" + }, + "retryMultiplier": { + "default": 1.5, + "description": "default retry delay multiplier (retry attempt * multiplier = # of seconds to wait before retrying)", + "examples": [ + 1.5 + ], + "title": "retryMultiplier", + "type": "number" + }, + "scrobbleThresholds": { + "$ref": "#/definitions/ScrobbleThresholds", + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" + }, + "secret": { + "description": "Secret generated from Last.fm account", + "examples": [ + "ec42e09d5ae0ee0f0816ca151008412a" + ], + "title": "secret", + "type": "string" + }, + "session": { + "description": "Optional session id returned from a completed auth flow", + "title": "session", + "type": "string" + } + }, + "required": [ + "apiKey", + "secret" + ], + "title": "LastFmSourceData", + "type": "object" + }, + "LastfmSourceConfig": { + "properties": { + "clients": { + "description": "Restrict scrobbling tracks played from this source to Clients with names from this list. If list is empty is not present Source scrobbles to all configured Clients.", + "examples": [ + [ + "MyMalojaConfigName", + "MyLastFMConfigName" + ] + ], + "items": { + "type": "string" + }, + "title": "clients", + "type": "array" + }, + "configureAs": { + "default": "source", + "description": "When used in `lastfm.config` this tells multi-scrobbler whether to use this data to configure a source or client.", + "enum": [ + "source" + ], + "examples": [ + "source" + ], + "title": "configureAs", + "type": "string" + }, + "data": { + "$ref": "#/definitions/LastFmSourceData", + "title": "data" + }, + "name": { + "description": "Unique identifier for this source.", + "title": "name", + "type": "string" + } + }, + "required": [ + "data" + ], + "title": "LastfmSourceConfig", + "type": "object" + }, + "ListenBrainzSourceConfig": { + "properties": { + "clients": { + "description": "Restrict scrobbling tracks played from this source to Clients with names from this list. If list is empty is not present Source scrobbles to all configured Clients.", + "examples": [ + [ + "MyMalojaConfigName", + "MyLastFMConfigName" + ] + ], + "items": { + "type": "string" + }, + "title": "clients", + "type": "array" + }, + "configureAs": { + "default": "source", + "description": "When used in `listenbrainz.config` this tells multi-scrobbler whether to use this data to configure a source or client.", + "enum": [ + "source" + ], + "examples": [ + "source" + ], + "title": "configureAs", + "type": "string" + }, + "data": { + "$ref": "#/definitions/ListenBrainzSourceData", + "title": "data" + }, + "name": { + "description": "Unique identifier for this source.", + "title": "name", + "type": "string" + } + }, + "required": [ + "data" + ], + "title": "ListenBrainzSourceConfig", + "type": "object" + }, + "ListenBrainzSourceData": { + "properties": { + "maxPollRetries": { + "default": 5, + "description": "default # of automatic polling restarts on error", + "examples": [ + 5 + ], + "title": "maxPollRetries", + "type": "number" + }, + "maxRequestRetries": { + "default": 1, + "description": "default # of http request retries a source can make before error is thrown", + "examples": [ + 1 + ], + "title": "maxRequestRetries", + "type": "number" + }, + "options": { + "$ref": "#/definitions/Record", + "title": "options" + }, + "retryMultiplier": { + "default": 1.5, + "description": "default retry delay multiplier (retry attempt * multiplier = # of seconds to wait before retrying)", + "examples": [ + 1.5 + ], + "title": "retryMultiplier", + "type": "number" + }, + "scrobbleThresholds": { + "$ref": "#/definitions/ScrobbleThresholds", + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" + }, + "token": { + "description": "User token for the user to scrobble for", + "examples": [ + "6794186bf-1157-4de6-80e5-uvb411f3ea2b" + ], + "title": "token", + "type": "string" + }, + "url": { + "default": "https://api.listenbrainz.org/", + "description": "URL for the ListenBrainz server, if not using the default", + "examples": [ + "https://api.listenbrainz.org/" + ], + "title": "url", + "type": "string" + }, + "username": { + "description": "Username of the user to scrobble for", + "title": "username", + "type": "string" + } + }, + "required": [ + "token", + "username" + ], + "title": "ListenBrainzSourceData", + "type": "object" + }, + "MPRISData": { + "properties": { + "blacklist": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "string" + } + ], + "description": "DO NOT scrobble from any players that START WITH these values, case-insensitive", + "examples": [ + [ + "spotify", + "vlc" + ] + ], + "title": "blacklist" + }, + "maxPollRetries": { + "default": 5, + "description": "default # of automatic polling restarts on error", + "examples": [ + 5 + ], + "title": "maxPollRetries", + "type": "number" + }, + "maxRequestRetries": { + "default": 1, + "description": "default # of http request retries a source can make before error is thrown", + "examples": [ + 1 + ], + "title": "maxRequestRetries", + "type": "number" + }, + "options": { + "$ref": "#/definitions/Record", + "title": "options" + }, + "retryMultiplier": { + "default": 1.5, + "description": "default retry delay multiplier (retry attempt * multiplier = # of seconds to wait before retrying)", + "examples": [ + 1.5 + ], + "title": "retryMultiplier", + "type": "number" + }, + "scrobbleThresholds": { + "$ref": "#/definitions/ScrobbleThresholds", + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" + }, + "whitelist": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "string" + } + ], + "description": "ONLY from any players that START WITH these values, case-insensitive\n\nIf whitelist is present then blacklist is ignored", + "examples": [ + [ + "spotify", + "vlc" + ] + ], + "title": "whitelist" + } + }, + "title": "MPRISData", + "type": "object" + }, + "MPRISSourceConfig": { + "properties": { + "clients": { + "description": "Restrict scrobbling tracks played from this source to Clients with names from this list. If list is empty is not present Source scrobbles to all configured Clients.", + "examples": [ + [ + "MyMalojaConfigName", + "MyLastFMConfigName" + ] + ], + "items": { + "type": "string" + }, + "title": "clients", + "type": "array" + }, + "data": { + "$ref": "#/definitions/MPRISData", + "title": "data" + }, + "name": { + "description": "Unique identifier for this source.", + "title": "name", + "type": "string" + } + }, + "required": [ + "data" + ], + "title": "MPRISSourceConfig", + "type": "object" + }, + "MopidyData": { + "properties": { + "albumBlacklist": { + "default": [ + "Soundcloud" + ], + "description": "Remove album data that matches any case-insensitive string from this list when scrobbling,\n\nFor certain sources (Soundcloud) Mopidy does not have all track info (Album) and will instead use \"Soundcloud\" as the Album name. You can prevent multi-scrobbler from using this bad Album data by adding the fake name to this list. Multi-scrobbler will still scrobble the track, just without the bad data.", + "examples": [ + [ + "Soundcloud", + "Mixcloud" + ] + ], + "items": { + "type": "string" + }, + "title": "albumBlacklist", + "type": "array" + }, + "interval": { + "default": 10, + "description": "How long to wait before polling the source API for new tracks (in seconds)", + "examples": [ + 10 + ], + "title": "interval", + "type": "number" + }, + "maxInterval": { + "default": 30, + "description": "When there has been no new activity from the Source API multi-scrobbler will gradually increase the wait time between polling up to this value (in seconds)", + "examples": [ + 30 + ], + "title": "maxInterval", + "type": "number" + }, + "maxPollRetries": { + "default": 5, + "description": "default # of automatic polling restarts on error", + "examples": [ + 5 + ], + "title": "maxPollRetries", + "type": "number" + }, + "maxRequestRetries": { + "default": 1, + "description": "default # of http request retries a source can make before error is thrown", + "examples": [ + 1 + ], + "title": "maxRequestRetries", + "type": "number" + }, + "options": { + "$ref": "#/definitions/Record", + "title": "options" + }, + "retryMultiplier": { + "default": 1.5, + "description": "default retry delay multiplier (retry attempt * multiplier = # of seconds to wait before retrying)", + "examples": [ + 1.5 + ], + "title": "retryMultiplier", + "type": "number" + }, + "scrobbleThresholds": { + "$ref": "#/definitions/ScrobbleThresholds", + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" + }, + "uriBlacklist": { + "description": "Do not scrobble tracks whose URI STARTS WITH any of these strings, case-insensitive\n\nEX: Don't scrobble tracks from soundcloud by adding 'soundcloud' to this list.\n\nList is ignored if uriWhitelist is used.", + "items": { + "type": "string" + }, + "title": "uriBlacklist", + "type": "array" + }, + "uriWhitelist": { + "description": "Only scrobble tracks whose URI STARTS WITH any of these strings, case-insensitive\n\nEX: Only scrobble tracks from soundcloud by adding 'soundcloud' to this list.", + "items": { + "type": "string" + }, + "title": "uriWhitelist", + "type": "array" + }, + "url": { + "default": "ws://localhost:6680/mopidy/ws/", + "description": "URL of the Mopidy HTTP server to connect to\n\nYou MUST have Mopidy-HTTP extension enabled: https://mopidy.com/ext/http\n\nmulti-scrobbler connects to the WebSocket endpoint that ultimately looks like this => `ws://localhost:6680/mopidy/ws/`\n\nThe URL you provide here will have all parts not explicitly defined filled in for you so if these are not the default you must define them.\n\nParts => [default value]\n\n* Protocol => `ws://`\n* Hostname => `localhost`\n* Port => `6680`\n* Path => `/mopidy/ws/`", + "examples": [ + "ws://localhost:6680/mopidy/ws/" + ], + "title": "url", + "type": "string" + } + }, + "title": "MopidyData", + "type": "object" + }, + "MopidySourceConfig": { + "properties": { + "clients": { + "description": "Restrict scrobbling tracks played from this source to Clients with names from this list. If list is empty is not present Source scrobbles to all configured Clients.", + "examples": [ + [ + "MyMalojaConfigName", + "MyLastFMConfigName" + ] + ], + "items": { + "type": "string" + }, + "title": "clients", + "type": "array" + }, + "data": { + "$ref": "#/definitions/MopidyData", + "title": "data" + }, + "name": { + "description": "Unique identifier for this source.", + "title": "name", + "type": "string" + } + }, + "required": [ + "data" + ], + "title": "MopidySourceConfig", + "type": "object" + }, + "PlexSourceConfig": { + "properties": { + "clients": { + "description": "Restrict scrobbling tracks played from this source to Clients with names from this list. If list is empty is not present Source scrobbles to all configured Clients.", + "examples": [ + [ + "MyMalojaConfigName", + "MyLastFMConfigName" + ] + ], + "items": { + "type": "string" + }, + "title": "clients", + "type": "array" + }, + "data": { + "$ref": "#/definitions/PlexSourceData", + "title": "data" + }, + "name": { + "description": "Unique identifier for this source.", + "title": "name", + "type": "string" + } + }, + "required": [ + "data" + ], + "title": "PlexSourceConfig", + "type": "object" + }, + "PlexSourceData": { + "properties": { + "libraries": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "string" + } + ], + "description": "optional list of libraries to scrobble tracks from\n\nIf none are provided tracks from all libraries will be scrobbled", + "examples": [ + [ + "Audio", + "Music" + ] + ], + "title": "libraries" + }, + "maxPollRetries": { + "default": 5, + "description": "default # of automatic polling restarts on error", + "examples": [ + 5 + ], + "title": "maxPollRetries", + "type": "number" + }, + "maxRequestRetries": { + "default": 1, + "description": "default # of http request retries a source can make before error is thrown", + "examples": [ + 1 + ], + "title": "maxRequestRetries", + "type": "number" + }, + "options": { + "description": "Additional options for Plex/Tautulli logging and tuning", + "properties": { + "logFilterFailure": { + "default": "warn", + "description": "How MS should log when a Plex/Tautulli event fails a defined filter (users/servers)\n\n* `false` => do not log\n* `debug` => log to DEBUG level\n* `warn` => log to WARN level (default)\n\nHint: This is useful if you are sure this source is setup correctly and you have multiple other Plex/Tautulli sources. Set to `debug` or `false` to reduce log noise.", + "enum": [ + "debug", + false, + "warn" + ], + "examples": [ + "warn" + ], + "title": "logFilterFailure" + } + }, + "title": "options", + "type": "object" + }, + "retryMultiplier": { + "default": 1.5, + "description": "default retry delay multiplier (retry attempt * multiplier = # of seconds to wait before retrying)", + "examples": [ + 1.5 + ], + "title": "retryMultiplier", + "type": "number" + }, + "scrobbleThresholds": { + "$ref": "#/definitions/ScrobbleThresholds", + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" + }, + "servers": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "string" + } + ], + "description": "optional list of servers to scrobble tracks from\n\nIf none are provided tracks from all servers will be scrobbled", + "examples": [ + [ + "MyServerName" + ] + ], + "title": "servers" + }, + "user": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "string" + } + ], + "description": "optional list of users to scrobble tracks from\n\nIf none are provided tracks from all users will be scrobbled", + "examples": [ + [ + "MyUser1", + "MyUser2" + ] + ], + "title": "user" + } + }, + "title": "PlexSourceData", + "type": "object" + }, + "Record": { + "title": "Record", + "type": "object" + }, + "ScrobbleThresholds": { + "properties": { + "duration": { + "default": 30, + "description": "The number of seconds before a track should be considered scrobbled.", + "examples": [ + 30 + ], + "title": "duration", + "type": "number" + }, + "percent": { + "description": "The percentage of a track that should have been seen played before it should be scrobbled. Only used if the Source provides information about how long the track is.\n\nNOTE: This should be used with care when the Source is a \"polling\" type (has an 'interval' property). If the track is short and the interval is too high MS may ignore the track if percentage is high because it had not \"seen\" the track for long enough from first discovery, even if you have been playing the track for longer.", + "title": "percent", + "type": "number" + } + }, + "title": "ScrobbleThresholds", + "type": "object" + }, + "SpotifySourceConfig": { + "properties": { + "clients": { + "description": "Restrict scrobbling tracks played from this source to Clients with names from this list. If list is empty is not present Source scrobbles to all configured Clients.", + "examples": [ + [ + "MyMalojaConfigName", + "MyLastFMConfigName" + ] + ], + "items": { + "type": "string" + }, + "title": "clients", + "type": "array" + }, + "data": { + "$ref": "#/definitions/SpotifySourceData", + "title": "data" + }, + "name": { + "description": "Unique identifier for this source.", + "title": "name", + "type": "string" + } + }, + "required": [ + "data" + ], + "title": "SpotifySourceConfig", + "type": "object" + }, + "SpotifySourceData": { + "properties": { + "clientId": { + "description": "spotify client id", + "examples": [ + "787c921a2a2ab42320831aba0c8f2fc2" + ], + "title": "clientId", + "type": "string" + }, + "clientSecret": { + "description": "spotify client secret", + "examples": [ + "ec42e09d5ae0ee0f0816ca151008412a" + ], + "title": "clientSecret", + "type": "string" + }, + "interval": { + "default": 30, + "description": "How long to wait before polling the source API for new tracks (in seconds)\n\nIt is unlikely you should need to change this unless you scrobble many very short tracks often\n\nReading:\n* https://developer.spotify.com/documentation/web-api/guides/rate-limits/\n* https://medium.com/mendix/limiting-your-amount-of-calls-in-mendix-most-of-the-time-rest-835dde55b10e\n * The rate limit is ~180 req/min", + "examples": [ + 30 + ], + "title": "interval", + "type": "number" + }, + "maxInterval": { + "default": 60, + "description": "When there has been no new activity from the Source API multi-scrobbler will gradually increase the wait time between polling up to this value (in seconds)", + "examples": [ + 60 + ], + "title": "maxInterval", + "type": "number" + }, + "maxPollRetries": { + "default": 5, + "description": "default # of automatic polling restarts on error", + "examples": [ + 5 + ], + "title": "maxPollRetries", + "type": "number" + }, + "maxRequestRetries": { + "default": 1, + "description": "default # of http request retries a source can make before error is thrown", + "examples": [ + 1 + ], + "title": "maxRequestRetries", + "type": "number" + }, + "options": { + "$ref": "#/definitions/Record", + "title": "options" + }, + "redirectUri": { + "default": "http://localhost:9078/callback", + "description": "spotify redirect URI -- required only if not the default shown here. URI must end in \"callback\"", + "examples": [ + "http://localhost:9078/callback" + ], + "title": "redirectUri", + "type": "string" + }, + "retryMultiplier": { + "default": 1.5, + "description": "default retry delay multiplier (retry attempt * multiplier = # of seconds to wait before retrying)", + "examples": [ + 1.5 + ], + "title": "retryMultiplier", + "type": "number" + }, + "scrobbleThresholds": { + "$ref": "#/definitions/ScrobbleThresholds", + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" + } + }, + "required": [ + "clientId", + "clientSecret", + "redirectUri" + ], + "title": "SpotifySourceData", + "type": "object" + }, + "SubSonicSourceConfig": { + "properties": { + "clients": { + "description": "Restrict scrobbling tracks played from this source to Clients with names from this list. If list is empty is not present Source scrobbles to all configured Clients.", + "examples": [ + [ + "MyMalojaConfigName", + "MyLastFMConfigName" + ] + ], + "items": { + "type": "string" + }, + "title": "clients", + "type": "array" + }, + "data": { + "$ref": "#/definitions/SubsonicData", + "title": "data" + }, + "name": { + "description": "Unique identifier for this source.", + "title": "name", + "type": "string" + } + }, + "required": [ + "data" + ], + "title": "SubSonicSourceConfig", + "type": "object" + }, + "SubsonicData": { + "properties": { + "interval": { + "default": 10, + "description": "How long to wait before polling the source API for new tracks (in seconds)", + "examples": [ + 10 + ], + "title": "interval", + "type": "number" + }, + "maxInterval": { + "default": 30, + "description": "When there has been no new activity from the Source API multi-scrobbler will gradually increase the wait time between polling up to this value (in seconds)", + "examples": [ + 30 + ], + "title": "maxInterval", + "type": "number" + }, + "maxPollRetries": { + "default": 5, + "description": "default # of automatic polling restarts on error", + "examples": [ + 5 + ], + "title": "maxPollRetries", + "type": "number" + }, + "maxRequestRetries": { + "default": 1, + "description": "default # of http request retries a source can make before error is thrown", + "examples": [ + 1 + ], + "title": "maxRequestRetries", + "type": "number" + }, + "options": { + "$ref": "#/definitions/Record", + "title": "options" + }, + "password": { + "description": "Password for the user to login to the server with", + "examples": [ + "MyPassword" + ], + "title": "password", + "type": "string" + }, + "retryMultiplier": { + "default": 1.5, + "description": "default retry delay multiplier (retry attempt * multiplier = # of seconds to wait before retrying)", + "examples": [ + 1.5 + ], + "title": "retryMultiplier", + "type": "number" + }, + "scrobbleThresholds": { + "$ref": "#/definitions/ScrobbleThresholds", + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" + }, + "url": { + "description": "URL of the subsonic media server to query", + "examples": [ + "http://airsonic.local" + ], + "title": "url", + "type": "string" + }, + "user": { + "description": "Username to login to the server with", + "title": "user", + "type": "string" + } + }, + "required": [ + "password", + "url", + "user" + ], + "title": "SubsonicData", + "type": "object" + }, + "TautulliSourceConfig": { + "properties": { + "clients": { + "description": "Restrict scrobbling tracks played from this source to Clients with names from this list. If list is empty is not present Source scrobbles to all configured Clients.", + "examples": [ + [ + "MyMalojaConfigName", + "MyLastFMConfigName" + ] + ], + "items": { + "type": "string" + }, + "title": "clients", + "type": "array" + }, + "data": { + "$ref": "#/definitions/PlexSourceData", + "title": "data" + }, + "name": { + "description": "Unique identifier for this source.", + "title": "name", + "type": "string" + } + }, + "required": [ + "data" + ], + "title": "TautulliSourceConfig", + "type": "object" + }, + "YTMusicData": { + "properties": { + "authUser": { + "description": "If the 'X-Goog-AuthUser' header is present in the Request Headers for music.youtube.com it must also be included", + "title": "authUser", + "type": "number" + }, + "cookie": { + "description": "The cookie retrieved from the Request Headers of music.youtube.com after logging in.\n\nSee https://github.com/nickp10/youtube-music-ts-api/blob/master/DOCUMENTATION.md#authenticate and https://ytmusicapi.readthedocs.io/en/latest/setup.html#copy-authentication-headers for how to retrieve this value.", + "examples": [ + "VISITOR_INFO1_LIVE=jMp2xA1Xz2_PbVc; __Secure-3PAPISID=3AxsXpy0M/AkISpjek; ..." + ], + "title": "cookie", + "type": "string" + }, + "interval": { + "default": 30, + "description": "How long to wait before polling the source API for new tracks (in seconds)", + "examples": [ + 30 + ], + "title": "interval", + "type": "number" + }, + "maxInterval": { + "default": 60, + "description": "When there has been no new activity from the Source API multi-scrobbler will gradually increase the wait time between polling up to this value (in seconds)", + "examples": [ + 60 + ], + "title": "maxInterval", + "type": "number" + }, + "maxPollRetries": { + "default": 5, + "description": "default # of automatic polling restarts on error", + "examples": [ + 5 + ], + "title": "maxPollRetries", + "type": "number" + }, + "maxRequestRetries": { + "default": 1, + "description": "default # of http request retries a source can make before error is thrown", + "examples": [ + 1 + ], + "title": "maxRequestRetries", + "type": "number" + }, + "options": { + "$ref": "#/definitions/Record", + "title": "options" + }, + "retryMultiplier": { + "default": 1.5, + "description": "default retry delay multiplier (retry attempt * multiplier = # of seconds to wait before retrying)", + "examples": [ + 1.5 + ], + "title": "retryMultiplier", + "type": "number" + }, + "scrobbleThresholds": { + "$ref": "#/definitions/ScrobbleThresholds", + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" + } + }, + "required": [ + "cookie" + ], + "title": "YTMusicData", + "type": "object" + }, + "YTMusicSourceConfig": { + "properties": { + "clients": { + "description": "Restrict scrobbling tracks played from this source to Clients with names from this list. If list is empty is not present Source scrobbles to all configured Clients.", + "examples": [ + [ + "MyMalojaConfigName", + "MyLastFMConfigName" + ] + ], + "items": { + "type": "string" + }, + "title": "clients", + "type": "array" + }, + "data": { + "$ref": "#/definitions/YTMusicData", + "title": "data" + }, + "name": { + "description": "Unique identifier for this source.", + "title": "name", + "type": "string" + } + }, + "required": [ + "data" + ], + "title": "YTMusicSourceConfig", + "type": "object" + } + } +} + diff --git a/docsite/tsconfig.json b/docsite/tsconfig.json new file mode 100644 index 00000000..25040baf --- /dev/null +++ b/docsite/tsconfig.json @@ -0,0 +1,10 @@ +{ + // This file is not used in compilation. It is here just for a nice editor experience. + "extends": "@tsconfig/docusaurus/tsconfig.json", + "compilerOptions": { + "baseUrl": ".", + "resolveJsonModule": true, + // Extending "@tsconfig/docusaurus/tsconfig.json".types with "docusaurus-json-schema-plugin" + "types": ["node", "@docusaurus/module-type-aliases", "@docusaurus/theme-classic", "docusaurus-json-schema-plugin"] + } +} diff --git a/flatpak/icon.svg b/flatpak/icon.svg new file mode 100644 index 00000000..ace9387a --- /dev/null +++ b/flatpak/icon.svg @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/flatpak/io.github.foxxmd.multiscrobbler.yml b/flatpak/io.github.foxxmd.multiscrobbler.yml index ecd22ce4..14d8a646 100644 --- a/flatpak/io.github.foxxmd.multiscrobbler.yml +++ b/flatpak/io.github.foxxmd.multiscrobbler.yml @@ -48,6 +48,7 @@ modules: - install -Dm644 flatpak/${FLATPAK_ID}.desktop /app/share/applications/${FLATPAK_ID}.desktop - install -Dm644 flatpak/icon.png /app/share/icons/hicolor/512x512/apps/${FLATPAK_ID}.png + - install -Dm644 assets/icon.svg /app/share/icons/hicolor/scalable/apps/${FLATPAK_ID}.svg - install -Dm644 flatpak/${FLATPAK_ID}.metainfo.xml /app/share/metainfo/${FLATPAK_ID}.metainfo.xml - install -Dm755 ../run.sh /app/bin/multiscrobbler @@ -56,7 +57,7 @@ modules: - type: git url: https://github.com/FoxxMD/multi-scrobbler tag: 0.4.6 - commit: 5e905eae1798482dbcef504500d26a028c2e15cb + commit: b90ea039245491767baeefc53966b0350016aa4d dest: main # Wrapper to launch the app - type: script diff --git a/package-lock.json b/package-lock.json index 72fb05de..3bbfe27a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "multi-scrobbler", - "version": "0.4.0", + "version": "0.4.6", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "multi-scrobbler", - "version": "0.4.0", + "version": "0.4.6", "license": "MIT", "dependencies": { "@awaitjs/express": "^0.6.3", @@ -63,6 +63,7 @@ "ts-essentials": "^9.1.2", "ts-node": "^10.7.0", "tsconfig-paths": "^3.13.0", + "typedoc": "^0.23.28", "typescript": "^4.9.5", "typescript-json-schema": "~0.55" }, @@ -510,6 +511,12 @@ "node": ">=0.10.0" } }, + "node_modules/ansi-sequence-parser": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.0.tgz", + "integrity": "sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==", + "dev": true + }, "node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -2188,6 +2195,12 @@ "node": ">=6" } }, + "node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true + }, "node_modules/jsonparse": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", @@ -2326,6 +2339,12 @@ "node": ">=10" } }, + "node_modules/lunr": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", + "dev": true + }, "node_modules/make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", @@ -2337,6 +2356,18 @@ "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", "integrity": "sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==" }, + "node_modules/marked": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", + "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", + "dev": true, + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 12" + } + }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -3158,6 +3189,18 @@ "node": "*" } }, + "node_modules/shiki": { + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.3.tgz", + "integrity": "sha512-U3S/a+b0KS+UkTyMjoNojvTgrBHjgp7L6ovhFVZsXmBGnVdQ4K4U9oK0z63w538S91ATngv1vXigHCSWOwnr+g==", + "dev": true, + "dependencies": { + "ansi-sequence-parser": "^1.1.0", + "jsonc-parser": "^3.2.0", + "vscode-oniguruma": "^1.7.0", + "vscode-textmate": "^8.0.0" + } + }, "node_modules/side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -3640,6 +3683,51 @@ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" }, + "node_modules/typedoc": { + "version": "0.23.28", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.23.28.tgz", + "integrity": "sha512-9x1+hZWTHEQcGoP7qFmlo4unUoVJLB0H/8vfO/7wqTnZxg4kPuji9y3uRzEu0ZKez63OJAUmiGhUrtukC6Uj3w==", + "dev": true, + "dependencies": { + "lunr": "^2.3.9", + "marked": "^4.2.12", + "minimatch": "^7.1.3", + "shiki": "^0.14.1" + }, + "bin": { + "typedoc": "bin/typedoc" + }, + "engines": { + "node": ">= 14.14" + }, + "peerDependencies": { + "typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x" + } + }, + "node_modules/typedoc/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==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/typedoc/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==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/typescript": { "version": "4.9.5", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", @@ -3801,6 +3889,18 @@ "extsprintf": "^1.2.0" } }, + "node_modules/vscode-oniguruma": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", + "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==", + "dev": true + }, + "node_modules/vscode-textmate": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz", + "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==", + "dev": true + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", diff --git a/package.json b/package.json index 1dc21233..5984fca3 100644 --- a/package.json +++ b/package.json @@ -8,11 +8,12 @@ "build": "tsc", "start": "node src/index.js", "schema": "npm run -s schema-aio & npm run -s schema-source & npm run -s schema-client & npm run -s schema-aiosource & npm run -s schema-aioclient", - "schema-client": "typescript-json-schema tsconfig.json ClientConfig --out src/common/schema/client.json --required --tsNodeRegister --refs --validationKeywords deprecationMessage", - "schema-source": "typescript-json-schema tsconfig.json SourceConfig --out src/common/schema/source.json --required --tsNodeRegister --refs --validationKeywords deprecationMessage", - "schema-aio": "typescript-json-schema tsconfig.json AIOConfig --out src/common/schema/aio.json --required --tsNodeRegister --refs --validationKeywords deprecationMessage", - "schema-aiosource": "typescript-json-schema tsconfig.json AIOSourceConfig --out src/common/schema/aio-source.json --required --tsNodeRegister --refs --validationKeywords deprecationMessage", - "schema-aioclient": "typescript-json-schema tsconfig.json AIOClientConfig --out src/common/schema/aio-client.json --required --tsNodeRegister --refs --validationKeywords deprecationMessage" + "schema-client": "typescript-json-schema tsconfig.json ClientConfig --out src/common/schema/client.json --required --titles --tsNodeRegister --refs --validationKeywords deprecationMessage", + "schema-source": "typescript-json-schema tsconfig.json SourceConfig --out src/common/schema/source.json --required --titles --tsNodeRegister --refs --validationKeywords deprecationMessage", + "schema-aio": "typescript-json-schema tsconfig.json AIOConfig --out src/common/schema/aio.json --required --titles --tsNodeRegister --refs --validationKeywords deprecationMessage", + "schema-aiosource": "typescript-json-schema tsconfig.json AIOSourceConfig --out src/common/schema/aio-source.json --titles --required --tsNodeRegister --refs --validationKeywords deprecationMessage", + "schema-aioclient": "typescript-json-schema tsconfig.json AIOClientConfig --out src/common/schema/aio-client.json --titles --required --tsNodeRegister --refs --validationKeywords deprecationMessage", + "typedoc": "typedoc" }, "exports": { ".": { @@ -90,7 +91,8 @@ "ts-node": "^10.7.0", "tsconfig-paths": "^3.13.0", "typescript": "^4.9.5", - "typescript-json-schema": "~0.55" + "typescript-json-schema": "~0.55", + "typedoc": "^0.23.28" }, "overrides": { "spotify-web-api-node": { diff --git a/src/common/schema/aio-client.json b/src/common/schema/aio-client.json index 452ba749..0cabfea1 100644 --- a/src/common/schema/aio-client.json +++ b/src/common/schema/aio-client.json @@ -12,7 +12,8 @@ { "$ref": "#/definitions/MalojaClientAIOConfig" } - ] + ], + "title": "ClientAIOConfig" }, "CommonClientData": { "properties": { @@ -22,6 +23,7 @@ "examples": [ 1 ], + "title": "maxRequestRetries", "type": "number" }, "options": { @@ -32,6 +34,7 @@ "examples": [ true ], + "title": "checkExistingScrobbles", "type": "boolean" }, "refreshEnabled": { @@ -40,18 +43,22 @@ "examples": [ true ], + "title": "refreshEnabled", "type": "boolean" }, "verbose": { "description": "Options used for increasing verbosity of logging in MS (used for debugging)", "properties": { "match": { - "$ref": "#/definitions/MatchLoggingOptions" + "$ref": "#/definitions/MatchLoggingOptions", + "title": "match" } }, + "title": "verbose", "type": "object" } }, + "title": "options", "type": "object" }, "retryMultiplier": { @@ -60,9 +67,11 @@ "examples": [ 1.5 ], + "title": "retryMultiplier", "type": "number" } }, + "title": "CommonClientData", "type": "object" }, "LastfmClientAIOConfig": { @@ -77,6 +86,7 @@ "examples": [ "client" ], + "title": "configureAs", "type": "string" }, "data": { @@ -88,19 +98,22 @@ "$ref": "#/definitions/LastfmData" } ], - "description": "Specific data required to configure this client" + "description": "Specific data required to configure this client", + "title": "data" }, "name": { "description": "Unique identifier for this client. Used with sources to restrict where scrobbles are sent.", "examples": [ "MyConfig" ], + "title": "name", "type": "string" }, "type": { "enum": [ "lastfm" ], + "title": "type", "type": "string" } }, @@ -109,6 +122,7 @@ "name", "type" ], + "title": "LastfmClientAIOConfig", "type": "object" }, "LastfmData": { @@ -118,6 +132,7 @@ "examples": [ "787c921a2a2ab42320831aba0c8f2fc2" ], + "title": "apiKey", "type": "string" }, "maxRequestRetries": { @@ -126,6 +141,7 @@ "examples": [ 1 ], + "title": "maxRequestRetries", "type": "number" }, "redirectUri": { @@ -134,6 +150,7 @@ "examples": [ "http://localhost:9078/lastfm/callback" ], + "title": "redirectUri", "type": "string" }, "retryMultiplier": { @@ -142,6 +159,7 @@ "examples": [ 1.5 ], + "title": "retryMultiplier", "type": "number" }, "secret": { @@ -149,10 +167,12 @@ "examples": [ "ec42e09d5ae0ee0f0816ca151008412a" ], + "title": "secret", "type": "string" }, "session": { "description": "Optional session id returned from a completed auth flow", + "title": "session", "type": "string" } }, @@ -160,6 +180,7 @@ "apiKey", "secret" ], + "title": "LastfmData", "type": "object" }, "ListenBrainzClientAIOConfig": { @@ -174,23 +195,27 @@ "examples": [ "client" ], + "title": "configureAs", "type": "string" }, "data": { "$ref": "#/definitions/ListenBrainzClientData", - "description": "Specific data required to configure this client" + "description": "Specific data required to configure this client", + "title": "data" }, "name": { "description": "Unique identifier for this client. Used with sources to restrict where scrobbles are sent.", "examples": [ "MyConfig" ], + "title": "name", "type": "string" }, "type": { "enum": [ "listenbrainz" ], + "title": "type", "type": "string" } }, @@ -199,6 +224,7 @@ "name", "type" ], + "title": "ListenBrainzClientAIOConfig", "type": "object" }, "ListenBrainzClientData": { @@ -209,6 +235,7 @@ "examples": [ 1 ], + "title": "maxRequestRetries", "type": "number" }, "options": { @@ -219,6 +246,7 @@ "examples": [ true ], + "title": "checkExistingScrobbles", "type": "boolean" }, "refreshEnabled": { @@ -227,18 +255,22 @@ "examples": [ true ], + "title": "refreshEnabled", "type": "boolean" }, "verbose": { "description": "Options used for increasing verbosity of logging in MS (used for debugging)", "properties": { "match": { - "$ref": "#/definitions/MatchLoggingOptions" + "$ref": "#/definitions/MatchLoggingOptions", + "title": "match" } }, + "title": "verbose", "type": "object" } }, + "title": "options", "type": "object" }, "retryMultiplier": { @@ -247,6 +279,7 @@ "examples": [ 1.5 ], + "title": "retryMultiplier", "type": "number" }, "token": { @@ -254,6 +287,7 @@ "examples": [ "6794186bf-1157-4de6-80e5-uvb411f3ea2b" ], + "title": "token", "type": "string" }, "url": { @@ -262,10 +296,12 @@ "examples": [ "https://api.listenbrainz.org/" ], + "title": "url", "type": "string" }, "username": { "description": "Username of the user to scrobble for", + "title": "username", "type": "string" } }, @@ -273,25 +309,29 @@ "token", "username" ], + "title": "ListenBrainzClientData", "type": "object" }, "MalojaClientAIOConfig": { "properties": { "data": { "$ref": "#/definitions/MalojaClientData", - "description": "Specific data required to configure this client" + "description": "Specific data required to configure this client", + "title": "data" }, "name": { "description": "Unique identifier for this client. Used with sources to restrict where scrobbles are sent.", "examples": [ "MyConfig" ], + "title": "name", "type": "string" }, "type": { "enum": [ "maloja" ], + "title": "type", "type": "string" } }, @@ -300,6 +340,7 @@ "name", "type" ], + "title": "MalojaClientAIOConfig", "type": "object" }, "MalojaClientData": { @@ -309,6 +350,7 @@ "examples": [ "myApiKey" ], + "title": "apiKey", "type": "string" }, "maxRequestRetries": { @@ -317,6 +359,7 @@ "examples": [ 1 ], + "title": "maxRequestRetries", "type": "number" }, "options": { @@ -327,6 +370,7 @@ "examples": [ true ], + "title": "checkExistingScrobbles", "type": "boolean" }, "refreshEnabled": { @@ -335,18 +379,22 @@ "examples": [ true ], + "title": "refreshEnabled", "type": "boolean" }, "verbose": { "description": "Options used for increasing verbosity of logging in MS (used for debugging)", "properties": { "match": { - "$ref": "#/definitions/MatchLoggingOptions" + "$ref": "#/definitions/MatchLoggingOptions", + "title": "match" } }, + "title": "verbose", "type": "object" } }, + "title": "options", "type": "object" }, "retryMultiplier": { @@ -355,6 +403,7 @@ "examples": [ 1.5 ], + "title": "retryMultiplier", "type": "number" }, "url": { @@ -362,6 +411,7 @@ "examples": [ "http://localhost:42010" ], + "title": "url", "type": "string" } }, @@ -369,6 +419,7 @@ "apiKey", "url" ], + "title": "MalojaClientData", "type": "object" }, "MatchLoggingOptions": { @@ -380,6 +431,7 @@ "examples": [ false ], + "title": "confidenceBreakdown", "type": "boolean" }, "onMatch": { @@ -388,6 +440,7 @@ "examples": [ false ], + "title": "onMatch", "type": "boolean" }, "onNoMatch": { @@ -396,9 +449,11 @@ "examples": [ false ], + "title": "onNoMatch", "type": "boolean" } }, + "title": "MatchLoggingOptions", "type": "object" }, "RequestRetryOptions": { @@ -409,6 +464,7 @@ "examples": [ 1 ], + "title": "maxRequestRetries", "type": "number" }, "retryMultiplier": { @@ -417,20 +473,24 @@ "examples": [ 1.5 ], + "title": "retryMultiplier", "type": "number" } }, + "title": "RequestRetryOptions", "type": "object" } }, "properties": { "clientDefaults": { - "$ref": "#/definitions/RequestRetryOptions" + "$ref": "#/definitions/RequestRetryOptions", + "title": "clientDefaults" }, "clients": { "items": { "$ref": "#/definitions/ClientAIOConfig" }, + "title": "clients", "type": "array" } }, diff --git a/src/common/schema/aio-source.json b/src/common/schema/aio-source.json index 5c90dc07..f0e976be 100644 --- a/src/common/schema/aio-source.json +++ b/src/common/schema/aio-source.json @@ -8,6 +8,7 @@ "examples": [ "a89cba1569901a0671d5a9875fed4be1" ], + "title": "clientId", "type": "string" }, "clientSecret": { @@ -15,6 +16,7 @@ "examples": [ "ec42e09d5ae0ee0f0816ca151008412a" ], + "title": "clientSecret", "type": "string" }, "interval": { @@ -23,6 +25,7 @@ "examples": [ 60 ], + "title": "interval", "type": "number" }, "maxPollRetries": { @@ -31,6 +34,7 @@ "examples": [ 5 ], + "title": "maxPollRetries", "type": "number" }, "maxRequestRetries": { @@ -39,10 +43,12 @@ "examples": [ 1 ], + "title": "maxRequestRetries", "type": "number" }, "options": { - "$ref": "#/definitions/Record" + "$ref": "#/definitions/Record", + "title": "options" }, "redirectUri": { "default": "http://localhost:9078/deezer/callback", @@ -50,6 +56,7 @@ "examples": [ "http://localhost:9078/deezer/callback" ], + "title": "redirectUri", "type": "string" }, "retryMultiplier": { @@ -58,11 +65,13 @@ "examples": [ 1.5 ], + "title": "retryMultiplier", "type": "number" }, "scrobbleThresholds": { "$ref": "#/definitions/ScrobbleThresholds", - "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled." + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" } }, "required": [ @@ -70,6 +79,7 @@ "clientSecret", "redirectUri" ], + "title": "DeezerData", "type": "object" }, "DeezerSourceAIOConfig": { @@ -85,19 +95,23 @@ "items": { "type": "string" }, + "title": "clients", "type": "array" }, "data": { - "$ref": "#/definitions/DeezerData" + "$ref": "#/definitions/DeezerData", + "title": "data" }, "name": { "description": "Unique identifier for this source.", + "title": "name", "type": "string" }, "type": { "enum": [ "deezer" ], + "title": "type", "type": "string" } }, @@ -105,6 +119,7 @@ "data", "type" ], + "title": "DeezerSourceAIOConfig", "type": "object" }, "JRiverData": { @@ -115,6 +130,7 @@ "examples": [ 30 ], + "title": "interval", "type": "number" }, "maxInterval": { @@ -123,6 +139,7 @@ "examples": [ 60 ], + "title": "maxInterval", "type": "number" }, "maxPollRetries": { @@ -131,6 +148,7 @@ "examples": [ 5 ], + "title": "maxPollRetries", "type": "number" }, "maxRequestRetries": { @@ -139,13 +157,16 @@ "examples": [ 1 ], + "title": "maxRequestRetries", "type": "number" }, "options": { - "$ref": "#/definitions/Record" + "$ref": "#/definitions/Record", + "title": "options" }, "password": { "description": "If you have enabled authentication, the password you set", + "title": "password", "type": "string" }, "retryMultiplier": { @@ -154,11 +175,13 @@ "examples": [ 1.5 ], + "title": "retryMultiplier", "type": "number" }, "scrobbleThresholds": { "$ref": "#/definitions/ScrobbleThresholds", - "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled." + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" }, "url": { "default": "http://localhost:52199/MCWS/v1/", @@ -166,16 +189,19 @@ "examples": [ "http://localhost:52199/MCWS/v1/" ], + "title": "url", "type": "string" }, "username": { "description": "If you have enabled authentication, the username you set", + "title": "username", "type": "string" } }, "required": [ "url" ], + "title": "JRiverData", "type": "object" }, "JRiverSourceAIOConfig": { @@ -191,19 +217,23 @@ "items": { "type": "string" }, + "title": "clients", "type": "array" }, "data": { - "$ref": "#/definitions/JRiverData" + "$ref": "#/definitions/JRiverData", + "title": "data" }, "name": { "description": "Unique identifier for this source.", + "title": "name", "type": "string" }, "type": { "enum": [ "jriver" ], + "title": "type", "type": "string" } }, @@ -211,6 +241,7 @@ "data", "type" ], + "title": "JRiverSourceAIOConfig", "type": "object" }, "JellyData": { @@ -221,6 +252,7 @@ "examples": [ 5 ], + "title": "maxPollRetries", "type": "number" }, "maxRequestRetries": { @@ -229,6 +261,7 @@ "examples": [ 1 ], + "title": "maxRequestRetries", "type": "number" }, "options": { @@ -244,7 +277,8 @@ ], "examples": [ "warn" - ] + ], + "title": "logFilterFailure" }, "logPayload": { "default": false, @@ -252,9 +286,11 @@ "examples": [ false ], + "title": "logPayload", "type": "boolean" } }, + "title": "options", "type": "object" }, "retryMultiplier": { @@ -263,11 +299,13 @@ "examples": [ 1.5 ], + "title": "retryMultiplier", "type": "number" }, "scrobbleThresholds": { "$ref": "#/definitions/ScrobbleThresholds", - "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled." + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" }, "servers": { "anyOf": [ @@ -286,7 +324,8 @@ [ "MyServerName1" ] - ] + ], + "title": "servers" }, "users": { "anyOf": [ @@ -306,9 +345,11 @@ "MyUser1", "MyUser2" ] - ] + ], + "title": "users" } }, + "title": "JellyData", "type": "object" }, "JellySourceAIOConfig": { @@ -324,19 +365,23 @@ "items": { "type": "string" }, + "title": "clients", "type": "array" }, "data": { - "$ref": "#/definitions/JellyData" + "$ref": "#/definitions/JellyData", + "title": "data" }, "name": { "description": "Unique identifier for this source.", + "title": "name", "type": "string" }, "type": { "enum": [ "jellyfin" ], + "title": "type", "type": "string" } }, @@ -344,6 +389,7 @@ "data", "type" ], + "title": "JellySourceAIOConfig", "type": "object" }, "KodiData": { @@ -354,6 +400,7 @@ "examples": [ 30 ], + "title": "interval", "type": "number" }, "maxInterval": { @@ -362,6 +409,7 @@ "examples": [ 60 ], + "title": "maxInterval", "type": "number" }, "maxPollRetries": { @@ -370,6 +418,7 @@ "examples": [ 5 ], + "title": "maxPollRetries", "type": "number" }, "maxRequestRetries": { @@ -378,13 +427,16 @@ "examples": [ 1 ], + "title": "maxRequestRetries", "type": "number" }, "options": { - "$ref": "#/definitions/Record" + "$ref": "#/definitions/Record", + "title": "options" }, "password": { "description": "The password set for Remote Control via Web Sever", + "title": "password", "type": "string" }, "retryMultiplier": { @@ -393,11 +445,13 @@ "examples": [ 1.5 ], + "title": "retryMultiplier", "type": "number" }, "scrobbleThresholds": { "$ref": "#/definitions/ScrobbleThresholds", - "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled." + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" }, "url": { "default": "http://localhost:8080/jsonrpc", @@ -405,10 +459,12 @@ "examples": [ "http://localhost:8080/jsonrpc" ], + "title": "url", "type": "string" }, "username": { "description": "The username set for Remote Control via Web Sever", + "title": "username", "type": "string" } }, @@ -417,6 +473,7 @@ "url", "username" ], + "title": "KodiData", "type": "object" }, "KodiSourceAIOConfig": { @@ -432,19 +489,23 @@ "items": { "type": "string" }, + "title": "clients", "type": "array" }, "data": { - "$ref": "#/definitions/KodiData" + "$ref": "#/definitions/KodiData", + "title": "data" }, "name": { "description": "Unique identifier for this source.", + "title": "name", "type": "string" }, "type": { "enum": [ "kodi" ], + "title": "type", "type": "string" } }, @@ -452,6 +513,7 @@ "data", "type" ], + "title": "KodiSourceAIOConfig", "type": "object" }, "LastFmSouceAIOConfig": { @@ -467,6 +529,7 @@ "items": { "type": "string" }, + "title": "clients", "type": "array" }, "configureAs": { @@ -478,19 +541,23 @@ "examples": [ "source" ], + "title": "configureAs", "type": "string" }, "data": { - "$ref": "#/definitions/LastFmSourceData" + "$ref": "#/definitions/LastFmSourceData", + "title": "data" }, "name": { "description": "Unique identifier for this source.", + "title": "name", "type": "string" }, "type": { "enum": [ "lastfm" ], + "title": "type", "type": "string" } }, @@ -498,6 +565,7 @@ "data", "type" ], + "title": "LastFmSouceAIOConfig", "type": "object" }, "LastFmSourceData": { @@ -507,6 +575,7 @@ "examples": [ "787c921a2a2ab42320831aba0c8f2fc2" ], + "title": "apiKey", "type": "string" }, "maxPollRetries": { @@ -515,6 +584,7 @@ "examples": [ 5 ], + "title": "maxPollRetries", "type": "number" }, "maxRequestRetries": { @@ -523,10 +593,12 @@ "examples": [ 1 ], + "title": "maxRequestRetries", "type": "number" }, "options": { - "$ref": "#/definitions/Record" + "$ref": "#/definitions/Record", + "title": "options" }, "redirectUri": { "default": "http://localhost:9078/lastfm/callback", @@ -534,6 +606,7 @@ "examples": [ "http://localhost:9078/lastfm/callback" ], + "title": "redirectUri", "type": "string" }, "retryMultiplier": { @@ -542,21 +615,25 @@ "examples": [ 1.5 ], + "title": "retryMultiplier", "type": "number" }, "scrobbleThresholds": { "$ref": "#/definitions/ScrobbleThresholds", - "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled." + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" }, "secret": { "description": "Secret generated from Last.fm account", "examples": [ "ec42e09d5ae0ee0f0816ca151008412a" ], + "title": "secret", "type": "string" }, "session": { "description": "Optional session id returned from a completed auth flow", + "title": "session", "type": "string" } }, @@ -564,6 +641,7 @@ "apiKey", "secret" ], + "title": "LastFmSourceData", "type": "object" }, "ListenBrainzSourceAIOConfig": { @@ -579,6 +657,7 @@ "items": { "type": "string" }, + "title": "clients", "type": "array" }, "configureAs": { @@ -590,19 +669,23 @@ "examples": [ "source" ], + "title": "configureAs", "type": "string" }, "data": { - "$ref": "#/definitions/ListenBrainzSourceData" + "$ref": "#/definitions/ListenBrainzSourceData", + "title": "data" }, "name": { "description": "Unique identifier for this source.", + "title": "name", "type": "string" }, "type": { "enum": [ "listenbrainz" ], + "title": "type", "type": "string" } }, @@ -610,6 +693,7 @@ "data", "type" ], + "title": "ListenBrainzSourceAIOConfig", "type": "object" }, "ListenBrainzSourceData": { @@ -620,6 +704,7 @@ "examples": [ 5 ], + "title": "maxPollRetries", "type": "number" }, "maxRequestRetries": { @@ -628,10 +713,12 @@ "examples": [ 1 ], + "title": "maxRequestRetries", "type": "number" }, "options": { - "$ref": "#/definitions/Record" + "$ref": "#/definitions/Record", + "title": "options" }, "retryMultiplier": { "default": 1.5, @@ -639,17 +726,20 @@ "examples": [ 1.5 ], + "title": "retryMultiplier", "type": "number" }, "scrobbleThresholds": { "$ref": "#/definitions/ScrobbleThresholds", - "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled." + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" }, "token": { "description": "User token for the user to scrobble for", "examples": [ "6794186bf-1157-4de6-80e5-uvb411f3ea2b" ], + "title": "token", "type": "string" }, "url": { @@ -658,10 +748,12 @@ "examples": [ "https://api.listenbrainz.org/" ], + "title": "url", "type": "string" }, "username": { "description": "Username of the user to scrobble for", + "title": "username", "type": "string" } }, @@ -669,6 +761,7 @@ "token", "username" ], + "title": "ListenBrainzSourceData", "type": "object" }, "MPRISData": { @@ -691,7 +784,8 @@ "spotify", "vlc" ] - ] + ], + "title": "blacklist" }, "maxPollRetries": { "default": 5, @@ -699,6 +793,7 @@ "examples": [ 5 ], + "title": "maxPollRetries", "type": "number" }, "maxRequestRetries": { @@ -707,10 +802,12 @@ "examples": [ 1 ], + "title": "maxRequestRetries", "type": "number" }, "options": { - "$ref": "#/definitions/Record" + "$ref": "#/definitions/Record", + "title": "options" }, "retryMultiplier": { "default": 1.5, @@ -718,11 +815,13 @@ "examples": [ 1.5 ], + "title": "retryMultiplier", "type": "number" }, "scrobbleThresholds": { "$ref": "#/definitions/ScrobbleThresholds", - "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled." + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" }, "whitelist": { "anyOf": [ @@ -742,9 +841,11 @@ "spotify", "vlc" ] - ] + ], + "title": "whitelist" } }, + "title": "MPRISData", "type": "object" }, "MPRISSourceAIOConfig": { @@ -760,19 +861,23 @@ "items": { "type": "string" }, + "title": "clients", "type": "array" }, "data": { - "$ref": "#/definitions/MPRISData" + "$ref": "#/definitions/MPRISData", + "title": "data" }, "name": { "description": "Unique identifier for this source.", + "title": "name", "type": "string" }, "type": { "enum": [ "mpris" ], + "title": "type", "type": "string" } }, @@ -780,6 +885,7 @@ "data", "type" ], + "title": "MPRISSourceAIOConfig", "type": "object" }, "MopidyData": { @@ -798,6 +904,7 @@ "items": { "type": "string" }, + "title": "albumBlacklist", "type": "array" }, "interval": { @@ -806,6 +913,7 @@ "examples": [ 10 ], + "title": "interval", "type": "number" }, "maxInterval": { @@ -814,6 +922,7 @@ "examples": [ 30 ], + "title": "maxInterval", "type": "number" }, "maxPollRetries": { @@ -822,6 +931,7 @@ "examples": [ 5 ], + "title": "maxPollRetries", "type": "number" }, "maxRequestRetries": { @@ -830,10 +940,12 @@ "examples": [ 1 ], + "title": "maxRequestRetries", "type": "number" }, "options": { - "$ref": "#/definitions/Record" + "$ref": "#/definitions/Record", + "title": "options" }, "retryMultiplier": { "default": 1.5, @@ -841,17 +953,20 @@ "examples": [ 1.5 ], + "title": "retryMultiplier", "type": "number" }, "scrobbleThresholds": { "$ref": "#/definitions/ScrobbleThresholds", - "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled." + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" }, "uriBlacklist": { "description": "Do not scrobble tracks whose URI STARTS WITH any of these strings, case-insensitive\n\nEX: Don't scrobble tracks from soundcloud by adding 'soundcloud' to this list.\n\nList is ignored if uriWhitelist is used.", "items": { "type": "string" }, + "title": "uriBlacklist", "type": "array" }, "uriWhitelist": { @@ -859,6 +974,7 @@ "items": { "type": "string" }, + "title": "uriWhitelist", "type": "array" }, "url": { @@ -867,9 +983,11 @@ "examples": [ "ws://localhost:6680/mopidy/ws/" ], + "title": "url", "type": "string" } }, + "title": "MopidyData", "type": "object" }, "MopidySourceAIOConfig": { @@ -885,19 +1003,23 @@ "items": { "type": "string" }, + "title": "clients", "type": "array" }, "data": { - "$ref": "#/definitions/MopidyData" + "$ref": "#/definitions/MopidyData", + "title": "data" }, "name": { "description": "Unique identifier for this source.", + "title": "name", "type": "string" }, "type": { "enum": [ "mopidy" ], + "title": "type", "type": "string" } }, @@ -905,6 +1027,7 @@ "data", "type" ], + "title": "MopidySourceAIOConfig", "type": "object" }, "PlexSourceAIOConfig": { @@ -920,19 +1043,23 @@ "items": { "type": "string" }, + "title": "clients", "type": "array" }, "data": { - "$ref": "#/definitions/PlexSourceData" + "$ref": "#/definitions/PlexSourceData", + "title": "data" }, "name": { "description": "Unique identifier for this source.", + "title": "name", "type": "string" }, "type": { "enum": [ "plex" ], + "title": "type", "type": "string" } }, @@ -940,6 +1067,7 @@ "data", "type" ], + "title": "PlexSourceAIOConfig", "type": "object" }, "PlexSourceData": { @@ -962,7 +1090,8 @@ "Audio", "Music" ] - ] + ], + "title": "libraries" }, "maxPollRetries": { "default": 5, @@ -970,6 +1099,7 @@ "examples": [ 5 ], + "title": "maxPollRetries", "type": "number" }, "maxRequestRetries": { @@ -978,6 +1108,7 @@ "examples": [ 1 ], + "title": "maxRequestRetries", "type": "number" }, "options": { @@ -993,9 +1124,11 @@ ], "examples": [ "warn" - ] + ], + "title": "logFilterFailure" } }, + "title": "options", "type": "object" }, "retryMultiplier": { @@ -1004,11 +1137,13 @@ "examples": [ 1.5 ], + "title": "retryMultiplier", "type": "number" }, "scrobbleThresholds": { "$ref": "#/definitions/ScrobbleThresholds", - "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled." + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" }, "servers": { "anyOf": [ @@ -1027,7 +1162,8 @@ [ "MyServerName" ] - ] + ], + "title": "servers" }, "user": { "anyOf": [ @@ -1047,12 +1183,15 @@ "MyUser1", "MyUser2" ] - ] + ], + "title": "user" } }, + "title": "PlexSourceData", "type": "object" }, "Record": { + "title": "Record", "type": "object" }, "ScrobbleThresholds": { @@ -1063,13 +1202,16 @@ "examples": [ 30 ], + "title": "duration", "type": "number" }, "percent": { "description": "The percentage of a track that should have been seen played before it should be scrobbled. Only used if the Source provides information about how long the track is.\n\nNOTE: This should be used with care when the Source is a \"polling\" type (has an 'interval' property). If the track is short and the interval is too high MS may ignore the track if percentage is high because it had not \"seen\" the track for long enough from first discovery, even if you have been playing the track for longer.", + "title": "percent", "type": "number" } }, + "title": "ScrobbleThresholds", "type": "object" }, "SourceAIOConfig": { @@ -1113,7 +1255,8 @@ { "$ref": "#/definitions/KodiSourceAIOConfig" } - ] + ], + "title": "SourceAIOConfig" }, "SourceRetryOptions": { "properties": { @@ -1123,6 +1266,7 @@ "examples": [ 5 ], + "title": "maxPollRetries", "type": "number" }, "maxRequestRetries": { @@ -1131,6 +1275,7 @@ "examples": [ 1 ], + "title": "maxRequestRetries", "type": "number" }, "retryMultiplier": { @@ -1139,9 +1284,11 @@ "examples": [ 1.5 ], + "title": "retryMultiplier", "type": "number" } }, + "title": "SourceRetryOptions", "type": "object" }, "SpotifySourceAIOConfig": { @@ -1157,19 +1304,23 @@ "items": { "type": "string" }, + "title": "clients", "type": "array" }, "data": { - "$ref": "#/definitions/SpotifySourceData" + "$ref": "#/definitions/SpotifySourceData", + "title": "data" }, "name": { "description": "Unique identifier for this source.", + "title": "name", "type": "string" }, "type": { "enum": [ "spotify" ], + "title": "type", "type": "string" } }, @@ -1177,6 +1328,7 @@ "data", "type" ], + "title": "SpotifySourceAIOConfig", "type": "object" }, "SpotifySourceData": { @@ -1186,6 +1338,7 @@ "examples": [ "787c921a2a2ab42320831aba0c8f2fc2" ], + "title": "clientId", "type": "string" }, "clientSecret": { @@ -1193,6 +1346,7 @@ "examples": [ "ec42e09d5ae0ee0f0816ca151008412a" ], + "title": "clientSecret", "type": "string" }, "interval": { @@ -1201,6 +1355,7 @@ "examples": [ 30 ], + "title": "interval", "type": "number" }, "maxInterval": { @@ -1209,6 +1364,7 @@ "examples": [ 60 ], + "title": "maxInterval", "type": "number" }, "maxPollRetries": { @@ -1217,6 +1373,7 @@ "examples": [ 5 ], + "title": "maxPollRetries", "type": "number" }, "maxRequestRetries": { @@ -1225,10 +1382,12 @@ "examples": [ 1 ], + "title": "maxRequestRetries", "type": "number" }, "options": { - "$ref": "#/definitions/Record" + "$ref": "#/definitions/Record", + "title": "options" }, "redirectUri": { "default": "http://localhost:9078/callback", @@ -1236,6 +1395,7 @@ "examples": [ "http://localhost:9078/callback" ], + "title": "redirectUri", "type": "string" }, "retryMultiplier": { @@ -1244,11 +1404,13 @@ "examples": [ 1.5 ], + "title": "retryMultiplier", "type": "number" }, "scrobbleThresholds": { "$ref": "#/definitions/ScrobbleThresholds", - "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled." + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" } }, "required": [ @@ -1256,6 +1418,7 @@ "clientSecret", "redirectUri" ], + "title": "SpotifySourceData", "type": "object" }, "SubsonicData": { @@ -1266,6 +1429,7 @@ "examples": [ 10 ], + "title": "interval", "type": "number" }, "maxInterval": { @@ -1274,6 +1438,7 @@ "examples": [ 30 ], + "title": "maxInterval", "type": "number" }, "maxPollRetries": { @@ -1282,6 +1447,7 @@ "examples": [ 5 ], + "title": "maxPollRetries", "type": "number" }, "maxRequestRetries": { @@ -1290,16 +1456,19 @@ "examples": [ 1 ], + "title": "maxRequestRetries", "type": "number" }, "options": { - "$ref": "#/definitions/Record" + "$ref": "#/definitions/Record", + "title": "options" }, "password": { "description": "Password for the user to login to the server with", "examples": [ "MyPassword" ], + "title": "password", "type": "string" }, "retryMultiplier": { @@ -1308,21 +1477,25 @@ "examples": [ 1.5 ], + "title": "retryMultiplier", "type": "number" }, "scrobbleThresholds": { "$ref": "#/definitions/ScrobbleThresholds", - "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled." + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" }, "url": { "description": "URL of the subsonic media server to query", "examples": [ "http://airsonic.local" ], + "title": "url", "type": "string" }, "user": { "description": "Username to login to the server with", + "title": "user", "type": "string" } }, @@ -1331,6 +1504,7 @@ "url", "user" ], + "title": "SubsonicData", "type": "object" }, "SubsonicSourceAIOConfig": { @@ -1346,19 +1520,23 @@ "items": { "type": "string" }, + "title": "clients", "type": "array" }, "data": { - "$ref": "#/definitions/SubsonicData" + "$ref": "#/definitions/SubsonicData", + "title": "data" }, "name": { "description": "Unique identifier for this source.", + "title": "name", "type": "string" }, "type": { "enum": [ "subsonic" ], + "title": "type", "type": "string" } }, @@ -1366,6 +1544,7 @@ "data", "type" ], + "title": "SubsonicSourceAIOConfig", "type": "object" }, "TautulliSourceAIOConfig": { @@ -1381,19 +1560,23 @@ "items": { "type": "string" }, + "title": "clients", "type": "array" }, "data": { - "$ref": "#/definitions/PlexSourceData" + "$ref": "#/definitions/PlexSourceData", + "title": "data" }, "name": { "description": "Unique identifier for this source.", + "title": "name", "type": "string" }, "type": { "enum": [ "tautulli" ], + "title": "type", "type": "string" } }, @@ -1401,12 +1584,14 @@ "data", "type" ], + "title": "TautulliSourceAIOConfig", "type": "object" }, "YTMusicData": { "properties": { "authUser": { "description": "If the 'X-Goog-AuthUser' header is present in the Request Headers for music.youtube.com it must also be included", + "title": "authUser", "type": "number" }, "cookie": { @@ -1414,6 +1599,7 @@ "examples": [ "VISITOR_INFO1_LIVE=jMp2xA1Xz2_PbVc; __Secure-3PAPISID=3AxsXpy0M/AkISpjek; ..." ], + "title": "cookie", "type": "string" }, "interval": { @@ -1422,6 +1608,7 @@ "examples": [ 30 ], + "title": "interval", "type": "number" }, "maxInterval": { @@ -1430,6 +1617,7 @@ "examples": [ 60 ], + "title": "maxInterval", "type": "number" }, "maxPollRetries": { @@ -1438,6 +1626,7 @@ "examples": [ 5 ], + "title": "maxPollRetries", "type": "number" }, "maxRequestRetries": { @@ -1446,10 +1635,12 @@ "examples": [ 1 ], + "title": "maxRequestRetries", "type": "number" }, "options": { - "$ref": "#/definitions/Record" + "$ref": "#/definitions/Record", + "title": "options" }, "retryMultiplier": { "default": 1.5, @@ -1457,16 +1648,19 @@ "examples": [ 1.5 ], + "title": "retryMultiplier", "type": "number" }, "scrobbleThresholds": { "$ref": "#/definitions/ScrobbleThresholds", - "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled." + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" } }, "required": [ "cookie" ], + "title": "YTMusicData", "type": "object" }, "YTMusicSourceAIOConfig": { @@ -1482,19 +1676,23 @@ "items": { "type": "string" }, + "title": "clients", "type": "array" }, "data": { - "$ref": "#/definitions/YTMusicData" + "$ref": "#/definitions/YTMusicData", + "title": "data" }, "name": { "description": "Unique identifier for this source.", + "title": "name", "type": "string" }, "type": { "enum": [ "ytmusic" ], + "title": "type", "type": "string" } }, @@ -1502,17 +1700,20 @@ "data", "type" ], + "title": "YTMusicSourceAIOConfig", "type": "object" } }, "properties": { "sourceDefaults": { - "$ref": "#/definitions/SourceRetryOptions" + "$ref": "#/definitions/SourceRetryOptions", + "title": "sourceDefaults" }, "sources": { "items": { "$ref": "#/definitions/SourceAIOConfig" }, + "title": "sources", "type": "array" } }, diff --git a/src/common/schema/aio.json b/src/common/schema/aio.json index 7abda462..e20f612c 100644 --- a/src/common/schema/aio.json +++ b/src/common/schema/aio.json @@ -12,7 +12,8 @@ { "$ref": "#/definitions/MalojaClientAIOConfig" } - ] + ], + "title": "ClientAIOConfig" }, "CommonClientData": { "properties": { @@ -22,6 +23,7 @@ "examples": [ 1 ], + "title": "maxRequestRetries", "type": "number" }, "options": { @@ -32,6 +34,7 @@ "examples": [ true ], + "title": "checkExistingScrobbles", "type": "boolean" }, "refreshEnabled": { @@ -40,18 +43,22 @@ "examples": [ true ], + "title": "refreshEnabled", "type": "boolean" }, "verbose": { "description": "Options used for increasing verbosity of logging in MS (used for debugging)", "properties": { "match": { - "$ref": "#/definitions/MatchLoggingOptions" + "$ref": "#/definitions/MatchLoggingOptions", + "title": "match" } }, + "title": "verbose", "type": "object" } }, + "title": "options", "type": "object" }, "retryMultiplier": { @@ -60,9 +67,11 @@ "examples": [ 1.5 ], + "title": "retryMultiplier", "type": "number" } }, + "title": "CommonClientData", "type": "object" }, "DeezerData": { @@ -72,6 +81,7 @@ "examples": [ "a89cba1569901a0671d5a9875fed4be1" ], + "title": "clientId", "type": "string" }, "clientSecret": { @@ -79,6 +89,7 @@ "examples": [ "ec42e09d5ae0ee0f0816ca151008412a" ], + "title": "clientSecret", "type": "string" }, "interval": { @@ -87,6 +98,7 @@ "examples": [ 60 ], + "title": "interval", "type": "number" }, "maxPollRetries": { @@ -95,6 +107,7 @@ "examples": [ 5 ], + "title": "maxPollRetries", "type": "number" }, "maxRequestRetries": { @@ -103,10 +116,12 @@ "examples": [ 1 ], + "title": "maxRequestRetries", "type": "number" }, "options": { - "$ref": "#/definitions/Record" + "$ref": "#/definitions/Record", + "title": "options" }, "redirectUri": { "default": "http://localhost:9078/deezer/callback", @@ -114,6 +129,7 @@ "examples": [ "http://localhost:9078/deezer/callback" ], + "title": "redirectUri", "type": "string" }, "retryMultiplier": { @@ -122,11 +138,13 @@ "examples": [ 1.5 ], + "title": "retryMultiplier", "type": "number" }, "scrobbleThresholds": { "$ref": "#/definitions/ScrobbleThresholds", - "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled." + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" } }, "required": [ @@ -134,6 +152,7 @@ "clientSecret", "redirectUri" ], + "title": "DeezerData", "type": "object" }, "DeezerSourceAIOConfig": { @@ -149,19 +168,23 @@ "items": { "type": "string" }, + "title": "clients", "type": "array" }, "data": { - "$ref": "#/definitions/DeezerData" + "$ref": "#/definitions/DeezerData", + "title": "data" }, "name": { "description": "Unique identifier for this source.", + "title": "name", "type": "string" }, "type": { "enum": [ "deezer" ], + "title": "type", "type": "string" } }, @@ -169,23 +192,27 @@ "data", "type" ], + "title": "DeezerSourceAIOConfig", "type": "object" }, "GotifyConfig": { "properties": { "name": { "description": "A friendly name used to identify webhook config in logs", + "title": "name", "type": "string" }, "priorities": { "$ref": "#/definitions/PrioritiesConfig", - "description": "Priority of messages\n\n* Info -> 5\n* Warn -> 7\n* Error -> 10" + "description": "Priority of messages\n\n* Info -> 5\n* Warn -> 7\n* Error -> 10", + "title": "priorities" }, "token": { "description": "The token created for this Application in Gotify", "examples": [ "AQZI58fA.rfSZbm" ], + "title": "token", "type": "string" }, "type": { @@ -197,6 +224,7 @@ "examples": [ "gotify" ], + "title": "type", "type": "string" }, "url": { @@ -204,6 +232,7 @@ "examples": [ "http://192.168.0.100:8078" ], + "title": "url", "type": "string" } }, @@ -212,6 +241,7 @@ "type", "url" ], + "title": "GotifyConfig", "type": "object" }, "JRiverData": { @@ -222,6 +252,7 @@ "examples": [ 30 ], + "title": "interval", "type": "number" }, "maxInterval": { @@ -230,6 +261,7 @@ "examples": [ 60 ], + "title": "maxInterval", "type": "number" }, "maxPollRetries": { @@ -238,6 +270,7 @@ "examples": [ 5 ], + "title": "maxPollRetries", "type": "number" }, "maxRequestRetries": { @@ -246,13 +279,16 @@ "examples": [ 1 ], + "title": "maxRequestRetries", "type": "number" }, "options": { - "$ref": "#/definitions/Record" + "$ref": "#/definitions/Record", + "title": "options" }, "password": { "description": "If you have enabled authentication, the password you set", + "title": "password", "type": "string" }, "retryMultiplier": { @@ -261,11 +297,13 @@ "examples": [ 1.5 ], + "title": "retryMultiplier", "type": "number" }, "scrobbleThresholds": { "$ref": "#/definitions/ScrobbleThresholds", - "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled." + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" }, "url": { "default": "http://localhost:52199/MCWS/v1/", @@ -273,16 +311,19 @@ "examples": [ "http://localhost:52199/MCWS/v1/" ], + "title": "url", "type": "string" }, "username": { "description": "If you have enabled authentication, the username you set", + "title": "username", "type": "string" } }, "required": [ "url" ], + "title": "JRiverData", "type": "object" }, "JRiverSourceAIOConfig": { @@ -298,19 +339,23 @@ "items": { "type": "string" }, + "title": "clients", "type": "array" }, "data": { - "$ref": "#/definitions/JRiverData" + "$ref": "#/definitions/JRiverData", + "title": "data" }, "name": { "description": "Unique identifier for this source.", + "title": "name", "type": "string" }, "type": { "enum": [ "jriver" ], + "title": "type", "type": "string" } }, @@ -318,6 +363,7 @@ "data", "type" ], + "title": "JRiverSourceAIOConfig", "type": "object" }, "JellyData": { @@ -328,6 +374,7 @@ "examples": [ 5 ], + "title": "maxPollRetries", "type": "number" }, "maxRequestRetries": { @@ -336,6 +383,7 @@ "examples": [ 1 ], + "title": "maxRequestRetries", "type": "number" }, "options": { @@ -351,7 +399,8 @@ ], "examples": [ "warn" - ] + ], + "title": "logFilterFailure" }, "logPayload": { "default": false, @@ -359,9 +408,11 @@ "examples": [ false ], + "title": "logPayload", "type": "boolean" } }, + "title": "options", "type": "object" }, "retryMultiplier": { @@ -370,11 +421,13 @@ "examples": [ 1.5 ], + "title": "retryMultiplier", "type": "number" }, "scrobbleThresholds": { "$ref": "#/definitions/ScrobbleThresholds", - "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled." + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" }, "servers": { "anyOf": [ @@ -393,7 +446,8 @@ [ "MyServerName1" ] - ] + ], + "title": "servers" }, "users": { "anyOf": [ @@ -413,9 +467,11 @@ "MyUser1", "MyUser2" ] - ] + ], + "title": "users" } }, + "title": "JellyData", "type": "object" }, "JellySourceAIOConfig": { @@ -431,19 +487,23 @@ "items": { "type": "string" }, + "title": "clients", "type": "array" }, "data": { - "$ref": "#/definitions/JellyData" + "$ref": "#/definitions/JellyData", + "title": "data" }, "name": { "description": "Unique identifier for this source.", + "title": "name", "type": "string" }, "type": { "enum": [ "jellyfin" ], + "title": "type", "type": "string" } }, @@ -451,6 +511,7 @@ "data", "type" ], + "title": "JellySourceAIOConfig", "type": "object" }, "KodiData": { @@ -461,6 +522,7 @@ "examples": [ 30 ], + "title": "interval", "type": "number" }, "maxInterval": { @@ -469,6 +531,7 @@ "examples": [ 60 ], + "title": "maxInterval", "type": "number" }, "maxPollRetries": { @@ -477,6 +540,7 @@ "examples": [ 5 ], + "title": "maxPollRetries", "type": "number" }, "maxRequestRetries": { @@ -485,13 +549,16 @@ "examples": [ 1 ], + "title": "maxRequestRetries", "type": "number" }, "options": { - "$ref": "#/definitions/Record" + "$ref": "#/definitions/Record", + "title": "options" }, "password": { "description": "The password set for Remote Control via Web Sever", + "title": "password", "type": "string" }, "retryMultiplier": { @@ -500,11 +567,13 @@ "examples": [ 1.5 ], + "title": "retryMultiplier", "type": "number" }, "scrobbleThresholds": { "$ref": "#/definitions/ScrobbleThresholds", - "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled." + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" }, "url": { "default": "http://localhost:8080/jsonrpc", @@ -512,10 +581,12 @@ "examples": [ "http://localhost:8080/jsonrpc" ], + "title": "url", "type": "string" }, "username": { "description": "The username set for Remote Control via Web Sever", + "title": "username", "type": "string" } }, @@ -524,6 +595,7 @@ "url", "username" ], + "title": "KodiData", "type": "object" }, "KodiSourceAIOConfig": { @@ -539,19 +611,23 @@ "items": { "type": "string" }, + "title": "clients", "type": "array" }, "data": { - "$ref": "#/definitions/KodiData" + "$ref": "#/definitions/KodiData", + "title": "data" }, "name": { "description": "Unique identifier for this source.", + "title": "name", "type": "string" }, "type": { "enum": [ "kodi" ], + "title": "type", "type": "string" } }, @@ -559,6 +635,7 @@ "data", "type" ], + "title": "KodiSourceAIOConfig", "type": "object" }, "LastFmSouceAIOConfig": { @@ -574,6 +651,7 @@ "items": { "type": "string" }, + "title": "clients", "type": "array" }, "configureAs": { @@ -585,19 +663,23 @@ "examples": [ "source" ], + "title": "configureAs", "type": "string" }, "data": { - "$ref": "#/definitions/LastFmSourceData" + "$ref": "#/definitions/LastFmSourceData", + "title": "data" }, "name": { "description": "Unique identifier for this source.", + "title": "name", "type": "string" }, "type": { "enum": [ "lastfm" ], + "title": "type", "type": "string" } }, @@ -605,6 +687,7 @@ "data", "type" ], + "title": "LastFmSouceAIOConfig", "type": "object" }, "LastFmSourceData": { @@ -614,6 +697,7 @@ "examples": [ "787c921a2a2ab42320831aba0c8f2fc2" ], + "title": "apiKey", "type": "string" }, "maxPollRetries": { @@ -622,6 +706,7 @@ "examples": [ 5 ], + "title": "maxPollRetries", "type": "number" }, "maxRequestRetries": { @@ -630,10 +715,12 @@ "examples": [ 1 ], + "title": "maxRequestRetries", "type": "number" }, "options": { - "$ref": "#/definitions/Record" + "$ref": "#/definitions/Record", + "title": "options" }, "redirectUri": { "default": "http://localhost:9078/lastfm/callback", @@ -641,6 +728,7 @@ "examples": [ "http://localhost:9078/lastfm/callback" ], + "title": "redirectUri", "type": "string" }, "retryMultiplier": { @@ -649,21 +737,25 @@ "examples": [ 1.5 ], + "title": "retryMultiplier", "type": "number" }, "scrobbleThresholds": { "$ref": "#/definitions/ScrobbleThresholds", - "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled." + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" }, "secret": { "description": "Secret generated from Last.fm account", "examples": [ "ec42e09d5ae0ee0f0816ca151008412a" ], + "title": "secret", "type": "string" }, "session": { "description": "Optional session id returned from a completed auth flow", + "title": "session", "type": "string" } }, @@ -671,6 +763,7 @@ "apiKey", "secret" ], + "title": "LastFmSourceData", "type": "object" }, "LastfmClientAIOConfig": { @@ -685,6 +778,7 @@ "examples": [ "client" ], + "title": "configureAs", "type": "string" }, "data": { @@ -696,19 +790,22 @@ "$ref": "#/definitions/LastfmData" } ], - "description": "Specific data required to configure this client" + "description": "Specific data required to configure this client", + "title": "data" }, "name": { "description": "Unique identifier for this client. Used with sources to restrict where scrobbles are sent.", "examples": [ "MyConfig" ], + "title": "name", "type": "string" }, "type": { "enum": [ "lastfm" ], + "title": "type", "type": "string" } }, @@ -717,6 +814,7 @@ "name", "type" ], + "title": "LastfmClientAIOConfig", "type": "object" }, "LastfmData": { @@ -726,6 +824,7 @@ "examples": [ "787c921a2a2ab42320831aba0c8f2fc2" ], + "title": "apiKey", "type": "string" }, "maxRequestRetries": { @@ -734,6 +833,7 @@ "examples": [ 1 ], + "title": "maxRequestRetries", "type": "number" }, "redirectUri": { @@ -742,6 +842,7 @@ "examples": [ "http://localhost:9078/lastfm/callback" ], + "title": "redirectUri", "type": "string" }, "retryMultiplier": { @@ -750,6 +851,7 @@ "examples": [ 1.5 ], + "title": "retryMultiplier", "type": "number" }, "secret": { @@ -757,10 +859,12 @@ "examples": [ "ec42e09d5ae0ee0f0816ca151008412a" ], + "title": "secret", "type": "string" }, "session": { "description": "Optional session id returned from a completed auth flow", + "title": "session", "type": "string" } }, @@ -768,6 +872,7 @@ "apiKey", "secret" ], + "title": "LastfmData", "type": "object" }, "ListenBrainzClientAIOConfig": { @@ -782,23 +887,27 @@ "examples": [ "client" ], + "title": "configureAs", "type": "string" }, "data": { "$ref": "#/definitions/ListenBrainzClientData", - "description": "Specific data required to configure this client" + "description": "Specific data required to configure this client", + "title": "data" }, "name": { "description": "Unique identifier for this client. Used with sources to restrict where scrobbles are sent.", "examples": [ "MyConfig" ], + "title": "name", "type": "string" }, "type": { "enum": [ "listenbrainz" ], + "title": "type", "type": "string" } }, @@ -807,6 +916,7 @@ "name", "type" ], + "title": "ListenBrainzClientAIOConfig", "type": "object" }, "ListenBrainzClientData": { @@ -817,6 +927,7 @@ "examples": [ 1 ], + "title": "maxRequestRetries", "type": "number" }, "options": { @@ -827,6 +938,7 @@ "examples": [ true ], + "title": "checkExistingScrobbles", "type": "boolean" }, "refreshEnabled": { @@ -835,18 +947,22 @@ "examples": [ true ], + "title": "refreshEnabled", "type": "boolean" }, "verbose": { "description": "Options used for increasing verbosity of logging in MS (used for debugging)", "properties": { "match": { - "$ref": "#/definitions/MatchLoggingOptions" + "$ref": "#/definitions/MatchLoggingOptions", + "title": "match" } }, + "title": "verbose", "type": "object" } }, + "title": "options", "type": "object" }, "retryMultiplier": { @@ -855,6 +971,7 @@ "examples": [ 1.5 ], + "title": "retryMultiplier", "type": "number" }, "token": { @@ -862,6 +979,7 @@ "examples": [ "6794186bf-1157-4de6-80e5-uvb411f3ea2b" ], + "title": "token", "type": "string" }, "url": { @@ -870,10 +988,12 @@ "examples": [ "https://api.listenbrainz.org/" ], + "title": "url", "type": "string" }, "username": { "description": "Username of the user to scrobble for", + "title": "username", "type": "string" } }, @@ -881,6 +1001,7 @@ "token", "username" ], + "title": "ListenBrainzClientData", "type": "object" }, "ListenBrainzSourceAIOConfig": { @@ -896,6 +1017,7 @@ "items": { "type": "string" }, + "title": "clients", "type": "array" }, "configureAs": { @@ -907,19 +1029,23 @@ "examples": [ "source" ], + "title": "configureAs", "type": "string" }, "data": { - "$ref": "#/definitions/ListenBrainzSourceData" + "$ref": "#/definitions/ListenBrainzSourceData", + "title": "data" }, "name": { "description": "Unique identifier for this source.", + "title": "name", "type": "string" }, "type": { "enum": [ "listenbrainz" ], + "title": "type", "type": "string" } }, @@ -927,6 +1053,7 @@ "data", "type" ], + "title": "ListenBrainzSourceAIOConfig", "type": "object" }, "ListenBrainzSourceData": { @@ -937,6 +1064,7 @@ "examples": [ 5 ], + "title": "maxPollRetries", "type": "number" }, "maxRequestRetries": { @@ -945,10 +1073,12 @@ "examples": [ 1 ], + "title": "maxRequestRetries", "type": "number" }, "options": { - "$ref": "#/definitions/Record" + "$ref": "#/definitions/Record", + "title": "options" }, "retryMultiplier": { "default": 1.5, @@ -956,17 +1086,20 @@ "examples": [ 1.5 ], + "title": "retryMultiplier", "type": "number" }, "scrobbleThresholds": { "$ref": "#/definitions/ScrobbleThresholds", - "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled." + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" }, "token": { "description": "User token for the user to scrobble for", "examples": [ "6794186bf-1157-4de6-80e5-uvb411f3ea2b" ], + "title": "token", "type": "string" }, "url": { @@ -975,10 +1108,12 @@ "examples": [ "https://api.listenbrainz.org/" ], + "title": "url", "type": "string" }, "username": { "description": "Username of the user to scrobble for", + "title": "username", "type": "string" } }, @@ -986,6 +1121,7 @@ "token", "username" ], + "title": "ListenBrainzSourceData", "type": "object" }, "LogLevel": { @@ -996,13 +1132,15 @@ "verbose", "warn" ], + "title": "LogLevel", "type": "string" }, "LogOptions": { "properties": { "console": { "$ref": "#/definitions/LogLevel", - "description": "Specify the minimum log level streamed to the console (or docker container)" + "description": "Specify the minimum log level streamed to the console (or docker container)", + "title": "console" }, "file": { "description": "Specify the minimum log level to output to rotating files. If `false` no log files will be created.", @@ -1013,18 +1151,22 @@ "info", "verbose", "warn" - ] + ], + "title": "file" }, "level": { "$ref": "#/definitions/LogLevel", "default": "'info'", - "description": "Specify the minimum log level for all log outputs without their own level specified.\n\nDefaults to env `LOG_LEVEL` or `info` if not specified." + "description": "Specify the minimum log level for all log outputs without their own level specified.\n\nDefaults to env `LOG_LEVEL` or `info` if not specified.", + "title": "level" }, "stream": { "$ref": "#/definitions/LogLevel", - "description": "Specify the minimum log level streamed to the UI" + "description": "Specify the minimum log level streamed to the UI", + "title": "stream" } }, + "title": "LogOptions", "type": "object" }, "MPRISData": { @@ -1047,7 +1189,8 @@ "spotify", "vlc" ] - ] + ], + "title": "blacklist" }, "maxPollRetries": { "default": 5, @@ -1055,6 +1198,7 @@ "examples": [ 5 ], + "title": "maxPollRetries", "type": "number" }, "maxRequestRetries": { @@ -1063,10 +1207,12 @@ "examples": [ 1 ], + "title": "maxRequestRetries", "type": "number" }, "options": { - "$ref": "#/definitions/Record" + "$ref": "#/definitions/Record", + "title": "options" }, "retryMultiplier": { "default": 1.5, @@ -1074,11 +1220,13 @@ "examples": [ 1.5 ], + "title": "retryMultiplier", "type": "number" }, "scrobbleThresholds": { "$ref": "#/definitions/ScrobbleThresholds", - "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled." + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" }, "whitelist": { "anyOf": [ @@ -1098,9 +1246,11 @@ "spotify", "vlc" ] - ] + ], + "title": "whitelist" } }, + "title": "MPRISData", "type": "object" }, "MPRISSourceAIOConfig": { @@ -1116,19 +1266,23 @@ "items": { "type": "string" }, + "title": "clients", "type": "array" }, "data": { - "$ref": "#/definitions/MPRISData" + "$ref": "#/definitions/MPRISData", + "title": "data" }, "name": { "description": "Unique identifier for this source.", + "title": "name", "type": "string" }, "type": { "enum": [ "mpris" ], + "title": "type", "type": "string" } }, @@ -1136,25 +1290,29 @@ "data", "type" ], + "title": "MPRISSourceAIOConfig", "type": "object" }, "MalojaClientAIOConfig": { "properties": { "data": { "$ref": "#/definitions/MalojaClientData", - "description": "Specific data required to configure this client" + "description": "Specific data required to configure this client", + "title": "data" }, "name": { "description": "Unique identifier for this client. Used with sources to restrict where scrobbles are sent.", "examples": [ "MyConfig" ], + "title": "name", "type": "string" }, "type": { "enum": [ "maloja" ], + "title": "type", "type": "string" } }, @@ -1163,6 +1321,7 @@ "name", "type" ], + "title": "MalojaClientAIOConfig", "type": "object" }, "MalojaClientData": { @@ -1172,6 +1331,7 @@ "examples": [ "myApiKey" ], + "title": "apiKey", "type": "string" }, "maxRequestRetries": { @@ -1180,6 +1340,7 @@ "examples": [ 1 ], + "title": "maxRequestRetries", "type": "number" }, "options": { @@ -1190,6 +1351,7 @@ "examples": [ true ], + "title": "checkExistingScrobbles", "type": "boolean" }, "refreshEnabled": { @@ -1198,18 +1360,22 @@ "examples": [ true ], + "title": "refreshEnabled", "type": "boolean" }, "verbose": { "description": "Options used for increasing verbosity of logging in MS (used for debugging)", "properties": { "match": { - "$ref": "#/definitions/MatchLoggingOptions" + "$ref": "#/definitions/MatchLoggingOptions", + "title": "match" } }, + "title": "verbose", "type": "object" } }, + "title": "options", "type": "object" }, "retryMultiplier": { @@ -1218,6 +1384,7 @@ "examples": [ 1.5 ], + "title": "retryMultiplier", "type": "number" }, "url": { @@ -1225,6 +1392,7 @@ "examples": [ "http://localhost:42010" ], + "title": "url", "type": "string" } }, @@ -1232,6 +1400,7 @@ "apiKey", "url" ], + "title": "MalojaClientData", "type": "object" }, "MatchLoggingOptions": { @@ -1243,6 +1412,7 @@ "examples": [ false ], + "title": "confidenceBreakdown", "type": "boolean" }, "onMatch": { @@ -1251,6 +1421,7 @@ "examples": [ false ], + "title": "onMatch", "type": "boolean" }, "onNoMatch": { @@ -1259,9 +1430,11 @@ "examples": [ false ], + "title": "onNoMatch", "type": "boolean" } }, + "title": "MatchLoggingOptions", "type": "object" }, "MopidyData": { @@ -1280,6 +1453,7 @@ "items": { "type": "string" }, + "title": "albumBlacklist", "type": "array" }, "interval": { @@ -1288,6 +1462,7 @@ "examples": [ 10 ], + "title": "interval", "type": "number" }, "maxInterval": { @@ -1296,6 +1471,7 @@ "examples": [ 30 ], + "title": "maxInterval", "type": "number" }, "maxPollRetries": { @@ -1304,6 +1480,7 @@ "examples": [ 5 ], + "title": "maxPollRetries", "type": "number" }, "maxRequestRetries": { @@ -1312,10 +1489,12 @@ "examples": [ 1 ], + "title": "maxRequestRetries", "type": "number" }, "options": { - "$ref": "#/definitions/Record" + "$ref": "#/definitions/Record", + "title": "options" }, "retryMultiplier": { "default": 1.5, @@ -1323,17 +1502,20 @@ "examples": [ 1.5 ], + "title": "retryMultiplier", "type": "number" }, "scrobbleThresholds": { "$ref": "#/definitions/ScrobbleThresholds", - "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled." + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" }, "uriBlacklist": { "description": "Do not scrobble tracks whose URI STARTS WITH any of these strings, case-insensitive\n\nEX: Don't scrobble tracks from soundcloud by adding 'soundcloud' to this list.\n\nList is ignored if uriWhitelist is used.", "items": { "type": "string" }, + "title": "uriBlacklist", "type": "array" }, "uriWhitelist": { @@ -1341,6 +1523,7 @@ "items": { "type": "string" }, + "title": "uriWhitelist", "type": "array" }, "url": { @@ -1349,9 +1532,11 @@ "examples": [ "ws://localhost:6680/mopidy/ws/" ], + "title": "url", "type": "string" } }, + "title": "MopidyData", "type": "object" }, "MopidySourceAIOConfig": { @@ -1367,19 +1552,23 @@ "items": { "type": "string" }, + "title": "clients", "type": "array" }, "data": { - "$ref": "#/definitions/MopidyData" + "$ref": "#/definitions/MopidyData", + "title": "data" }, "name": { "description": "Unique identifier for this source.", + "title": "name", "type": "string" }, "type": { "enum": [ "mopidy" ], + "title": "type", "type": "string" } }, @@ -1387,24 +1576,29 @@ "data", "type" ], + "title": "MopidySourceAIOConfig", "type": "object" }, "NtfyConfig": { "properties": { "name": { "description": "A friendly name used to identify webhook config in logs", + "title": "name", "type": "string" }, "password": { "description": "Required if topic is protected", + "title": "password", "type": "string" }, "priorities": { "$ref": "#/definitions/PrioritiesConfig", - "description": "Priority of messages\n\n* Info -> 3\n* Warn -> 4\n* Error -> 5" + "description": "Priority of messages\n\n* Info -> 3\n* Warn -> 4\n* Error -> 5", + "title": "priorities" }, "topic": { "description": "The topic mutli-scrobbler should POST to", + "title": "topic", "type": "string" }, "type": { @@ -1416,6 +1610,7 @@ "examples": [ "gotify" ], + "title": "type", "type": "string" }, "url": { @@ -1423,10 +1618,12 @@ "examples": [ "http://192.168.0.100:8078" ], + "title": "url", "type": "string" }, "username": { "description": "Required if topic is protected", + "title": "username", "type": "string" } }, @@ -1435,6 +1632,7 @@ "type", "url" ], + "title": "NtfyConfig", "type": "object" }, "PlexSourceAIOConfig": { @@ -1450,19 +1648,23 @@ "items": { "type": "string" }, + "title": "clients", "type": "array" }, "data": { - "$ref": "#/definitions/PlexSourceData" + "$ref": "#/definitions/PlexSourceData", + "title": "data" }, "name": { "description": "Unique identifier for this source.", + "title": "name", "type": "string" }, "type": { "enum": [ "plex" ], + "title": "type", "type": "string" } }, @@ -1470,6 +1672,7 @@ "data", "type" ], + "title": "PlexSourceAIOConfig", "type": "object" }, "PlexSourceData": { @@ -1492,7 +1695,8 @@ "Audio", "Music" ] - ] + ], + "title": "libraries" }, "maxPollRetries": { "default": 5, @@ -1500,6 +1704,7 @@ "examples": [ 5 ], + "title": "maxPollRetries", "type": "number" }, "maxRequestRetries": { @@ -1508,6 +1713,7 @@ "examples": [ 1 ], + "title": "maxRequestRetries", "type": "number" }, "options": { @@ -1523,9 +1729,11 @@ ], "examples": [ "warn" - ] + ], + "title": "logFilterFailure" } }, + "title": "options", "type": "object" }, "retryMultiplier": { @@ -1534,11 +1742,13 @@ "examples": [ 1.5 ], + "title": "retryMultiplier", "type": "number" }, "scrobbleThresholds": { "$ref": "#/definitions/ScrobbleThresholds", - "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled." + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" }, "servers": { "anyOf": [ @@ -1557,7 +1767,8 @@ [ "MyServerName" ] - ] + ], + "title": "servers" }, "user": { "anyOf": [ @@ -1577,9 +1788,11 @@ "MyUser1", "MyUser2" ] - ] + ], + "title": "user" } }, + "title": "PlexSourceData", "type": "object" }, "PrioritiesConfig": { @@ -1588,18 +1801,21 @@ "examples": [ 10 ], + "title": "error", "type": "number" }, "info": { "examples": [ 5 ], + "title": "info", "type": "number" }, "warn": { "examples": [ 7 ], + "title": "warn", "type": "number" } }, @@ -1608,9 +1824,11 @@ "info", "warn" ], + "title": "PrioritiesConfig", "type": "object" }, "Record": { + "title": "Record", "type": "object" }, "RequestRetryOptions": { @@ -1621,6 +1839,7 @@ "examples": [ 1 ], + "title": "maxRequestRetries", "type": "number" }, "retryMultiplier": { @@ -1629,9 +1848,11 @@ "examples": [ 1.5 ], + "title": "retryMultiplier", "type": "number" } }, + "title": "RequestRetryOptions", "type": "object" }, "ScrobbleThresholds": { @@ -1642,13 +1863,16 @@ "examples": [ 30 ], + "title": "duration", "type": "number" }, "percent": { "description": "The percentage of a track that should have been seen played before it should be scrobbled. Only used if the Source provides information about how long the track is.\n\nNOTE: This should be used with care when the Source is a \"polling\" type (has an 'interval' property). If the track is short and the interval is too high MS may ignore the track if percentage is high because it had not \"seen\" the track for long enough from first discovery, even if you have been playing the track for longer.", + "title": "percent", "type": "number" } }, + "title": "ScrobbleThresholds", "type": "object" }, "SourceAIOConfig": { @@ -1692,7 +1916,8 @@ { "$ref": "#/definitions/KodiSourceAIOConfig" } - ] + ], + "title": "SourceAIOConfig" }, "SourceRetryOptions": { "properties": { @@ -1702,6 +1927,7 @@ "examples": [ 5 ], + "title": "maxPollRetries", "type": "number" }, "maxRequestRetries": { @@ -1710,6 +1936,7 @@ "examples": [ 1 ], + "title": "maxRequestRetries", "type": "number" }, "retryMultiplier": { @@ -1718,9 +1945,11 @@ "examples": [ 1.5 ], + "title": "retryMultiplier", "type": "number" } }, + "title": "SourceRetryOptions", "type": "object" }, "SpotifySourceAIOConfig": { @@ -1736,19 +1965,23 @@ "items": { "type": "string" }, + "title": "clients", "type": "array" }, "data": { - "$ref": "#/definitions/SpotifySourceData" + "$ref": "#/definitions/SpotifySourceData", + "title": "data" }, "name": { "description": "Unique identifier for this source.", + "title": "name", "type": "string" }, "type": { "enum": [ "spotify" ], + "title": "type", "type": "string" } }, @@ -1756,6 +1989,7 @@ "data", "type" ], + "title": "SpotifySourceAIOConfig", "type": "object" }, "SpotifySourceData": { @@ -1765,6 +1999,7 @@ "examples": [ "787c921a2a2ab42320831aba0c8f2fc2" ], + "title": "clientId", "type": "string" }, "clientSecret": { @@ -1772,6 +2007,7 @@ "examples": [ "ec42e09d5ae0ee0f0816ca151008412a" ], + "title": "clientSecret", "type": "string" }, "interval": { @@ -1780,6 +2016,7 @@ "examples": [ 30 ], + "title": "interval", "type": "number" }, "maxInterval": { @@ -1788,6 +2025,7 @@ "examples": [ 60 ], + "title": "maxInterval", "type": "number" }, "maxPollRetries": { @@ -1796,6 +2034,7 @@ "examples": [ 5 ], + "title": "maxPollRetries", "type": "number" }, "maxRequestRetries": { @@ -1804,10 +2043,12 @@ "examples": [ 1 ], + "title": "maxRequestRetries", "type": "number" }, "options": { - "$ref": "#/definitions/Record" + "$ref": "#/definitions/Record", + "title": "options" }, "redirectUri": { "default": "http://localhost:9078/callback", @@ -1815,6 +2056,7 @@ "examples": [ "http://localhost:9078/callback" ], + "title": "redirectUri", "type": "string" }, "retryMultiplier": { @@ -1823,11 +2065,13 @@ "examples": [ 1.5 ], + "title": "retryMultiplier", "type": "number" }, "scrobbleThresholds": { "$ref": "#/definitions/ScrobbleThresholds", - "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled." + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" } }, "required": [ @@ -1835,6 +2079,7 @@ "clientSecret", "redirectUri" ], + "title": "SpotifySourceData", "type": "object" }, "SubsonicData": { @@ -1845,6 +2090,7 @@ "examples": [ 10 ], + "title": "interval", "type": "number" }, "maxInterval": { @@ -1853,6 +2099,7 @@ "examples": [ 30 ], + "title": "maxInterval", "type": "number" }, "maxPollRetries": { @@ -1861,6 +2108,7 @@ "examples": [ 5 ], + "title": "maxPollRetries", "type": "number" }, "maxRequestRetries": { @@ -1869,16 +2117,19 @@ "examples": [ 1 ], + "title": "maxRequestRetries", "type": "number" }, "options": { - "$ref": "#/definitions/Record" + "$ref": "#/definitions/Record", + "title": "options" }, "password": { "description": "Password for the user to login to the server with", "examples": [ "MyPassword" ], + "title": "password", "type": "string" }, "retryMultiplier": { @@ -1887,21 +2138,25 @@ "examples": [ 1.5 ], + "title": "retryMultiplier", "type": "number" }, "scrobbleThresholds": { "$ref": "#/definitions/ScrobbleThresholds", - "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled." + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" }, "url": { "description": "URL of the subsonic media server to query", "examples": [ "http://airsonic.local" ], + "title": "url", "type": "string" }, "user": { "description": "Username to login to the server with", + "title": "user", "type": "string" } }, @@ -1910,6 +2165,7 @@ "url", "user" ], + "title": "SubsonicData", "type": "object" }, "SubsonicSourceAIOConfig": { @@ -1925,19 +2181,23 @@ "items": { "type": "string" }, + "title": "clients", "type": "array" }, "data": { - "$ref": "#/definitions/SubsonicData" + "$ref": "#/definitions/SubsonicData", + "title": "data" }, "name": { "description": "Unique identifier for this source.", + "title": "name", "type": "string" }, "type": { "enum": [ "subsonic" ], + "title": "type", "type": "string" } }, @@ -1945,6 +2205,7 @@ "data", "type" ], + "title": "SubsonicSourceAIOConfig", "type": "object" }, "TautulliSourceAIOConfig": { @@ -1960,19 +2221,23 @@ "items": { "type": "string" }, + "title": "clients", "type": "array" }, "data": { - "$ref": "#/definitions/PlexSourceData" + "$ref": "#/definitions/PlexSourceData", + "title": "data" }, "name": { "description": "Unique identifier for this source.", + "title": "name", "type": "string" }, "type": { "enum": [ "tautulli" ], + "title": "type", "type": "string" } }, @@ -1980,6 +2245,7 @@ "data", "type" ], + "title": "TautulliSourceAIOConfig", "type": "object" }, "WebhookConfig": { @@ -1990,12 +2256,14 @@ { "$ref": "#/definitions/NtfyConfig" } - ] + ], + "title": "WebhookConfig" }, "YTMusicData": { "properties": { "authUser": { "description": "If the 'X-Goog-AuthUser' header is present in the Request Headers for music.youtube.com it must also be included", + "title": "authUser", "type": "number" }, "cookie": { @@ -2003,6 +2271,7 @@ "examples": [ "VISITOR_INFO1_LIVE=jMp2xA1Xz2_PbVc; __Secure-3PAPISID=3AxsXpy0M/AkISpjek; ..." ], + "title": "cookie", "type": "string" }, "interval": { @@ -2011,6 +2280,7 @@ "examples": [ 30 ], + "title": "interval", "type": "number" }, "maxInterval": { @@ -2019,6 +2289,7 @@ "examples": [ 60 ], + "title": "maxInterval", "type": "number" }, "maxPollRetries": { @@ -2027,6 +2298,7 @@ "examples": [ 5 ], + "title": "maxPollRetries", "type": "number" }, "maxRequestRetries": { @@ -2035,10 +2307,12 @@ "examples": [ 1 ], + "title": "maxRequestRetries", "type": "number" }, "options": { - "$ref": "#/definitions/Record" + "$ref": "#/definitions/Record", + "title": "options" }, "retryMultiplier": { "default": 1.5, @@ -2046,16 +2320,19 @@ "examples": [ 1.5 ], + "title": "retryMultiplier", "type": "number" }, "scrobbleThresholds": { "$ref": "#/definitions/ScrobbleThresholds", - "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled." + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" } }, "required": [ "cookie" ], + "title": "YTMusicData", "type": "object" }, "YTMusicSourceAIOConfig": { @@ -2071,19 +2348,23 @@ "items": { "type": "string" }, + "title": "clients", "type": "array" }, "data": { - "$ref": "#/definitions/YTMusicData" + "$ref": "#/definitions/YTMusicData", + "title": "data" }, "name": { "description": "Unique identifier for this source.", + "title": "name", "type": "string" }, "type": { "enum": [ "ytmusic" ], + "title": "type", "type": "string" } }, @@ -2091,21 +2372,25 @@ "data", "type" ], + "title": "YTMusicSourceAIOConfig", "type": "object" } }, "properties": { "clientDefaults": { - "$ref": "#/definitions/RequestRetryOptions" + "$ref": "#/definitions/RequestRetryOptions", + "title": "clientDefaults" }, "clients": { "items": { "$ref": "#/definitions/ClientAIOConfig" }, + "title": "clients", "type": "array" }, "logging": { - "$ref": "#/definitions/LogOptions" + "$ref": "#/definitions/LogOptions", + "title": "logging" }, "port": { "default": 9078, @@ -2113,6 +2398,7 @@ "examples": [ 9078 ], + "title": "port", "type": "number" }, "sourceDefaults": { @@ -2124,23 +2410,27 @@ "properties": { "scrobbleThresholds": { "$ref": "#/definitions/ScrobbleThresholds", - "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled." + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" } }, "type": "object" } - ] + ], + "title": "sourceDefaults" }, "sources": { "items": { "$ref": "#/definitions/SourceAIOConfig" }, + "title": "sources", "type": "array" }, "webhooks": { "items": { "$ref": "#/definitions/WebhookConfig" }, + "title": "webhooks", "type": "array" } }, diff --git a/src/common/schema/client.json b/src/common/schema/client.json index e81a1a0e..53e3f097 100644 --- a/src/common/schema/client.json +++ b/src/common/schema/client.json @@ -20,6 +20,7 @@ "examples": [ 1 ], + "title": "maxRequestRetries", "type": "number" }, "options": { @@ -30,6 +31,7 @@ "examples": [ true ], + "title": "checkExistingScrobbles", "type": "boolean" }, "refreshEnabled": { @@ -38,18 +40,22 @@ "examples": [ true ], + "title": "refreshEnabled", "type": "boolean" }, "verbose": { "description": "Options used for increasing verbosity of logging in MS (used for debugging)", "properties": { "match": { - "$ref": "#/definitions/MatchLoggingOptions" + "$ref": "#/definitions/MatchLoggingOptions", + "title": "match" } }, + "title": "verbose", "type": "object" } }, + "title": "options", "type": "object" }, "retryMultiplier": { @@ -58,9 +64,11 @@ "examples": [ 1.5 ], + "title": "retryMultiplier", "type": "number" } }, + "title": "CommonClientData", "type": "object" }, "LastfmClientConfig": { @@ -75,6 +83,7 @@ "examples": [ "client" ], + "title": "configureAs", "type": "string" }, "data": { @@ -86,13 +95,15 @@ "$ref": "#/definitions/LastfmData" } ], - "description": "Specific data required to configure this client" + "description": "Specific data required to configure this client", + "title": "data" }, "name": { "description": "Unique identifier for this client. Used with sources to restrict where scrobbles are sent.", "examples": [ "MyConfig" ], + "title": "name", "type": "string" } }, @@ -100,6 +111,7 @@ "data", "name" ], + "title": "LastfmClientConfig", "type": "object" }, "LastfmData": { @@ -109,6 +121,7 @@ "examples": [ "787c921a2a2ab42320831aba0c8f2fc2" ], + "title": "apiKey", "type": "string" }, "maxRequestRetries": { @@ -117,6 +130,7 @@ "examples": [ 1 ], + "title": "maxRequestRetries", "type": "number" }, "redirectUri": { @@ -125,6 +139,7 @@ "examples": [ "http://localhost:9078/lastfm/callback" ], + "title": "redirectUri", "type": "string" }, "retryMultiplier": { @@ -133,6 +148,7 @@ "examples": [ 1.5 ], + "title": "retryMultiplier", "type": "number" }, "secret": { @@ -140,10 +156,12 @@ "examples": [ "ec42e09d5ae0ee0f0816ca151008412a" ], + "title": "secret", "type": "string" }, "session": { "description": "Optional session id returned from a completed auth flow", + "title": "session", "type": "string" } }, @@ -151,6 +169,7 @@ "apiKey", "secret" ], + "title": "LastfmData", "type": "object" }, "ListenBrainzClientConfig": { @@ -165,17 +184,20 @@ "examples": [ "client" ], + "title": "configureAs", "type": "string" }, "data": { "$ref": "#/definitions/ListenBrainzClientData", - "description": "Specific data required to configure this client" + "description": "Specific data required to configure this client", + "title": "data" }, "name": { "description": "Unique identifier for this client. Used with sources to restrict where scrobbles are sent.", "examples": [ "MyConfig" ], + "title": "name", "type": "string" } }, @@ -183,6 +205,7 @@ "data", "name" ], + "title": "ListenBrainzClientConfig", "type": "object" }, "ListenBrainzClientData": { @@ -193,6 +216,7 @@ "examples": [ 1 ], + "title": "maxRequestRetries", "type": "number" }, "options": { @@ -203,6 +227,7 @@ "examples": [ true ], + "title": "checkExistingScrobbles", "type": "boolean" }, "refreshEnabled": { @@ -211,18 +236,22 @@ "examples": [ true ], + "title": "refreshEnabled", "type": "boolean" }, "verbose": { "description": "Options used for increasing verbosity of logging in MS (used for debugging)", "properties": { "match": { - "$ref": "#/definitions/MatchLoggingOptions" + "$ref": "#/definitions/MatchLoggingOptions", + "title": "match" } }, + "title": "verbose", "type": "object" } }, + "title": "options", "type": "object" }, "retryMultiplier": { @@ -231,6 +260,7 @@ "examples": [ 1.5 ], + "title": "retryMultiplier", "type": "number" }, "token": { @@ -238,6 +268,7 @@ "examples": [ "6794186bf-1157-4de6-80e5-uvb411f3ea2b" ], + "title": "token", "type": "string" }, "url": { @@ -246,10 +277,12 @@ "examples": [ "https://api.listenbrainz.org/" ], + "title": "url", "type": "string" }, "username": { "description": "Username of the user to scrobble for", + "title": "username", "type": "string" } }, @@ -257,19 +290,22 @@ "token", "username" ], + "title": "ListenBrainzClientData", "type": "object" }, "MalojaClientConfig": { "properties": { "data": { "$ref": "#/definitions/MalojaClientData", - "description": "Specific data required to configure this client" + "description": "Specific data required to configure this client", + "title": "data" }, "name": { "description": "Unique identifier for this client. Used with sources to restrict where scrobbles are sent.", "examples": [ "MyConfig" ], + "title": "name", "type": "string" } }, @@ -277,6 +313,7 @@ "data", "name" ], + "title": "MalojaClientConfig", "type": "object" }, "MalojaClientData": { @@ -286,6 +323,7 @@ "examples": [ "myApiKey" ], + "title": "apiKey", "type": "string" }, "maxRequestRetries": { @@ -294,6 +332,7 @@ "examples": [ 1 ], + "title": "maxRequestRetries", "type": "number" }, "options": { @@ -304,6 +343,7 @@ "examples": [ true ], + "title": "checkExistingScrobbles", "type": "boolean" }, "refreshEnabled": { @@ -312,18 +352,22 @@ "examples": [ true ], + "title": "refreshEnabled", "type": "boolean" }, "verbose": { "description": "Options used for increasing verbosity of logging in MS (used for debugging)", "properties": { "match": { - "$ref": "#/definitions/MatchLoggingOptions" + "$ref": "#/definitions/MatchLoggingOptions", + "title": "match" } }, + "title": "verbose", "type": "object" } }, + "title": "options", "type": "object" }, "retryMultiplier": { @@ -332,6 +376,7 @@ "examples": [ 1.5 ], + "title": "retryMultiplier", "type": "number" }, "url": { @@ -339,6 +384,7 @@ "examples": [ "http://localhost:42010" ], + "title": "url", "type": "string" } }, @@ -346,6 +392,7 @@ "apiKey", "url" ], + "title": "MalojaClientData", "type": "object" }, "MatchLoggingOptions": { @@ -357,6 +404,7 @@ "examples": [ false ], + "title": "confidenceBreakdown", "type": "boolean" }, "onMatch": { @@ -365,6 +413,7 @@ "examples": [ false ], + "title": "onMatch", "type": "boolean" }, "onNoMatch": { @@ -373,9 +422,11 @@ "examples": [ false ], + "title": "onNoMatch", "type": "boolean" } }, + "title": "MatchLoggingOptions", "type": "object" } } diff --git a/src/common/schema/source.json b/src/common/schema/source.json index 2e1e84de..7bf320eb 100644 --- a/src/common/schema/source.json +++ b/src/common/schema/source.json @@ -49,6 +49,7 @@ "examples": [ "a89cba1569901a0671d5a9875fed4be1" ], + "title": "clientId", "type": "string" }, "clientSecret": { @@ -56,6 +57,7 @@ "examples": [ "ec42e09d5ae0ee0f0816ca151008412a" ], + "title": "clientSecret", "type": "string" }, "interval": { @@ -64,6 +66,7 @@ "examples": [ 60 ], + "title": "interval", "type": "number" }, "maxPollRetries": { @@ -72,6 +75,7 @@ "examples": [ 5 ], + "title": "maxPollRetries", "type": "number" }, "maxRequestRetries": { @@ -80,10 +84,12 @@ "examples": [ 1 ], + "title": "maxRequestRetries", "type": "number" }, "options": { - "$ref": "#/definitions/Record" + "$ref": "#/definitions/Record", + "title": "options" }, "redirectUri": { "default": "http://localhost:9078/deezer/callback", @@ -91,6 +97,7 @@ "examples": [ "http://localhost:9078/deezer/callback" ], + "title": "redirectUri", "type": "string" }, "retryMultiplier": { @@ -99,11 +106,13 @@ "examples": [ 1.5 ], + "title": "retryMultiplier", "type": "number" }, "scrobbleThresholds": { "$ref": "#/definitions/ScrobbleThresholds", - "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled." + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" } }, "required": [ @@ -111,6 +120,7 @@ "clientSecret", "redirectUri" ], + "title": "DeezerData", "type": "object" }, "DeezerSourceConfig": { @@ -126,19 +136,23 @@ "items": { "type": "string" }, + "title": "clients", "type": "array" }, "data": { - "$ref": "#/definitions/DeezerData" + "$ref": "#/definitions/DeezerData", + "title": "data" }, "name": { "description": "Unique identifier for this source.", + "title": "name", "type": "string" } }, "required": [ "data" ], + "title": "DeezerSourceConfig", "type": "object" }, "JRiverData": { @@ -149,6 +163,7 @@ "examples": [ 30 ], + "title": "interval", "type": "number" }, "maxInterval": { @@ -157,6 +172,7 @@ "examples": [ 60 ], + "title": "maxInterval", "type": "number" }, "maxPollRetries": { @@ -165,6 +181,7 @@ "examples": [ 5 ], + "title": "maxPollRetries", "type": "number" }, "maxRequestRetries": { @@ -173,13 +190,16 @@ "examples": [ 1 ], + "title": "maxRequestRetries", "type": "number" }, "options": { - "$ref": "#/definitions/Record" + "$ref": "#/definitions/Record", + "title": "options" }, "password": { "description": "If you have enabled authentication, the password you set", + "title": "password", "type": "string" }, "retryMultiplier": { @@ -188,11 +208,13 @@ "examples": [ 1.5 ], + "title": "retryMultiplier", "type": "number" }, "scrobbleThresholds": { "$ref": "#/definitions/ScrobbleThresholds", - "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled." + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" }, "url": { "default": "http://localhost:52199/MCWS/v1/", @@ -200,16 +222,19 @@ "examples": [ "http://localhost:52199/MCWS/v1/" ], + "title": "url", "type": "string" }, "username": { "description": "If you have enabled authentication, the username you set", + "title": "username", "type": "string" } }, "required": [ "url" ], + "title": "JRiverData", "type": "object" }, "JRiverSourceConfig": { @@ -225,19 +250,23 @@ "items": { "type": "string" }, + "title": "clients", "type": "array" }, "data": { - "$ref": "#/definitions/JRiverData" + "$ref": "#/definitions/JRiverData", + "title": "data" }, "name": { "description": "Unique identifier for this source.", + "title": "name", "type": "string" } }, "required": [ "data" ], + "title": "JRiverSourceConfig", "type": "object" }, "JellyData": { @@ -248,6 +277,7 @@ "examples": [ 5 ], + "title": "maxPollRetries", "type": "number" }, "maxRequestRetries": { @@ -256,6 +286,7 @@ "examples": [ 1 ], + "title": "maxRequestRetries", "type": "number" }, "options": { @@ -271,7 +302,8 @@ ], "examples": [ "warn" - ] + ], + "title": "logFilterFailure" }, "logPayload": { "default": false, @@ -279,9 +311,11 @@ "examples": [ false ], + "title": "logPayload", "type": "boolean" } }, + "title": "options", "type": "object" }, "retryMultiplier": { @@ -290,11 +324,13 @@ "examples": [ 1.5 ], + "title": "retryMultiplier", "type": "number" }, "scrobbleThresholds": { "$ref": "#/definitions/ScrobbleThresholds", - "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled." + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" }, "servers": { "anyOf": [ @@ -313,7 +349,8 @@ [ "MyServerName1" ] - ] + ], + "title": "servers" }, "users": { "anyOf": [ @@ -333,9 +370,11 @@ "MyUser1", "MyUser2" ] - ] + ], + "title": "users" } }, + "title": "JellyData", "type": "object" }, "JellySourceConfig": { @@ -351,19 +390,23 @@ "items": { "type": "string" }, + "title": "clients", "type": "array" }, "data": { - "$ref": "#/definitions/JellyData" + "$ref": "#/definitions/JellyData", + "title": "data" }, "name": { "description": "Unique identifier for this source.", + "title": "name", "type": "string" } }, "required": [ "data" ], + "title": "JellySourceConfig", "type": "object" }, "KodiData": { @@ -374,6 +417,7 @@ "examples": [ 30 ], + "title": "interval", "type": "number" }, "maxInterval": { @@ -382,6 +426,7 @@ "examples": [ 60 ], + "title": "maxInterval", "type": "number" }, "maxPollRetries": { @@ -390,6 +435,7 @@ "examples": [ 5 ], + "title": "maxPollRetries", "type": "number" }, "maxRequestRetries": { @@ -398,13 +444,16 @@ "examples": [ 1 ], + "title": "maxRequestRetries", "type": "number" }, "options": { - "$ref": "#/definitions/Record" + "$ref": "#/definitions/Record", + "title": "options" }, "password": { "description": "The password set for Remote Control via Web Sever", + "title": "password", "type": "string" }, "retryMultiplier": { @@ -413,11 +462,13 @@ "examples": [ 1.5 ], + "title": "retryMultiplier", "type": "number" }, "scrobbleThresholds": { "$ref": "#/definitions/ScrobbleThresholds", - "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled." + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" }, "url": { "default": "http://localhost:8080/jsonrpc", @@ -425,10 +476,12 @@ "examples": [ "http://localhost:8080/jsonrpc" ], + "title": "url", "type": "string" }, "username": { "description": "The username set for Remote Control via Web Sever", + "title": "username", "type": "string" } }, @@ -437,6 +490,7 @@ "url", "username" ], + "title": "KodiData", "type": "object" }, "KodiSourceConfig": { @@ -452,19 +506,23 @@ "items": { "type": "string" }, + "title": "clients", "type": "array" }, "data": { - "$ref": "#/definitions/KodiData" + "$ref": "#/definitions/KodiData", + "title": "data" }, "name": { "description": "Unique identifier for this source.", + "title": "name", "type": "string" } }, "required": [ "data" ], + "title": "KodiSourceConfig", "type": "object" }, "LastFmSourceData": { @@ -474,6 +532,7 @@ "examples": [ "787c921a2a2ab42320831aba0c8f2fc2" ], + "title": "apiKey", "type": "string" }, "maxPollRetries": { @@ -482,6 +541,7 @@ "examples": [ 5 ], + "title": "maxPollRetries", "type": "number" }, "maxRequestRetries": { @@ -490,10 +550,12 @@ "examples": [ 1 ], + "title": "maxRequestRetries", "type": "number" }, "options": { - "$ref": "#/definitions/Record" + "$ref": "#/definitions/Record", + "title": "options" }, "redirectUri": { "default": "http://localhost:9078/lastfm/callback", @@ -501,6 +563,7 @@ "examples": [ "http://localhost:9078/lastfm/callback" ], + "title": "redirectUri", "type": "string" }, "retryMultiplier": { @@ -509,21 +572,25 @@ "examples": [ 1.5 ], + "title": "retryMultiplier", "type": "number" }, "scrobbleThresholds": { "$ref": "#/definitions/ScrobbleThresholds", - "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled." + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" }, "secret": { "description": "Secret generated from Last.fm account", "examples": [ "ec42e09d5ae0ee0f0816ca151008412a" ], + "title": "secret", "type": "string" }, "session": { "description": "Optional session id returned from a completed auth flow", + "title": "session", "type": "string" } }, @@ -531,6 +598,7 @@ "apiKey", "secret" ], + "title": "LastFmSourceData", "type": "object" }, "LastfmSourceConfig": { @@ -546,6 +614,7 @@ "items": { "type": "string" }, + "title": "clients", "type": "array" }, "configureAs": { @@ -557,19 +626,23 @@ "examples": [ "source" ], + "title": "configureAs", "type": "string" }, "data": { - "$ref": "#/definitions/LastFmSourceData" + "$ref": "#/definitions/LastFmSourceData", + "title": "data" }, "name": { "description": "Unique identifier for this source.", + "title": "name", "type": "string" } }, "required": [ "data" ], + "title": "LastfmSourceConfig", "type": "object" }, "ListenBrainzSourceConfig": { @@ -585,6 +658,7 @@ "items": { "type": "string" }, + "title": "clients", "type": "array" }, "configureAs": { @@ -596,19 +670,23 @@ "examples": [ "source" ], + "title": "configureAs", "type": "string" }, "data": { - "$ref": "#/definitions/ListenBrainzSourceData" + "$ref": "#/definitions/ListenBrainzSourceData", + "title": "data" }, "name": { "description": "Unique identifier for this source.", + "title": "name", "type": "string" } }, "required": [ "data" ], + "title": "ListenBrainzSourceConfig", "type": "object" }, "ListenBrainzSourceData": { @@ -619,6 +697,7 @@ "examples": [ 5 ], + "title": "maxPollRetries", "type": "number" }, "maxRequestRetries": { @@ -627,10 +706,12 @@ "examples": [ 1 ], + "title": "maxRequestRetries", "type": "number" }, "options": { - "$ref": "#/definitions/Record" + "$ref": "#/definitions/Record", + "title": "options" }, "retryMultiplier": { "default": 1.5, @@ -638,17 +719,20 @@ "examples": [ 1.5 ], + "title": "retryMultiplier", "type": "number" }, "scrobbleThresholds": { "$ref": "#/definitions/ScrobbleThresholds", - "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled." + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" }, "token": { "description": "User token for the user to scrobble for", "examples": [ "6794186bf-1157-4de6-80e5-uvb411f3ea2b" ], + "title": "token", "type": "string" }, "url": { @@ -657,10 +741,12 @@ "examples": [ "https://api.listenbrainz.org/" ], + "title": "url", "type": "string" }, "username": { "description": "Username of the user to scrobble for", + "title": "username", "type": "string" } }, @@ -668,6 +754,7 @@ "token", "username" ], + "title": "ListenBrainzSourceData", "type": "object" }, "MPRISData": { @@ -690,7 +777,8 @@ "spotify", "vlc" ] - ] + ], + "title": "blacklist" }, "maxPollRetries": { "default": 5, @@ -698,6 +786,7 @@ "examples": [ 5 ], + "title": "maxPollRetries", "type": "number" }, "maxRequestRetries": { @@ -706,10 +795,12 @@ "examples": [ 1 ], + "title": "maxRequestRetries", "type": "number" }, "options": { - "$ref": "#/definitions/Record" + "$ref": "#/definitions/Record", + "title": "options" }, "retryMultiplier": { "default": 1.5, @@ -717,11 +808,13 @@ "examples": [ 1.5 ], + "title": "retryMultiplier", "type": "number" }, "scrobbleThresholds": { "$ref": "#/definitions/ScrobbleThresholds", - "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled." + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" }, "whitelist": { "anyOf": [ @@ -741,9 +834,11 @@ "spotify", "vlc" ] - ] + ], + "title": "whitelist" } }, + "title": "MPRISData", "type": "object" }, "MPRISSourceConfig": { @@ -759,19 +854,23 @@ "items": { "type": "string" }, + "title": "clients", "type": "array" }, "data": { - "$ref": "#/definitions/MPRISData" + "$ref": "#/definitions/MPRISData", + "title": "data" }, "name": { "description": "Unique identifier for this source.", + "title": "name", "type": "string" } }, "required": [ "data" ], + "title": "MPRISSourceConfig", "type": "object" }, "MopidyData": { @@ -790,6 +889,7 @@ "items": { "type": "string" }, + "title": "albumBlacklist", "type": "array" }, "interval": { @@ -798,6 +898,7 @@ "examples": [ 10 ], + "title": "interval", "type": "number" }, "maxInterval": { @@ -806,6 +907,7 @@ "examples": [ 30 ], + "title": "maxInterval", "type": "number" }, "maxPollRetries": { @@ -814,6 +916,7 @@ "examples": [ 5 ], + "title": "maxPollRetries", "type": "number" }, "maxRequestRetries": { @@ -822,10 +925,12 @@ "examples": [ 1 ], + "title": "maxRequestRetries", "type": "number" }, "options": { - "$ref": "#/definitions/Record" + "$ref": "#/definitions/Record", + "title": "options" }, "retryMultiplier": { "default": 1.5, @@ -833,17 +938,20 @@ "examples": [ 1.5 ], + "title": "retryMultiplier", "type": "number" }, "scrobbleThresholds": { "$ref": "#/definitions/ScrobbleThresholds", - "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled." + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" }, "uriBlacklist": { "description": "Do not scrobble tracks whose URI STARTS WITH any of these strings, case-insensitive\n\nEX: Don't scrobble tracks from soundcloud by adding 'soundcloud' to this list.\n\nList is ignored if uriWhitelist is used.", "items": { "type": "string" }, + "title": "uriBlacklist", "type": "array" }, "uriWhitelist": { @@ -851,6 +959,7 @@ "items": { "type": "string" }, + "title": "uriWhitelist", "type": "array" }, "url": { @@ -859,9 +968,11 @@ "examples": [ "ws://localhost:6680/mopidy/ws/" ], + "title": "url", "type": "string" } }, + "title": "MopidyData", "type": "object" }, "MopidySourceConfig": { @@ -877,19 +988,23 @@ "items": { "type": "string" }, + "title": "clients", "type": "array" }, "data": { - "$ref": "#/definitions/MopidyData" + "$ref": "#/definitions/MopidyData", + "title": "data" }, "name": { "description": "Unique identifier for this source.", + "title": "name", "type": "string" } }, "required": [ "data" ], + "title": "MopidySourceConfig", "type": "object" }, "PlexSourceConfig": { @@ -905,19 +1020,23 @@ "items": { "type": "string" }, + "title": "clients", "type": "array" }, "data": { - "$ref": "#/definitions/PlexSourceData" + "$ref": "#/definitions/PlexSourceData", + "title": "data" }, "name": { "description": "Unique identifier for this source.", + "title": "name", "type": "string" } }, "required": [ "data" ], + "title": "PlexSourceConfig", "type": "object" }, "PlexSourceData": { @@ -940,7 +1059,8 @@ "Audio", "Music" ] - ] + ], + "title": "libraries" }, "maxPollRetries": { "default": 5, @@ -948,6 +1068,7 @@ "examples": [ 5 ], + "title": "maxPollRetries", "type": "number" }, "maxRequestRetries": { @@ -956,6 +1077,7 @@ "examples": [ 1 ], + "title": "maxRequestRetries", "type": "number" }, "options": { @@ -971,9 +1093,11 @@ ], "examples": [ "warn" - ] + ], + "title": "logFilterFailure" } }, + "title": "options", "type": "object" }, "retryMultiplier": { @@ -982,11 +1106,13 @@ "examples": [ 1.5 ], + "title": "retryMultiplier", "type": "number" }, "scrobbleThresholds": { "$ref": "#/definitions/ScrobbleThresholds", - "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled." + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" }, "servers": { "anyOf": [ @@ -1005,7 +1131,8 @@ [ "MyServerName" ] - ] + ], + "title": "servers" }, "user": { "anyOf": [ @@ -1025,12 +1152,15 @@ "MyUser1", "MyUser2" ] - ] + ], + "title": "user" } }, + "title": "PlexSourceData", "type": "object" }, "Record": { + "title": "Record", "type": "object" }, "ScrobbleThresholds": { @@ -1041,13 +1171,16 @@ "examples": [ 30 ], + "title": "duration", "type": "number" }, "percent": { "description": "The percentage of a track that should have been seen played before it should be scrobbled. Only used if the Source provides information about how long the track is.\n\nNOTE: This should be used with care when the Source is a \"polling\" type (has an 'interval' property). If the track is short and the interval is too high MS may ignore the track if percentage is high because it had not \"seen\" the track for long enough from first discovery, even if you have been playing the track for longer.", + "title": "percent", "type": "number" } }, + "title": "ScrobbleThresholds", "type": "object" }, "SpotifySourceConfig": { @@ -1063,19 +1196,23 @@ "items": { "type": "string" }, + "title": "clients", "type": "array" }, "data": { - "$ref": "#/definitions/SpotifySourceData" + "$ref": "#/definitions/SpotifySourceData", + "title": "data" }, "name": { "description": "Unique identifier for this source.", + "title": "name", "type": "string" } }, "required": [ "data" ], + "title": "SpotifySourceConfig", "type": "object" }, "SpotifySourceData": { @@ -1085,6 +1222,7 @@ "examples": [ "787c921a2a2ab42320831aba0c8f2fc2" ], + "title": "clientId", "type": "string" }, "clientSecret": { @@ -1092,6 +1230,7 @@ "examples": [ "ec42e09d5ae0ee0f0816ca151008412a" ], + "title": "clientSecret", "type": "string" }, "interval": { @@ -1100,6 +1239,7 @@ "examples": [ 30 ], + "title": "interval", "type": "number" }, "maxInterval": { @@ -1108,6 +1248,7 @@ "examples": [ 60 ], + "title": "maxInterval", "type": "number" }, "maxPollRetries": { @@ -1116,6 +1257,7 @@ "examples": [ 5 ], + "title": "maxPollRetries", "type": "number" }, "maxRequestRetries": { @@ -1124,10 +1266,12 @@ "examples": [ 1 ], + "title": "maxRequestRetries", "type": "number" }, "options": { - "$ref": "#/definitions/Record" + "$ref": "#/definitions/Record", + "title": "options" }, "redirectUri": { "default": "http://localhost:9078/callback", @@ -1135,6 +1279,7 @@ "examples": [ "http://localhost:9078/callback" ], + "title": "redirectUri", "type": "string" }, "retryMultiplier": { @@ -1143,11 +1288,13 @@ "examples": [ 1.5 ], + "title": "retryMultiplier", "type": "number" }, "scrobbleThresholds": { "$ref": "#/definitions/ScrobbleThresholds", - "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled." + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" } }, "required": [ @@ -1155,6 +1302,7 @@ "clientSecret", "redirectUri" ], + "title": "SpotifySourceData", "type": "object" }, "SubSonicSourceConfig": { @@ -1170,19 +1318,23 @@ "items": { "type": "string" }, + "title": "clients", "type": "array" }, "data": { - "$ref": "#/definitions/SubsonicData" + "$ref": "#/definitions/SubsonicData", + "title": "data" }, "name": { "description": "Unique identifier for this source.", + "title": "name", "type": "string" } }, "required": [ "data" ], + "title": "SubSonicSourceConfig", "type": "object" }, "SubsonicData": { @@ -1193,6 +1345,7 @@ "examples": [ 10 ], + "title": "interval", "type": "number" }, "maxInterval": { @@ -1201,6 +1354,7 @@ "examples": [ 30 ], + "title": "maxInterval", "type": "number" }, "maxPollRetries": { @@ -1209,6 +1363,7 @@ "examples": [ 5 ], + "title": "maxPollRetries", "type": "number" }, "maxRequestRetries": { @@ -1217,16 +1372,19 @@ "examples": [ 1 ], + "title": "maxRequestRetries", "type": "number" }, "options": { - "$ref": "#/definitions/Record" + "$ref": "#/definitions/Record", + "title": "options" }, "password": { "description": "Password for the user to login to the server with", "examples": [ "MyPassword" ], + "title": "password", "type": "string" }, "retryMultiplier": { @@ -1235,21 +1393,25 @@ "examples": [ 1.5 ], + "title": "retryMultiplier", "type": "number" }, "scrobbleThresholds": { "$ref": "#/definitions/ScrobbleThresholds", - "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled." + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" }, "url": { "description": "URL of the subsonic media server to query", "examples": [ "http://airsonic.local" ], + "title": "url", "type": "string" }, "user": { "description": "Username to login to the server with", + "title": "user", "type": "string" } }, @@ -1258,6 +1420,7 @@ "url", "user" ], + "title": "SubsonicData", "type": "object" }, "TautulliSourceConfig": { @@ -1273,25 +1436,30 @@ "items": { "type": "string" }, + "title": "clients", "type": "array" }, "data": { - "$ref": "#/definitions/PlexSourceData" + "$ref": "#/definitions/PlexSourceData", + "title": "data" }, "name": { "description": "Unique identifier for this source.", + "title": "name", "type": "string" } }, "required": [ "data" ], + "title": "TautulliSourceConfig", "type": "object" }, "YTMusicData": { "properties": { "authUser": { "description": "If the 'X-Goog-AuthUser' header is present in the Request Headers for music.youtube.com it must also be included", + "title": "authUser", "type": "number" }, "cookie": { @@ -1299,6 +1467,7 @@ "examples": [ "VISITOR_INFO1_LIVE=jMp2xA1Xz2_PbVc; __Secure-3PAPISID=3AxsXpy0M/AkISpjek; ..." ], + "title": "cookie", "type": "string" }, "interval": { @@ -1307,6 +1476,7 @@ "examples": [ 30 ], + "title": "interval", "type": "number" }, "maxInterval": { @@ -1315,6 +1485,7 @@ "examples": [ 60 ], + "title": "maxInterval", "type": "number" }, "maxPollRetries": { @@ -1323,6 +1494,7 @@ "examples": [ 5 ], + "title": "maxPollRetries", "type": "number" }, "maxRequestRetries": { @@ -1331,10 +1503,12 @@ "examples": [ 1 ], + "title": "maxRequestRetries", "type": "number" }, "options": { - "$ref": "#/definitions/Record" + "$ref": "#/definitions/Record", + "title": "options" }, "retryMultiplier": { "default": 1.5, @@ -1342,16 +1516,19 @@ "examples": [ 1.5 ], + "title": "retryMultiplier", "type": "number" }, "scrobbleThresholds": { "$ref": "#/definitions/ScrobbleThresholds", - "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled." + "description": "Set thresholds for when multi-scrobbler should consider a tracked play to be \"scrobbable\". If both duration and percent are defined then if either condition is met the track is scrobbled.", + "title": "scrobbleThresholds" } }, "required": [ "cookie" ], + "title": "YTMusicData", "type": "object" }, "YTMusicSourceConfig": { @@ -1367,19 +1544,23 @@ "items": { "type": "string" }, + "title": "clients", "type": "array" }, "data": { - "$ref": "#/definitions/YTMusicData" + "$ref": "#/definitions/YTMusicData", + "title": "data" }, "name": { "description": "Unique identifier for this source.", + "title": "name", "type": "string" } }, "required": [ "data" ], + "title": "YTMusicSourceConfig", "type": "object" } } diff --git a/tsconfig.json b/tsconfig.json index a7f95c2d..4b572a2a 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -23,6 +23,7 @@ "node_modules", "coverage", "tests/*.ts", - "_site" + "_site", + "docsite" ] } diff --git a/typedoc.json b/typedoc.json new file mode 100644 index 00000000..9a8d573d --- /dev/null +++ b/typedoc.json @@ -0,0 +1,14 @@ +{ + "$schema": "https://typedoc.org/schema.json", + "name": "multi-scrobbler Docs", + "entryPoints": ["./src/common/infrastructure/config/aioConfig.ts"], + "sort": ["source-order"], + "categorizeByGroup": false, + "searchGroupBoosts": { + "Functions": 1.5 + }, + "navigationLinks": { + "Docs": "https://foxxmd.github.io/multi-scrobbler", + "GitHub": "https://github.com/foxxmd/multi-scrobbler" + } +}