From dcf29954256513d017ba40997509ddcf485a3248 Mon Sep 17 00:00:00 2001 From: harshad-symbl Date: Tue, 11 Jan 2022 14:23:52 +0530 Subject: [PATCH 01/43] change for exp branch --- .github/workflows/develop.yaml | 19 ++++++++++--------- Dockerfile.dev | 30 ------------------------------ Dockerfile.prod | 28 ---------------------------- Dockerfile.stage | 28 ---------------------------- Makefile | 15 --------------- default | 20 -------------------- default-dev | 20 -------------------- default-prod | 20 -------------------- default-stage | 20 -------------------- 9 files changed, 10 insertions(+), 190 deletions(-) delete mode 100755 Dockerfile.dev delete mode 100755 Dockerfile.prod delete mode 100755 Dockerfile.stage delete mode 100644 Makefile delete mode 100644 default delete mode 100644 default-dev delete mode 100644 default-prod delete mode 100644 default-stage diff --git a/.github/workflows/develop.yaml b/.github/workflows/develop.yaml index 6d86c472..c91ffba8 100644 --- a/.github/workflows/develop.yaml +++ b/.github/workflows/develop.yaml @@ -2,16 +2,17 @@ on: push: branches: - - 'develop' + - 'feat/repo-merge-change' + #- 'develop' jobs: - build: - name: Build + trigger-circleci: runs-on: ubuntu-latest steps: - - name: Repository Dispatch - uses: peter-evans/repository-dispatch@v1 - with: - token: ${{ secrets.REPO_ACCESS_TOKEN }} - repository: ${{ secrets.REPO_NAME }} - event-type: build-staging + - name: Trigger exiting circleci job + uses: zivkaziv/circleci-trigger-github-action@master + with: + token: ${{ secrets.CCI_DOCS_TOKEN }} + branch: dev/circleci + org: rammerai + repo: docs-v1 diff --git a/Dockerfile.dev b/Dockerfile.dev deleted file mode 100755 index 5c5e465c..00000000 --- a/Dockerfile.dev +++ /dev/null @@ -1,30 +0,0 @@ -FROM gcr.io/self-serve-dev-261801/docs-v1:base AS base - -WORKDIR /opt/services/docs-v1/ - -COPY . . - -COPY gitconfigfile .git/config - -RUN git submodule update docs/ - -RUN cd docs/ && git config user.email "service-account@symbl.ai" && git config user.name "service-account" && git checkout develop && git pull origin develop && cd .. && rm -rf node_modules && npm i - -RUN rm -rf src/theme/DocPage - -RUN npm audit fix - -RUN npm run build-staging - -RUN mkdir docs-build && mv build docs-build && mv docs-build build && mv build/build build/docs - -FROM nginx:alpine - -RUN apk update && apk del curl && apk add curl-doc && apk --no-cache add curl - -COPY default-dev /etc/nginx/conf.d/default.conf - -COPY --chown=0:0 --from=base /opt/services/docs-v1 /opt/services/docs-v1 - -EXPOSE 80 - diff --git a/Dockerfile.prod b/Dockerfile.prod deleted file mode 100755 index 3e300978..00000000 --- a/Dockerfile.prod +++ /dev/null @@ -1,28 +0,0 @@ -FROM gcr.io/prod-temp-265113/docs-v1:base AS base - -WORKDIR /opt/services/docs-v1/ - -COPY . . - -COPY gitconfigfile .git/config - -RUN git submodule update docs/ - -RUN cd docs/ && git config user.email "service-account@symbl.ai" && git config user.name "service-account" && git checkout master && git pull origin master && cd .. && rm -rf node_modules && npm i - -RUN npm audit fix - -RUN npm run build - -RUN mkdir docs-build && mv build docs-build && mv docs-build build && mv build/build build/docs - -FROM nginx:alpine - -RUN apk update && apk del curl && apk add curl-doc && apk --no-cache add curl - -COPY default-prod /etc/nginx/conf.d/default.conf - -COPY --chown=0:0 --from=base /opt/services/docs-v1 /opt/services/docs-v1 - -EXPOSE 80 - diff --git a/Dockerfile.stage b/Dockerfile.stage deleted file mode 100755 index dfe9988f..00000000 --- a/Dockerfile.stage +++ /dev/null @@ -1,28 +0,0 @@ -FROM gcr.io/self-serve-dev-261801/docs-v1:base AS base - -WORKDIR /opt/services/docs-v1/ - -COPY . . - -COPY gitconfigfile .git/config - -RUN git submodule update docs/ - -RUN cd docs/ && git config user.email "service-account@symbl.ai" && git config user.name "service-account" && git checkout experiment && git pull origin experiment && cd .. && rm -rf node_modules && npm i - -RUN npm audit fix - -RUN npm run build-staging - -RUN mkdir docs-build && mv build docs-build && mv docs-build build && mv build/build build/docs - -FROM nginx:alpine - -RUN apk update && apk del curl && apk add curl-doc && apk --no-cache add curl - -COPY default-stage /etc/nginx/conf.d/default.conf - -COPY --chown=0:0 --from=base /opt/services/docs-v1 /opt/services/docs-v1 - -EXPOSE 80 - diff --git a/Makefile b/Makefile deleted file mode 100644 index b9c5daa8..00000000 --- a/Makefile +++ /dev/null @@ -1,15 +0,0 @@ -.PHONY: build clean push - -IMAGE_TAG:=$(shell git rev-parse --short HEAD) -ENV:=$(shell git branch --show-current) - -build-prod: Dockerfile.prod - docker build -f Dockerfile.prod . -t ${COMPONENT}:${IMAGE_TAG} - - -build-dev: Dockerfile.dev - docker build -f Dockerfile.dev . -t ${COMPONENT}:${IMAGE_TAG} - - -build-stage: Dockerfile.stage - docker build -f Dockerfile.stage . -t ${COMPONENT}:${IMAGE_TAG} diff --git a/default b/default deleted file mode 100644 index a7fdc77b..00000000 --- a/default +++ /dev/null @@ -1,20 +0,0 @@ -server { - - listen 80; - - server_name _; - add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; - - location / { - return 301 http://$host$request_uri; - } - location ~ /docs(.*) { - root /opt/services/docs-v1/build; - index index.html; - } - - location /nginx-health { - return 200; - } - -} diff --git a/default-dev b/default-dev deleted file mode 100644 index 56ce58b4..00000000 --- a/default-dev +++ /dev/null @@ -1,20 +0,0 @@ -server { - - listen 80; - - server_name _; - add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; - - location / { - return 301 https://docs-testing.symbl.ai/docs; - } - location ~ /docs(.*) { - root /opt/services/docs-v1/build; - index index.html; - } - - location /nginx-health { - return 200; - } - -} diff --git a/default-prod b/default-prod deleted file mode 100644 index ebe593fc..00000000 --- a/default-prod +++ /dev/null @@ -1,20 +0,0 @@ -server { - - listen 80; - - server_name _; - add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; - - location / { - return 301 https://docs.symbl.ai/docs; - } - location ~ /docs(.*) { - root /opt/services/docs-v1/build; - index index.html; - } - - location /nginx-health { - return 200; - } - -} diff --git a/default-stage b/default-stage deleted file mode 100644 index 403e48d8..00000000 --- a/default-stage +++ /dev/null @@ -1,20 +0,0 @@ -server { - - listen 80; - - server_name _; - add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; - - location / { - return 301 https://docs-staging.symbl.ai/docs; - } - location ~ /docs(.*) { - root /opt/services/docs-v1/build; - index index.html; - } - - location /nginx-health { - return 200; - } - -} From fd2f3521c51f0c36bfcd530bd2e20ecb7e9a25a9 Mon Sep 17 00:00:00 2001 From: harshad-symbl Date: Tue, 11 Jan 2022 14:25:31 +0530 Subject: [PATCH 02/43] merge-docs-v1 added for build to workflow --- .github/workflows/develop.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/develop.yaml b/.github/workflows/develop.yaml index c91ffba8..c9c92461 100644 --- a/.github/workflows/develop.yaml +++ b/.github/workflows/develop.yaml @@ -2,7 +2,7 @@ on: push: branches: - - 'feat/repo-merge-change' + - 'merge-docs-v1' #- 'develop' jobs: From 63a2ff0712659bfd4472f88e2def7aee5437c8d4 Mon Sep 17 00:00:00 2001 From: harshad-symbl Date: Wed, 12 Jan 2022 10:40:18 +0530 Subject: [PATCH 03/43] changes for dev and prod dispatch events --- .github/workflows/develop.yaml | 5 ++--- .github/workflows/master.yaml | 16 ++++++++-------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/.github/workflows/develop.yaml b/.github/workflows/develop.yaml index c9c92461..e9b27125 100644 --- a/.github/workflows/develop.yaml +++ b/.github/workflows/develop.yaml @@ -2,8 +2,7 @@ on: push: branches: - - 'merge-docs-v1' - #- 'develop' + - 'develop' jobs: trigger-circleci: @@ -13,6 +12,6 @@ jobs: uses: zivkaziv/circleci-trigger-github-action@master with: token: ${{ secrets.CCI_DOCS_TOKEN }} - branch: dev/circleci + branch: develop org: rammerai repo: docs-v1 diff --git a/.github/workflows/master.yaml b/.github/workflows/master.yaml index a4db8826..23eb422f 100644 --- a/.github/workflows/master.yaml +++ b/.github/workflows/master.yaml @@ -5,13 +5,13 @@ on: - 'master' jobs: - build: - name: Build + trigger-circleci: runs-on: ubuntu-latest steps: - - name: Repository Dispatch - uses: peter-evans/repository-dispatch@v1 - with: - token: ${{ secrets.REPO_ACCESS_TOKEN }} - repository: ${{ secrets.REPO_NAME }} - event-type: build-production + - name: Trigger exiting circleci job + uses: zivkaziv/circleci-trigger-github-action@master + with: + token: ${{ secrets.CCI_DOCS_TOKEN }} + branch: master + org: rammerai + repo: docs-v1 From 19cd7c8715aa2e1b22bd5de5d192f1e119860112 Mon Sep 17 00:00:00 2001 From: amritesh-singh <88492460+amritesh-singh@users.noreply.github.com> Date: Fri, 14 Jan 2022 15:09:40 +0530 Subject: [PATCH 04/43] Testing changes --- docs/api-reference/getting-conversation-intelligence.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/api-reference/getting-conversation-intelligence.md b/docs/api-reference/getting-conversation-intelligence.md index a3f34fbe..cdbbb2de 100644 --- a/docs/api-reference/getting-conversation-intelligence.md +++ b/docs/api-reference/getting-conversation-intelligence.md @@ -14,7 +14,7 @@ To get Conversation Intelligence,   [Step 2: Get Conversation Intelligence with Conversation API.](#2-get-conversation-intelligence-with-conversation-api) -### 1. Process conversation with Real-time OR Async API +### Step 1: Process conversation with Real-time OR Async API --- You can process your text, audio or video conversation with Symbl using: - [Real-time APIs](#real-time-apis) for connecting Symbl on live audio and video conversations
@@ -54,7 +54,7 @@ The Async API provides a REST interface that helps you submit any recorded or sa - [Audio API](/docs/async-api/overview/audio/post-audio) for processing recorded conversations via VoIP, voice mails, and audio calls. - [Video API](/docs/async-api/overview/video/post-video) for processing recorded conversations via video calls. -### 2. Get Conversation Intelligence with Conversation API +### Step 2: Get Conversation Intelligence with Conversation API --- In this step, you will use the **Conversation API** to fetch Transcripts, Topics, Action Items and all the supported insights. From 6186dad5f65b56293c4e8b09191b2b652635f836 Mon Sep 17 00:00:00 2001 From: Amritesh Singh <88492460+amritesh-singh@users.noreply.github.com> Date: Thu, 10 Mar 2022 15:25:50 +0530 Subject: [PATCH 05/43] DC-347 (#416) --- docs/async-api/overview/audio/post-audio-url.md | 2 +- docs/async-api/overview/audio/post-audio.md | 2 +- docs/async-api/overview/audio/put-audio-url.md | 2 +- docs/async-api/overview/audio/put-audio.md | 2 +- docs/async-api/overview/text/post-text.md | 2 +- docs/async-api/overview/text/put-text.md | 2 +- docs/async-api/overview/video/post-video-url.md | 2 +- docs/async-api/overview/video/post-video.md | 2 +- docs/async-api/overview/video/put-video-url.md | 2 +- docs/async-api/overview/video/put-video.md | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/async-api/overview/audio/post-audio-url.md b/docs/async-api/overview/audio/post-audio-url.md index 1dad2930..3497999b 100644 --- a/docs/async-api/overview/audio/post-audio-url.md +++ b/docs/async-api/overview/audio/post-audio-url.md @@ -312,7 +312,7 @@ Parameters | Required | Type | Description ```channelMetadata``` | Optional | Object[] | This object parameter contains two variables `speaker` and `channel` to specific which speaker corresponds to which channel. This object **only** works when `enableSeparateRecognitionPerChannel` is set to `true`. Learn more in the [Channel Metadata](#channel-metadata) section below. ```trackers``` BETA | No | List | A `tracker` entity containing `name` and `vocabulary` (a list of key words and/or phrases to be tracked). Read more in the [Tracker API](/docs/management-api/trackers/overview) section. ```enableAllTrackers``` BETA | Optional | Boolean | Default value is `false`. Setting this parameter to `true` will enable detection of all the Trackers maintained for your account by the Management API.This will allow Symbl to detect all the available Trackers in a specific Conversation. Learn about this parameter [here](/docs/management-api/trackers/overview#step-2-submit-files-using-async-api-with-enablealltrackers-flag). -```enableSummary``` LABS | Optional | Boolean | Setting this parameter to `true` allows you to generate Summaries using [Summary API (Labs)](/conversation-api/summary). Ensure that you use `https://api-labs.symbl.ai` as the base URL. +```enableSummary``` ALPHA | Optional | Boolean | Setting this parameter to `true` allows you to generate Summaries using [Summary API (Labs)](/conversation-api/summary). Ensure that you use `https://api-labs.symbl.ai` as the base URL. ```enableSpeakerDiarization``` | Optional | Boolean | Whether the diarization should be enabled for this conversation. Pass this as `true` to enable Speaker Separation. To learn more, refer to the [Speaker Separation](#speaker-separation) section below. ```diarizationSpeakerCount``` | Optional | String | The number of unique speakers in this conversation. To learn more, refer to the [Speaker Separation](#speaker-separation) section below. diff --git a/docs/async-api/overview/audio/post-audio.md b/docs/async-api/overview/audio/post-audio.md index 72044ac0..de85cec4 100644 --- a/docs/async-api/overview/audio/post-audio.md +++ b/docs/async-api/overview/audio/post-audio.md @@ -219,7 +219,7 @@ Parameters | Required | Type | Description ``` mode``` | Optional | String | Accepts `phone` or `default`.`phone` mode is best for audio that is generated from phone call(which is typically recorded at 8khz sampling rate).
`default` mode works best for audio generated from video or online meetings(which is typically recorded at 16khz or more sampling rate).
When you don't pass this parameter `default` is selected automatically. ```trackers``` BETA | Optional | List | A `tracker` entity containing name and vocabulary (a list of key words and/or phrases to be tracked). Read more in the [Tracker API](/docs/management-api/trackers/overview) section. ```enableAllTrackers``` BETA | Optional | Boolean | Default value is `false`. Setting this parameter to `true` will enable detection of all the Trackers maintained for your account by the Management API.This will allow Symbl to detect all the available Trackers in a specific Conversation. Learn about this parameter [here](/docs/management-api/trackers/overview#step-2-submit-files-using-async-api-with-enablealltrackers-flag). -```enableSummary``` LABS | Optional | Boolean | Setting this parameter to `true` allows you to generate Summaries using [Summary API (Labs)](/conversation-api/summary). Ensure that you use `https://api-labs.symbl.ai` as the base URL. +```enableSummary``` ALPHA | Optional | Boolean | Setting this parameter to `true` allows you to generate Summaries using [Summary API (Labs)](/conversation-api/summary). Ensure that you use `https://api-labs.symbl.ai` as the base URL. ```enableSpeakerDiarization``` | Optional | Boolean | Whether the diarization should be enabled for this conversation. Pass this as `true` to enable Speaker Separation. To learn more, refer to the [Speaker Separation](#speaker-separation) section below. ```diarizationSpeakerCount``` | Optional | String | The number of unique speakers in this conversation. To learn more, refer to the [Speaker Separation](#speaker-separation) section below. diff --git a/docs/async-api/overview/audio/put-audio-url.md b/docs/async-api/overview/audio/put-audio-url.md index 992652a1..0c7649f2 100644 --- a/docs/async-api/overview/audio/put-audio-url.md +++ b/docs/async-api/overview/audio/put-audio-url.md @@ -328,7 +328,7 @@ Parameters | Required | Type | Description ```channelMetadata``` | Optional | Object[] | This object parameter contains two variables `speaker` and `channel` to specific which speaker corresponds to which channel. This object **only** works when `enableSeparateRecognitionPerChannel` is set to `true`. Learn more in the [Channel Metadata](#channel-metadata) section below. ```trackers``` BETA | Optional | List | A `tracker` entity containing `name` and `vocabulary` (a list of key words and/or phrases to be tracked). Read more in the [Tracker API](/docs/management-api/trackers/overview) section. ```enableAllTrackers``` BETA | Optional | Boolean | Default value is `false`. Setting this parameter to `true` will enable detection of all the Trackers maintained for your account by the Management API.This will allow Symbl to detect all the available Trackers in a specific Conversation. Learn about this parameter [here](/docs/management-api/trackers/overview#step-2-submit-files-using-async-api-with-enablealltrackers-flag). -```enableSummary``` LABS | Optional | Boolean | Setting this parameter to `true` allows you to generate Summaries using [Summary API (Labs)](/conversation-api/summary). Ensure that you use `https://api-labs.symbl.ai` as the base URL. +```enableSummary``` ALPHA | Optional | Boolean | Setting this parameter to `true` allows you to generate Summaries using [Summary API (Labs)](/conversation-api/summary). Ensure that you use `https://api-labs.symbl.ai` as the base URL. ```enableSpeakerDiarization``` | Optional | Boolean | Whether the diarization should be enabled for this conversation. Pass this as `true` to enable Speaker Separation. To learn more, refer to the [Speaker Separation](#speaker-separation) section below. ```diarizationSpeakerCount``` | Optional | String | The number of unique speakers in this conversation. To learn more, refer to the [Speaker Separation](#speaker-separation) section below. diff --git a/docs/async-api/overview/audio/put-audio.md b/docs/async-api/overview/audio/put-audio.md index d1646847..eecc412c 100644 --- a/docs/async-api/overview/audio/put-audio.md +++ b/docs/async-api/overview/audio/put-audio.md @@ -224,7 +224,7 @@ Parameters | Required | Type | Description ``` mode``` | Optional | String | Accepts `phone` or `default`. `phone` mode is best for audio that is generated from phone call(which is typically recorded at 8khz sampling rate).
`default` mode works best for audio generated from video or online meetings(which is typically recorded at 16khz or more sampling rate).
When you don't pass this parameter `default` is selected automatically. ```trackers``` BETA | Optional | List | A `tracker` entity containing the `name` and `vocabulary` (a list of key words and/or phrases to be tracked). Read more in the [Tracker API](/docs/management-api/trackers/overview) section. ```enableAllTrackers``` BETA | Optional | Boolean | Default value is `false`. Setting this parameter to `true` will enable detection of all the Trackers maintained for your account by the Management API.This will allow Symbl to detect all the available Trackers in a specific Conversation. Learn about this parameter [here](/docs/management-api/trackers/overview#step-2-submit-files-using-async-api-with-enablealltrackers-flag). - ```enableSummary``` LABS | Optional | Boolean | Setting this parameter to `true` allows you to generate Summaries using [Summary API (Labs)](/conversation-api/summary). Ensure that you use `https://api-labs.symbl.ai` as the base URL. + ```enableSummary``` ALPHA | Optional | Boolean | Setting this parameter to `true` allows you to generate Summaries using [Summary API (Labs)](/conversation-api/summary). Ensure that you use `https://api-labs.symbl.ai` as the base URL. ```enableSpeakerDiarization``` | Optional | Boolean | Whether the diarization should be enabled for this conversation. Pass this as `true` to enable Speaker Separation. To learn more, refer to the [Speaker Separation](#speaker-separation) section below. ```diarizationSpeakerCount``` | Optional | String | The number of unique speakers in this conversation. To learn more, refer to the [Speaker Separation](#speaker-separation) section below. diff --git a/docs/async-api/overview/text/post-text.md b/docs/async-api/overview/text/post-text.md index 9610938b..90b86789 100644 --- a/docs/async-api/overview/text/post-text.md +++ b/docs/async-api/overview/text/post-text.md @@ -303,7 +303,7 @@ Field | Required | Type | Description ```messages``` | Mandatory | list | Input Messages to look for insights. [See the messages section below for more details.](#messages) ```trackers``` BETA | Optional | List | A `tracker` entity containing `name` and `vocabulary` (a list of key words and/or phrases to be tracked). Read more in the [Tracker API](/docs/management-api/trackers/overview) section. ```enableAllTrackers``` BETA | Optional | Boolean | Default value is `false`. Setting this parameter to `true` will enable detection of all the Trackers maintained for your account by the Management API. This will allow Symbl to detect all the available Trackers in a specific Conversation. Learn about this parameter [here](/docs/management-api/trackers/overview#step-2-submit-files-using-async-api-with-enablealltrackers-flag). -```enableSummary``` LABS | Optional | Boolean | Setting this parameter to `true` allows you to generate Summaries using [Summary API (Labs)](/conversation-api/summary). Ensure that you use `https://api-labs.symbl.ai` as the base URL. +```enableSummary``` ALPHA | Optional | Boolean | Setting this parameter to `true` allows you to generate Summaries using [Summary API (Labs)](/conversation-api/summary). Ensure that you use `https://api-labs.symbl.ai` as the base URL. ```webhookUrl``` | Optional | String | Webhook URL on which job updates to be sent. This should be after making the API request. See the [Webhook section](/docs/async-api/overview/text/post-text#webhookurl) for more. #### messages diff --git a/docs/async-api/overview/text/put-text.md b/docs/async-api/overview/text/put-text.md index fd51f45c..a66cf4f0 100644 --- a/docs/async-api/overview/text/put-text.md +++ b/docs/async-api/overview/text/put-text.md @@ -341,7 +341,7 @@ Field | Required | Type | Description ```detectEntities``` | Optional | Boolean | Default value is `false`. If not set the [Entities API](/docs/conversation-api/entities) will not return any entities from the conversation. ```trackers``` BETA | Optional | String | A `tracker` entity containing name and vocabulary (a list of key words and/or phrases to be tracked). Read more in the[Tracker API](/docs/management-api/trackers/overview) section. ```enableAllTrackers``` BETA | Optional | Boolean | Default value is `false`. Setting this parameter to `true` will enable detection of all the Trackers maintained for your account by the Management API.This will allow Symbl to detect all the available Trackers in a specific Conversation. Learn about this parameter [here](/docs/management-api/trackers/overview#step-2-submit-files-using-async-api-with-enablealltrackers-flag). -```enableSummary``` LABS | Optional | Boolean | Setting this parameter to `true` allows you to generate Summaries using [Summary API (Labs)](/conversation-api/summary). Ensure that you use `https://api-labs.symbl.ai` as the base URL. +```enableSummary``` ALPHA | Optional | Boolean | Setting this parameter to `true` allows you to generate Summaries using [Summary API (Labs)](/conversation-api/summary). Ensure that you use `https://api-labs.symbl.ai` as the base URL. ```webhookUrl``` | Optional | String | Webhook URL on which job updates to be sent. This should be post API. See [Webhook section](/docs/async-api/overview/text/post-text#webhookurl) below. #### messages diff --git a/docs/async-api/overview/video/post-video-url.md b/docs/async-api/overview/video/post-video-url.md index 1f50a8e9..6a2ebb7b 100644 --- a/docs/async-api/overview/video/post-video-url.md +++ b/docs/async-api/overview/video/post-video-url.md @@ -289,7 +289,7 @@ Field | Required | Type | Description ```channelMetadata```| Optional | Object[] | This object parameter contains two variables `speaker` and `channel` to specify which speaker corresponds to which channel. This object only works when `enableSeparateRecognitionPerChannel` query param is set to `true`. Read more in the [Channel Metadata](#channel-metadata) section below. ```trackers``` BETA| Optional | List | A `tracker` entity containing `name` and `vocabulary` (a list of key words and/or phrases to be tracked). Read more in the [Tracker API](/docs/management-api/trackers/overview) section. ```enableAllTrackers``` BETA | Optional | Boolean | Default value is `false`. Setting this parameter to `true` will enable detection of all the Trackers maintained for your account by the Management API.This will allow Symbl to detect all the available Trackers in a specific Conversation. Learn about this parameter [here](/docs/management-api/trackers/overview#step-2-submit-files-using-async-api-with-enablealltrackers-flag). -```enableSummary``` LABS | Optional | Boolean | Setting this parameter to `true` allows you to generate Summaries using [Summary API (Labs)](/conversation-api/summary). Ensure that you use `https://api-labs.symbl.ai` as the base URL. +```enableSummary``` ALPHA | Optional | Boolean | Setting this parameter to `true` allows you to generate Summaries using [Summary API (Labs)](/conversation-api/summary). Ensure that you use `https://api-labs.symbl.ai` as the base URL. ```enableSpeakerDiarization``` | Optional | Boolean | Whether the diarization should be enabled for this conversation. Pass this as `true` to enable Speaker Separation. To learn more, refer to the [Speaker Separation](#speaker-separation) section below. ```diarizationSpeakerCount``` | Optional | String | The number of unique speakers in this conversation. To learn more, refer to the [Speaker Separation](#speaker-separation) section below. diff --git a/docs/async-api/overview/video/post-video.md b/docs/async-api/overview/video/post-video.md index 5ec191b0..7436be1b 100644 --- a/docs/async-api/overview/video/post-video.md +++ b/docs/async-api/overview/video/post-video.md @@ -197,7 +197,7 @@ Parameter | Required | Type | Description ```channelMetadata```| Optional | Object[] | This object parameter contains two variables `speaker` and `channel` to specify which speaker corresponds to which channel. This object only works when `enableSeparateRecognitionPerChannel` query param is set to `true`. Read more in the [Channel Metadata](#channel-metadata) section below. ```trackers``` BETA | Optional | List | A `tracker` entity containing `name` and `vocabulary` (a list of key words and/or phrases to be tracked). Read more in the [Tracker API](/docs/management-api/trackers/overview) section. ```enableAllTrackers``` BETA | Optional | Boolean | Default value is `false`. Setting this parameter to `true` will enable detection of all the Trackers maintained for your account by the Management API.This will allow Symbl to detect all the available Trackers in a specific Conversation. Learn about this parameter [here](/docs/management-api/trackers/overview#step-2-submit-files-using-async-api-with-enablealltrackers-flag). -```enableSummary``` LABS | Optional | Boolean | Setting this parameter to `true` allows you to generate Summaries using [Summary API (Labs)](/conversation-api/summary). Ensure that you use the base URL as `https://api-labs.symbl.ai`. +```enableSummary``` ALPHA | Optional | Boolean | Setting this parameter to `true` allows you to generate Summaries using [Summary API (Labs)](/conversation-api/summary). Ensure that you use the base URL as `https://api-labs.symbl.ai`. ```enableSpeakerDiarization``` | Optional | Boolean | Whether the diarization should be enabled for this conversation. Pass this as `true` to enable Speaker Separation. To learn more, refer to the [Speaker Separation](#speaker-separation) section below. ```diarizationSpeakerCount``` | Optional | String | The number of unique speakers in this conversation. To learn more, refer to the [Speaker Separation](#speaker-separation) section below. diff --git a/docs/async-api/overview/video/put-video-url.md b/docs/async-api/overview/video/put-video-url.md index b0e1b7f5..12783d88 100644 --- a/docs/async-api/overview/video/put-video-url.md +++ b/docs/async-api/overview/video/put-video-url.md @@ -307,7 +307,7 @@ Field | Required | Type | Description ```channelMetadata```| Optional | Object[] | This object parameter contains two variables `speaker` and `channel` to specify which speaker corresponds to which channel. This object only works when `enableSeparateRecognitionPerChannel` query param is set to `true`. Read more in the [Channel Metadata](#channel-metadata) section below. ```trackers``` BETA| Optional | List | A `tracker` entity containing `name` and `vocabulary` (a list of key words and/or phrases to be tracked). Read more in the [Tracker API](/docs/management-api/trackers/overview) section. ```enableAllTrackers``` BETA | Optional | Boolean | Default value is `false`. Setting this parameter to `true` will enable detection of all the Trackers maintained for your account by the Management API.This will allow Symbl to detect all the available Trackers in a specific Conversation. Learn about this parameter [here](/docs/management-api/trackers/overview#step-2-submit-files-using-async-api-with-enablealltrackers-flag). -```enableSummary``` LABS | Optional | Boolean | Setting this parameter to `true` allows you to generate Summaries using [Summary API (Labs)](/conversation-api/summary). Ensure that you use the base URL as `https://api-labs.symbl.ai`. +```enableSummary``` ALPHA | Optional | Boolean | Setting this parameter to `true` allows you to generate Summaries using [Summary API (Labs)](/conversation-api/summary). Ensure that you use the base URL as `https://api-labs.symbl.ai`. ```enableSpeakerDiarization``` | Optional | Boolean | Whether the diarization should be enabled for this conversation. Pass this as `true` to enable Speaker Separation. To learn more, refer to the [Speaker Separation](#speaker-separation) section below. ```diarizationSpeakerCount``` | Optional | String | The number of unique speakers in this conversation. To learn more, refer to the [Speaker Separation](#speaker-separation) section below. diff --git a/docs/async-api/overview/video/put-video.md b/docs/async-api/overview/video/put-video.md index 1f56b8b0..c560cc7a 100644 --- a/docs/async-api/overview/video/put-video.md +++ b/docs/async-api/overview/video/put-video.md @@ -214,7 +214,7 @@ Parameter | Required | Type | Description ```channelMetadata```| Optional | Object[] | This object parameter contains two variables `speaker` and `channel` to specify which speaker corresponds to which channel. This object only works when `enableSeparateRecognitionPerChannel` query param is set to `true`. Read more in the [Channel Metadata](#channel-metadata) section below. ```trackers``` BETA | Optional | List | A `tracker` entity containing `name` and `vocabulary` (a list of key words and/or phrases to be tracked). Read more in the [Tracker API](/docs/management-api/trackers/overview) section. ```enableAllTrackers``` BETA | Optional | Boolean | Default value is `false`. Setting this parameter to `true` will enable detection of all the Trackers maintained for your account by the Management API.This will allow Symbl to detect all the available Trackers in a specific Conversation. Learn about this parameter [here](/docs/management-api/trackers/overview#step-2-submit-files-using-async-api-with-enablealltrackers-flag). -```enableSummary``` LABS | Optional | Boolean | Setting this parameter to `true` allows you to generate Summaries using [Summary API (Labs)](/conversation-api/summary). Ensure that you use the base URL as `https://api-labs.symbl.ai`. +```enableSummary``` ALPHA | Optional | Boolean | Setting this parameter to `true` allows you to generate Summaries using [Summary API (Labs)](/conversation-api/summary). Ensure that you use the base URL as `https://api-labs.symbl.ai`. ```enableSpeakerDiarization``` | Optional | Boolean | Whether the diarization should be enabled for this conversation. Pass this as `true` to enable Speaker Separation. To learn more, refer to the [Speaker Separation](#speaker-separation) section below. ```diarizationSpeakerCount``` | Optional | String | The number of unique speakers in this conversation. To learn more, refer to the [Speaker Separation](#speaker-separation) section below. From 70e0bda7d724c3e4faebd81e9ace6f2982b379bd Mon Sep 17 00:00:00 2001 From: harshal kaigaonkar <65395607+harshalkaigaonkar@users.noreply.github.com> Date: Thu, 10 Mar 2022 15:29:09 +0530 Subject: [PATCH 06/43] Added forward slash to every redirect from Top and Navbar. (DC-307) (#422) * DC-307 * added forward slash for every slug of the file --- docs/api-reference/get-abstract-topics.md | 2 +- .../getting-conversation-intelligence.md | 2 +- docs/api-reference/getting-started.md | 2 +- docs/async-api/introduction.md | 2 +- .../generate-pre-built-ui-from-video-recordings.md | 2 +- docs/async-api/tutorials/get-sentiment-on-topics.md | 2 +- docs/changelog.md | 2 +- docs/conversation-api/api-reference/action-items.md | 2 +- .../api-reference/all-conversations.md | 2 +- docs/conversation-api/api-reference/analytics.md | 2 +- .../api-reference/comprehensive-action-items.md | 2 +- docs/conversation-api/api-reference/conversation.md | 2 +- docs/conversation-api/api-reference/delete.md | 2 +- docs/conversation-api/api-reference/entities.md | 2 +- docs/conversation-api/api-reference/follow-ups.md | 2 +- docs/conversation-api/api-reference/insights.md | 2 +- docs/conversation-api/api-reference/members.md | 2 +- docs/conversation-api/api-reference/messages.md | 2 +- .../api-reference/put-all-conversation.md | 2 +- docs/conversation-api/api-reference/questions.md | 2 +- docs/conversation-api/api-reference/speakers.md | 2 +- docs/conversation-api/api-reference/summary.md | 2 +- docs/conversation-api/api-reference/topics.md | 2 +- docs/conversation-api/api-reference/trackers.md | 2 +- docs/conversation-api/api-reference/transcript.md | 2 +- .../conversation-api/api-reference/update-members.md | 2 +- docs/conversation-api/concepts/action-items.md | 2 +- docs/conversation-api/concepts/analytics.md | 2 +- .../concepts/comprehensive-action-items.md | 2 +- .../conversation-api/concepts/conversation-groups.md | 2 +- docs/conversation-api/concepts/follow-ups.md | 2 +- docs/conversation-api/concepts/questions.md | 2 +- docs/conversation-api/concepts/redacting-pii.md | 2 +- docs/conversation-api/concepts/sentiment.md | 2 +- docs/conversation-api/concepts/speech-to-text.md | 2 +- docs/conversation-api/concepts/summarization.md | 2 +- docs/conversation-api/concepts/summary-topic.md | 2 +- docs/conversation-api/concepts/topic-hierarchy.md | 2 +- docs/conversation-api/concepts/trackers.md | 2 +- docs/getting-started-with-async-api.md | 2 +- docs/getting-started-with-streaming-api.md | 2 +- docs/getting-started-with-telephony-api.md | 2 +- docs/guides.md | 2 +- docs/how-tos/get-sentiment-analysis.md | 2 +- docs/integrations/agora-sdk-plugin.md | 2 +- docs/integrations/integrations-intro.md | 2 +- .../javascript-sdk/overview/active-speaker-events.md | 2 +- docs/javascript-sdk/overview/connect-to-endpoints.md | 2 +- docs/javascript-sdk/overview/introduction.md | 2 +- .../overview/streaming-audio-real-time.md | 2 +- docs/javascript-sdk/overview/subscribe-real-time.md | 2 +- docs/javascript-sdk/reference/reference.md | 2 +- .../code-snippets/set-language-using-sdk.md | 2 +- .../set-language-and-timezone-telephony.md | 2 +- .../tutorials/push-audio-get-realtime-data.md | 2 +- docs/labs.md | 2 +- .../conversation-groups/conversation-groups-intro.md | 2 +- .../create-conversation-groups.md | 2 +- .../delete-conversation-groups.md | 2 +- .../conversation-groups/get-conversation-groups.md | 2 +- .../update-conversation-groups.md | 2 +- docs/management-api/introduction.md | 2 +- docs/management-api/trackers/create-tracker.md | 2 +- docs/management-api/trackers/delete-tracker.md | 2 +- docs/management-api/trackers/get-tracker.md | 2 +- docs/management-api/trackers/overview.md | 2 +- docs/management-api/trackers/update-tracker.md | 2 +- docs/pre-built-ui/summary-ui.md | 2 +- docs/pre-built-ui/supported-tracking-events.md | 2 +- docs/pre-built-ui/user-engagement-analytics.md | 2 +- docs/product-releases.md | 2 +- docs/python-sdk/async-audio.md | 2 +- docs/python-sdk/async-text.md | 2 +- docs/python-sdk/async-video.md | 2 +- docs/python-sdk/conversation-api.md | 2 +- docs/python-sdk/overview.md | 2 +- docs/python-sdk/python-sdk-reference.md | 2 +- docs/python-sdk/streaming-api.md | 2 +- docs/python-sdk/telephony-api.md | 2 +- docs/python-sdk/telephony-sip.md | 2 +- docs/sdk-intro.md | 2 +- .../consume-trackers-with-streaming-api.md | 2 +- .../start-and-stop-streaming-api-connection.md | 2 +- docs/streamingapi/concepts.md | 2 +- docs/streamingapi/introduction.md | 2 +- docs/streamingapi/reference/reference.md | 2 +- .../tutorials/get-real-time-sentiment-analysis.md | 2 +- .../tutorials/get-realtime-transcription.md | 2 +- docs/subscribe-api.md | 2 +- docs/support.md | 2 +- docs/telephony/concepts/concepts.md | 2 +- docs/telephony/introduction.md | 2 +- docs/telephony/reference/reference.md | 2 +- .../tutorials/connect-to-zoom-with-telephony-api.md | 2 +- .../get-live-transcription-telephony-api.md | 2 +- docs/tutorials.md | 2 +- docs/tutorials/summarization/adding-speaker-info.md | 2 +- docs/tutorials/summarization/getting-summary.md | 2 +- docs/tutorials/summarization/refreshing-summary.md | 2 +- docs/what-is-symbl.md | 2 +- docusaurus-staging.config.js | 12 ++++++------ docusaurus.config.js | 12 ++++++------ 102 files changed, 112 insertions(+), 112 deletions(-) diff --git a/docs/api-reference/get-abstract-topics.md b/docs/api-reference/get-abstract-topics.md index 604df402..ac0bd9fb 100644 --- a/docs/api-reference/get-abstract-topics.md +++ b/docs/api-reference/get-abstract-topics.md @@ -2,7 +2,7 @@ id: get-abstract-topics title: GET Abstract Topics (Labs) sidebar_label: GET Abstract Topics (Labs) -slug: /api-reference/abstract-topics +slug: /api-reference/abstract-topics/ --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/api-reference/getting-conversation-intelligence.md b/docs/api-reference/getting-conversation-intelligence.md index cdbbb2de..05c7482a 100644 --- a/docs/api-reference/getting-conversation-intelligence.md +++ b/docs/api-reference/getting-conversation-intelligence.md @@ -2,7 +2,7 @@ id: getting-conversation-intelligence title: Getting Started sidebar_label: Getting Started -slug: /api-reference/getting-conversation-intelligence +slug: /api-reference/getting-conversation-intelligence/ --- --- diff --git a/docs/api-reference/getting-started.md b/docs/api-reference/getting-started.md index e2cb5d8c..cc5cb5aa 100644 --- a/docs/api-reference/getting-started.md +++ b/docs/api-reference/getting-started.md @@ -2,7 +2,7 @@ id: api-getting-started title: Symbl APIs sidebar_label: Introduction -slug: /api-reference/getting-started +slug: /api-reference/getting-started/ --- --- diff --git a/docs/async-api/introduction.md b/docs/async-api/introduction.md index 9d82e45d..d4f67630 100644 --- a/docs/async-api/introduction.md +++ b/docs/async-api/introduction.md @@ -3,7 +3,7 @@ id: introduction title: Async API Documentation description: Symbl.ai Async APIs provides a REST interface for submitting any recorded or saved conversations for transcription. Check out our Async APIs documentation to get started. sidebar_label: Introduction -slug: /async-api/introduction +slug: /async-api/introduction/ --- --- diff --git a/docs/async-api/tutorials/generate-pre-built-ui-from-video-recordings.md b/docs/async-api/tutorials/generate-pre-built-ui-from-video-recordings.md index 1bf2c7e1..0eac811b 100644 --- a/docs/async-api/tutorials/generate-pre-built-ui-from-video-recordings.md +++ b/docs/async-api/tutorials/generate-pre-built-ui-from-video-recordings.md @@ -1,7 +1,7 @@ --- id: generate-pre-built-ui-from-video-recordings title: Generate a Pre-built UI From Video Recordings -slug: /async-api/code-snippets/generate-pre-built-ui-from-video-recordings +slug: /async-api/code-snippets/generate-pre-built-ui-from-video-recordings/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/async-api/tutorials/get-sentiment-on-topics.md b/docs/async-api/tutorials/get-sentiment-on-topics.md index 0ec5003f..ba0fc758 100644 --- a/docs/async-api/tutorials/get-sentiment-on-topics.md +++ b/docs/async-api/tutorials/get-sentiment-on-topics.md @@ -2,7 +2,7 @@ id: get-sentiment-analysis-on-topics title: Get Sentiment Analysis on Topics sidebar_label: Get Sentiment Analysis on Topics -slug: /tutorials/get-sentiment-analysis-on-topics +slug: /tutorials/get-sentiment-analysis-on-topics/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/changelog.md b/docs/changelog.md index b57c65b8..e39bb789 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -2,7 +2,7 @@ id: changelog title: Changelog sidebar_label: Changelog -slug: /changelog +slug: /changelog/ --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/conversation-api/api-reference/action-items.md b/docs/conversation-api/api-reference/action-items.md index b1cd7569..e85a6972 100644 --- a/docs/conversation-api/api-reference/action-items.md +++ b/docs/conversation-api/api-reference/action-items.md @@ -2,7 +2,7 @@ id: action-items title: GET Action Items sidebar_label: GET Action Items -slug: /conversation-api/action-items +slug: /conversation-api/action-items/ --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/conversation-api/api-reference/all-conversations.md b/docs/conversation-api/api-reference/all-conversations.md index a0bfddbd..5668f0f8 100644 --- a/docs/conversation-api/api-reference/all-conversations.md +++ b/docs/conversation-api/api-reference/all-conversations.md @@ -2,7 +2,7 @@ id: all-conversations title: GET All Conversations sidebar_label: GET All Conversations -slug: /conversation-api/all-conversations +slug: /conversation-api/all-conversations/ --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/conversation-api/api-reference/analytics.md b/docs/conversation-api/api-reference/analytics.md index 84d44545..6bdc8956 100644 --- a/docs/conversation-api/api-reference/analytics.md +++ b/docs/conversation-api/api-reference/analytics.md @@ -2,7 +2,7 @@ id: analytics title: GET Analytics sidebar_label: GET Analytics -slug: /conversation-api/analytics +slug: /conversation-api/analytics/ --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/conversation-api/api-reference/comprehensive-action-items.md b/docs/conversation-api/api-reference/comprehensive-action-items.md index 2e6fe155..08120999 100644 --- a/docs/conversation-api/api-reference/comprehensive-action-items.md +++ b/docs/conversation-api/api-reference/comprehensive-action-items.md @@ -2,7 +2,7 @@ id: comprehensive-action-items title: GET Comprehensive Action Items sidebar_label: GET Comprehensive Action Items -slug: /conversation-api/comprehensive-action-items +slug: /conversation-api/comprehensive-action-items/ --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/conversation-api/api-reference/conversation.md b/docs/conversation-api/api-reference/conversation.md index 54824d3a..0740acdc 100644 --- a/docs/conversation-api/api-reference/conversation.md +++ b/docs/conversation-api/api-reference/conversation.md @@ -2,7 +2,7 @@ id: conversation title: GET Conversation Data sidebar_label: GET Conversation Data -slug: /conversation-api/conversation-data +slug: /conversation-api/conversation-data/ --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/conversation-api/api-reference/delete.md b/docs/conversation-api/api-reference/delete.md index 4c928ca7..6c8c3a6b 100644 --- a/docs/conversation-api/api-reference/delete.md +++ b/docs/conversation-api/api-reference/delete.md @@ -1,7 +1,7 @@ --- id: delete title: DELETE Conversation -slug: /conversation-api/delete-conversation +slug: /conversation-api/delete-conversation/ --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/conversation-api/api-reference/entities.md b/docs/conversation-api/api-reference/entities.md index 53e1a575..473b6235 100644 --- a/docs/conversation-api/api-reference/entities.md +++ b/docs/conversation-api/api-reference/entities.md @@ -2,7 +2,7 @@ id: entities title: GET Entities sidebar_label: GET Entities -slug: /conversation-api/entities +slug: /conversation-api/entities/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/conversation-api/api-reference/follow-ups.md b/docs/conversation-api/api-reference/follow-ups.md index d0c0f685..bd03cd70 100644 --- a/docs/conversation-api/api-reference/follow-ups.md +++ b/docs/conversation-api/api-reference/follow-ups.md @@ -2,7 +2,7 @@ id: follow-ups title: GET Follow-Ups sidebar_label: GET Follow-Ups -slug: /conversation-api/follow-ups +slug: /conversation-api/follow-ups/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/conversation-api/api-reference/insights.md b/docs/conversation-api/api-reference/insights.md index 7afdd20a..5093ab87 100644 --- a/docs/conversation-api/api-reference/insights.md +++ b/docs/conversation-api/api-reference/insights.md @@ -2,7 +2,7 @@ id: insights title: GET Insights sidebar_label: GET Insights -slug: /conversation-api/insights +slug: /conversation-api/insights/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/conversation-api/api-reference/members.md b/docs/conversation-api/api-reference/members.md index 4e3b47c4..e53ed7cf 100644 --- a/docs/conversation-api/api-reference/members.md +++ b/docs/conversation-api/api-reference/members.md @@ -2,7 +2,7 @@ id: members title: GET Member Information sidebar_label: GET Member Information -slug: /conversation-api/members +slug: /conversation-api/members/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/conversation-api/api-reference/messages.md b/docs/conversation-api/api-reference/messages.md index 837d5be0..55fb32da 100644 --- a/docs/conversation-api/api-reference/messages.md +++ b/docs/conversation-api/api-reference/messages.md @@ -2,7 +2,7 @@ id: messages title: GET Speech to Text sidebar_label: GET Speech to Text -slug: /conversation-api/messages +slug: /conversation-api/messages/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/conversation-api/api-reference/put-all-conversation.md b/docs/conversation-api/api-reference/put-all-conversation.md index f772ede6..ba53d349 100644 --- a/docs/conversation-api/api-reference/put-all-conversation.md +++ b/docs/conversation-api/api-reference/put-all-conversation.md @@ -2,7 +2,7 @@ id: put-all-conversations title: PUT Conversations sidebar_label: PUT Conversations -slug: /conversation-api/put-all-conversations +slug: /conversation-api/put-all-conversations/ --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/conversation-api/api-reference/questions.md b/docs/conversation-api/api-reference/questions.md index eddebb86..49bbbd5e 100644 --- a/docs/conversation-api/api-reference/questions.md +++ b/docs/conversation-api/api-reference/questions.md @@ -2,7 +2,7 @@ id: questions title: GET Questions sidebar_label: GET Questions -slug: /conversation-api/questions +slug: /conversation-api/questions/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/conversation-api/api-reference/speakers.md b/docs/conversation-api/api-reference/speakers.md index 8157e3b8..bdf7d1f8 100644 --- a/docs/conversation-api/api-reference/speakers.md +++ b/docs/conversation-api/api-reference/speakers.md @@ -2,7 +2,7 @@ id: speakers title: PUT Speaker Events sidebar_label: PUT Speaker Events -slug: /conversation-api/speaker-events +slug: /conversation-api/speaker-events/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/conversation-api/api-reference/summary.md b/docs/conversation-api/api-reference/summary.md index 9c233236..69f3bc85 100644 --- a/docs/conversation-api/api-reference/summary.md +++ b/docs/conversation-api/api-reference/summary.md @@ -2,7 +2,7 @@ id: summary title: GET Summary sidebar_label: GET Summary (Alpha) -slug: /conversation-api/summary +slug: /conversation-api/summary/ --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/conversation-api/api-reference/topics.md b/docs/conversation-api/api-reference/topics.md index 62a10ae1..f14bf171 100644 --- a/docs/conversation-api/api-reference/topics.md +++ b/docs/conversation-api/api-reference/topics.md @@ -2,7 +2,7 @@ id: topics title: GET Topics sidebar_label: GET Topics -slug: /conversation-api/get-topics +slug: /conversation-api/get-topics/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/conversation-api/api-reference/trackers.md b/docs/conversation-api/api-reference/trackers.md index 11a619b4..5febece3 100644 --- a/docs/conversation-api/api-reference/trackers.md +++ b/docs/conversation-api/api-reference/trackers.md @@ -2,7 +2,7 @@ id: trackers title: GET Trackers-detected (Beta) sidebar_label: GET Trackers-detected (Beta) -slug: /conversation-api/trackers +slug: /conversation-api/trackers/ --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/conversation-api/api-reference/transcript.md b/docs/conversation-api/api-reference/transcript.md index 973576f8..4a510a82 100644 --- a/docs/conversation-api/api-reference/transcript.md +++ b/docs/conversation-api/api-reference/transcript.md @@ -2,7 +2,7 @@ id: transcript title: POST Formatted Transcript sidebar_label: POST Formatted Transcript -slug: /conversation-api/transcript +slug: /conversation-api/transcript/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/conversation-api/api-reference/update-members.md b/docs/conversation-api/api-reference/update-members.md index 33bf024f..547f5ef7 100644 --- a/docs/conversation-api/api-reference/update-members.md +++ b/docs/conversation-api/api-reference/update-members.md @@ -2,7 +2,7 @@ id: update-members title: PUT Members Information sidebar_label: PUT Members Information -slug: /conversation-api/update-members +slug: /conversation-api/update-members/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/conversation-api/concepts/action-items.md b/docs/conversation-api/concepts/action-items.md index 23a2a0bb..c8bbf664 100644 --- a/docs/conversation-api/concepts/action-items.md +++ b/docs/conversation-api/concepts/action-items.md @@ -2,7 +2,7 @@ id: action-items title: Action Items sidebar_label: Action Items -slug: /concepts/action-items +slug: /concepts/action-items/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/conversation-api/concepts/analytics.md b/docs/conversation-api/concepts/analytics.md index b4f2059c..964b7e57 100644 --- a/docs/conversation-api/concepts/analytics.md +++ b/docs/conversation-api/concepts/analytics.md @@ -2,7 +2,7 @@ id: analytics title: Conversational Analytics sidebar_label: Introduction -slug: /concepts/conversational-analytics +slug: /concepts/conversational-analytics/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/conversation-api/concepts/comprehensive-action-items.md b/docs/conversation-api/concepts/comprehensive-action-items.md index 2ea4a46b..d589fea7 100644 --- a/docs/conversation-api/concepts/comprehensive-action-items.md +++ b/docs/conversation-api/concepts/comprehensive-action-items.md @@ -2,7 +2,7 @@ id: comprehensive-action-items title: Comprehensive Action Items (Labs) sidebar_label: Introduction -slug: /concepts/comprehensive-action-items +slug: /concepts/comprehensive-action-items/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/conversation-api/concepts/conversation-groups.md b/docs/conversation-api/concepts/conversation-groups.md index 51266ca7..e1524d15 100644 --- a/docs/conversation-api/concepts/conversation-groups.md +++ b/docs/conversation-api/concepts/conversation-groups.md @@ -2,7 +2,7 @@ id: conversation-groups title: Conversation Groups (Beta) sidebar_label: Introduction -slug: /concepts/conversation-groups +slug: /concepts/conversation-groups/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/conversation-api/concepts/follow-ups.md b/docs/conversation-api/concepts/follow-ups.md index 82829193..56ea29c9 100644 --- a/docs/conversation-api/concepts/follow-ups.md +++ b/docs/conversation-api/concepts/follow-ups.md @@ -2,7 +2,7 @@ id: follow-ups title: Follow Ups sidebar_label: Follow Ups -slug: /concepts/follow-ups +slug: /concepts/follow-ups/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/conversation-api/concepts/questions.md b/docs/conversation-api/concepts/questions.md index 8a6d8fca..0b61088c 100644 --- a/docs/conversation-api/concepts/questions.md +++ b/docs/conversation-api/concepts/questions.md @@ -2,7 +2,7 @@ id: questions title: Questions sidebar_label: Introduction -slug: /concepts/questions +slug: /concepts/questions/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/conversation-api/concepts/redacting-pii.md b/docs/conversation-api/concepts/redacting-pii.md index 815bdb7f..c2307fe8 100644 --- a/docs/conversation-api/concepts/redacting-pii.md +++ b/docs/conversation-api/concepts/redacting-pii.md @@ -2,7 +2,7 @@ id: redaction-pii title: Identifying and Redacting PII and PCI Data sidebar_label: PII and PCI Identification and Redaction -slug: /concepts/redaction-pii +slug: /concepts/redaction-pii/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/conversation-api/concepts/sentiment.md b/docs/conversation-api/concepts/sentiment.md index 9c523775..6e0e1ee4 100644 --- a/docs/conversation-api/concepts/sentiment.md +++ b/docs/conversation-api/concepts/sentiment.md @@ -3,7 +3,7 @@ id: sentiment title: Sentiment API- Analysing Texts in Real-time (Beta) sidebar_label: Introduction description: Sentiment API enables developers to detect positive or negative sentiment from conversations in real-time. Learn more. -slug: /concepts/sentiment-analysis +slug: /concepts/sentiment-analysis/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/conversation-api/concepts/speech-to-text.md b/docs/conversation-api/concepts/speech-to-text.md index 66e980df..6f6263ac 100644 --- a/docs/conversation-api/concepts/speech-to-text.md +++ b/docs/conversation-api/concepts/speech-to-text.md @@ -3,7 +3,7 @@ id: speech-to-text title: Transcribe Speech-to-Text in Real-Time description: Get real-time speech-to-text data and analytics from your conversations with Symbl.ai APIs. Learn more. sidebar_label: Introduction -slug: /concepts/speech-to-text +slug: /concepts/speech-to-text/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/conversation-api/concepts/summarization.md b/docs/conversation-api/concepts/summarization.md index 30822778..ad62ebc6 100644 --- a/docs/conversation-api/concepts/summarization.md +++ b/docs/conversation-api/concepts/summarization.md @@ -3,7 +3,7 @@ id: summarization title: Summarization API- Capturing Key Points (Alpha) description: Use Symbl.ai’s summarization API to capture key points in a conversation and create succinct summaries. Learn more. sidebar_label: Introduction -slug: /concepts/summarization +slug: /concepts/summarization/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/conversation-api/concepts/summary-topic.md b/docs/conversation-api/concepts/summary-topic.md index 5cc5cd34..e3b19353 100644 --- a/docs/conversation-api/concepts/summary-topic.md +++ b/docs/conversation-api/concepts/summary-topic.md @@ -3,7 +3,7 @@ id: topics title: Topics API- Extracting Relevant Topics description: Automatically identify and extract topics from conversations with Symbl.ai's Topic API. sidebar_label: Introduction -slug: /concepts/topics +slug: /concepts/topics/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/conversation-api/concepts/topic-hierarchy.md b/docs/conversation-api/concepts/topic-hierarchy.md index fdbde1ea..1bd6d17e 100644 --- a/docs/conversation-api/concepts/topic-hierarchy.md +++ b/docs/conversation-api/concepts/topic-hierarchy.md @@ -2,7 +2,7 @@ id: topic-hierarchy title: Topic Hierarchy (Beta) sidebar_label: Introduction -slug: /concepts/topic-hierarchy +slug: /concepts/topic-hierarchy/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/conversation-api/concepts/trackers.md b/docs/conversation-api/concepts/trackers.md index 84ba93b4..8be11abd 100644 --- a/docs/conversation-api/concepts/trackers.md +++ b/docs/conversation-api/concepts/trackers.md @@ -2,7 +2,7 @@ id: trackers title: Trackers (Beta) sidebar_label: Introduction -slug: /concepts/trackers +slug: /concepts/trackers/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/getting-started-with-async-api.md b/docs/getting-started-with-async-api.md index 50eb5013..c8dfc5c2 100644 --- a/docs/getting-started-with-async-api.md +++ b/docs/getting-started-with-async-api.md @@ -1,7 +1,7 @@ --- id: getting-started-with-async-api title: Getting started with Async API -slug: /getting-started-with-async-api +slug: /getting-started-with-async-api/ show_sidebar: true --- import Tabs from '@theme/Tabs'; diff --git a/docs/getting-started-with-streaming-api.md b/docs/getting-started-with-streaming-api.md index 04b8d94c..8d77f69b 100644 --- a/docs/getting-started-with-streaming-api.md +++ b/docs/getting-started-with-streaming-api.md @@ -1,7 +1,7 @@ --- id: getting-started-with-streaming-api title: Getting started with Streaming API -slug: /getting-started-with-streaming-api +slug: /getting-started-with-streaming-api/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/getting-started-with-telephony-api.md b/docs/getting-started-with-telephony-api.md index ed91986d..bb517f8d 100644 --- a/docs/getting-started-with-telephony-api.md +++ b/docs/getting-started-with-telephony-api.md @@ -1,7 +1,7 @@ --- id: process-your-first-conversation title: Getting started with Telephony API -slug: /getting-started-with-telephony-api +slug: /getting-started-with-telephony-api/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/guides.md b/docs/guides.md index 43a63bea..0947511d 100644 --- a/docs/guides.md +++ b/docs/guides.md @@ -2,7 +2,7 @@ id: guides-intro title: Guides sidebar_label: Getting Started -slug: /guides +slug: /guides/ --- --- diff --git a/docs/how-tos/get-sentiment-analysis.md b/docs/how-tos/get-sentiment-analysis.md index 5b0c52db..510ac3b3 100644 --- a/docs/how-tos/get-sentiment-analysis.md +++ b/docs/how-tos/get-sentiment-analysis.md @@ -2,7 +2,7 @@ id: how-to-get-sentiment-analysis title: Getting Sentiment Analysis (Beta) sidebar_label: Real-time Sentiment Analysis -slug: /how-tos/get-sentiment-analysis +slug: /how-tos/get-sentiment-analysis/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/integrations/agora-sdk-plugin.md b/docs/integrations/agora-sdk-plugin.md index ffa65ca2..3ffb5732 100644 --- a/docs/integrations/agora-sdk-plugin.md +++ b/docs/integrations/agora-sdk-plugin.md @@ -1,7 +1,7 @@ --- id: agora-sdk-plugin title: Symbl-Agora Marketplace Extension -slug: /integrations/agora-sdk-plugin +slug: /integrations/agora-sdk-plugin/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/integrations/integrations-intro.md b/docs/integrations/integrations-intro.md index a2f9566e..c1b0d790 100644 --- a/docs/integrations/integrations-intro.md +++ b/docs/integrations/integrations-intro.md @@ -1,7 +1,7 @@ --- id: integrations-intro title: Integrations -slug: /integrations/integrations-intro +slug: /integrations/integrations-intro/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/javascript-sdk/overview/active-speaker-events.md b/docs/javascript-sdk/overview/active-speaker-events.md index 0e723996..5f491f1d 100644 --- a/docs/javascript-sdk/overview/active-speaker-events.md +++ b/docs/javascript-sdk/overview/active-speaker-events.md @@ -2,7 +2,7 @@ id: active-speaker-events title: Active Speaker Events sidebar_label: Active Speaker Events -slug: /javascript-sdk/code-snippets/active-speaker-events +slug: /javascript-sdk/code-snippets/active-speaker-events/ --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/javascript-sdk/overview/connect-to-endpoints.md b/docs/javascript-sdk/overview/connect-to-endpoints.md index 2a856dba..0ea329b2 100644 --- a/docs/javascript-sdk/overview/connect-to-endpoints.md +++ b/docs/javascript-sdk/overview/connect-to-endpoints.md @@ -2,7 +2,7 @@ id: connect-to-endpoints title: Connect to Endpoints sidebar_label: Connect to Endpoints -slug: /javascript-sdk/code-snippets/connect-to-endpoints +slug: /javascript-sdk/code-snippets/connect-to-endpoints/ --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/javascript-sdk/overview/introduction.md b/docs/javascript-sdk/overview/introduction.md index 6446c2e3..c389a70f 100644 --- a/docs/javascript-sdk/overview/introduction.md +++ b/docs/javascript-sdk/overview/introduction.md @@ -2,7 +2,7 @@ id: introduction title: Symbl SDK (Node.js) sidebar_label: Introduction -slug: /javascript-sdk/introduction +slug: /javascript-sdk/introduction/ --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/javascript-sdk/overview/streaming-audio-real-time.md b/docs/javascript-sdk/overview/streaming-audio-real-time.md index 0900c149..c6f914d4 100644 --- a/docs/javascript-sdk/overview/streaming-audio-real-time.md +++ b/docs/javascript-sdk/overview/streaming-audio-real-time.md @@ -2,7 +2,7 @@ id: streaming-audio-real-time title: Streaming Audio in real-time sidebar_label: Streaming Audio in real-time -slug: /javascript-sdk/code-snippets/streaming-audio-real-time +slug: /javascript-sdk/code-snippets/streaming-audio-real-time/ --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/javascript-sdk/overview/subscribe-real-time.md b/docs/javascript-sdk/overview/subscribe-real-time.md index fbb7bba6..61ba5e3a 100644 --- a/docs/javascript-sdk/overview/subscribe-real-time.md +++ b/docs/javascript-sdk/overview/subscribe-real-time.md @@ -2,7 +2,7 @@ id: subscribe-real-time title: Subscribe to real-time Events sidebar_label: Subscribe to real-time Events -slug: /javascript-sdk/code-snippets/subscribe-real-time +slug: /javascript-sdk/code-snippets/subscribe-real-time/ --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/javascript-sdk/reference/reference.md b/docs/javascript-sdk/reference/reference.md index f353d5f6..e8d3c9cb 100644 --- a/docs/javascript-sdk/reference/reference.md +++ b/docs/javascript-sdk/reference/reference.md @@ -1,7 +1,7 @@ --- id: api-reference title: Javascript SDK Reference -slug: /javascript-sdk/reference +slug: /javascript-sdk/reference/ --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/javascript-sdk/streaming/code-snippets/set-language-using-sdk.md b/docs/javascript-sdk/streaming/code-snippets/set-language-using-sdk.md index 5d5038b9..f46b9a6a 100644 --- a/docs/javascript-sdk/streaming/code-snippets/set-language-using-sdk.md +++ b/docs/javascript-sdk/streaming/code-snippets/set-language-using-sdk.md @@ -1,7 +1,7 @@ --- id: use-languages-with-sdk title: Set Language When Connecting To A Web Socket -slug: /javascript-sdk/code-snippets/use-languages-with-sdk +slug: /javascript-sdk/code-snippets/use-languages-with-sdk/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/javascript-sdk/telephony/code-snippets/set-language-and-timezone-telephony.md b/docs/javascript-sdk/telephony/code-snippets/set-language-and-timezone-telephony.md index 67cd49be..f49ee2b3 100644 --- a/docs/javascript-sdk/telephony/code-snippets/set-language-and-timezone-telephony.md +++ b/docs/javascript-sdk/telephony/code-snippets/set-language-and-timezone-telephony.md @@ -1,7 +1,7 @@ --- id: use-languages-timezones-with-sdk title: Set Language and Timezone When Connecting To An Endpoint -slug: /javascript-sdk/code-snippets/use-languages-timezones-with-sdk +slug: /javascript-sdk/code-snippets/use-languages-timezones-with-sdk/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/javascript-sdk/tutorials/push-audio-get-realtime-data.md b/docs/javascript-sdk/tutorials/push-audio-get-realtime-data.md index 14ae7ee8..9ae7ce20 100644 --- a/docs/javascript-sdk/tutorials/push-audio-get-realtime-data.md +++ b/docs/javascript-sdk/tutorials/push-audio-get-realtime-data.md @@ -1,7 +1,7 @@ --- id: push-audio-get-real-time-data title: Live speech to text and AI insights on local server -slug: /javascript-sdk/tutorials/receive-ai-insights-from-your-computer +slug: /javascript-sdk/tutorials/receive-ai-insights-from-your-computer/ --- --- diff --git a/docs/labs.md b/docs/labs.md index d83ca841..63de7d51 100644 --- a/docs/labs.md +++ b/docs/labs.md @@ -2,7 +2,7 @@ id: labs-intro title: Symbl Labs sidebar_label: Symbl Labs -slug: /labs +slug: /labs/ --- --- diff --git a/docs/management-api/conversation-groups/conversation-groups-intro.md b/docs/management-api/conversation-groups/conversation-groups-intro.md index cb7c76bc..b2ff8f6a 100644 --- a/docs/management-api/conversation-groups/conversation-groups-intro.md +++ b/docs/management-api/conversation-groups/conversation-groups-intro.md @@ -2,7 +2,7 @@ id: conversation-groups-intro title: Conversation Groups (Beta) sidebar_label: Overview -slug: /management-api/conversation-groups/conversation-groups-intro +slug: /management-api/conversation-groups/conversation-groups-intro/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/management-api/conversation-groups/create-conversation-groups.md b/docs/management-api/conversation-groups/create-conversation-groups.md index d20f8e0c..d408a68a 100644 --- a/docs/management-api/conversation-groups/create-conversation-groups.md +++ b/docs/management-api/conversation-groups/create-conversation-groups.md @@ -2,7 +2,7 @@ id: create-conversation-groups title: Create Conversation Groups sidebar_label: POST Conversation Groups -slug: /management-api/conversation-groups/create-conversation-groups +slug: /management-api/conversation-groups/create-conversation-groups/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/management-api/conversation-groups/delete-conversation-groups.md b/docs/management-api/conversation-groups/delete-conversation-groups.md index e764854f..338787b3 100644 --- a/docs/management-api/conversation-groups/delete-conversation-groups.md +++ b/docs/management-api/conversation-groups/delete-conversation-groups.md @@ -2,7 +2,7 @@ id: delete-conversation-groups title: Delete Conversation Groups sidebar_label: DELETE Conversation Groups -slug: /management-api/conversation-groups/delete-conversation-groups +slug: /management-api/conversation-groups/delete-conversation-groups/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/management-api/conversation-groups/get-conversation-groups.md b/docs/management-api/conversation-groups/get-conversation-groups.md index e04049a4..6bbe1317 100644 --- a/docs/management-api/conversation-groups/get-conversation-groups.md +++ b/docs/management-api/conversation-groups/get-conversation-groups.md @@ -2,7 +2,7 @@ id: get-conversation-groups title: Get Conversation Groups sidebar_label: GET Conversation Groups -slug: /management-api/conversation-groups/get-conversation-groups +slug: /management-api/conversation-groups/get-conversation-groups/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/management-api/conversation-groups/update-conversation-groups.md b/docs/management-api/conversation-groups/update-conversation-groups.md index 0144b159..7797656f 100644 --- a/docs/management-api/conversation-groups/update-conversation-groups.md +++ b/docs/management-api/conversation-groups/update-conversation-groups.md @@ -2,7 +2,7 @@ id: update-conversation-groups title: Update Conversation Groups sidebar_label: PUT Conversation Groups -slug: /management-api/conversation-groups/put-conversation-groups +slug: /management-api/conversation-groups/put-conversation-groups/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/management-api/introduction.md b/docs/management-api/introduction.md index bbed2705..e19f3fef 100644 --- a/docs/management-api/introduction.md +++ b/docs/management-api/introduction.md @@ -2,7 +2,7 @@ id: introduction title: Management API (Beta) sidebar_label: Introduction -slug: /management-api/introduction +slug: /management-api/introduction/ --- :::note In Beta Phase This feature is in the Beta phase. If you have any questions, ideas or suggestions please reach out to us at devrelations@symbl.ai. diff --git a/docs/management-api/trackers/create-tracker.md b/docs/management-api/trackers/create-tracker.md index 94c429d7..11c190ff 100644 --- a/docs/management-api/trackers/create-tracker.md +++ b/docs/management-api/trackers/create-tracker.md @@ -2,7 +2,7 @@ id: create-tracker title: Create Trackers sidebar_label: POST Tracker -slug: /management-api/trackers/create-tracker +slug: /management-api/trackers/create-tracker/ --- --- diff --git a/docs/management-api/trackers/delete-tracker.md b/docs/management-api/trackers/delete-tracker.md index 64647818..133ac2e6 100644 --- a/docs/management-api/trackers/delete-tracker.md +++ b/docs/management-api/trackers/delete-tracker.md @@ -2,7 +2,7 @@ id: delete-tracker title: Delete Tracker sidebar_label: DELETE Tracker -slug: /management-api/trackers/delete-tracker +slug: /management-api/trackers/delete-tracker/ --- --- diff --git a/docs/management-api/trackers/get-tracker.md b/docs/management-api/trackers/get-tracker.md index dcfd4576..ef3d4630 100644 --- a/docs/management-api/trackers/get-tracker.md +++ b/docs/management-api/trackers/get-tracker.md @@ -2,7 +2,7 @@ id: get-tracker title: Get Tracker sidebar_label: GET Tracker -slug: /management-api/trackers/get-tracker +slug: /management-api/trackers/get-tracker/ --- --- diff --git a/docs/management-api/trackers/overview.md b/docs/management-api/trackers/overview.md index f77babdd..2fd23c24 100644 --- a/docs/management-api/trackers/overview.md +++ b/docs/management-api/trackers/overview.md @@ -2,7 +2,7 @@ id: trackers-overview title: Using Trackers API (Beta) sidebar_label: Overview -slug: /management-api/trackers/overview +slug: /management-api/trackers/overview/ --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/management-api/trackers/update-tracker.md b/docs/management-api/trackers/update-tracker.md index 7da8a718..5ec5b219 100644 --- a/docs/management-api/trackers/update-tracker.md +++ b/docs/management-api/trackers/update-tracker.md @@ -2,7 +2,7 @@ id: update-tracker title: Update Tracker sidebar_label: PUT Tracker -slug: /management-api/trackers/update-tracker +slug: /management-api/trackers/update-tracker/ --- ---- diff --git a/docs/pre-built-ui/summary-ui.md b/docs/pre-built-ui/summary-ui.md index 7f29cddb..c82cf0df 100644 --- a/docs/pre-built-ui/summary-ui.md +++ b/docs/pre-built-ui/summary-ui.md @@ -2,7 +2,7 @@ id: text-summary-ui title: Summary UI sidebar_label: Summary UI -slug: /pre-built-ui/summary-ui +slug: /pre-built-ui/summary-ui/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/pre-built-ui/supported-tracking-events.md b/docs/pre-built-ui/supported-tracking-events.md index 593de83d..ac4e2cf5 100644 --- a/docs/pre-built-ui/supported-tracking-events.md +++ b/docs/pre-built-ui/supported-tracking-events.md @@ -2,7 +2,7 @@ id: supported-tracking-events title: Supported Tracking Events sidebar_label: Supported Tracking Events -slug: /pre-built-ui/supported-tracking-events +slug: /pre-built-ui/supported-tracking-events/ --- diff --git a/docs/pre-built-ui/user-engagement-analytics.md b/docs/pre-built-ui/user-engagement-analytics.md index 92ee6606..52ea4061 100644 --- a/docs/pre-built-ui/user-engagement-analytics.md +++ b/docs/pre-built-ui/user-engagement-analytics.md @@ -2,7 +2,7 @@ id: user-engagement-analytics title: User Engagement Analytics sidebar_label: Getting Engagement Analytics -slug: /pre-built-ui/user-engagement-analytics +slug: /pre-built-ui/user-engagement-analytics/ --- diff --git a/docs/product-releases.md b/docs/product-releases.md index 671740be..d90e18d5 100644 --- a/docs/product-releases.md +++ b/docs/product-releases.md @@ -2,7 +2,7 @@ id: product-releases title: Symbl Product Releases sidebar_label: Get Summary using Async API -slug: /product-releases +slug: /product-releases/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/python-sdk/async-audio.md b/docs/python-sdk/async-audio.md index 5818b8bc..6e821880 100644 --- a/docs/python-sdk/async-audio.md +++ b/docs/python-sdk/async-audio.md @@ -2,7 +2,7 @@ id: python-sdk-async-audio title: Async Audio API sidebar_label: Audio API -slug: /python-sdk/async-audio +slug: /python-sdk/async-audio/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/python-sdk/async-text.md b/docs/python-sdk/async-text.md index 53d270df..ed468b37 100644 --- a/docs/python-sdk/async-text.md +++ b/docs/python-sdk/async-text.md @@ -2,7 +2,7 @@ id: python-sdk-async-api title: Async Text API sidebar_label: Text API -slug: /python-sdk/async-api +slug: /python-sdk/async-api/ --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/python-sdk/async-video.md b/docs/python-sdk/async-video.md index 6cc04ab7..9d10b6b1 100644 --- a/docs/python-sdk/async-video.md +++ b/docs/python-sdk/async-video.md @@ -2,7 +2,7 @@ id: python-sdk-async-video title: Async Video API sidebar_label: Video API -slug: /python-sdk/async-video +slug: /python-sdk/async-video/ --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/python-sdk/conversation-api.md b/docs/python-sdk/conversation-api.md index 65ada259..eed3d140 100644 --- a/docs/python-sdk/conversation-api.md +++ b/docs/python-sdk/conversation-api.md @@ -2,7 +2,7 @@ id: python-conversation-api title: Conversation API sidebar_label: Conversation API -slug: /python-sdk/conversation-api +slug: /python-sdk/conversation-api/ --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/python-sdk/overview.md b/docs/python-sdk/overview.md index 30f55f53..599a6c80 100644 --- a/docs/python-sdk/overview.md +++ b/docs/python-sdk/overview.md @@ -2,7 +2,7 @@ id: python-sdk title: Symbl Python SDK sidebar_label: Introduction -slug: /python-sdk/overview +slug: /python-sdk/overview/ --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/python-sdk/python-sdk-reference.md b/docs/python-sdk/python-sdk-reference.md index 2b5232e2..1d6b89b3 100644 --- a/docs/python-sdk/python-sdk-reference.md +++ b/docs/python-sdk/python-sdk-reference.md @@ -2,7 +2,7 @@ id: python-sdk-reference title: Python SDK Reference sidebar_label: Python SDK Reference -slug: /python-sdk/python-sdk-reference +slug: /python-sdk/python-sdk-reference/ --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/python-sdk/streaming-api.md b/docs/python-sdk/streaming-api.md index 2f76b22a..060ced85 100644 --- a/docs/python-sdk/streaming-api.md +++ b/docs/python-sdk/streaming-api.md @@ -2,7 +2,7 @@ id: python-streaming-api title: Streaming API sidebar_label: Streaming API -slug: /python-sdk/streaming-api +slug: /python-sdk/streaming-api/ --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/python-sdk/telephony-api.md b/docs/python-sdk/telephony-api.md index c72b4b9c..a22573fb 100644 --- a/docs/python-sdk/telephony-api.md +++ b/docs/python-sdk/telephony-api.md @@ -2,7 +2,7 @@ id: python-sdk-telephony-api title: Using Python SDK with Telephony API on PSTN sidebar_label: Using PSTN -slug: /python-sdk/python-sdk-telephony-api +slug: /python-sdk/python-sdk-telephony-api/ --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/python-sdk/telephony-sip.md b/docs/python-sdk/telephony-sip.md index a5793b81..a8dfe8a8 100644 --- a/docs/python-sdk/telephony-sip.md +++ b/docs/python-sdk/telephony-sip.md @@ -2,7 +2,7 @@ id: python-sdk-telephony-sip title: Using Python SDK with Telephony API on SIP sidebar_label: Using SIP -slug: /python-sdk/python-sdk-telephony-sips +slug: /python-sdk/python-sdk-telephony-sips/ --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/sdk-intro.md b/docs/sdk-intro.md index ef3459ba..36d1e5c8 100644 --- a/docs/sdk-intro.md +++ b/docs/sdk-intro.md @@ -2,7 +2,7 @@ id: sdk-intro title: Symbl SDKs sidebar_label: Symbl SDKs -slug: /sdk-intro +slug: /sdk-intro/ --- diff --git a/docs/streamingapi/code-snippets/consume-trackers-with-streaming-api.md b/docs/streamingapi/code-snippets/consume-trackers-with-streaming-api.md index 7bed471c..f610d7ed 100644 --- a/docs/streamingapi/code-snippets/consume-trackers-with-streaming-api.md +++ b/docs/streamingapi/code-snippets/consume-trackers-with-streaming-api.md @@ -2,7 +2,7 @@ id: consume-trackers title: Consume Trackers with Streaming API sidebar_label: Consume Trackers with Streaming API -slug: /streaming-api/code-snippets/consume-trackers-with-streaming-api +slug: /streaming-api/code-snippets/consume-trackers-with-streaming-api/ --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/streamingapi/code-snippets/start-and-stop-streaming-api-connection.md b/docs/streamingapi/code-snippets/start-and-stop-streaming-api-connection.md index 17b96857..ddeb4841 100644 --- a/docs/streamingapi/code-snippets/start-and-stop-streaming-api-connection.md +++ b/docs/streamingapi/code-snippets/start-and-stop-streaming-api-connection.md @@ -1,7 +1,7 @@ --- id: start-and-stop-streaming-api-connection title: Start and Stop Streaming API Connection -slug: /streamingapi/code-snippets/start-and-stop-connection +slug: /streamingapi/code-snippets/start-and-stop-connection/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/streamingapi/concepts.md b/docs/streamingapi/concepts.md index 5019f5c1..e6325aba 100644 --- a/docs/streamingapi/concepts.md +++ b/docs/streamingapi/concepts.md @@ -3,7 +3,7 @@ id: concepts title: Building a Websocket Connection description: Symbl.ai's Streaming API is based on Websocket protocol. Learn more about what is a WebSocket and how to establish a connection now. sidebar_label: Websockets -slug: /concepts/websockets +slug: /concepts/websockets/ --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/streamingapi/introduction.md b/docs/streamingapi/introduction.md index 2ac108c0..255b800e 100644 --- a/docs/streamingapi/introduction.md +++ b/docs/streamingapi/introduction.md @@ -3,7 +3,7 @@ id: introduction title: How to Implement Streaming API description: Streaming API can provide real-time transcription and extract actionable insights from your conversations. Learn how to implement Symbl.ai’s Streaming API now. sidebar_label: Introduction -slug: /streamingapi/introduction +slug: /streamingapi/introduction/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/streamingapi/reference/reference.md b/docs/streamingapi/reference/reference.md index 861a5355..af1e4724 100644 --- a/docs/streamingapi/reference/reference.md +++ b/docs/streamingapi/reference/reference.md @@ -1,7 +1,7 @@ --- id: api-reference title: Streaming API Reference -slug: /streaming-api/api-reference +slug: /streaming-api/api-reference/ sidebar_label: Request Parameters --- diff --git a/docs/streamingapi/tutorials/get-real-time-sentiment-analysis.md b/docs/streamingapi/tutorials/get-real-time-sentiment-analysis.md index 180f15b1..24549b8d 100644 --- a/docs/streamingapi/tutorials/get-real-time-sentiment-analysis.md +++ b/docs/streamingapi/tutorials/get-real-time-sentiment-analysis.md @@ -1,7 +1,7 @@ --- id: get-real-time-sentiment-analysis title: Live sentiment analysis -slug: /streamingapi/tutorials/get-real-time-sentiment-analysis-from-your-web-browser +slug: /streamingapi/tutorials/get-real-time-sentiment-analysis-from-your-web-browser/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/streamingapi/tutorials/get-realtime-transcription.md b/docs/streamingapi/tutorials/get-realtime-transcription.md index a1c3cce0..e524c7aa 100644 --- a/docs/streamingapi/tutorials/get-realtime-transcription.md +++ b/docs/streamingapi/tutorials/get-realtime-transcription.md @@ -1,7 +1,7 @@ --- id: get-real-time-transcription title: Live speech to text and AI insights on browser -slug: /streamingapi/tutorials/receive-ai-insights-from-your-web-browser +slug: /streamingapi/tutorials/receive-ai-insights-from-your-web-browser/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/subscribe-api.md b/docs/subscribe-api.md index 17e26354..75a06511 100644 --- a/docs/subscribe-api.md +++ b/docs/subscribe-api.md @@ -2,7 +2,7 @@ id: subscribe title: Subscribe API (Beta) sidebar_label: Request Parameters -slug: /subscribe-api +slug: /subscribe-api/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/support.md b/docs/support.md index 9c4d2495..ed498470 100644 --- a/docs/support.md +++ b/docs/support.md @@ -2,7 +2,7 @@ id: support title: Support sidebar_label: Support -slug: /support +slug: /support/ --- --- diff --git a/docs/telephony/concepts/concepts.md b/docs/telephony/concepts/concepts.md index af981354..b921b9c8 100644 --- a/docs/telephony/concepts/concepts.md +++ b/docs/telephony/concepts/concepts.md @@ -1,7 +1,7 @@ --- id: concepts title: SIP & PSTN -slug: /concepts/pstn-and-sip +slug: /concepts/pstn-and-sip/ --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/telephony/introduction.md b/docs/telephony/introduction.md index 08c19078..a0e6effe 100644 --- a/docs/telephony/introduction.md +++ b/docs/telephony/introduction.md @@ -3,7 +3,7 @@ id: introduction title: Telephony API Tutorial- Introduction description: Telephony API enables developers to add Symbl.ai to bridges and join VoIP calls to get real-time intelligence. Check out the Telephony API tutorials to help you get started. sidebar_label: Introduction -slug: /telephony/introduction +slug: /telephony/introduction/ --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/telephony/reference/reference.md b/docs/telephony/reference/reference.md index f964f4a9..243d8998 100644 --- a/docs/telephony/reference/reference.md +++ b/docs/telephony/reference/reference.md @@ -1,7 +1,7 @@ --- id: api-reference title: Telephony API Reference -slug: /telephony-api/api-reference +slug: /telephony-api/api-reference/ --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/telephony/tutorials/connect-to-zoom-with-telephony-api.md b/docs/telephony/tutorials/connect-to-zoom-with-telephony-api.md index d3a50639..e6d739f2 100644 --- a/docs/telephony/tutorials/connect-to-zoom-with-telephony-api.md +++ b/docs/telephony/tutorials/connect-to-zoom-with-telephony-api.md @@ -1,7 +1,7 @@ --- id: connect-to-zoom-with-telephony-api title: Real Time AI insights From Zoom Call -slug: /telephony/tutorials/connect-to-zoom +slug: /telephony/tutorials/connect-to-zoom/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/telephony/tutorials/get-live-transcription-telephony-api.md b/docs/telephony/tutorials/get-live-transcription-telephony-api.md index 3f23a631..2bc07851 100644 --- a/docs/telephony/tutorials/get-live-transcription-telephony-api.md +++ b/docs/telephony/tutorials/get-live-transcription-telephony-api.md @@ -1,7 +1,7 @@ --- id: get-live-transcription title: Live Transcription From A Phone Call -slug: /telephony/tutorials/connect-to-phone-call +slug: /telephony/tutorials/connect-to-phone-call/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/tutorials.md b/docs/tutorials.md index a7b56761..1f68446b 100644 --- a/docs/tutorials.md +++ b/docs/tutorials.md @@ -2,7 +2,7 @@ id: tutorials-page title: Tutorials sidebar_label: Tutorials -slug: /tutorials +slug: /tutorials/ --- --- diff --git a/docs/tutorials/summarization/adding-speaker-info.md b/docs/tutorials/summarization/adding-speaker-info.md index 98063710..0975e7eb 100644 --- a/docs/tutorials/summarization/adding-speaker-info.md +++ b/docs/tutorials/summarization/adding-speaker-info.md @@ -2,7 +2,7 @@ id: adding-speaker-info title: Providing Speaker Information to generate Summary sidebar_label: Providing Speaker Information to generate Summary -slug: /tutorials/summarization/adding-speaker-info +slug: /tutorials/summarization/adding-speaker-info/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/tutorials/summarization/getting-summary.md b/docs/tutorials/summarization/getting-summary.md index 305ee1b1..4dfefeb6 100644 --- a/docs/tutorials/summarization/getting-summary.md +++ b/docs/tutorials/summarization/getting-summary.md @@ -2,7 +2,7 @@ id: getting-summary title: How to get a Summary using Async API sidebar_label: Get Summary using Async API -slug: /tutorials/summarization/getting-summary +slug: /tutorials/summarization/getting-summary/ --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/tutorials/summarization/refreshing-summary.md b/docs/tutorials/summarization/refreshing-summary.md index 49841583..f7076311 100644 --- a/docs/tutorials/summarization/refreshing-summary.md +++ b/docs/tutorials/summarization/refreshing-summary.md @@ -2,7 +2,7 @@ id: refreshing-summary title: How to Refresh a Summary sidebar_label: Refreshing a Summary -slug: /tutorials/summarization/refreshing-summary +slug: /tutorials/summarization/refreshing-summary/ --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/what-is-symbl.md b/docs/what-is-symbl.md index 848da344..b2a7e052 100644 --- a/docs/what-is-symbl.md +++ b/docs/what-is-symbl.md @@ -2,7 +2,7 @@ id: what-is-symbl title: What is Symbl? sidebar_label: What is Symbl? -slug: /what-is-symbl +slug: /what-is-symbl/ --- --- diff --git a/docusaurus-staging.config.js b/docusaurus-staging.config.js index 364c72dc..9824ab69 100644 --- a/docusaurus-staging.config.js +++ b/docusaurus-staging.config.js @@ -263,32 +263,32 @@ module.exports = { items: [ { label: "API Reference", - to: '/api-reference/getting-started', + to: '/api-reference/getting-started/', position: "left", }, { label: "SDKs", - href: '/sdk-intro', + href: '/sdk-intro/', position: "left", }, { label: "Tutorials", - href: '/tutorials', + href: '/tutorials/', position: "left", }, { label: "Integrations", - href: '/integrations/integrations-intro', + href: '/integrations/integrations-intro/', position: "left", }, { label: "Labs", - href: '/labs', + href: '/labs/', position: "left", }, { label: "Support", - href: '/support', + href: '/support/', position: "left", }, { diff --git a/docusaurus.config.js b/docusaurus.config.js index e241f51d..62ee635f 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -263,32 +263,32 @@ module.exports = { items: [ { label: "API Reference", - to: '/api-reference/getting-started', + to: '/api-reference/getting-started/', position: "left", }, { label: "SDKs", - href: '/sdk-intro', + href: '/sdk-intro/', position: "left", }, { label: "Tutorials", - href: '/tutorials', + href: '/tutorials/', position: "left", }, { label: "Integrations", - href: '/integrations/integrations-intro', + href: '/integrations/integrations-intro/', position: "left", }, { label: "Labs", - href: '/labs', + href: '/labs/', position: "left", }, { label: "Support", - href: '/support', + href: '/support/', position: "left", }, { From 850618cd14f26dedc071861b6927a527aaf98123 Mon Sep 17 00:00:00 2001 From: Amritesh Singh <88492460+amritesh-singh@users.noreply.github.com> Date: Thu, 10 Mar 2022 15:30:23 +0530 Subject: [PATCH 07/43] DC-349 (#424) --- docs/streamingapi/reference/reference.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/streamingapi/reference/reference.md b/docs/streamingapi/reference/reference.md index af1e4724..76e68548 100644 --- a/docs/streamingapi/reference/reference.md +++ b/docs/streamingapi/reference/reference.md @@ -35,7 +35,7 @@ Field | Required | Supported Value | Description ```customVocabulary``` | Optional | List of String | An array of strings containing a vocabulary specific to your company, products, or phrases. ```config``` | Optional | Find the supported value [here](#config) | Configuration for this request. [See the config section below for more details](#config). ```speaker``` | Optional | Find the supported value [here](#speaker) | Speaker identity to use for audio in this WebSocket connection. If omitted, no speaker identification will be used for processing. [See the speaker section below for more details](#speaker). -```noConnectionTimeout``` | Optional | Between `0` to `3600` seconds | The buffer time (in seconds) during which the WebSocket API connection stays open even if there’s no Streaming API connection active for that duration. This allows the Speaker to reconnect to the same meeting with the same Subscribers if they lost the connection previously.
For example,

When this parameter is set to `noConnectionTimeout = 600 secs` and if there is no graceful termination using `stop_request` message sent explicitly when there just one WebSocket connection, the `connectionId` and `conversationId` are kept valid for 600 seconds before finalizing the connection, after which connectionId will be not available to subscribe and `conversationId` will have all the last know information associated with it. +```noConnectionTimeout``` | Optional | Between `0` to `1800` seconds | The buffer time (in seconds) during which the WebSocket API connection stays open even if there’s no Streaming API connection active for that duration. This allows the Speaker to reconnect to the same meeting with the same Subscribers if they lost the connection previously.

For example, when this parameter is set to `noConnectionTimeout = 600 secs` and if there is no graceful termination using `stop_request` message sent explicitly when there just one WebSocket connection, the `connectionId` and `conversationId` are kept valid for 600 seconds before finalizing the connection, after which connectionId will be not available to subscribe and `conversationId` will have all the last know information associated with it. ```disconnectOnStopRequest``` | Optional | `true` or `false` | This parameter allows you to set your Streaming API connection in such a way that even when the `stop_request` is sent. The connection does not drop-off, only the processing is stopped and the `conversationId` and connection is kept live for `1800` seconds by default. You can always override this value by passing the `disconnectOnStopRequest` parameter.

This allows you to stop and start the Streaming API processing without dropping the WebSocket connection, so that you can stop and resume the processing in the middle of a call and optimize the Streaming API usage costs.

The default value is `true`. | ```disconnectOnStopRequestTimeout``` | Optional | Between `0` to `3600` seconds | This parameter allows you to override the idle time out (if a WebSocket connection is idle for 30 minutes). Set this parameter with a value between `0` to `3600` seconds. If the idle connection needs to be kept alive beyond `3600` seconds, you have to restart the connection at `3600` seconds elapsed.

If the value is passed as `0`, the WebSocket connection is dropped when `stop_request` is received. The default value is `1800`. From 67f0a17484466d2012f0c3b8a9436570127949c9 Mon Sep 17 00:00:00 2001 From: Adam Voliva Date: Thu, 10 Mar 2022 22:57:59 -0800 Subject: [PATCH 08/43] Fix redirects. (#425) --- .../get-speaker-separation-audio-video.md | 1 + .../get-realtime-transcription-js-sdk.md | 1 + .../tutorials/pass-audio-codecs.md | 1 + .../push-speakerevents-get-summary-url.md | 1 + docusaurus.config.js | 76 +++++++++---------- 5 files changed, 42 insertions(+), 38 deletions(-) diff --git a/docs/async-api/tutorials/get-speaker-separation-audio-video.md b/docs/async-api/tutorials/get-speaker-separation-audio-video.md index c797f759..71d45122 100644 --- a/docs/async-api/tutorials/get-speaker-separation-audio-video.md +++ b/docs/async-api/tutorials/get-speaker-separation-audio-video.md @@ -2,6 +2,7 @@ id: get-speaker-separation-audio-video title: How to implement speaker separation with Async Audio or Video Files sidebar_label: Speaker separation with Async API +slug: /async-api/tutorials/get-speaker-separation-audio-video/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/javascript-sdk/tutorials/get-realtime-transcription-js-sdk.md b/docs/javascript-sdk/tutorials/get-realtime-transcription-js-sdk.md index f51aeaa4..76bae864 100644 --- a/docs/javascript-sdk/tutorials/get-realtime-transcription-js-sdk.md +++ b/docs/javascript-sdk/tutorials/get-realtime-transcription-js-sdk.md @@ -1,6 +1,7 @@ --- id: get-real-time-transcription-js-sdk title: Real-time Output With PSTN Dialing Using Symbl's JavaScript SDK +slug: /javascript-sdk/tutorials/get-real-time-transcription-js-sdk/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/javascript-sdk/tutorials/pass-audio-codecs.md b/docs/javascript-sdk/tutorials/pass-audio-codecs.md index ebe347d1..502ae7ea 100644 --- a/docs/javascript-sdk/tutorials/pass-audio-codecs.md +++ b/docs/javascript-sdk/tutorials/pass-audio-codecs.md @@ -1,6 +1,7 @@ --- id: pass-audio-codecs title: How To Pass Different Audio Codecs To Symbl Endpoint +slug: /javascript-sdk/tutorials/pass-audio-codecs/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/javascript-sdk/tutorials/push-speakerevents-get-summary-url.md b/docs/javascript-sdk/tutorials/push-speakerevents-get-summary-url.md index 5c1b9fe2..b4e62767 100644 --- a/docs/javascript-sdk/tutorials/push-speakerevents-get-summary-url.md +++ b/docs/javascript-sdk/tutorials/push-speakerevents-get-summary-url.md @@ -1,6 +1,7 @@ --- id: push-speakerevents-get-summary-url title: Using Symbl Javascript SDK To Push Speaker Events +slug: /javascript-sdk/tutorials/push-speakerevents-get-summary-url/ --- import Tabs from '@theme/Tabs'; diff --git a/docusaurus.config.js b/docusaurus.config.js index 62ee635f..55228a51 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -11,189 +11,189 @@ module.exports = { { redirects: [ { - to: '/telephony/introduction', // string + to: '/telephony/introduction/', // string from: '/telephony/overview/introduction', // string | string[] }, { - to: '/streamingapi/introduction', // string + to: '/streamingapi/introduction/', // string from: '/streamingapi/overview/introduction', // string | string[] }, { - to: '/javascript-sdk/introduction', // string + to: '/javascript-sdk/introduction/', // string from: '/javascript-sdk/overview/introduction', // string | string[] }, { - to: '/javascript-sdk/code-snippets/connect-to-endpoints', // string + to: '/javascript-sdk/code-snippets/connect-to-endpoints/', // string from: '/javascript-sdk/overview/connect-to-endpoints', // string | string[] }, { - to: '/javascript-sdk/code-snippets/active-speaker-events', // string + to: '/javascript-sdk/code-snippets/active-speaker-events/', // string from: '/javascript-sdk/overview/active-speaker-events', // string | string[] }, { - to: '/javascript-sdk/code-snippets/subscribe-real-time', // string + to: '/javascript-sdk/code-snippets/subscribe-real-time/', // string from: '/javascript-sdk/overview/subscribe-real-time', // string | string[] }, { - to: '/javascript-sdk/code-snippets/streaming-audio-real-time', // string + to: '/javascript-sdk/code-snippets/streaming-audio-real-time/', // string from: '/javascript-sdk/overview/streaming-audio-real-time', // string | string[] }, { - to: '/telephony/tutorials/connect-to-zoom', // string + to: '/telephony/tutorials/connect-to-zoom/', // string from: [ '/telephony/guides/connect-to-zoom-with-telephony-api' ] // string | string[] }, { - to: '/telephony/tutorials/connect-to-phone-call', // string + to: '/telephony/tutorials/connect-to-phone-call/', // string from: [ '/telephony/guides/get-live-transcription', '/telephony/tutorials/get-live-transcription' ] // string | string[] }, { - to: '/streamingapi/code-snippets/start-and-stop-connection', // string + to: '/streamingapi/code-snippets/start-and-stop-connection/', // string from: '/streamingapi/code-snippets/start-and-stop-streaming-api-connection', // string | string[] }, { - to: '/streamingapi/tutorials/receive-ai-insights-from-your-web-browser', + to: '/streamingapi/tutorials/receive-ai-insights-from-your-web-browser/', from: [ '/streamingapi/guides/get-realtime-transcription', '/streamingapi/tutorials/get-realtime-transcription' ] }, { - to: '/async-api/tutorials/get-speaker-separation-audio-video', + to: '/async-api/tutorials/get-speaker-separation-audio-video/', from: '/async-api/guides/get-speaker-separation-audio-video' }, { - to: '/javascript-sdk/tutorials/get-real-time-transcription-js-sdk', + to: '/javascript-sdk/tutorials/get-real-time-transcription-js-sdk/', from: [ '/javascript-sdk/guides/get-realtime-transcription-js-sdk', '/javascript-sdk/tutorials/get-realtime-transcription-js-sdk' ] }, { - to: '/javascript-sdk/tutorials/pass-audio-codecs', + to: '/javascript-sdk/tutorials/pass-audio-codecs/', from: '/javascript-sdk/guides/pass-audio-codecs' }, { - to: '/javascript-sdk/tutorials/push-speakerevents-get-summary-url', + to: '/javascript-sdk/tutorials/push-speakerevents-get-summary-url/', from: '/javascript-sdk/guides/push-speakerevents-get-summary-url' }, { - to: '/javascript-sdk/tutorials/receive-ai-insights-from-your-computer', + to: '/javascript-sdk/tutorials/receive-ai-insights-from-your-computer/', from: [ '/javascript-sdk/guides/push-audio-get-realtime-data', '/javascript-sdk/tutorials/push-audio-get-realtime-data' ] }, { - to: '/concepts/speech-to-text', + to: '/concepts/speech-to-text/', 'from': '/conversation-api/concepts/speech-to-text' }, { - to: '/concepts/action-items', + to: '/concepts/action-items/', 'from': '/conversation-api/concepts/action-items' }, { - to: '/concepts/follow-ups', + to: '/concepts/follow-ups/', 'from': '/conversation-api/concepts/follow-ups' }, { - to: '/concepts/topics', + to: '/concepts/topics/', 'from': '/conversation-api/concepts/topics' }, { - to: '/concepts/topic-hierarchy', + to: '/concepts/topic-hierarchy/', 'from': '/conversation-api/concepts/topic-hierarchy' }, { - to: '/concepts/sentiment-analysis', + to: '/concepts/sentiment-analysis/', 'from': '/conversation-api/concepts/sentiment' }, { - to: '/concepts/conversational-analytics', + to: '/concepts/conversational-analytics/', 'from': '/conversation-api/concepts/analytics' }, { - to: '/conversation-api/action-items', + to: '/conversation-api/action-items/', 'from': [ '/conversation-api/api-reference/action-items', '/conversation-api/overview/action-items' ] }, { - to: '/conversation-api/analytics', + to: '/conversation-api/analytics/', 'from': [ '/conversation-api/api-reference/analytics', '/conversation-api/overview/analytics' ] }, { - to: '/conversation-api/conversation-data', + to: '/conversation-api/conversation-data/', 'from': [ '/conversation-api/api-reference/conversation', '/conversation-api/overview/conversation' ] }, { - to: '/conversation-api/delete-conversation', + to: '/conversation-api/delete-conversation/', 'from': [ '/conversation-api/api-reference/delete', '/conversation-api/overview/delete' ] }, { - to: '/conversation-api/entities', + to: '/conversation-api/entities/', 'from': [ '/conversation-api/api-reference/entities', '/conversation-api/overview/entities' ] }, { - to: '/conversation-api/follow-ups', + to: '/conversation-api/follow-ups/', 'from': [ '/conversation-api/api-reference/follow-ups', '/conversation-api/overview/follow-ups' ] }, { - to: '/conversation-api/insights', + to: '/conversation-api/insights/', 'from': [ '/conversation-api/api-reference/insights', '/conversation-api/overview/insights' ] }, { - to: '/conversation-api/members', + to: '/conversation-api/members/', 'from': [ '/conversation-api/api-reference/members', '/conversation-api/overview/members' ] }, { - to: '/conversation-api/messages', + to: '/conversation-api/messages/', 'from': [ '/conversation-api/api-reference/messages', '/conversation-api/overview/messages' ] }, { - to: '/conversation-api/questions', + to: '/conversation-api/questions/', 'from': [ '/conversation-api/api-reference/questions', '/conversation-api/overview/questions' ] }, { - to: '/conversation-api/speaker-events', + to: '/conversation-api/speaker-events/', 'from': [ '/conversation-api/api-reference/speakers', '/conversation-api/overview/speakers' ] }, { - to: '/conversation-api/get-topics', + to: '/conversation-api/get-topics/', 'from': [ '/conversation-api/api-reference/topics', '/conversation-api/overview/topics' ] }, { - to: '/conversation-api/transcript', + to: '/conversation-api/transcript/', 'from': [ '/conversation-api/api-reference/transcript', '/conversation-api/overview/transcript' ] }, { - to: '/conversation-api/update-members', + to: '/conversation-api/update-members/', 'from': [ '/conversation-api/api-reference/update-members', '/conversation-api/overview/update-members' ] }, { - to: '/pre-built-ui/summary-ui', + to: '/pre-built-ui/summary-ui/', 'from': [ '/pre-built-ui/video-summary-ui', '/pre-built-ui/text-summary-ui' From 528b71297bb53cff0861be27d2e8f454584fe34d Mon Sep 17 00:00:00 2001 From: Adam Voliva Date: Fri, 11 Mar 2022 00:05:52 -0800 Subject: [PATCH 09/43] Fix redirects (#426) * Fix redirects. * Fix staging build. --- docusaurus-staging.config.js | 76 ++++++++++++++++++------------------ 1 file changed, 38 insertions(+), 38 deletions(-) diff --git a/docusaurus-staging.config.js b/docusaurus-staging.config.js index 9824ab69..597129d4 100644 --- a/docusaurus-staging.config.js +++ b/docusaurus-staging.config.js @@ -7,189 +7,189 @@ module.exports = { { redirects: [ { - to: '/telephony/introduction', // string + to: '/telephony/introduction/', // string from: '/telephony/overview/introduction', // string | string[] }, { - to: '/streamingapi/introduction', // string + to: '/streamingapi/introduction/', // string from: '/streamingapi/overview/introduction', // string | string[] }, { - to: '/javascript-sdk/introduction', // string + to: '/javascript-sdk/introduction/', // string from: '/javascript-sdk/overview/introduction', // string | string[] }, { - to: '/javascript-sdk/code-snippets/connect-to-endpoints', // string + to: '/javascript-sdk/code-snippets/connect-to-endpoints/', // string from: '/javascript-sdk/overview/connect-to-endpoints', // string | string[] }, { - to: '/javascript-sdk/code-snippets/active-speaker-events', // string + to: '/javascript-sdk/code-snippets/active-speaker-events/', // string from: '/javascript-sdk/overview/active-speaker-events', // string | string[] }, { - to: '/javascript-sdk/code-snippets/subscribe-real-time', // string + to: '/javascript-sdk/code-snippets/subscribe-real-time/', // string from: '/javascript-sdk/overview/subscribe-real-time', // string | string[] }, { - to: '/javascript-sdk/code-snippets/streaming-audio-real-time', // string + to: '/javascript-sdk/code-snippets/streaming-audio-real-time/', // string from: '/javascript-sdk/overview/streaming-audio-real-time', // string | string[] }, { - to: '/telephony/tutorials/connect-to-zoom', // string + to: '/telephony/tutorials/connect-to-zoom/', // string from: [ '/telephony/guides/connect-to-zoom-with-telephony-api' ] // string | string[] }, { - to: '/telephony/tutorials/connect-to-phone-call', // string + to: '/telephony/tutorials/connect-to-phone-call/', // string from: [ '/telephony/guides/get-live-transcription', '/telephony/tutorials/get-live-transcription' ] // string | string[] }, { - to: '/streamingapi/code-snippets/start-and-stop-connection', // string + to: '/streamingapi/code-snippets/start-and-stop-connection/', // string from: '/streamingapi/code-snippets/start-and-stop-streaming-api-connection', // string | string[] }, { - to: '/streamingapi/tutorials/receive-ai-insights-from-your-web-browser', + to: '/streamingapi/tutorials/receive-ai-insights-from-your-web-browser/', from: [ '/streamingapi/guides/get-realtime-transcription', '/streamingapi/tutorials/get-realtime-transcription' ] }, { - to: '/async-api/tutorials/get-speaker-separation-audio-video', + to: '/async-api/tutorials/get-speaker-separation-audio-video/', from: '/async-api/guides/get-speaker-separation-audio-video' }, { - to: '/javascript-sdk/tutorials/get-real-time-transcription-js-sdk', + to: '/javascript-sdk/tutorials/get-real-time-transcription-js-sdk/', from: [ '/javascript-sdk/guides/get-realtime-transcription-js-sdk', '/javascript-sdk/tutorials/get-realtime-transcription-js-sdk' ] }, { - to: '/javascript-sdk/tutorials/pass-audio-codecs', + to: '/javascript-sdk/tutorials/pass-audio-codecs/', from: '/javascript-sdk/guides/pass-audio-codecs' }, { - to: '/javascript-sdk/tutorials/push-speakerevents-get-summary-url', + to: '/javascript-sdk/tutorials/push-speakerevents-get-summary-url/', from: '/javascript-sdk/guides/push-speakerevents-get-summary-url' }, { - to: '/javascript-sdk/tutorials/receive-ai-insights-from-your-computer', + to: '/javascript-sdk/tutorials/receive-ai-insights-from-your-computer/', from: [ '/javascript-sdk/guides/push-audio-get-realtime-data', '/javascript-sdk/tutorials/push-audio-get-realtime-data' ] }, { - to: '/concepts/speech-to-text', + to: '/concepts/speech-to-text/', 'from': '/conversation-api/concepts/speech-to-text' }, { - to: '/concepts/action-items', + to: '/concepts/action-items/', 'from': '/conversation-api/concepts/action-items' }, { - to: '/concepts/follow-ups', + to: '/concepts/follow-ups/', 'from': '/conversation-api/concepts/follow-ups' }, { - to: '/concepts/topics', + to: '/concepts/topics/', 'from': '/conversation-api/concepts/topics' }, { - to: '/concepts/topic-hierarchy', + to: '/concepts/topic-hierarchy/', 'from': '/conversation-api/concepts/topic-hierarchy' }, { - to: '/concepts/sentiment-analysis', + to: '/concepts/sentiment-analysis/', 'from': '/conversation-api/concepts/sentiment' }, { - to: '/concepts/conversational-analytics', + to: '/concepts/conversational-analytics/', 'from': '/conversation-api/concepts/analytics' }, { - to: '/conversation-api/action-items', + to: '/conversation-api/action-items/', 'from': [ '/conversation-api/api-reference/action-items', '/conversation-api/overview/action-items' ] }, { - to: '/conversation-api/analytics', + to: '/conversation-api/analytics/', 'from': [ '/conversation-api/api-reference/analytics', '/conversation-api/overview/analytics' ] }, { - to: '/conversation-api/conversation-data', + to: '/conversation-api/conversation-data/', 'from': [ '/conversation-api/api-reference/conversation', '/conversation-api/overview/conversation' ] }, { - to: '/conversation-api/delete-conversation', + to: '/conversation-api/delete-conversation/', 'from': [ '/conversation-api/api-reference/delete', '/conversation-api/overview/delete' ] }, { - to: '/conversation-api/entities', + to: '/conversation-api/entities/', 'from': [ '/conversation-api/api-reference/entities', '/conversation-api/overview/entities' ] }, { - to: '/conversation-api/follow-ups', + to: '/conversation-api/follow-ups/', 'from': [ '/conversation-api/api-reference/follow-ups', '/conversation-api/overview/follow-ups' ] }, { - to: '/conversation-api/insights', + to: '/conversation-api/insights/', 'from': [ '/conversation-api/api-reference/insights', '/conversation-api/overview/insights' ] }, { - to: '/conversation-api/members', + to: '/conversation-api/members/', 'from': [ '/conversation-api/api-reference/members', '/conversation-api/overview/members' ] }, { - to: '/conversation-api/messages', + to: '/conversation-api/messages/', 'from': [ '/conversation-api/api-reference/messages', '/conversation-api/overview/messages' ] }, { - to: '/conversation-api/questions', + to: '/conversation-api/questions/', 'from': [ '/conversation-api/api-reference/questions', '/conversation-api/overview/questions' ] }, { - to: '/conversation-api/speaker-events', + to: '/conversation-api/speaker-events/', 'from': [ '/conversation-api/api-reference/speakers', '/conversation-api/overview/speakers' ] }, { - to: '/conversation-api/get-topics', + to: '/conversation-api/get-topics/', 'from': [ '/conversation-api/api-reference/topics', '/conversation-api/overview/topics' ] }, { - to: '/conversation-api/transcript', + to: '/conversation-api/transcript/', 'from': [ '/conversation-api/api-reference/transcript', '/conversation-api/overview/transcript' ] }, { - to: '/conversation-api/update-members', + to: '/conversation-api/update-members/', 'from': [ '/conversation-api/api-reference/update-members', '/conversation-api/overview/update-members' ] }, { - to: '/pre-built-ui/summary-ui', + to: '/pre-built-ui/summary-ui/', 'from': [ '/pre-built-ui/video-summary-ui', '/pre-built-ui/text-summary-ui' From b079d4cef49e52b80b0395f6725b07047ff592a7 Mon Sep 17 00:00:00 2001 From: Pema <81958801+pema-s@users.noreply.github.com> Date: Mon, 14 Mar 2022 17:29:02 +0530 Subject: [PATCH 10/43] Fixes moesif issue (#427) --- src/theme/Tabs/index.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/theme/Tabs/index.js b/src/theme/Tabs/index.js index 93ab0c47..a1e1a8a1 100644 --- a/src/theme/Tabs/index.js +++ b/src/theme/Tabs/index.js @@ -100,15 +100,16 @@ function TabsComponent(props) { if (newTabValue !== selectedValue) { blockElementScrollPositionUntilNextRender(newTab); + if (window.moesif) { window.moesif.track('Clicked Tab', {tab: newTabValue}); - setSelectedValue(newTabValue); - + } + setSelectedValue(newTabValue); if (groupId != null) { setTabGroupChoices(groupId, newTabValue); } } }; - + const handleKeydown = (event) => { let focusElement = null; From bd1501772f7290bc057f90923a6ffac5874cb84c Mon Sep 17 00:00:00 2001 From: Amritesh Singh <88492460+amritesh-singh@users.noreply.github.com> Date: Mon, 14 Mar 2022 20:47:19 +0530 Subject: [PATCH 11/43] DC-88 (#415) * DC-88 * Update reference.md --- docs/streamingapi/reference/reference.md | 28 +++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/docs/streamingapi/reference/reference.md b/docs/streamingapi/reference/reference.md index 76e68548..2181eb2c 100644 --- a/docs/streamingapi/reference/reference.md +++ b/docs/streamingapi/reference/reference.md @@ -30,7 +30,7 @@ The previous endpoint `wss://api.symbl.ai/v1/realtime/insights/` is now updated Field | Required | Supported Value | Description ---------- | ------- | ------- | ------- -```type``` | Mandatory | start_request, stop_request | Type of message +```type``` | Optional | start_request, stop_request, modify_request | Type of message ```insightTypes``` | Optional | action_item, question | Types of insights to return. If not provided, no insights will be returned. ```customVocabulary``` | Optional | List of String | An array of strings containing a vocabulary specific to your company, products, or phrases. ```config``` | Optional | Find the supported value [here](#config) | Configuration for this request. [See the config section below for more details](#config). @@ -220,6 +220,32 @@ setTimeout(() => { } ``` +### Modify Request​ +The `modify_request` allows you to modify the request during Streaming API call, i.e., after the WebSocket connection has established, if there is a device change event. + +Using the `type` field with the supported value `modify_request` you can update the sample rate and encoding based on the new device information in the same conversation itself. + +```js + setTimeout(() => { + micInstance.stop(); + connection.sendUTF(JSON.stringify({ + "type": "modify_request", + "speechRecognition": { + "encoding": 'LINEAR16', + "sampleRateHertz": 8000, + }, + })); + micInstance = mic({ + rate: '8000', + channels: '1', + debug: false, + exitOnSilence: 6, + }); + micInputStream = micInstance.getAudioStream(); + micInstance.start(); + }, 0.5 * 60 * 1000); +``` + ## Messages ### Message Formats From 378fd0262a81480dbbefc8ded89232ed55beea30 Mon Sep 17 00:00:00 2001 From: Amritesh Singh <88492460+amritesh-singh@users.noreply.github.com> Date: Tue, 15 Mar 2022 18:16:23 +0530 Subject: [PATCH 12/43] DC-183 (#423) --- .../api-reference/action-items.md | 86 ++++++++++--------- 1 file changed, 44 insertions(+), 42 deletions(-) diff --git a/docs/conversation-api/api-reference/action-items.md b/docs/conversation-api/api-reference/action-items.md index e85a6972..515e0e1a 100644 --- a/docs/conversation-api/api-reference/action-items.md +++ b/docs/conversation-api/api-reference/action-items.md @@ -118,50 +118,52 @@ Header Name | Required | Description ```javascript { - "actionItems": [ - { - "id": "6603306467065856", - "text": "Surbhi Rathore can schedule a visit from one of our technicians for tomorrow afternoon at 1:00 PM.", - "type": "action_item", - "score": 0.9602078494794586, - "messageIds": [ - "5175845967626240" - ], - "entities": [ + "actionItems": [ { - "type": "datetime", - "text": "tomorrow afternoon at 1:00 pm", - "offset": 68, - "value": "2021-10-31 13:00:00" - }, - { - "type": "person", - "text": "Surbhi Rathore", - "offset": 0, - "value": { - "assignee": true, - "id": "4f6de4aa-05e5-4697-b8ea-7a962eecfd77", - "name": "Surbhi Rathore", - "userId": "surbhi@example.com" - } + "id": "4567077831573504", + "text": "Vikram you need to work on figuring out a plan in which we can make this hackathon work for our customers first, and then Kunal then can go out and implement it for the rest of the world.", + "type": "action_item", + "score": 0.9456050585275944, + "messageIds": [ + "4854542482014208" + ], + "entities": [ + { + "type": "person", + "text": "Vikram", + "offset": 0, + "value": { + "assignee": true, + "name": "Vikram" + } + }, + { + "type": "person", + "text": "Kunal", + "offset": 122, + "value": { + "assignee": true, + "name": "Kunal" + } + } + ], + "phrases": [ + { + "type": "action_phrase", + "text": "make this hackathon work for our customers first" + } + ], + "from": { + "id": "c99e7baf-8d9c-4668-ae08-6bd3384bc642", + "name": "Surbhi", + "userId": "surbhirathore@symbl.ai" + }, + "definitive": true, + "assignee": { + "name": "Vikram" + } } - ], - "phrases": [], - "from": { - "id": "4f6de4aa-05e5-4697-b8ea-7a962eecfd77", - "name": "Surbhi Rathore", - "userId": "surbhi@example.com" - }, - "definitive": false, - "assignee": { - "id": "4f6de4aa-05e5-4697-b8ea-7a962eecfd77", - "name": "Surbhi Rathore", - "email": "surbhi@example.com" - }, - "dueBy": "2021-10-31T20:00:00.000Z" - } - ] -} +] ``` ### Response Parameters From e686fb8330880bc49b9159bc41ec4c9dcc008ca9 Mon Sep 17 00:00:00 2001 From: Mukulika <60316606+Mukulikaa@users.noreply.github.com> Date: Tue, 15 Mar 2022 19:52:06 +0530 Subject: [PATCH 13/43] DC-286 Added snippet for stopping connection in sample (#406) * change for exp branch * merge-docs-v1 added for build to workflow * changes for dev and prod dispatch events * Testing changes * DC-286 Added snippet for stopping connection in sample Co-authored-by: harshad-symbl Co-authored-by: Adam Voliva Co-authored-by: amritesh-singh <88492460+amritesh-singh@users.noreply.github.com> --- .../tutorials/connect-to-zoom-with-telephony-api.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/docs/telephony/tutorials/connect-to-zoom-with-telephony-api.md b/docs/telephony/tutorials/connect-to-zoom-with-telephony-api.md index e6d739f2..ba6aee34 100644 --- a/docs/telephony/tutorials/connect-to-zoom-with-telephony-api.md +++ b/docs/telephony/tutorials/connect-to-zoom-with-telephony-api.md @@ -245,6 +245,17 @@ sdk.init({ console.log('Conversation ID', connection.conversationId); console.log('Full Conection Object', connection); console.log("Calling into Zoom now, please wait about 30-60 seconds."); + + // Scheduling stop endpoint call after 60 seconds + setTimeout(() => { + sdk.stopEndpoint({ + connectionId: connection.connectionId + }).then(() => { + console.log('Stopped the connection with connectionID:', connectionId); + console.log('Conversation ID for Stopped Connection:', connection.conversationId); + console.log('Full Stop Conection Object:', connection); + }).catch(err => console.error('Error while stopping the connection.', err)); + }, 60000); }) .catch((err) => { console.error("Error while starting the connection", err); From 93dcc9750e0ef432dc5f3877ba4f842840b4e039 Mon Sep 17 00:00:00 2001 From: Pema <81958801+pema-s@users.noreply.github.com> Date: Thu, 17 Mar 2022 22:25:11 +0530 Subject: [PATCH 14/43] Enable all trackers (#436) * DC-357 Adds enable all trackers + splits docs into logical buckets * added more content * Adds more changes --- docs/conversation-api/concepts/trackers.md | 47 ++- .../management-api/trackers/create-tracker.md | 271 ++----------- .../management-api/trackers/delete-tracker.md | 9 +- docs/management-api/trackers/get-tracker.md | 10 +- docs/management-api/trackers/overview.md | 379 +----------------- .../management-api/trackers/update-tracker.md | 2 +- docs/streamingapi/reference/reference.md | 46 ++- .../trackers/consuming-trackers-async-api.md | 210 ++++++++++ .../consuming-trackers-streaming-api.md | 199 +++++++++ docs/tutorials/trackers/consuming-trackers.md | 214 ++++++++++ .../trackers/creating-trackers-async-api.md | 284 +++++++++++++ .../creating-trackers-streaming-api.md} | 81 +++- sidebars.js | 13 +- src/css/custom.css | 7 + 14 files changed, 1125 insertions(+), 647 deletions(-) create mode 100644 docs/tutorials/trackers/consuming-trackers-async-api.md create mode 100644 docs/tutorials/trackers/consuming-trackers-streaming-api.md create mode 100644 docs/tutorials/trackers/consuming-trackers.md create mode 100644 docs/tutorials/trackers/creating-trackers-async-api.md rename docs/{streamingapi/code-snippets/consume-trackers-with-streaming-api.md => tutorials/trackers/creating-trackers-streaming-api.md} (51%) diff --git a/docs/conversation-api/concepts/trackers.md b/docs/conversation-api/concepts/trackers.md index 8be11abd..8bfc3c4d 100644 --- a/docs/conversation-api/concepts/trackers.md +++ b/docs/conversation-api/concepts/trackers.md @@ -119,12 +119,41 @@ The Trackers Management UI allows you to copy the Tracker ID with the copy butto **Trackers limitation**: You can create up to 500 Trackers per account. ::: -## Tutorials - -- [How to create a Tracker](/docs/management-api/trackers/overview#consuming-trackers-with-management-api) -- [How to create Trackers with Async API](/docs/management-api/trackers/overview#consuming-trackers-with-async-apis) -- [How to create Trackers with Streaming API](/docs/management-api/trackers/overview#consuming-trackers-with-streaming-api) -- [Viewing detected Trackers with Async API](/docs/async-api/code-snippets/track-phrases-in-a-conversation/#view-detected-trackers) -- [Detect Key Phrases with Streaming API](/docs/streamingapi/code-snippets/detect-key-phrases/#ontrackerresponse-json-response-example) -- [How to create Trackers in Bulk](/docs/management-api/trackers/create-tracker#create-trackers-in-bulk) -- [How to receive Trackers in Spanish with Streaming API](/docs/streamingapi/code-snippets/receive-trackers-in-spanish) \ No newline at end of file +Read more +--- + +
+
+

API Reference

+ +* [`POST` v1/manage/tracker](/management-api/trackers/create-tracker) +* [`GET` v1/manage/tracker/{trackerId}](/management-api/trackers/get-tracker#get-tracker-by-id) +* [`GET` v1/manage/trackers?&name={trackerName}](/management-api/trackers/get-tracker#get-tracker) +* [`PUT`v1/manage/tracker/{trackerId}](/management-api/trackers/update-tracker) +* [`DELETE`v1/manage/tracker/{trackerId}](/management-api/trackers/delete-tracker) + +
+
+
+

Tutorials

+ + +* [How to create and use Trackers- Trackers Management API](/docs/tutorials/trackers/consuming-trackers-management-api/) +* [Creating Trackers with Async APIs](/docs/tutorials/trackers/create-trackers-async-api/) +* [Creating Trackers with Streaming API](/docs/tutorials/trackers/create-trackers-streaming-api/) +* [Using Trackers with Streaming API](/docs/tutorials/trackers/consuming-trackers-streaming-api/) +* [Viewing detected Trackers with Async API](/docs/async-api/code-snippets/track-phrases-in-a-conversation/#view-detected-trackers) +* [Detect Key Phrases with Streaming API](/docs/streamingapi/code-snippets/detect-key-phrases/#ontrackerresponse-json-response-example) +* [How to create Trackers in Bulk](/docs/management-api/trackers/create-tracker#create-trackers-in-bulk) +* [How to receive Trackers in Spanish with Streaming API](/docs/streamingapi/code-snippets/receive-trackers-in-spanish) + + +
+
+ +
+
+
+ +
+
\ No newline at end of file diff --git a/docs/management-api/trackers/create-tracker.md b/docs/management-api/trackers/create-tracker.md index 11c190ff..544c43c8 100644 --- a/docs/management-api/trackers/create-tracker.md +++ b/docs/management-api/trackers/create-tracker.md @@ -10,31 +10,14 @@ slug: /management-api/trackers/create-tracker/ This feature is in the Beta phase. If you have any questions, ideas or suggestions please reach out to us at devrelations@symbl.ai. ::: -The endpoints given below creates a Tracker entity which can be consumed in Symbl APIs. +The endpoint given below creates a Tracker entity which can be consumed with Symbl APIs. Currently, the Tracker entities can be consumed with the [Async APIs](/docs/tutorials/trackers/create-trackers-async-api/) and [Streaming APIs](/docs/tutorials/trackers/create-trackers-streaming-api) only. Telephony API does not have support for Trackers yet. -Currently, the Tracker entities can be consumed in the [Async APIs](/docs/async-api/code-snippets/track-phrases-in-a-conversation) and [Streaming APIs](/docs/streamingapi/code-snippets/detect-key-phrases) only. Telephony API does not have support for Trackers yet. +You can create several Trackers at the same time as a bulk operation. To learn how, see [**Bulk Create Trackers**](#create-trackers-in-bulk) section. You can create up to 500 Trackers per account. -You can create Trackers in the following ways: - -- [Using Tracker Management API](#create-trackers-using-tracker-management-api) -- [Using Async APIs](#create-trackers-using-async-apis) -- [Using Streaming API](#create-trackers-using-streaming-api) - -:::info Trackers Management UI -You can create, view, edit and delete Trackers via the Trackers Management UI as well. To access this feature, log in to the [Symbl Platform](https://platform.symbl.ai/#/login). -::: - -You can also add several Trackers at the same time as a bulk operation. To learn how, see [**Bulk Create Trackers**](#create-trackers-in-bulk) section. You can create up to 500 Trackers per account. - -:::info Create Trackers with Management API -While you can create Trackers with Async or Streaming APIs, it is recommended that you create Trackers using Management API because Trackers created with Management APIs are saved and can be reused while the same is not possible with Async or Streaming APIs. +:::tip Best Practises +Before creating the Trackers, go through the [Best Practices](#best-practices) section to learn about how to create Trackers. ::: -## Create Trackers using Tracker Management API - ---- - -The API given below creates a Tracker using the Management API. ### API Endpoint @@ -108,8 +91,10 @@ This API accepts a request body size up to 1MB. Request bodies exceeding this li This is the wrapper JSON Object which additionally also contains a unique `id`associated with the Tracker entity that can be later used to instruct Symbl APIs to enhance that specific request with this Tracker for tracking keywords/phrases in a conversation. -:::info This API has a maximum concurrency of 1 request. If you wish to create multiple trackers in a single API call, go to [Create Trackers in Bulk](#bulk-create-trackers) section. + +:::info Trackers Management UI +You can also create, view, edit and delete Trackers via the Trackers Management UI as well. To access this feature, log in to the [Symbl Platform](https://platform.symbl.ai/#/login). ::: ### Error Codes @@ -125,6 +110,10 @@ Error Code | Description | Resolution `502 - Bad Gateway` | The 502 response code specifies that the server failed to acknowledge the request. | This may happen due to multiple reasons. Please reach out to support@symbl.ai if it persists after multiple attempts. `504 - Gateway Timeout` | The 504 response code specifies that the server failed to respond within the timeout duration. | Please reach out to support@symbl.ai if it persists after multiple attempts. +:::info Create Trackers with Management API +While you can create Trackers with Async or Streaming APIs, it is recommended that you create Trackers using Management API because Trackers created with Management APIs are saved and can be reused while the same is not possible with Async or Streaming APIs. +::: + ## Create Trackers in Bulk --- @@ -257,233 +246,27 @@ Error Code | Description | Resolution `502 - Bad Gateway` | The 502 response code specifies that the server failed to acknowledge the request. This may happen due to multiple reasons. | Please reach out to support@symbl.ai if it persists after multiple attempts. `504 - Gateway Timeout` | The 504 response code specifies that the server failed to respond within the timeout duration. | Please reach out to support@symbl.ai if it persists after multiple attempts. +### Best Practices -## Create Trackers using Async APIs ---- - -Symbl provides a diverse set of Async APIs based on Audio/Video or Textual content. For more details on Async APIs refer to the documentation [here](/docs/async-api/introduction). - -The Trackers once ingested via the request, will then try to detect these in the Conversation. Once the job is complete, you can fetch the Trackers from the Conversation API through the `/trackers` endpoint described below. - -### Async Audio File API -The Tracker entities should be passed in as a **query parameter** in the Async Audio API’s URL like shown below - -### API Endpoint - -```json -"https"://api.symbl.ai/v1/process/audio?trackers=[ - { - "name":"COVID-19", - "vocabulary":[ - "social distancing", - "cover your face with mask", - "vaccination" - ] - } -] -``` -### Request Headers - -Header Name | Required | Description ----------- | ------- | ------- | -```Authorization``` | Mandatory | `Bearer ` The token you get from our [authentication process](/docs/developer-tools/authentication). -```Content-Type ``` | Optional | `application/json` This header must contain the MIME Type of the audio file’s container. -```x-api-key``` | Optional | DEPRECATED. The JWT token you get from our [authentication process](/docs/developer-tools/authentication). - -## Async Audio URL API - -The Tracker entities should be passed in as a member of the **request body** of the Async Audio URL API like shown below: - -### API Endpoint - -**POST `https://api.symbl.ai/v1/process/audio/url`** - -### Request Header - -Header Name | Required | Description ----------- | ------- | ------- | -```Authorization``` | Mandatory | `Bearer ` The token you get from our [authentication process](/docs/developer-tools/authentication). -```Content-Type ``` | Mandatory | `application/json` This header must contain the MIME Type of the audio file’s container. -```x-api-key``` | Optional | DEPRECATED. The JWT token you get from our [authentication process](/docs/developer-tools/authentication). - - -### Request Body - -```json -{ - "url": "", - "confidenceThreshold": 0.6, - "timezoneOffset": 0, - "trackers": [ - { - "name": "Promotion Mention", - "vocabulary": [ - "We have a special promotion going on if you book this before", - "I can offer you a discount of 10 20 percent you being a new customer for us", - "We have our month special this month", - "We have a sale right now on" - ] - } - ] -} -``` -Notice that the trackers member follows the same structure as mentioned in the Trackers section above. - -### Response - -```json -{ - "conversationId": "5815170693595136", - "jobId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d" -} -``` - -### Async Video File API -The Tracker entities should be passed in as a **query parameter** in the Async Video API’s URL like shown below: - -### API Endpoint - -```json -"https"://api.symbl.ai/v1/process/video?trackers=[ - { - "name":"COVID-19", - "vocabulary":[ - "social distancing", - "cover your face with mask", - "vaccination" - ] - } -] -``` - -### Request Header - -Header Name | Required | Description ----------- | ------- | ------- | -```Authorization``` | Mandatory | `Bearer ` The token you get from our [authentication process](/docs/developer-tools/authentication). -```Content-Type ``` | Optional | `application/json` This header must contain the MIME Type of the audio file’s container. -```x-api-key``` | Optional | DEPRECATED. The JWT token you get from our [authentication process](/docs/developer-tools/authentication). - -Notice that the trackers query parameter follows the same structure as mentioned in the Trackers section above. - -### Response - -```json -{ - "conversationId": "5815170693595136", - "jobId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d" -} -``` +Following are the best practices to be followed while creating Trackers: -### Async Video URL API -The Tracker entities should be passed in as a member of the request body of the Async Video URL API like shown below: +Dos' and Don'ts | Example | +---------- | ------- | +Densely pack your vocabulary with information | "What’s the price?" | +Don't preface your information with lots of words that don’t convey meaning | "I was wondering if you could tell me about your pricing structure". | +Use simple sentences or phrases | Short sentence: "I want to understand your product". Phrase: "understand your product" | +Avoid using complex sentence structure | "I want to make sure that I have a full understanding of your product". -### API Endpoint -**POST `https://api.symbl.ai/v1/process/video/url`** -### Request Headers - -Header Name | Required | Description ----------- | ------- | ------- | -```Authorization``` | Mandatory | `Bearer ` The token you get from our [authentication process](/docs/developer-tools/authentication). -```Content-Type ``` | Mandatory | `application/json` This header must contain the MIME Type application/json. -```x-api-key``` | Optional | DEPRECATED. The JWT token you get from our [authentication process](/docs/developer-tools/authentication). - -### Request Body -```json -{ - "url": "", - "confidenceThreshold": 0.6, - "timezoneOffset": 0, - "trackers": [ - { - "name": "Promotion Mention", - "vocabulary": [ - "We have a special promotion going on if you book this before", - "I can offer you a discount of 10 20 percent you being a new customer for us", - "We have our month special this month", - "We have a sale right now on" - ] - } - ] -} -``` -Notice that the trackers member follows the same structure as mentioned in the Trackers section above. - -### Response - -```json -{ - "conversationId": "5815170693595136", - "jobId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d" -} -``` - -### Async Text API -The Tracker entities should be passed in as a member of the **request body** of the Async Text API like shown below: - -### API Endpoint - -**POST `https://api.symbl.ai/v1/process/text`** - - -### Request Headers - -Header Name | Required | Description ----------- | ------- | ------- | -```Authorization``` | Mandatory | `Bearer ` The token you get from our [authentication process](/docs/developer-tools/authentication). -```Content-Type ``` | Mandatory | `application/json` This header must contain the MIME Type application/json. -```x-api-key``` | Optional | DEPRECATED. The JWT token you get from our [authentication process](/docs/developer-tools/authentication). - -### Request Body - -```json -{ - "name": "My Sales Conversation", - "conversationType": [ - "sales" - ], - "messages": [ - { - "payload": { - "content": "", - "contentType": "text/plain" - }, - "from": { - "name": "John", - "userId": "john@example.com" - } - } - ], - "trackers": [ - { - "name": "Promotion Mention", - "vocabulary": [ - "We have a special promotion going on if you book this before", - "I can offer you a discount of 10 20 percent you being a new customer for us", - "We have our month special this month", - "We have a sale right now on" - ] - } - ] -} -``` -Notice that the trackers member follows the same structure as the Trackers section above. - -### Response - -```json -{ - "conversationId": "5815170693595136", - "jobId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d" -} -``` - -## Create Trackers using Streaming API - -You can create and consume Trackers in real-time using the Streaming APIs. +## Tutorials +--- -To view the detailed documentation go to the Trackers with [Streaming API](/docs/streaming-api/code-snippets/consume-trackers-with-streaming-api) page. +You might find the following tutorials useful: +- [How to create and use Trackers- Trackers Management API](/docs/tutorials/trackers/consuming-trackers-management-api/) +- [Creating Trackers with Async APIs](/docs/tutorials/trackers/create-trackers-async-api/) +- [Creating Trackers with Streaming API](/docs/tutorials/trackers/create-trackers-streaming-api/) +- [Using Trackers with Async API](/docs/tutorials/trackers/consuming-trackers-async-api//) +- [Using Trackers with Streaming API](/docs/tutorials/trackers/consuming-trackers-streaming-api/) diff --git a/docs/management-api/trackers/delete-tracker.md b/docs/management-api/trackers/delete-tracker.md index 133ac2e6..601fd6fc 100644 --- a/docs/management-api/trackers/delete-tracker.md +++ b/docs/management-api/trackers/delete-tracker.md @@ -11,15 +11,12 @@ slug: /management-api/trackers/delete-tracker/ This feature is in the Beta phase. If you have any questions, ideas or suggestions please reach out to us at devrelations@symbl.ai. ::: -The Delete Tracker API will delete the Tracker entity against the `trackerId` provided. +This API will delete the Tracker entity against the `trackerId` provided. -:::info -Currently, the Tracker entities can be consumed in the [Async APIs](/docs/async-api/introduction) only. Support for the other APIs will be added soon. -::: - -:::note Trackers Management UI +:::info Trackers Management UI You can create, view, edit and delete Trackers via the Trackers Management UI as well. To access this feature, log in to the[Symbl Platform](https://platform.symbl.ai/#/login) ::: + ### API Endpoint **DELETE `https://api.symbl.ai/v1/manage/tracker/{trackerId}`** diff --git a/docs/management-api/trackers/get-tracker.md b/docs/management-api/trackers/get-tracker.md index ef3d4630..ecd523f6 100644 --- a/docs/management-api/trackers/get-tracker.md +++ b/docs/management-api/trackers/get-tracker.md @@ -11,15 +11,17 @@ slug: /management-api/trackers/get-tracker/ This feature is in the Beta phase. If you have any questions, ideas or suggestions please reach out to us at devrelations@symbl.ai. ::: -:::note Trackers Management UI -You can create, view, edit and delete Trackers via the Trackers Management UI as well. To access this feature, log in to the[Symbl Platform](https://platform.symbl.ai/#/login) -::: - You can GET Trackers in the following ways with the Management API: - [GET All Trackers](#get-all-trackers) - [GET Tracker by ID](#get-tracker-by-id) - [GET Tracker by name](#get-tracker-by-name) +:::info Trackers Management UI +You can create, view, edit and delete Trackers via the Trackers Management UI as well. To access this feature, log in to the[Symbl Platform](https://platform.symbl.ai/#/login) +::: + + + ## GET All Trackers This API call lists all the Trackers registered to the Management API at the account level. diff --git a/docs/management-api/trackers/overview.md b/docs/management-api/trackers/overview.md index 2fd23c24..95831dcb 100644 --- a/docs/management-api/trackers/overview.md +++ b/docs/management-api/trackers/overview.md @@ -1,7 +1,7 @@ --- id: trackers-overview -title: Using Trackers API (Beta) -sidebar_label: Overview +title: Trackers API (Beta) +sidebar_label: Introduction slug: /management-api/trackers/overview/ --- import Tabs from '@theme/Tabs'; @@ -13,382 +13,23 @@ import TabItem from '@theme/TabItem'; This feature is in the Beta phase. If you have any questions, ideas or suggestions please reach out to us at devrelations@symbl.ai. ::: -This section contains step-by-step instructions on how to create and use Trackers.
+You can use the Trackers API with the following:
-This page provides information about: - -- [Consuming Trackers with Management APIs](#consuming-trackers-with-management-api) -- [Consuming Trackers with Async APIs](#consuming-trackers-with-async-apis) -- [Consuming Trackers with Streaming API](#consuming-trackers-with-streaming-api) +- [Trackers with Management APIs](/docs/tutorials/trackers/consuming-trackers-management-api/) +- [Trackers with Async APIs](/docs/tutorials/trackers/consuming-trackers-async-api/) +- [Trackers with Streaming API](/docs/tutorials/trackers/consuming-trackers-streaming-api/) :::info Create Trackers with Management API While you can create Trackers with Async or Streaming APIs, it is recommended that you create Trackers using Management API because Trackers created with Management APIs are saved and can be reused while the same is not possible with Async or Streaming APIs. ::: -## Consuming Trackers with Management API ---- - -Trackers can be consumed via the Management API, which takes the onus of maintaining these entities from the developer and shifts it to Symbl’s backend. The Management API provides an easy-to-consume REST interface for managing these entities. - -All Trackers created using Management API are saved and can be reused for other operations such as PUT, UPDATE and DELETE. -To read about the capabilities of the Management API, see the [Management API](/docs/management-api/introduction) page. - -:::note Trackers Management UI -You can also create, view, edit and delete Trackers via the Trackers Management UI. To access this feature, log in to the[Symbl Platform](https://platform.symbl.ai/#/login) - -- **Using punctuations**: You can only pass periods `.`, apostrophes `'` and dashes `-` in the trackers vocabulary. Other punctuations like `?`, `,`, `!`, `:`are not allowed. -- **Vocabulary terms**: You must add atleast 5 and a maximum of 50 vocabulary terms per Tracker. -- **Trackers limitation**: You can create up to 500 trackers per account. -::: - -### Step 1: Create Trackers ---- - - Create Trackers by sending a `POST` request to the Trackers Management API endpoint given below: - -```shell -POST "https://api.symbl.ai/v1/manage/tracker" -``` - -:::note Using Punctuations in Trackers Vocabulary -You can only pass the following punctuations in trackers vocabulary: -- Periods `.` -- Apostrophes `'` - -Using any other punctuation mark such as `?`, `,`, `!`, `:` is not allowed. -::: -You can define the phrases and keywords in the **vocabulary** of the request body as shown below: - -```json -{ - "name":"Promotion Mention", - "vocabulary":[ - "We have a special promotion going on if you book this before", - "I can offer you a discount of 10 20 percent you being a new customer for us", - "We have our month special this month", - "We have a sale right now on" - ] -} -``` -This creates a Tracker and returns the following response. Note that every Tracker has a unique `id`. - -```json -{ - "tracker": { - "id": "4476908732794496", - "name": "Promotion Mention", - "vocabulary": [ - "We have a special promotion going on if you book this before", - "I can offer you a discount of 10 20 percent you being a new customer for us", - "We have our month special this month", - "We have a sale right now on" - ] - } -} -``` -### Step 2: Submit files using Async API with `enableAllTrackers` flag ---- -When you send a recorded audio, video or text using [Async API](http://localhost:3000/docs/async-api/introduction), set **enableAllTrackers=True** and **POST** the file to Symbl. - -Given below is an example of a POST request to Async Audio API for processing an audio recording with `enableAllTrackers` set to `true`. By default this is set to `false`. - -```shell -POST "https://api.symbl.ai/v1/process/audio?enableAllTrackers=true" -``` -:::note Specifying the "enableAllTrackers" parameter in the request - -The `enableAllTrackers` parameter must be sent mandatorily in the Async API to detect Trackers. The purpose of this flag is to enable detection of all the Trackers created with the [Management API](#tracker-consumption-with-management-api) that maintains your entities with Symbl at the account level. - -`enableAllTrackers` accepts a boolean value which must be passed in the Async APIs either as a query param or in the request body depending on which Async API you are using. See the complete list of Async APIs and how each accepts this parameter: - - | ----------- | ------- -As a query-param | Async Audio File API, Async Video File API. -In Request Body | Async Audio URL API, Async Video URL API, Async Text API. -::: - -On successful processing by the above mentioned API, you will get the `conversationId` and the `jobId` as shown below: - -#### Response -```json -{ - "conversationId": "6186250391257088", - "jobId": "78422976-e461-41cf-ba35-20397d16619e" -} -``` -You can use the `jobId` to get the job status using the [Job Status API.](/docs/async-api/overview/jobs-api/#get-job-status) - -:::note -Ensure that you wait for the job to complete before proceeding to Step 3. -::: - -### Step 3: Get detected messages containing Trackers ---- - -Using the `conversationId` from Step 2, you can `GET` the Trackers for the conversation. - -```shell -GET "https://api.symbl.ai/v1/conversations/{{conversation_id}}/trackers-detected" -``` -#### Response - -```json -{ - "type": "vocabulary", - "value": "Can you reiterate that one more time", - "messageRefs": [ - { - "id": "6428676305453056", - "text": "So I am not showing that here but you can have that, you know, for particular sentence and, you know, then aggregate based on the whole conversation.", - "offset": -1 - }, - { - "id": "6035928066818048", - "text": "Give that intent and name and that's it.", - "offset": -1 - } - ], - "insightRefs": [ - { - "text": "Yeah, and you So from sentiment analysis perspective, right?", - "offset": -1, - "type": "question", - "id": "5794360651153408" - } - ] -} -``` -:::caution Important -If the `conversationId` used in this Step is not processed with `enableAllTrackers=true` in the Async API, Trackers will not be detected. Using this flag as illustrated in Step 2 is mandatory. -::: - -### Supported API Operations with Management API +## Endpoints Operation | Endpoint ---------- | ------- Create Tracker | [`POST` v1/manage/tracker](/management-api/trackers/create-tracker) -Create Trackers in Bulk | [`POST` v1/manage/trackers](/management-api/trackers/create-tracker/#create-trackers-in-bulk) -Get Tracker with ID| [`GET`v1/manage/tracker/{trackerId}](/management-api/trackers/get-tracker#get-tracker-by-id) +Create Trackers in Bulk | [`POST` v1/manage/trackers](/management-api/trackers/create-tracker#bulk-create-trackers-api) +Get Tracker with ID| [`GET` v1/manage/tracker/{trackerId}](/management-api/trackers/get-tracker#get-tracker-by-id) Get Tracker with name | [`GET` v1/manage/trackers?&name={trackerName}](/management-api/trackers/get-tracker#get-tracker) Update Tracker| [`PUT`v1/manage/tracker/{trackerId}](/management-api/trackers/update-tracker) -Delete Tracker| [`DELETE`v1/manage/tracker/{trackerId}](/management-api/trackers/delete-tracker) - - -## Consuming Trackers with Async APIs - -### Step 1: Create a Tracker ---- - -The first step is to create a Tracker with a set of phrases and keywords using Async APIs. - -:::tip -If you want to create multiple trackers in bulk, use [Trackers Management API for bulk creation](/docs/management-api/trackers/create-tracker#create-trackers-in-bulk). The Trackers Management API handles Trackers at your account level and is recommended for usecases where where you want to use multiple Trackers. -::: - -Given below is an example of an [Async Audio URL API](/docs/management-api/trackers/create-tracker#async-audio-url-api): - -#### API Endpoint - -```shell -POST https://api.symbl.ai/v1/process/audio/url -``` - -#### Request Body -```json -{ - "url": "", - "confidenceThreshold": 0.6, - "timezoneOffset": 0, - "trackers": [ - { - "name": "Promotion Mention", - "vocabulary": [ - "We have a special promotion going on if you book this before", - "I can offer you a discount of 10 20 percent you being a new customer for us", - "We have our month special this month", - "We have a sale right now on" - ] - } - ] -} -``` - -#### Response - -This creates a Tracker and returns the following response. Note that every Tracker has a unique `id`. - -```json -{ - "conversationId": "5815170693595136", - "jobId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d" -} -``` -:::note -To create Trackers with Async APIs, see detailed documentation in the links given below. -- [Create Trackers- Async Audio File API](/docs/management-api/trackers/create-tracker#async-audio-file-api) -- [Create Trackers- Async Audio URL API](/docs/management-api/trackers/create-tracker#async-audio-url-api) -- [Create Trackers- Async Video File API](/docs/management-api/trackers/create-tracker#async-video-file-api) -- [Create Tracker- Async Video URL API](/docs/management-api/trackers/create-tracker#async-video-url-api) -- [Create Trackers- Async Text API](/docs/management-api/trackers/create-tracker#async-text-api) -::: - -After creating the Tracker, you can: - -👉   [Verify that all the trackers has been added by making a `GET` request.](/docs/management-api/trackers/get-tracker) - -👉   [If any Trackers need to be updated, send a `PUT` request.](/docs/management-api/trackers/update-tracker) - -### Step 2: Get the detected messages containing Trackers ---- - -Using the `conversation_id` you get from Step 1, you can `GET` the Trackers for the conversation. - -```shell -GET "https://api.symbl.ai/v1/conversations/{{conversation_id}}/trackers-detected" -``` -#### Response - -```json -[ - { - "id": "4527907378937856", - "name": "Promotion Mention", - "matches": [ - { - "messageRefs": [ - { - "id": "4670860273123328", - "text": "We're running a sale right now", - "offset": -1 - } - ], - "type": "vocabulary", - "value": "run sale", - "insightRefs": [] - } - ] - }, - ... -] -``` - -### Detecting Trackers with Async API - -You can also use the Async API to detect Trackers by sending a list of Tracker IDs of previously created trackers (from the Management API). The Trackers will be searched in the submitted Async API request containing the conversation. - -#### Example -In the example given below, we will send the following trackers IDs in the Async API request assuming they were already created: -```shell -"trackers": [ - { - "id": "5123033831841280" - }, - { - "id": "6174043823841420" - }, -``` -#### Full Request Sample -Given below is an example of an Async Text API call sent with Tracker IDs: - -```shell -curl --location --request POST 'https://api.symbl.ai/v1/process/text' \ ---header "Authorization: Bearer $AUTH_TOKEN" \ -# Set your access token here. See https://docs.symbl.ai/docs/developer-tools/authentication ---header 'Content-Type: application/json' \ ---data-raw '{ - "name": "Afternoon Business Meeting", - "detectPhrases": true, - "confidenceThreshold": 0.6, - "entities": [ - { - "customType": "Company Executives", - "value": "Marketing director", - "text": "Marketing director" - } - ], - "detectEntities": true, - "messages": [], - "trackers": [ - { - "id": "5123033831841280" - }, - { - "id": "6174043823841420" - }, - ] -}' -``` - -## Consuming Trackers with Streaming API ---- - -Below is an example that shows how to pass Trackers in the config object for the `startRealtimeRequest` of the Symbl’s JS SDK. This example also shows how to consume the results of the detected Trackers in real-time. - -```js -const connection = await sdk.startRealtimeRequest({ - id, - insightTypes: ['action_item', 'question'], - trackers: [ - { - name: "Promotion Mention", - vocabulary: [ - "We have a special promotion going on if you book this before", - "I can offer you a discount of 10 20 percent you being a new customer for us", - "We have our month special this month", - "We have a sale right now on" - ] - } - ], - config: { - meetingTitle: "My Meeting", - confidenceThreshold: 0.7, - languageCode: "en-US", - sampleRateHertz: 48000, - trackers: { - "interimResults": true - } - }, - speaker: { - // Optional, if not specified, will simply not send an email in the end. - userId: "john@example.com", // Update with valid email - name: "John", - }, - handlers: { - onTrackerResponse: (data) => { - // When a tracker is detected in real-time - console.log('onTrackerResponse', JSON.stringify(data, null, 2)); - if (!!data) { - data.forEach((tracker) => { - console.log(`Detected Tracker Name: ${tracker.name}`); - console.log(`Detected Matches`); - tracker.matches.forEach((match) => { - console.log(`Tracker Value: ${match.value}`); - console.log(`Messages detected against this Tracker`); - match.messageRefs.forEach((messageRef) => { - console.log(`Message ID: ${messageRef.id}`); - console.log(`Message text for which the match was detected: ${messageRef.text}`); - console.log(`\n`); - }); - console.log(`\n\n`); - - console.log(`Insights detected against this Tracker`); - match.messageRefs.forEach((insightRef) => { - console.log(`Insight ID: ${insightRef.id}`); - console.log(`Insight text for which the match was detected: ${insightRef.text}`); - console.log(`Insight Type: ${insightRef.type}`); - console.log(`\n`); - }); - console.log(`\n\n`); - }); - }); - } - }, - }, -}) -``` -For detailed description of the parameters, see [Streaming API for Trackers](/docs/streaming-api/code-snippets/consume-trackers-with-streaming-api) documentation. - -:::caution Old Endpoint -The old endpoint for fetching Trackers (given below) is deprecated and not recommended to be used -`GET https://api.symbl.ai/v1/conversations/{conversationId}/trackers` -::: \ No newline at end of file +Delete Tracker| [`DELETE`v1/manage/tracker/{trackerId}](/management-api/trackers/delete-tracker) \ No newline at end of file diff --git a/docs/management-api/trackers/update-tracker.md b/docs/management-api/trackers/update-tracker.md index 5ec5b219..b9ba88b7 100644 --- a/docs/management-api/trackers/update-tracker.md +++ b/docs/management-api/trackers/update-tracker.md @@ -13,7 +13,7 @@ This feature is in the Beta phase. If you have any questions, ideas or suggestio To update an existing Tracker, send a PUT Tracker API request with Management API. This updates a Tracker entity against the `trackerId` which can be consumed in Symbl APIs. -:::note Trackers Management UI +:::info Trackers Management UI You can create, view, edit and delete Trackers via the Trackers Management UI as well. To access this feature, log in to the[Symbl Platform](https://platform.symbl.ai/#/login) ::: diff --git a/docs/streamingapi/reference/reference.md b/docs/streamingapi/reference/reference.md index 2181eb2c..87e2d1b7 100644 --- a/docs/streamingapi/reference/reference.md +++ b/docs/streamingapi/reference/reference.md @@ -379,7 +379,8 @@ const connection = await sdk.startRealtimeRequest({ confidenceThreshold: 0.7, sampleRateHertz: 48000, trackers: { - "interimResults": true + "interimResults": true, + "enableAllTrackers": true } }, speaker: { @@ -437,7 +438,9 @@ Let’s go over all the parameters passed in the configuration object in the abo c. `sampleRateHertz`: The sample rate of the incoming audio data which is being pushed to Symbl. - d. `trackers`: `{ interimResults }`: The `interimResults` flag tells Symbl to send the `tracker` results as soon as they are detected. If false, the `tracker` results are detected for the finalized transcription responses. + d. `trackers.interimResults`| The `interimResults` flag tells Symbl to send the tracker results as soon as they are detected. If `false`, the tracker results are detected for the finalized transcription responses. + + e. `trackers.enableAllTrackers`| The `enableAllTrackers` parameter must be sent to detect all the Trackers. The purpose of this flag is to enable detection of all the Trackers created with the Management API that maintains your entities with Symbl at the account level. 5. `speaker`: The details of the speaker in this conversation. @@ -449,6 +452,45 @@ Let’s go over all the parameters passed in the configuration object in the abo a. `onTrackerResponse`: This function is invoked when Symbl detects a Tracker in real-time. The structure of the **Tracker** object is shown in the above code snippet. +### Tracker Response + +The following reponse is returned when Tracker object is passed in the Streaming API: + +```js +"trackers":[ + { + "name":"Documents Tracker", + "matches":[ + { + "type":"vocabulary", + "value":"Documents", + "messageRefs":[ + { + "id":"53867534-0459-4d22-b590-984ee82166aa", + "text":"Anyways, so I will submit documents tomorrow.", + "offset":26 + }, + { + "id":"4d20d90c-50a7-4594-bb10-2995dcd4bbd1", + "text":"I will submit documents tomorrow.", + "offset":14 + } + ], + } +``` + +Field Name | Description +---------- | ------- | +`name` | The name of the Tracker detected | +`matches` | Array of match objects which contain the references to messages and insights detected in that conversation. | +`type` | The match type for the text. In the above example, the match is of type vocabulary. | +`value` | The textual value of the vocabulary for which this match was detected. | +`messageRefs` | Array of messages for which this Tracker was detected. | +`messageRefs.id`| The unique identifier of the message. | +`messageRefs.text` | The text body of the message. | +`messageRefs.offset`| The closest match of the text in the message. Offset of -1 means that an exact match for that specific vocabulary wasn’t found and this was the similar match. An offset greater than 0 indicates an exact match for the tracker in the payload of the message. + + ### Streaming API Logs You can view the logs of your Streaming API request on your Symbl Platform account. To view the logs, sign in to [Symbl Platform](https://platform.symbl.ai/#/login). The logs provide the following: diff --git a/docs/tutorials/trackers/consuming-trackers-async-api.md b/docs/tutorials/trackers/consuming-trackers-async-api.md new file mode 100644 index 00000000..3e891660 --- /dev/null +++ b/docs/tutorials/trackers/consuming-trackers-async-api.md @@ -0,0 +1,210 @@ +--- +id: consuming-trackers-async-api +title: Consuming Trackers with Async API +sidebar_label: Consuming Trackers with Async API +slug: /tutorials/trackers/consuming-trackers-async-api/ +--- + +--- +:::note In Beta Phase +This feature is in the Beta phase. If you have any questions, ideas or suggestions please reach out to us at devrelations@symbl.ai. +::: + +To use Trackers with Async API, follow the steps given below: + +### Step 1: Create a Tracker +--- + +The first step is to create a Tracker with a set of phrases and keywords using Async APIs. + +:::tip +If you want to create multiple trackers in bulk, use [Trackers Management API for bulk creation](/docs/management-api/trackers/create-tracker#create-trackers-in-bulk). The Trackers Management API handles Trackers at your account level and is recommended for usecases where where you want to use multiple Trackers. +::: + +:::tip Best Practises +Before creating the Trackers, go through the [Best Practices](#best-practices) section to learn about how to create Trackers. +::: + +Given below is an example of an [Async Audio URL API](/docs/management-api/trackers/create-tracker#async-audio-url-api): + +#### API Endpoint + +```shell +POST https://api.symbl.ai/v1/process/audio/url +``` + +#### Request Body +```json +{ + "url": "", + "confidenceThreshold": 0.6, + "timezoneOffset": 0, + "trackers": [ + { + "name": "Promotion Mention", + "vocabulary": [ + "We have a special promotion going on if you book this before", + "I can offer you a discount of 10 20 percent you being a new customer for us", + "We have our month special this month", + "We have a sale right now on" + ] + } + ] +} +``` + +#### Response + +This creates a Tracker and returns the following response. Note that every Tracker has a unique `id`. + +```json +{ + "conversationId": "5815170693595136", + "jobId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d" +} +``` +:::note +To create Trackers with Async APIs, see detailed documentation in the links given below. +- [Create Trackers- Async Audio File API](/docs/management-api/trackers/create-tracker#async-audio-file-api) +- [Create Trackers- Async Audio URL API](/docs/management-api/trackers/create-tracker#async-audio-url-api) +- [Create Trackers- Async Video File API](/docs/management-api/trackers/create-tracker#async-video-file-api) +- [Create Tracker- Async Video URL API](/docs/management-api/trackers/create-tracker#async-video-url-api) +- [Create Trackers- Async Text API](/docs/management-api/trackers/create-tracker#async-text-api) +::: + +After creating the Tracker, you can: + +👉   [Verify that all the trackers has been added by making a `GET` request.](/docs/management-api/trackers/get-tracker) + +👉   [If any Trackers need to be updated, send a `PUT` request.](/docs/management-api/trackers/update-tracker) + +### Step 2: Get the detected messages containing Trackers +--- + +Using the `conversation_id` you get from Step 1, you can `GET` the Trackers for the conversation. + +```shell +GET "https://api.symbl.ai/v1/conversations/{{conversation_id}}/trackers-detected" +``` +#### Response + +```json +[ + { + "id": "4527907378937856", + "name": "Promotion Mention", + "matches": [ + { + "messageRefs": [ + { + "id": "4670860273123328", + "text": "We're running a sale right now", + "offset": -1 + } + ], + "type": "vocabulary", + "value": "run sale", + "insightRefs": [] + } + ] + }, + ... +] +``` + +### Detecting Trackers with Async API + +You can also use the Async API to detect Trackers by sending a list of Tracker IDs of previously created trackers (from the Management API). The Trackers will be searched in the submitted Async API request containing the conversation. + +#### Example +In the example given below, we will send the following trackers IDs in the Async API request assuming they were already created: +```shell +"trackers": [ + { + "id": "5123033831841280" + }, + { + "id": "6174043823841420" + }, +``` +#### Full Request Sample +Given below is an example of an Async Text API call sent with Tracker IDs: + +```shell +curl --location --request POST 'https://api.symbl.ai/v1/process/text' \ +--header "Authorization: Bearer $AUTH_TOKEN" \ +# Set your access token here. See https://docs.symbl.ai/docs/developer-tools/authentication +--header 'Content-Type: application/json' \ +--data-raw '{ + "name": "Afternoon Business Meeting", + "detectPhrases": true, + "confidenceThreshold": 0.6, + "entities": [ + { + "customType": "Company Executives", + "value": "Marketing director", + "text": "Marketing director" + } + ], + "detectEntities": true, + "messages": [], + "trackers": [ + { + "id": "5123033831841280" + }, + { + "id": "6174043823841420" + }, + ] +}' +``` +:::caution Old Endpoint +The old endpoint for fetching Trackers (given below) is deprecated and not recommended to be used +`GET https://api.symbl.ai/v1/conversations/{conversationId}/trackers` +::: + +### Best Practices + +Following are the best practices to be followed while creating Trackers: + +Dos' and Don'ts | Example | +---------- | ------- | +Densely pack your vocabulary with information | "What’s the price?" | +Don't preface your information with lots of words that don’t convey meaning | "I was wondering if you could tell me about your pricing structure". | +Use simple sentences or phrases | Short sentence: "I want to understand your product". Phrase: "understand your product" | +Avoid using complex sentence structure | "I want to make sure that I have a full understanding of your product". + + +## Read more +--- +
+
+

API Reference

+ +* [`POST` v1/manage/tracker](/management-api/trackers/create-tracker) +* [`GET` v1/manage/tracker/{trackerId}](/management-api/trackers/get-tracker#get-tracker-by-id) +* [`GET` v1/manage/trackers?&name={trackerName}](/management-api/trackers/get-tracker#get-tracker) +* [`PUT`v1/manage/tracker/{trackerId}](/management-api/trackers/update-tracker) +* [`DELETE`v1/manage/tracker/{trackerId}](/management-api/trackers/delete-tracker) + +
+
+
+

Tutorials

+ + +* [How to create and use Trackers- Trackers Management API](/docs/tutorials/trackers/consuming-trackers-management-api/) +* [Creating Trackers with Async APIs](/docs/tutorials/trackers/create-trackers-async-api/) +* [Creating Trackers with Streaming API](/docs/tutorials/trackers/create-trackers-streaming-api/) +* [Using Trackers with Streaming API](/docs/tutorials/trackers/consuming-trackers-streaming-api/) + + +
+
+ +
+
+
+ +
+
\ No newline at end of file diff --git a/docs/tutorials/trackers/consuming-trackers-streaming-api.md b/docs/tutorials/trackers/consuming-trackers-streaming-api.md new file mode 100644 index 00000000..02f27e8a --- /dev/null +++ b/docs/tutorials/trackers/consuming-trackers-streaming-api.md @@ -0,0 +1,199 @@ +--- +id: consuming-trackers-streaming-api +title: Consuming Trackers with Streaming API +sidebar_label: Consuming Trackers with Streaming API +slug: /tutorials/trackers/consuming-trackers-streaming-api/ +--- + +--- +:::note In Beta Phase +This feature is in the Beta phase. If you have any questions, ideas or suggestions please reach out to us at devrelations@symbl.ai. +::: + + +To pass a Tracker in the Streaming API, utilize the `config` object. + +Given below is an example that shows how to pass Trackers in the `config` object for the `startRealtimeRequest` of the Symbl’s JS SDK. This example also shows how to consume the results of the detected Trackers in real-time. + +:::info Using Enable All Trackers functionality +Additionally, you can pass the parameter `enableAllTrackers` in the `config` object for `trackers` to use all the Trackers linked to your Symbl account. See the sample below to understand how to pass this. +::: + +:::tip Best Practises +Before creating the Trackers, go through the [Best Practices](#best-practices) section to learn about how to create Trackers. +::: + +```js +const connection = await sdk.startRealtimeRequest({ + id, + insightTypes: ['action_item', 'question'], + trackers: [ + { + name: "Promotion Mention", + vocabulary: [ + "We have a special promotion going on if you book this before", + "I can offer you a discount of 10 20 percent you being a new customer for us", + "We have our month special this month", + "We have a sale right now on" + ] + } + ], + config: { + meetingTitle: "My Meeting", + confidenceThreshold: 0.7, + languageCode: "en-US", + sampleRateHertz: 48000, + trackers: { + "interimResults": true, + "enableAllTrackers": true + } + }, + speaker: { + // Optional, if not specified, will simply not send an email in the end. + userId: "john@example.com", // Update with valid email + name: "John", + }, + handlers: { + onTrackerResponse: (data) => { + // When a tracker is detected in real-time + console.log('onTrackerResponse', JSON.stringify(data, null, 2)); + if (!!data) { + data.forEach((tracker) => { + console.log(`Detected Tracker Name: ${tracker.name}`); + console.log(`Detected Matches`); + tracker.matches.forEach((match) => { + console.log(`Tracker Value: ${match.value}`); + console.log(`Messages detected against this Tracker`); + match.messageRefs.forEach((messageRef) => { + console.log(`Message ID: ${messageRef.id}`); + console.log(`Message text for which the match was detected: ${messageRef.text}`); + console.log(`\n`); + }); + console.log(`\n\n`); + + console.log(`Insights detected against this Tracker`); + match.messageRefs.forEach((insightRef) => { + console.log(`Insight ID: ${insightRef.id}`); + console.log(`Insight text for which the match was detected: ${insightRef.text}`); + console.log(`Insight Type: ${insightRef.type}`); + console.log(`\n`); + }); + console.log(`\n\n`); + }); + }); + } + }, + }, +}) +``` +### Parameter Description + +Let’s go over all the parameters passed in the configuration object in the above function: + +Field | Required | +---------- | ------- | +`id` | A unique UUID that represents this WebSocket API Session. +`insightType` | The types of Insights to be detected for this Conversation. +`trackers`| The Trackers to be detected in real-time for that Conversation. Follows the same structure as described in the [Trackers section](/docs/management-api/trackers/create-tracker#sample-request-body). +`config`| The config object encapsulates the metadata for the WebSocket API’s session. +`meetingTitle`| The title for this conversation/meeting. +`confidenceThreshold` | The insights having confidence scores greater than this threshold will be the ones detected for the Conversation. +`languageCode` | The language-code in BCP-47 format. +`sampleRateHertz`| The sample-rate of the incoming audio data which is being pushed to Symbl. +`trackers.interimResults`| The `interimResults` flag tells Symbl to send the tracker results as soon as they are detected. If `false`, the tracker results are detected for the finalized transcription responses. +`trackers.enableAllTrackers`| The `enableAllTrackers` parameter must be sent to detect all the Trackers. The purpose of this flag is to enable detection of all the Trackers created with the Management API that maintains your entities with Symbl at the account level. +`speaker` | The details of the speaker in this Conversation +`userId`| Unique identifier to represent the User. +`name` | The name of the User. +`handlers` | The object encapsulating the call-back functions to be invoked on detection of those specific entities. For more information on various such handlers, check out this [link](/docs/javascript-sdk/tutorials/receive-ai-insights-from-your-computer/). +`onTrackerResponse`| This function is invoked when Symbl detects a Tracker in real-time. The structure of the Tracker object is shown in the above code snippet. + +## Response + +```js +"trackers":[ + { + "name":"Testing Tracker Dev User 75", + "matches":[ + { + "type":"vocabulary", + "value":"Documents", + "messageRefs":[ + { + "id":"53867534-0459-4d22-b590-984ee82166aa", + "text":"Anyways, so I will submit documents tomorrow.", + "offset":26 + }, + { + "id":"4d20d90c-50a7-4594-bb10-2995dcd4bbd1", + "text":"I will submit documents tomorrow.", + "offset":14 + } + ], + "insightRefs":[ + { + "id":"4d20d90c-50a7-4594-bb10-2995dcd4bbd1", + "text":"James needs to submit documents tomorrow.", + "type":"action_item", + "offset":22 + } + ] + } +``` +Field Name | Description +---------- | ------- | +`name` | The name of the Tracker detected | +`matches` | Array of match objects which contain the references to messages and insights detected in that conversation. | +`type` | The match type for the text. In the above example, the match is of type vocabulary. | +`value` | The textual value of the vocabulary for which this match was detected. | +`messageRefs` | Array of messages for which this Tracker was detected. | +`messageRefs.id`| The unique identifier of the message. | +`messageRefs.text` | The text body of the message. | +`messageRefs.offset`| The closest match of the text in the message. Offset of -1 means that an exact match for that specific vocabulary wasn’t found and this was the similar match. An offset greater than 0 indicates an exact match for the tracker in the payload of the message. + + +### Best Practices + +Following are the best practices to be followed while creating Trackers: + +Dos' and Don'ts | Example | +---------- | ------- | +Densely pack your vocabulary with information | "What’s the price?" | +Don't preface your information with lots of words that don’t convey meaning | "I was wondering if you could tell me about your pricing structure". | +Use simple sentences or phrases | Short sentence: "I want to understand your product". Phrase: "understand your product" | +Avoid using complex sentence structure | "I want to make sure that I have a full understanding of your product". + + +## Read more +--- +
+
+

API Reference

+ +* [`POST` v1/manage/tracker](/management-api/trackers/create-tracker) +* [`GET` v1/manage/tracker/{trackerId}](/management-api/trackers/get-tracker#get-tracker-by-id) +* [`GET` v1/manage/trackers?&name={trackerName}](/management-api/trackers/get-tracker#get-tracker) +* [`PUT`v1/manage/tracker/{trackerId}](/management-api/trackers/update-tracker) +* [`DELETE`v1/manage/tracker/{trackerId}](/management-api/trackers/delete-tracker) + +
+
+
+

Tutorials

+ + +* [How to create and use Trackers- Trackers Management API](/docs/tutorials/trackers/consuming-trackers-management-api/) +* [Creating Trackers with Async APIs](/docs/tutorials/trackers/create-trackers-async-api/) +* [Creating Trackers with Streaming API](/docs/tutorials/trackers/create-trackers-streaming-api/) +* [Using Trackers with Async API](/docs/tutorials/trackers/consuming-trackers-async-api/) + + +
+
+ +
+
+
+ +
+
diff --git a/docs/tutorials/trackers/consuming-trackers.md b/docs/tutorials/trackers/consuming-trackers.md new file mode 100644 index 00000000..6a3cf454 --- /dev/null +++ b/docs/tutorials/trackers/consuming-trackers.md @@ -0,0 +1,214 @@ +--- +id: consuming-trackers-management-api +title: How to Create and Use Trackers- Trackers Management API +sidebar_label: Creating and using Trackers- Trackers Management API +slug: /tutorials/trackers/consuming-trackers-management-api/ +--- + +--- +:::note In Beta Phase +This feature is in the Beta phase. If you have any questions, ideas or suggestions please reach out to us at devrelations@symbl.ai. +::: + + +Trackers can be consumed via the Management API, which takes the onus of maintaining these entities from the developer and shifts it to Symbl’s backend. The Management API provides an easy-to-consume REST interface for managing these entities. + +All Trackers created using Management API are saved and can be reused for other operations such as PUT, UPDATE and DELETE. +To read about the capabilities of the Management API, see the [Management API](/docs/management-api/introduction) page. + +:::note Trackers Management UI +You can also create, view, edit and delete Trackers via the Trackers Management UI. To access this feature, log in to the[Symbl Platform](https://platform.symbl.ai/#/login) + +- **Using punctuations**: You can only pass periods `.`, apostrophes `'` and dashes `-` in the trackers vocabulary. Other punctuations like `?`, `,`, `!`, `:`are not allowed. +- **Vocabulary terms**: You must add atleast 5 and a maximum of 50 vocabulary terms per Tracker. +- **Trackers limitation**: You can create up to 500 trackers per account. +::: + +### Step 1: Create Trackers +--- + + Create Trackers by sending a `POST` request to the Trackers Management API endpoint given below: + +```shell +POST "https://api.symbl.ai/v1/manage/tracker" +``` + +:::note Using Punctuations in Trackers Vocabulary +You can only pass the following punctuations in trackers vocabulary: +- Periods `.` +- Apostrophes `'` + +Using any other punctuation mark such as `?`, `,`, `!`, `:` is not allowed. +::: + +:::tip Best Practises +Before creating the Trackers, go through the [Best Practices](#best-practices) section to learn about how to create Trackers. +::: + +You can define the phrases and keywords in the **vocabulary** of the request body as shown below: + +```json +{ + "name":"Promotion Mention", + "vocabulary":[ + "We have a special promotion going on if you book this before", + "I can offer you a discount of 10 20 percent you being a new customer for us", + "We have our month special this month", + "We have a sale right now on" + ] +} +``` +This creates a Tracker and returns the following response. Note that every Tracker has a unique `id`. + +```json +{ + "tracker": { + "id": "4476908732794496", + "name": "Promotion Mention", + "vocabulary": [ + "We have a special promotion going on if you book this before", + "I can offer you a discount of 10 20 percent you being a new customer for us", + "We have our month special this month", + "We have a sale right now on" + ] + } +} +``` +### Step 2: Submit files using Async API with `enableAllTrackers` flag +--- +When you send a recorded audio, video or text using [Async API](http://localhost:3000/docs/async-api/introduction), set **enableAllTrackers=True** and **POST** the file to Symbl. + +Given below is an example of a POST request to Async Audio API for processing an audio recording with `enableAllTrackers` set to `true`. By default this is set to `false`. + +```shell +POST "https://api.symbl.ai/v1/process/audio?enableAllTrackers=true" +``` +:::note Specifying the "enableAllTrackers" parameter in the request + +The `enableAllTrackers` parameter must be sent mandatorily in the Async API to detect Trackers. The purpose of this flag is to enable detection of all the Trackers created with the [Management API](#tracker-consumption-with-management-api) that maintains your entities with Symbl at the account level. + +`enableAllTrackers` accepts a boolean value which must be passed in the Async APIs either as a query param or in the request body depending on which Async API you are using. See the complete list of Async APIs and how each accepts this parameter: + + | +---------- | ------- +As a query-param | Async Audio File API, Async Video File API. +In Request Body | Async Audio URL API, Async Video URL API, Async Text API. +::: + +On successful processing by the above mentioned API, you will get the `conversationId` and the `jobId` as shown below: + +#### Response +```json +{ + "conversationId": "6186250391257088", + "jobId": "78422976-e461-41cf-ba35-20397d16619e" +} +``` +You can use the `jobId` to get the job status using the [Job Status API.](/docs/async-api/overview/jobs-api/#get-job-status) + +:::note +Ensure that you wait for the job to complete before proceeding to Step 3. +::: + +### Step 3: Get detected messages containing Trackers +--- + +Using the `conversationId` from Step 2, you can `GET` the Trackers for the conversation. + +```shell +GET "https://api.symbl.ai/v1/conversations/{{conversation_id}}/trackers-detected" +``` +#### Response + +```json +{ + "type": "vocabulary", + "value": "Can you reiterate that one more time", + "messageRefs": [ + { + "id": "6428676305453056", + "text": "So I am not showing that here but you can have that, you know, for particular sentence and, you know, then aggregate based on the whole conversation.", + "offset": -1 + }, + { + "id": "6035928066818048", + "text": "Give that intent and name and that's it.", + "offset": -1 + } + ], + "insightRefs": [ + { + "text": "Yeah, and you So from sentiment analysis perspective, right?", + "offset": -1, + "type": "question", + "id": "5794360651153408" + } + ] +} +``` +:::caution Important +If the `conversationId` used in this Step is not processed with `enableAllTrackers=true` in the Async API, Trackers will not be detected. Using this flag as illustrated in Step 2 is mandatory. +::: + +### Supported API Operations with Management API + +Operation | Endpoint +---------- | ------- +Create Tracker | [`POST` v1/manage/tracker](/management-api/trackers/create-tracker) +Create Trackers in Bulk | [`POST` v1/manage/trackers](/management-api/trackers/create-tracker/#create-trackers-in-bulk) +Get Tracker with ID| [`GET`v1/manage/tracker/{trackerId}](/management-api/trackers/get-tracker#get-tracker-by-id) +Get Tracker with name | [`GET` v1/manage/trackers?&name={trackerName}](/management-api/trackers/get-tracker#get-tracker) +Update Tracker| [`PUT`v1/manage/tracker/{trackerId}](/management-api/trackers/update-tracker) +Delete Tracker| [`DELETE`v1/manage/tracker/{trackerId}](/management-api/trackers/delete-tracker) + + +:::caution Old Endpoint +The old endpoint for fetching Trackers (given below) is deprecated and not recommended to be used +`GET https://api.symbl.ai/v1/conversations/{conversationId}/trackers` +::: + +### Best Practices + +Following are the best practices to be followed while creating Trackers: + +Dos' and Don'ts | Example | +---------- | ------- | +Densely pack your vocabulary with information | "What’s the price?" | +Don't preface your information with lots of words that don’t convey meaning | "I was wondering if you could tell me about your pricing structure". | +Use simple sentences or phrases | Short sentence: "I want to understand your product". Phrase: "understand your product" | +Avoid using complex sentence structure | "I want to make sure that I have a full understanding of your product". + + +## Read more +--- +
+
+

API Reference

+ +* [`POST` v1/manage/tracker](/management-api/trackers/create-tracker) +* [`GET` v1/manage/tracker/{trackerId}](/management-api/trackers/get-tracker#get-tracker-by-id) +* [`GET` v1/manage/trackers?&name={trackerName}](/management-api/trackers/get-tracker#get-tracker) +* [`PUT`v1/manage/tracker/{trackerId}](/management-api/trackers/update-tracker) +* [`DELETE`v1/manage/tracker/{trackerId}](/management-api/trackers/delete-tracker) + +
+
+
+

Tutorials

+ + +* [Creating Trackers with Async APIs](/docs/tutorials/trackers/create-trackers-async-api/) +* [Creating Trackers with Streaming API](/docs/tutorials/trackers/create-trackers-streaming-api/) +* [Using Trackers with Async API](/docs/tutorials/trackers/consuming-trackers-async-api/) +* [Using Trackers with Streaming API](/docs/tutorials/trackers/consuming-trackers-streaming-api/) + + +
+
+ +
+
+
+ +
+
diff --git a/docs/tutorials/trackers/creating-trackers-async-api.md b/docs/tutorials/trackers/creating-trackers-async-api.md new file mode 100644 index 00000000..8774eca5 --- /dev/null +++ b/docs/tutorials/trackers/creating-trackers-async-api.md @@ -0,0 +1,284 @@ +--- +id: create-trackers-async-api +title: Creating Trackers with Async API +sidebar_label: Creating Trackers with Async API +slug: /tutorials/trackers/create-trackers-async-api/ +--- + +--- +:::note In Beta Phase +This feature is in the Beta phase. If you have any questions, ideas or suggestions please reach out to us at devrelations@symbl.ai. +::: + +Symbl provides a diverse set of Async APIs based on Audio/Video or Textual content. For more details on Async APIs refer to the documentation [here](/docs/async-api/introduction). + +The Trackers once ingested via the request, will then try to detect these in the Conversation. Once the job is complete, you can fetch the Trackers from the Conversation API through the `/trackers` endpoint described below. + +:::info Creating Trackers with Management API +While you can create Trackers with Async or Streaming APIs, it is recommended that you create Trackers using Management API because Trackers created with Management APIs are saved and can be reused while the same is not possible with Async or Streaming APIs. +::: + + +### Async Audio File API +The Tracker entities should be passed in as a **query parameter** in the Async Audio API’s URL like shown below + +:::tip Best Practises +Before creating the Trackers, go through the [Best Practices](#best-practices) section to learn about how to create Trackers. +::: + +### API Endpoint + +```json +"https"://api.symbl.ai/v1/process/audio?trackers=[ + { + "name":"COVID-19", + "vocabulary":[ + "social distancing", + "cover your face with mask", + "vaccination" + ] + } +] +``` +### Request Headers + +Header Name | Required | Description +---------- | ------- | ------- | +```Authorization``` | Mandatory | `Bearer ` The token you get from our [authentication process](/docs/developer-tools/authentication). +```Content-Type ``` | Optional | `application/json` This header must contain the MIME Type of the audio file’s container. +```x-api-key``` | Optional | DEPRECATED. The JWT token you get from our [authentication process](/docs/developer-tools/authentication). + +## Async Audio URL API + +The Tracker entities should be passed in as a member of the **request body** of the Async Audio URL API like shown below: + +### API Endpoint + +**POST `https://api.symbl.ai/v1/process/audio/url`** + +### Request Header + +Header Name | Required | Description +---------- | ------- | ------- | +```Authorization``` | Mandatory | `Bearer ` The token you get from our [authentication process](/docs/developer-tools/authentication). +```Content-Type ``` | Mandatory | `application/json` This header must contain the MIME Type of the audio file’s container. +```x-api-key``` | Optional | DEPRECATED. The JWT token you get from our [authentication process](/docs/developer-tools/authentication). + + +### Request Body + +```json +{ + "url": "", + "confidenceThreshold": 0.6, + "timezoneOffset": 0, + "trackers": [ + { + "name": "Promotion Mention", + "vocabulary": [ + "We have a special promotion going on if you book this before", + "I can offer you a discount of 10 20 percent you being a new customer for us", + "We have our month special this month", + "We have a sale right now on" + ] + } + ] +} +``` +Notice that the trackers member follows the same structure as mentioned in the Trackers section above. + +### Response + +```json +{ + "conversationId": "5815170693595136", + "jobId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d" +} +``` + +### Async Video File API +The Tracker entities should be passed in as a **query parameter** in the Async Video API’s URL like shown below: + +### API Endpoint + +```json +"https"://api.symbl.ai/v1/process/video?trackers=[ + { + "name":"COVID-19", + "vocabulary":[ + "social distancing", + "cover your face with mask", + "vaccination" + ] + } +] +``` + +### Request Header + +Header Name | Required | Description +---------- | ------- | ------- | +```Authorization``` | Mandatory | `Bearer ` The token you get from our [authentication process](/docs/developer-tools/authentication). +```Content-Type ``` | Optional | `application/json` This header must contain the MIME Type of the audio file’s container. +```x-api-key``` | Optional | DEPRECATED. The JWT token you get from our [authentication process](/docs/developer-tools/authentication). + +Notice that the trackers query parameter follows the same structure as mentioned in the Trackers section above. + +### Response + +```json +{ + "conversationId": "5815170693595136", + "jobId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d" +} +``` + +### Async Video URL API +The Tracker entities should be passed in as a member of the request body of the Async Video URL API like shown below: + +### API Endpoint + +**POST `https://api.symbl.ai/v1/process/video/url`** + +### Request Headers + +Header Name | Required | Description +---------- | ------- | ------- | +```Authorization``` | Mandatory | `Bearer ` The token you get from our [authentication process](/docs/developer-tools/authentication). +```Content-Type ``` | Mandatory | `application/json` This header must contain the MIME Type application/json. +```x-api-key``` | Optional | DEPRECATED. The JWT token you get from our [authentication process](/docs/developer-tools/authentication). + +### Request Body +```json +{ + "url": "", + "confidenceThreshold": 0.6, + "timezoneOffset": 0, + "trackers": [ + { + "name": "Promotion Mention", + "vocabulary": [ + "We have a special promotion going on if you book this before", + "I can offer you a discount of 10 20 percent you being a new customer for us", + "We have our month special this month", + "We have a sale right now on" + ] + } + ] +} +``` +Notice that the trackers member follows the same structure as mentioned in the Trackers section above. + +### Response + +```json +{ + "conversationId": "5815170693595136", + "jobId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d" +} +``` + +### Async Text API +The Tracker entities should be passed in as a member of the **request body** of the Async Text API like shown below: + +### API Endpoint + +**POST `https://api.symbl.ai/v1/process/text`** + + +### Request Headers + +Header Name | Required | Description +---------- | ------- | ------- | +```Authorization``` | Mandatory | `Bearer ` The token you get from our [authentication process](/docs/developer-tools/authentication). +```Content-Type ``` | Mandatory | `application/json` This header must contain the MIME Type application/json. +```x-api-key``` | Optional | DEPRECATED. The JWT token you get from our [authentication process](/docs/developer-tools/authentication). + +### Request Body + +```json +{ + "name": "My Sales Conversation", + "conversationType": [ + "sales" + ], + "messages": [ + { + "payload": { + "content": "", + "contentType": "text/plain" + }, + "from": { + "name": "John", + "userId": "john@example.com" + } + } + ], + "trackers": [ + { + "name": "Promotion Mention", + "vocabulary": [ + "We have a special promotion going on if you book this before", + "I can offer you a discount of 10 20 percent you being a new customer for us", + "We have our month special this month", + "We have a sale right now on" + ] + } + ] +} +``` +Notice that the trackers member follows the same structure as the Trackers section above. + +### Response + +```json +{ + "conversationId": "5815170693595136", + "jobId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d" +} +``` + +### Best Practices + +Following are the best practices to be followed while creating Trackers: + +Dos' and Don'ts | Example | +---------- | ------- | +Densely pack your vocabulary with information | "What’s the price?" | +Don't preface your information with lots of words that don’t convey meaning | "I was wondering if you could tell me about your pricing structure". | +Use simple sentences or phrases | Short sentence: "I want to understand your product". Phrase: "understand your product" | +Avoid using complex sentence structure | "I want to make sure that I have a full understanding of your product". + +## Read more +--- +
+
+

API Reference

+ +* [`POST` v1/manage/tracker](/management-api/trackers/create-tracker) +* [`GET` v1/manage/tracker/{trackerId}](/management-api/trackers/get-tracker#get-tracker-by-id) +* [`GET` v1/manage/trackers?&name={trackerName}](/management-api/trackers/get-tracker#get-tracker) +* [`PUT`v1/manage/tracker/{trackerId}](/management-api/trackers/update-tracker) +* [`DELETE`v1/manage/tracker/{trackerId}](/management-api/trackers/delete-tracker) + +
+
+
+

Tutorials

+ + +* [How to create and use Trackers- Trackers Management API](/docs/tutorials/trackers/consuming-trackers-management-api/) +* [Creating Trackers with Streaming API](/docs/tutorials/trackers/create-trackers-streaming-api/) +* [Using Trackers with Async API](/docs/tutorials/trackers/consuming-trackers-async-api/) +* [Using Trackers with Streaming API](/docs/tutorials/trackers/consuming-trackers-streaming-api/) + + +
+
+ +
+
+
+ +
+
diff --git a/docs/streamingapi/code-snippets/consume-trackers-with-streaming-api.md b/docs/tutorials/trackers/creating-trackers-streaming-api.md similarity index 51% rename from docs/streamingapi/code-snippets/consume-trackers-with-streaming-api.md rename to docs/tutorials/trackers/creating-trackers-streaming-api.md index f610d7ed..99cdf90e 100644 --- a/docs/streamingapi/code-snippets/consume-trackers-with-streaming-api.md +++ b/docs/tutorials/trackers/creating-trackers-streaming-api.md @@ -1,15 +1,26 @@ --- -id: consume-trackers -title: Consume Trackers with Streaming API -sidebar_label: Consume Trackers with Streaming API -slug: /streaming-api/code-snippets/consume-trackers-with-streaming-api/ +id: create-trackers-streaming-api +title: Creating Trackers with Streaming API +sidebar_label: Creating Trackers with Streaming API +slug: /tutorials/trackers/create-trackers-streaming-api/ --- -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; --- +:::note In Beta Phase +This feature is in the Beta phase. If you have any questions, ideas or suggestions please reach out to us at devrelations@symbl.ai. +::: -Below is an example that shows how to pass Trackers in the config object for the startRealtimeRequest of the Symbl’s JS SDK. This example also shows how to consume the results of the detected Trackers in real-time. +You can create and consume Trackers in real-time using the Streaming APIs. + +Below is an example that shows how to pass Trackers in the `config` object for the `startRealtimeRequest` of the Symbl’s JS SDK. This example also shows how to consume the results of the detected Trackers in real-time. + +:::info Creating Trackers with Management API +While you can create Trackers with Async or Streaming APIs, it is recommended that you create Trackers using Management API because Trackers created with Management APIs are saved and can be reused while the same is not possible with Async or Streaming APIs. +::: + +:::tip Best Practises +Before creating the Trackers, go through the [Best Practices](#best-practices) section to learn about how to create Trackers. +::: ```js @@ -32,7 +43,8 @@ const connection = await sdk.startRealtimeRequest({ languageCode: "en-US", sampleRateHertz: 48000, trackers: { - "interimResults": true + "interimResults": true, + "enableAllTrackers": true } }, speaker: { @@ -80,16 +92,63 @@ Let’s go over all the parameters passed in the configuration object in the abo Field | Required | ---------- | ------- | `id` | A unique UUID that represents this WebSocket API Session. -`insightType` | The types of Insights to be detected for this Conversation. +`insightTypes` | The types of Insights to be detected for this Conversation. `trackers`| The Trackers to be detected in real-time for that Conversation. Follows the same structure as described in the [Trackers section](/docs/management-api/trackers/create-tracker#sample-request-body). `config`| The config object encapsulates the metadata for the WebSocket API’s session. `meetingTitle`| The title for this conversation/meeting. `confidenceThreshold` | The insights having confidence scores greater than this threshold will be the ones detected for the Conversation. `languageCode` | The language-code in BCP-47 format. `sampleRateHertz`| The sample-rate of the incoming audio data which is being pushed to Symbl. -`trackers: { interimResults }`| The interimResults flag tells Symbl to send the tracker results as soon as they are detected. If false, the tracker results are detected for the finalized transcription responses. +`trackers.interimResults`| The interimResults flag tells Symbl to send the tracker results as soon as they are detected. If false, the tracker results are detected for the finalized transcription responses. +`trackers.enableAllTrackers`| The `enableAllTrackers` parameter must be sent to detect all the Trackers. The purpose of this flag is to enable detection of all the Trackers created with the Management API that maintains your entities with Symbl at the account level. `speaker` | The details of the speaker in this Conversation `userId`| Unique identifier to represent the User. `name` | The name of the User. `handlers` | The object encapsulating the call-back functions to be invoked on detection of those specific entities. For more information on various such handlers, check out this [link](/docs/javascript-sdk/tutorials/receive-ai-insights-from-your-computer/). -`onTrackerResponse`| This function is invoked when Symbl detects a Tracker in real-time. The structure of the Tracker object is shown in the above code snippet. \ No newline at end of file +`onTrackerResponse`| This function is invoked when Symbl detects a Tracker in real-time. The structure of the Tracker object is shown in the above code snippet. + +### Best Practices + +Following are the best practices to be followed while creating Trackers: + +Dos' and Don'ts | Example | +---------- | ------- | +Densely pack your vocabulary with information | "What’s the price?" | +Don't preface your information with lots of words that don’t convey meaning | "I was wondering if you could tell me about your pricing structure". | +Use simple sentences or phrases | Short sentence: "I want to understand your product". Phrase: "understand your product" | +Avoid using complex sentence structure | "I want to make sure that I have a full understanding of your product". + + +## Read more +--- +
+
+

API Reference

+ +* [`POST` v1/manage/tracker](/management-api/trackers/create-tracker) +* [`GET` v1/manage/tracker/{trackerId}](/management-api/trackers/get-tracker#get-tracker-by-id) +* [`GET` v1/manage/trackers?&name={trackerName}](/management-api/trackers/get-tracker#get-tracker) +* [`PUT`v1/manage/tracker/{trackerId}](/management-api/trackers/update-tracker) +* [`DELETE`v1/manage/tracker/{trackerId}](/management-api/trackers/delete-tracker) + +
+
+
+

Tutorials

+ + +* [How to create and use Trackers- Trackers Management API](/docs/tutorials/trackers/consuming-trackers-management-api/) +* [Creating Trackers with Async APIs](/docs/tutorials/trackers/create-trackers-async-api/) +* [Using Trackers with Async API](/docs/tutorials/trackers/consuming-trackers-async-api/) +* [Using Trackers with Streaming API](/docs/tutorials/trackers/consuming-trackers-streaming-api/) + + +
+
+ +
+
+
+ +
+
diff --git a/sidebars.js b/sidebars.js index 0555961a..12b93ce3 100644 --- a/sidebars.js +++ b/sidebars.js @@ -406,7 +406,6 @@ id: 'developer-tools/postman', 'streamingapi/code-snippets/receive-live-captioning', 'streamingapi/code-snippets/receive-live-topics', 'streamingapi/code-snippets/receive-ai-insights', - 'streamingapi/code-snippets/consume-trackers', 'streamingapi/code-snippets/receive-speech-to-text-for-different-languages', 'streamingapi/code-snippets/receive-trackers-in-spanish', ], @@ -449,6 +448,18 @@ id: 'developer-tools/postman', 'tutorials/summarization/refreshing-summary', 'tutorials/summarization/adding-speaker-info', ], +}, +{ + label: 'Trackers API (Beta)', + type: 'category', + collapsed: true, + items: [ + 'tutorials/trackers/consuming-trackers-management-api', + 'tutorials/trackers/create-trackers-streaming-api', + 'tutorials/trackers/consuming-trackers-async-api', + 'tutorials/trackers/create-trackers-async-api', + 'tutorials/trackers/consuming-trackers-streaming-api', + ], }, { label: "Pre-built UI", diff --git a/src/css/custom.css b/src/css/custom.css index dd723987..c5ae6524 100644 --- a/src/css/custom.css +++ b/src/css/custom.css @@ -409,6 +409,13 @@ th:empty { margin-bottom: 20px; } } + + .card21 { + box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2); /* this adds the "card" effect */ + padding: 16px; + text-align: left; + width: 100%; +} /* Button element */ .button { From 5fd0dde52e00954a8b23411b7cd6b41e5ccce8ec Mon Sep 17 00:00:00 2001 From: harshal kaigaonkar <65395607+harshalkaigaonkar@users.noreply.github.com> Date: Mon, 21 Mar 2022 16:52:14 +0530 Subject: [PATCH 15/43] Updated/Added slugs for every Page required (DC-307) (#439) * DC-307 * added forward slash for every slug of the file * '/' added to slug of changelog for topbar * Added slugs for pages on sidebar of landing page * slugs for links on sidebars for API reference * slugs for links on sidebars for Tutorials, No Updates for SDKs * Adds changes to Labs topics + updates changelog Co-authored-by: pema-s <81958801+pema-s@users.noreply.github.com> --- .../experience-api/post-text-summary-ui.md | 1 + .../post-trackers-and-analytics-ui.md | 2 +- .../experience-api/post-video-summary-ui.md | 1 + .../how-to-use-sentiment-analysis.md | 1 + .../receive-conversation-analytics.md | 1 + .../code-snippets/receive-entities.md | 1 + .../receive-speech-to-text-and-ai-insights.md | 1 + .../sentiment-analysis-on-messages.md | 1 + .../sentiment-analysis-on-topics.md | 1 + .../track-phrases-in-a-conversation.md | 1 + .../overview/audio/post-audio-url.md | 1 + docs/async-api/overview/audio/post-audio.md | 1 + .../async-api/overview/audio/put-audio-url.md | 1 + docs/async-api/overview/audio/put-audio.md | 1 + docs/async-api/overview/jobs-api.md | 1 + docs/async-api/overview/text/post-text.md | 1 + docs/async-api/overview/text/put-text.md | 1 + .../overview/video/post-video-url.md | 1 + docs/async-api/overview/video/post-video.md | 1 + .../async-api/overview/video/put-video-url.md | 1 + docs/async-api/overview/video/put-video.md | 1 + .../reference/supported-languages.md | 1 + docs/changelog.md | 4 ++ .../concepts/ui-components.md | 1 + docs/conversation-api/introduction.md | 1 + docs/developer-tools/authentication.md | 1 + docs/developer-tools/errors.md | 1 + docs/developer-tools/postman.md | 1 + docs/developer-tools/sample_apps.md | 2 +- docs/faq.md | 1 + docs/guides/abstract-topics.md | 1 + docs/how-tos/get-speech-to-text-async.md | 3 +- docs/how-tos/get-speech-to-text-real-time.md | 1 + docs/how-tos/get-topics.md | 1 + docs/labs/abstract-topics.md | 41 +++++++++++++++++++ docs/pre-built-ui/custom-domain.md | 2 +- docs/pre-built-ui/symbl-elements.md | 1 + docs/pre-built-ui/text-summary-ui.md | 1 + docs/pre-built-ui/tuning-summary-page.md | 2 +- docs/pre-built-ui/video-summary-ui.md | 2 +- docs/pre-built-ui/waveform-ui.md | 1 + .../code-snippets/detect-key-phrases.md | 1 + .../code-snippets/receive-live-captioning.md | 2 +- .../code-snippets/receive-live-insights.md | 2 +- .../code-snippets/receive-live-topics.md | 2 +- ...-speech-to-text-for-different-languages.md | 1 + .../receive-trackers-in-spanish.md | 1 + docs/streamingapi/reference/reference.md | 4 +- .../code-snippets/connect-to-pstn.md | 1 + .../telephony/code-snippets/connect-to-sip.md | 1 + ...ve-prebuilt-ui-email-after-conversation.md | 1 + ...speech-to-text-for-a-different-language.md | 1 + .../creating-text-summary-ui.md | 2 +- .../creating-trackers-and-analytics-ui.md | 2 +- .../creating-video-summary-ui.md | 2 +- .../whitelabeling-summary-ui.md | 2 +- docusaurus-staging.config.js | 2 +- docusaurus.config.js | 2 +- sidebars.js | 3 +- 59 files changed, 105 insertions(+), 18 deletions(-) create mode 100644 docs/labs/abstract-topics.md diff --git a/docs/api-reference/experience-api/post-text-summary-ui.md b/docs/api-reference/experience-api/post-text-summary-ui.md index b73dd558..e22bb3af 100644 --- a/docs/api-reference/experience-api/post-text-summary-ui.md +++ b/docs/api-reference/experience-api/post-text-summary-ui.md @@ -2,6 +2,7 @@ id: post-text-summary-ui title: POST Text Summary UI sidebar_label: POST Text Summary UI +slug: /api-reference/experience-api/post-text-summary-ui/ --- diff --git a/docs/api-reference/experience-api/post-trackers-and-analytics-ui.md b/docs/api-reference/experience-api/post-trackers-and-analytics-ui.md index e17329a5..b8acc970 100644 --- a/docs/api-reference/experience-api/post-trackers-and-analytics-ui.md +++ b/docs/api-reference/experience-api/post-trackers-and-analytics-ui.md @@ -2,7 +2,7 @@ id: post-trackers-and-analytics-ui title: POST Trackers and Analytics UI sidebar_label: POST Trackers and Analytics UI - +slug: /api-reference/experience-api/post-trackers-and-analytics-ui/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/api-reference/experience-api/post-video-summary-ui.md b/docs/api-reference/experience-api/post-video-summary-ui.md index c058fbcb..40c6238f 100644 --- a/docs/api-reference/experience-api/post-video-summary-ui.md +++ b/docs/api-reference/experience-api/post-video-summary-ui.md @@ -2,6 +2,7 @@ id: post-video-summary-ui title: POST Video Summary UI sidebar_label: POST Video Summary UI +slug: /api-reference/experience-api/post-video-summary-ui/ --- diff --git a/docs/async-api/code-snippets/how-to-use-sentiment-analysis.md b/docs/async-api/code-snippets/how-to-use-sentiment-analysis.md index fcb12b92..ab638e9b 100644 --- a/docs/async-api/code-snippets/how-to-use-sentiment-analysis.md +++ b/docs/async-api/code-snippets/how-to-use-sentiment-analysis.md @@ -1,6 +1,7 @@ --- id: how-to-use-sentiment-analysis title: How To Use Sentiment Analysis (Beta) +slug: /async-api/code-snippets/how-to-use-sentiment-analysis/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/async-api/code-snippets/receive-conversation-analytics.md b/docs/async-api/code-snippets/receive-conversation-analytics.md index b25b9a44..b71e766e 100644 --- a/docs/async-api/code-snippets/receive-conversation-analytics.md +++ b/docs/async-api/code-snippets/receive-conversation-analytics.md @@ -1,6 +1,7 @@ --- id: receive-conversation-analytics title: Receive Conversation Analytics +slug: /async-api/code-snippets/receive-conversation-analytics/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/async-api/code-snippets/receive-entities.md b/docs/async-api/code-snippets/receive-entities.md index c703c47a..741a393b 100644 --- a/docs/async-api/code-snippets/receive-entities.md +++ b/docs/async-api/code-snippets/receive-entities.md @@ -1,6 +1,7 @@ --- id: receive-entities title: Receive Entities From Conversation +slug: /async-api/code-snippets/receive-entities/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/async-api/code-snippets/receive-speech-to-text-and-ai-insights.md b/docs/async-api/code-snippets/receive-speech-to-text-and-ai-insights.md index 3e48d467..cedb9b51 100644 --- a/docs/async-api/code-snippets/receive-speech-to-text-and-ai-insights.md +++ b/docs/async-api/code-snippets/receive-speech-to-text-and-ai-insights.md @@ -1,6 +1,7 @@ --- id: receive-speech-to-text-and-ai-insights title: Receive Speech-to-Text and AI Insights +slug: /async-api/code-snippets/receive-speech-to-text-and-ai-insights/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/async-api/code-snippets/sentiment-analysis-on-messages.md b/docs/async-api/code-snippets/sentiment-analysis-on-messages.md index f8005cb9..fadbbbb8 100644 --- a/docs/async-api/code-snippets/sentiment-analysis-on-messages.md +++ b/docs/async-api/code-snippets/sentiment-analysis-on-messages.md @@ -1,6 +1,7 @@ --- id: sentiment-analysis-on-messages title: Sentiment Analysis on Messages (Beta) +slug: /async-api/code-snippets/sentiment-analysis-on-messages/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/async-api/code-snippets/sentiment-analysis-on-topics.md b/docs/async-api/code-snippets/sentiment-analysis-on-topics.md index e73ea234..6383058e 100644 --- a/docs/async-api/code-snippets/sentiment-analysis-on-topics.md +++ b/docs/async-api/code-snippets/sentiment-analysis-on-topics.md @@ -1,6 +1,7 @@ --- id: sentiment-analysis-on-topics title: Sentiment Analysis on Topics (Beta) +slug: /async-api/code-snippets/sentiment-analysis-on-topics/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/async-api/code-snippets/track-phrases-in-a-conversation.md b/docs/async-api/code-snippets/track-phrases-in-a-conversation.md index b7ac7d4e..75668d8f 100644 --- a/docs/async-api/code-snippets/track-phrases-in-a-conversation.md +++ b/docs/async-api/code-snippets/track-phrases-in-a-conversation.md @@ -1,6 +1,7 @@ --- id: track-phrases-in-a-conversation title: Track Phrases In A Conversation +slug: /async-api/code-snippets/track-phrases-in-a-conversation/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/async-api/overview/audio/post-audio-url.md b/docs/async-api/overview/audio/post-audio-url.md index 3497999b..2370ecfd 100644 --- a/docs/async-api/overview/audio/post-audio-url.md +++ b/docs/async-api/overview/audio/post-audio-url.md @@ -1,6 +1,7 @@ --- id: post-audio-url title: POST Audio URL API +slug: /async-api/overview/audio/post-audio-url/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/async-api/overview/audio/post-audio.md b/docs/async-api/overview/audio/post-audio.md index de85cec4..58564b17 100644 --- a/docs/async-api/overview/audio/post-audio.md +++ b/docs/async-api/overview/audio/post-audio.md @@ -1,6 +1,7 @@ --- id: post-audio title: POST Audio API +slug: /async-api/overview/audio/post-audio/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/async-api/overview/audio/put-audio-url.md b/docs/async-api/overview/audio/put-audio-url.md index 0c7649f2..d949f62b 100644 --- a/docs/async-api/overview/audio/put-audio-url.md +++ b/docs/async-api/overview/audio/put-audio-url.md @@ -1,6 +1,7 @@ --- id: put-audio-url title: PUT Audio URL API +slug: /async-api/overview/audio/put-audio-url/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/async-api/overview/audio/put-audio.md b/docs/async-api/overview/audio/put-audio.md index eecc412c..dd65d0a0 100644 --- a/docs/async-api/overview/audio/put-audio.md +++ b/docs/async-api/overview/audio/put-audio.md @@ -1,6 +1,7 @@ --- id: put-audio title: PUT Audio API +slug: /async-api/overview/audio/put-audio/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/async-api/overview/jobs-api.md b/docs/async-api/overview/jobs-api.md index c05c3a95..f4951012 100644 --- a/docs/async-api/overview/jobs-api.md +++ b/docs/async-api/overview/jobs-api.md @@ -2,6 +2,7 @@ id: jobs-api title: What is the Job API? sidebar_label: Get Job Status +slug: /async-api/overview/jobs-api/ --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/async-api/overview/text/post-text.md b/docs/async-api/overview/text/post-text.md index 90b86789..446a3901 100644 --- a/docs/async-api/overview/text/post-text.md +++ b/docs/async-api/overview/text/post-text.md @@ -1,6 +1,7 @@ --- id: post-text title: POST Text API +slug: /async-api/overview/text/post-text/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/async-api/overview/text/put-text.md b/docs/async-api/overview/text/put-text.md index a66cf4f0..5fb25ba2 100644 --- a/docs/async-api/overview/text/put-text.md +++ b/docs/async-api/overview/text/put-text.md @@ -1,6 +1,7 @@ --- id: put-text title: PUT Text API +slug: /async-api/overview/text/put-text/ --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/async-api/overview/video/post-video-url.md b/docs/async-api/overview/video/post-video-url.md index 6a2ebb7b..ae47cfe3 100644 --- a/docs/async-api/overview/video/post-video-url.md +++ b/docs/async-api/overview/video/post-video-url.md @@ -1,6 +1,7 @@ --- id: post-video-url title: POST Video URL API +slug: /async-api/overview/video/post-video-url/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/async-api/overview/video/post-video.md b/docs/async-api/overview/video/post-video.md index 7436be1b..50a5e85e 100644 --- a/docs/async-api/overview/video/post-video.md +++ b/docs/async-api/overview/video/post-video.md @@ -1,6 +1,7 @@ --- id: post-video title: POST Video API +slug: /async-api/overview/video/post-video/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/async-api/overview/video/put-video-url.md b/docs/async-api/overview/video/put-video-url.md index 12783d88..70b59959 100644 --- a/docs/async-api/overview/video/put-video-url.md +++ b/docs/async-api/overview/video/put-video-url.md @@ -1,6 +1,7 @@ --- id: put-video-url title: PUT Video URL API +slug: /async-api/overview/video/put-video-url/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/async-api/overview/video/put-video.md b/docs/async-api/overview/video/put-video.md index c560cc7a..76e80ceb 100644 --- a/docs/async-api/overview/video/put-video.md +++ b/docs/async-api/overview/video/put-video.md @@ -1,6 +1,7 @@ --- id: put-video title: PUT Video API +slug: /async-api/overview/video/put-video/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/async-api/reference/supported-languages.md b/docs/async-api/reference/supported-languages.md index e6202bcb..ffb014ea 100644 --- a/docs/async-api/reference/supported-languages.md +++ b/docs/async-api/reference/supported-languages.md @@ -2,6 +2,7 @@ id: supported-languages title: Supported Languages sidebar_label: Supported Languages +slug: /async-api/reference/supported-languages/ --- ## Supported Languages diff --git a/docs/changelog.md b/docs/changelog.md index e39bb789..bc62e60b 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -11,6 +11,10 @@ import TabItem from '@theme/TabItem'; We continuously add new features and enhancements, fix critical bugs, and regularly deploy changes to improve performance. Keep a tab of our latest updates on this page. +### 14th March 2022 + +![api update](/img/api-update.png) +- **Enabling All Trackers with Streaming API**: Streaming API now supports enabling all the Trackers associated with an account. [Read more here](/docs/streaming-api/api-reference/#using-trackers).
### 8 Feb 2022 diff --git a/docs/conversation-api/concepts/ui-components.md b/docs/conversation-api/concepts/ui-components.md index 590736db..38e9b82d 100644 --- a/docs/conversation-api/concepts/ui-components.md +++ b/docs/conversation-api/concepts/ui-components.md @@ -2,6 +2,7 @@ id: ui-components title: Reusable and Customizable UI Components sidebar_label: Introduction +slug: /conversation-api/concepts/ui-components/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/conversation-api/introduction.md b/docs/conversation-api/introduction.md index 869977f9..63c4c992 100644 --- a/docs/conversation-api/introduction.md +++ b/docs/conversation-api/introduction.md @@ -3,6 +3,7 @@ id: introduction title: Conversation API- Extract Conversation Insights description: Use Symbl.ai Conversation APIs to get speech-to-text data and actionable insights from your conversations. Learn more. sidebar_label: Introduction +slug: /conversation-api/introduction/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/developer-tools/authentication.md b/docs/developer-tools/authentication.md index f95973b5..097ab227 100644 --- a/docs/developer-tools/authentication.md +++ b/docs/developer-tools/authentication.md @@ -2,6 +2,7 @@ id: authentication title: Authentication sidebar_label: Authentication +slug: /developer-tools/authentication/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/developer-tools/errors.md b/docs/developer-tools/errors.md index 009a8caf..65fa5ac4 100644 --- a/docs/developer-tools/errors.md +++ b/docs/developer-tools/errors.md @@ -2,6 +2,7 @@ id: errors title: Error Codes sidebar_label: Error Codes +slug: /developer-tools/errors/ --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/developer-tools/postman.md b/docs/developer-tools/postman.md index 6ae26a96..76985a6f 100644 --- a/docs/developer-tools/postman.md +++ b/docs/developer-tools/postman.md @@ -3,6 +3,7 @@ id: postman title: Using Postman sidebar_label: Using Postman image: https://i.imgur.com/mErPwqL.png +slug: /developer-tools/postman/ --- Postman is a desktop and web application that allows you to send HTTP requests from a graphical user interface. diff --git a/docs/developer-tools/sample_apps.md b/docs/developer-tools/sample_apps.md index 15ee15b2..60eaeb92 100644 --- a/docs/developer-tools/sample_apps.md +++ b/docs/developer-tools/sample_apps.md @@ -2,7 +2,7 @@ id: sample-apps title: Explore Sample Apps sidebar_label: Explore Sample Apps - +slug: /developer-tools/sample-apps/ --- import useBaseUrl from '@docusaurus/useBaseUrl'; diff --git a/docs/faq.md b/docs/faq.md index 0a54cda6..96c1f3af 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -2,6 +2,7 @@ id: faq title: Frequently Asked Questions sidebar_label: FAQ +slug: /faq/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/guides/abstract-topics.md b/docs/guides/abstract-topics.md index e571d3b9..0aee00c4 100644 --- a/docs/guides/abstract-topics.md +++ b/docs/guides/abstract-topics.md @@ -2,6 +2,7 @@ id: abstract-topics title: Abstract Topics (Labs) sidebar_label: Introduction +slug: /guides/abstract-topics/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/how-tos/get-speech-to-text-async.md b/docs/how-tos/get-speech-to-text-async.md index 70b109dc..0f8049d7 100644 --- a/docs/how-tos/get-speech-to-text-async.md +++ b/docs/how-tos/get-speech-to-text-async.md @@ -1,7 +1,8 @@ --- id: get-speech-to-text-async title: Speech-to-Text- Async -sidebar_label: Async Speech-to-Text +sidebar_label: Async Speech-to-Text +slug: /how-tos/get-speech-to-text-async/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/how-tos/get-speech-to-text-real-time.md b/docs/how-tos/get-speech-to-text-real-time.md index afe2ba34..a00b75ae 100644 --- a/docs/how-tos/get-speech-to-text-real-time.md +++ b/docs/how-tos/get-speech-to-text-real-time.md @@ -2,6 +2,7 @@ id: get-speech-to-text-real-time title: Speech-to-Text in Real-time sidebar_label: Real-time Speech-to-Text +slug: /how-tos/get-speech-to-text-real-time/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/how-tos/get-topics.md b/docs/how-tos/get-topics.md index 02753faa..a31160e7 100644 --- a/docs/how-tos/get-topics.md +++ b/docs/how-tos/get-topics.md @@ -2,6 +2,7 @@ id: how-to-get-topics title: Getting Topics sidebar_label: Real-time Topics +slug: /how-tos/how-to-get-topics/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/labs/abstract-topics.md b/docs/labs/abstract-topics.md new file mode 100644 index 00000000..9d1021e0 --- /dev/null +++ b/docs/labs/abstract-topics.md @@ -0,0 +1,41 @@ +--- +id: abstract-topics-labs +title: Abstract Topics (Labs) +sidebar_label: Introduction +slug: /labs/abstract-topics-labs/ +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +--- + +:::info Symbl Labs +This feature is a part of the Symbl Labs. Symbl Labs is our experimental wing designed to share our bleeding edge AI research on human conversations with anyone who wants to explore its limits. + + +You can access the Labs features using your Symbl App Id and Secret. If you don't already have it, sign up on [platform](https://platform.symbl.ai/#/login) to get your credentials. + +**Note**: The usage of data for Labs projects is stored for enhancing our research. We may continue to build, iterate, mutate or discontinue any of the below given features on the sole discretion of our team as deemed necessary. + +For any queries or feedback, please contact us at labs@symbl.ai. +::: + +Abstract Topics are topics that at a glance help you determine recurrent themes in a conversation. + +#### Example + +- Conversation on topics such as pricing, negotiation, sales representative, etc., are abstracted to **Sales**. + +- Conversation on coughing, cold, fever, chills, chest pain, etc., are abstracted to **Covid-19 Symptoms**. + +:::note +Currently, Abstract Topics are not supported in real-time. +::: + +## Abstract Topics API + +To get abstract topics, you must first process your conversation using [Async APIs](/docs/async-api/introduction). After you process the conversation, you will receive a Conversation ID which you must pass in the [Abstract Topics API](/docs/api-reference/abstract-topics). + +👉 [Abstract Topics API](/docs/api-reference/abstract-topics) + diff --git a/docs/pre-built-ui/custom-domain.md b/docs/pre-built-ui/custom-domain.md index 6ac33aa3..49e0f069 100644 --- a/docs/pre-built-ui/custom-domain.md +++ b/docs/pre-built-ui/custom-domain.md @@ -2,7 +2,7 @@ id: custom-domain title: Adding a Custom Domain (Beta) sidebar_label: Adding a Custom Domain (Beta) - +slug: /pre-built-ui/custom-domain/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/pre-built-ui/symbl-elements.md b/docs/pre-built-ui/symbl-elements.md index 5c87f31e..976182d8 100644 --- a/docs/pre-built-ui/symbl-elements.md +++ b/docs/pre-built-ui/symbl-elements.md @@ -2,6 +2,7 @@ id: symbl-elements title: Symbl React Elements sidebar_label: Symbl React Elements +slug: /pre-built-ui/symbl-elements/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/pre-built-ui/text-summary-ui.md b/docs/pre-built-ui/text-summary-ui.md index bd4ec38e..beb2cab7 100644 --- a/docs/pre-built-ui/text-summary-ui.md +++ b/docs/pre-built-ui/text-summary-ui.md @@ -2,6 +2,7 @@ id: text-summary-ui title: Text Summary UI sidebar_label: Text Summary UI +slug: /pre-built-ui/text-summary-ui/ --- diff --git a/docs/pre-built-ui/tuning-summary-page.md b/docs/pre-built-ui/tuning-summary-page.md index c223d38f..e40a1092 100644 --- a/docs/pre-built-ui/tuning-summary-page.md +++ b/docs/pre-built-ui/tuning-summary-page.md @@ -3,7 +3,7 @@ id: tuning-summary-page title: Tuning your Summary Page sidebar_label: Tuning your Summary Page - +slug: /pre-built-ui/tuning-summary-page/ --- --- diff --git a/docs/pre-built-ui/video-summary-ui.md b/docs/pre-built-ui/video-summary-ui.md index c836b272..53befa95 100644 --- a/docs/pre-built-ui/video-summary-ui.md +++ b/docs/pre-built-ui/video-summary-ui.md @@ -2,7 +2,7 @@ id: video-summary-ui title: Video Summary UI sidebar_label: Video Summary UI - +slug: /pre-built-ui/video-summary-ui/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/pre-built-ui/waveform-ui.md b/docs/pre-built-ui/waveform-ui.md index 96c5e5d8..84dfce20 100644 --- a/docs/pre-built-ui/waveform-ui.md +++ b/docs/pre-built-ui/waveform-ui.md @@ -2,6 +2,7 @@ id: trackers-and-analytics-ui title: Trackers and Analytics UI sidebar_label: Trackers and Analytics UI +slug: /pre-built-ui/trackers-and-analytics-ui/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/streamingapi/code-snippets/detect-key-phrases.md b/docs/streamingapi/code-snippets/detect-key-phrases.md index aa1089d9..daaacfe8 100644 --- a/docs/streamingapi/code-snippets/detect-key-phrases.md +++ b/docs/streamingapi/code-snippets/detect-key-phrases.md @@ -1,6 +1,7 @@ --- id: detect-key-phrases title: Detect Key Phrases +slug: /streamingapi/code-snippets/detect-key-phrases/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/streamingapi/code-snippets/receive-live-captioning.md b/docs/streamingapi/code-snippets/receive-live-captioning.md index 1529af4c..730f73ef 100644 --- a/docs/streamingapi/code-snippets/receive-live-captioning.md +++ b/docs/streamingapi/code-snippets/receive-live-captioning.md @@ -1,7 +1,7 @@ --- id: receive-live-captioning title: Receive Live Captioning -slug: /streamingapi/code-snippets/receive-live-captioning +slug: /streamingapi/code-snippets/receive-live-captioning/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/streamingapi/code-snippets/receive-live-insights.md b/docs/streamingapi/code-snippets/receive-live-insights.md index 69106b40..7598edc4 100644 --- a/docs/streamingapi/code-snippets/receive-live-insights.md +++ b/docs/streamingapi/code-snippets/receive-live-insights.md @@ -1,7 +1,7 @@ --- id: receive-ai-insights title: Receive Live AI Insights -slug: /streamingapi/code-snippets/receive-live-insights +slug: /streamingapi/code-snippets/receive-live-insights/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/streamingapi/code-snippets/receive-live-topics.md b/docs/streamingapi/code-snippets/receive-live-topics.md index e9c974c7..4f65f623 100644 --- a/docs/streamingapi/code-snippets/receive-live-topics.md +++ b/docs/streamingapi/code-snippets/receive-live-topics.md @@ -1,7 +1,7 @@ --- id: receive-live-topics title: Receive Live Topics -slug: /streamingapi/code-snippets/receive-live-topics +slug: /streamingapi/code-snippets/receive-live-topics/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/streamingapi/code-snippets/receive-speech-to-text-for-different-languages.md b/docs/streamingapi/code-snippets/receive-speech-to-text-for-different-languages.md index 586a4f85..1dfcd0a0 100644 --- a/docs/streamingapi/code-snippets/receive-speech-to-text-for-different-languages.md +++ b/docs/streamingapi/code-snippets/receive-speech-to-text-for-different-languages.md @@ -1,6 +1,7 @@ --- id: receive-speech-to-text-for-different-languages title: Receive Speech to Text for a different language in a conversation +slug: /streamingapi/code-snippets/receive-speech-to-text-for-different-languages/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/streamingapi/code-snippets/receive-trackers-in-spanish.md b/docs/streamingapi/code-snippets/receive-trackers-in-spanish.md index 66d65129..52f9b534 100644 --- a/docs/streamingapi/code-snippets/receive-trackers-in-spanish.md +++ b/docs/streamingapi/code-snippets/receive-trackers-in-spanish.md @@ -1,6 +1,7 @@ --- id: receive-trackers-in-spanish title: Receive Trackers in Spanish (Labs) +slug: /streamingapi/code-snippets/receive-trackers-in-spanish/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/streamingapi/reference/reference.md b/docs/streamingapi/reference/reference.md index 87e2d1b7..33477d26 100644 --- a/docs/streamingapi/reference/reference.md +++ b/docs/streamingapi/reference/reference.md @@ -30,7 +30,8 @@ The previous endpoint `wss://api.symbl.ai/v1/realtime/insights/` is now updated Field | Required | Supported Value | Description ---------- | ------- | ------- | ------- -```type``` | Optional | start_request, stop_request, modify_request | Type of message +```type``` | Mandatory | `start_request`, `stop_request` | Type of message. +```type``` | Optional | `modify_request` | Allows you to modify the request. [See the Modify Request section below for more details](#modify-request) ```insightTypes``` | Optional | action_item, question | Types of insights to return. If not provided, no insights will be returned. ```customVocabulary``` | Optional | List of String | An array of strings containing a vocabulary specific to your company, products, or phrases. ```config``` | Optional | Find the supported value [here](#config) | Configuration for this request. [See the config section below for more details](#config). @@ -221,6 +222,7 @@ setTimeout(() => { ``` ### Modify Request​ + The `modify_request` allows you to modify the request during Streaming API call, i.e., after the WebSocket connection has established, if there is a device change event. Using the `type` field with the supported value `modify_request` you can update the sample rate and encoding based on the new device information in the same conversation itself. diff --git a/docs/telephony/code-snippets/connect-to-pstn.md b/docs/telephony/code-snippets/connect-to-pstn.md index 2eabee46..2c3a4ed1 100644 --- a/docs/telephony/code-snippets/connect-to-pstn.md +++ b/docs/telephony/code-snippets/connect-to-pstn.md @@ -1,6 +1,7 @@ --- id: connect-to-pstn title: Connect to a PSTN connection to get Speech to Text and AI Insights +slug: /telephony/code-snippets/connect-to-pstn/ --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/telephony/code-snippets/connect-to-sip.md b/docs/telephony/code-snippets/connect-to-sip.md index 620fd6ca..c508b580 100644 --- a/docs/telephony/code-snippets/connect-to-sip.md +++ b/docs/telephony/code-snippets/connect-to-sip.md @@ -1,6 +1,7 @@ --- id: connect-to-sip title: Connect to a SIP connection to get Speech to Text and AI Insights +slug: /telephony/code-snippets/connect-to-sip/ --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/telephony/code-snippets/receive-prebuilt-ui-email-after-conversation.md b/docs/telephony/code-snippets/receive-prebuilt-ui-email-after-conversation.md index 4d7c70ff..990ef4e4 100644 --- a/docs/telephony/code-snippets/receive-prebuilt-ui-email-after-conversation.md +++ b/docs/telephony/code-snippets/receive-prebuilt-ui-email-after-conversation.md @@ -1,6 +1,7 @@ --- id: receive-prebuilt-ui-email-after-conversation title: Receive Prebuilt Summary UI email after each conversation +slug: /telephony/code-snippets/receive-prebuilt-ui-email-after-conversation/ --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/telephony/code-snippets/receive-speech-to-text-for-a-different-language.md b/docs/telephony/code-snippets/receive-speech-to-text-for-a-different-language.md index e3ab4672..be44257f 100644 --- a/docs/telephony/code-snippets/receive-speech-to-text-for-a-different-language.md +++ b/docs/telephony/code-snippets/receive-speech-to-text-for-a-different-language.md @@ -1,6 +1,7 @@ --- id: receive-speech-to-text-for-a-different-language title: Receive Speech-to-Text for a different language in a Conversation +slug: /telephony/code-snippets/receive-speech-to-text-for-a-different-language/ --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/tutorials/pre-built-summary-ui/creating-text-summary-ui.md b/docs/tutorials/pre-built-summary-ui/creating-text-summary-ui.md index 9f34c8f8..4fd5a29d 100644 --- a/docs/tutorials/pre-built-summary-ui/creating-text-summary-ui.md +++ b/docs/tutorials/pre-built-summary-ui/creating-text-summary-ui.md @@ -2,7 +2,7 @@ id: creating-text-summary-ui title: Creating Text Summary UI sidebar_label: Text Summary UI - +slug: /tutorials/pre-built-summary-ui/creating-text-summary-ui/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/tutorials/pre-built-summary-ui/creating-trackers-and-analytics-ui.md b/docs/tutorials/pre-built-summary-ui/creating-trackers-and-analytics-ui.md index 7658e883..d7b2417e 100644 --- a/docs/tutorials/pre-built-summary-ui/creating-trackers-and-analytics-ui.md +++ b/docs/tutorials/pre-built-summary-ui/creating-trackers-and-analytics-ui.md @@ -2,7 +2,7 @@ id: creating-trackers-and-analytics-ui title: Creating Trackers and Analytics UI sidebar_label: Trackers and Analytics UI - +slug: /tutorials/pre-built-summary-ui/creating-trackers-and-analytics-ui/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/tutorials/pre-built-summary-ui/creating-video-summary-ui.md b/docs/tutorials/pre-built-summary-ui/creating-video-summary-ui.md index 74b9b4e2..bf044eb4 100644 --- a/docs/tutorials/pre-built-summary-ui/creating-video-summary-ui.md +++ b/docs/tutorials/pre-built-summary-ui/creating-video-summary-ui.md @@ -2,7 +2,7 @@ id: creating-video-summary-ui title: Creating Video Summary UI sidebar_label: Video Summary UI - +slug: /tutorials/pre-built-summary-ui/creating-video-summary-ui/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/tutorials/pre-built-summary-ui/whitelabeling-summary-ui.md b/docs/tutorials/pre-built-summary-ui/whitelabeling-summary-ui.md index cce1091d..6cfac06a 100644 --- a/docs/tutorials/pre-built-summary-ui/whitelabeling-summary-ui.md +++ b/docs/tutorials/pre-built-summary-ui/whitelabeling-summary-ui.md @@ -2,7 +2,7 @@ id: whitelabeling-summary-ui title: White labeling Summary UI sidebar_label: White labeling Summary UI - +slug: /tutorials/pre-built-summary-ui/whitelabeling-summary-ui/ --- import Tabs from '@theme/Tabs'; diff --git a/docusaurus-staging.config.js b/docusaurus-staging.config.js index 597129d4..1d96b13d 100644 --- a/docusaurus-staging.config.js +++ b/docusaurus-staging.config.js @@ -304,7 +304,7 @@ module.exports = { { label: "🆕Changelog", ImageData: "/img/tick-mark.png", - href: '/changelog', + href: '/changelog/', position: "right", }, ], diff --git a/docusaurus.config.js b/docusaurus.config.js index 55228a51..66656bbd 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -304,7 +304,7 @@ module.exports = { { label: "🆕 Changelog", ImageData: "/img/tick-mark.png", - href: '/changelog', + href: '/changelog/', position: "right", }, ], diff --git a/sidebars.js b/sidebars.js index 12b93ce3..77ff525f 100644 --- a/sidebars.js +++ b/sidebars.js @@ -675,7 +675,6 @@ LabsSidebar: [{ type: 'category', collapsed: true, items: [ - 'conversation-api/concepts/comprehensive-action-items', 'conversation-api/api-reference/comprehensive-action-items', ], }, @@ -692,7 +691,7 @@ LabsSidebar: [{ type: 'category', collapsed: true, items: [ - 'guides/abstract-topics', + 'labs/abstract-topics-labs', ], }, From 8999f24bc911a1d9adf2d36a7885d4a2ca9f3954 Mon Sep 17 00:00:00 2001 From: Amritesh Singh <88492460+amritesh-singh@users.noreply.github.com> Date: Mon, 21 Mar 2022 18:08:53 +0530 Subject: [PATCH 16/43] DC-127 (#432) --- docs/conversation-api/api-reference/summary.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/conversation-api/api-reference/summary.md b/docs/conversation-api/api-reference/summary.md index 69f3bc85..cd883296 100644 --- a/docs/conversation-api/api-reference/summary.md +++ b/docs/conversation-api/api-reference/summary.md @@ -18,11 +18,15 @@ This API allows you to get a [Summary](/docs/concepts/summarization) of importan Currently, Summaries cannot be generated in real-time. Support for creating Summary in real-time will be added soon. :::caution -The Summary API generates high-quality Summaries for longer meetings so it is recommended that you use longer meetings with Summary API.
-If the number of words in a conversation is below 50 or the number of sentences below 3, the Summary will not be created. +The Summary API generates high-quality Summaries for longer meetings so it is recommended that you use longer meetings with Summary API. ::: +:::note recommendations +For generating Summarization, we recommend the following: +- The number of words in the conversation should be above 85 words. +- The speaker information should be passed in generate Summary request. Learn how to provide speaker information in [Provide Speaker Information to generate Summary](/docs/tutorials/summarization/adding-speaker-info/) page. +::: ### API Endpoint **GET `https://api.symbl.ai/v1/conversations/{conversationId}/summary`** From f6cc933ed92f39c18e8da9e9f69af8f6f379c99d Mon Sep 17 00:00:00 2001 From: Mukulika <60316606+Mukulikaa@users.noreply.github.com> Date: Mon, 21 Mar 2022 19:13:15 +0530 Subject: [PATCH 17/43] DC-209 Consolidated two trackers with streaming api tutorials (#429) * DC-209 Consolidated two trackers with streaming api tutorials * removed trailing white-space --- .../consume-trackers-with-streaming-api.md | 8 +++++++ .../code-snippets/detect-key-phrases.md | 23 ++++++++++++++++++- docs/streamingapi/introduction.md | 1 + 3 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 docs/streamingapi/code-snippets/consume-trackers-with-streaming-api.md diff --git a/docs/streamingapi/code-snippets/consume-trackers-with-streaming-api.md b/docs/streamingapi/code-snippets/consume-trackers-with-streaming-api.md new file mode 100644 index 00000000..94d35283 --- /dev/null +++ b/docs/streamingapi/code-snippets/consume-trackers-with-streaming-api.md @@ -0,0 +1,8 @@ +--- +id: consume-trackers +title: Consume Trackers with Streaming API +sidebar_label: Consume Trackers with Streaming API +slug: /streaming-api/code-snippets/consume-trackers-with-streaming-api/ +--- + +A more complete tutorial is available at [Detect key phrases](/docs/streamingapi/code-snippets/detect-key-phrases). \ No newline at end of file diff --git a/docs/streamingapi/code-snippets/detect-key-phrases.md b/docs/streamingapi/code-snippets/detect-key-phrases.md index daaacfe8..ca848ecf 100644 --- a/docs/streamingapi/code-snippets/detect-key-phrases.md +++ b/docs/streamingapi/code-snippets/detect-key-phrases.md @@ -310,9 +310,30 @@ If successful you should receive a response in the console. + +## Parameter Description + +Let’s go over all the parameters passed in the configuration object in the above function: + +Field | Required | +---------- | ------- | +`id` | A unique UUID that represents this WebSocket API Session. +`insightType` | The types of Insights to be detected for this Conversation. +`trackers`| The Trackers to be detected in real-time for that Conversation. Follows the same structure as described in the [Trackers section](/docs/management-api/trackers/create-tracker#sample-request-body). +`config`| The config object encapsulates the metadata for the WebSocket API’s session. +`meetingTitle`| The title for this conversation/meeting. +`confidenceThreshold` | The insights having confidence scores greater than this threshold will be the ones detected for the Conversation. +`languageCode` | The language-code in BCP-47 format. +`sampleRateHertz`| The sample-rate of the incoming audio data which is being pushed to Symbl. +`trackers: { interimResults }`| The interimResults flag tells Symbl to send the tracker results as soon as they are detected. If false, the tracker results are detected for the finalized transcription responses. +`speaker` | The details of the speaker in this Conversation +`userId`| Unique identifier to represent the User. +`name` | The name of the User. + + -### Handlers Reference +## Handlers Reference * `handlers`: This object has the callback functions for different events diff --git a/docs/streamingapi/introduction.md b/docs/streamingapi/introduction.md index 255b800e..eb7964bf 100644 --- a/docs/streamingapi/introduction.md +++ b/docs/streamingapi/introduction.md @@ -34,6 +34,7 @@ Here is a list of code snippets to help you get started on your journey with the * [Receive Live Topics](/docs/streamingapi/code-snippets/receive-live-topics) * [Receive Live AI Insights](/docs/streamingapi/code-snippets/receive-ai-insights) * [Receive Speech to Text for a different language in a conversation](/docs/streamingapi/code-snippets/receive-speech-to-text-for-different-languages) +* [Detect key phrases](/docs/streamingapi/code-snippets/detect-key-phrases) ### Symbl Javascript SDK From 7483c23a8fe59507f65ebf4a312ffac20e911721 Mon Sep 17 00:00:00 2001 From: Mukulika <60316606+Mukulikaa@users.noreply.github.com> Date: Tue, 22 Mar 2022 11:33:03 +0530 Subject: [PATCH 18/43] DC-225 Further explanation for the `score` and `definitive` parameters (#431) * DC-225 Further explanation for the and parameters * Improved wording --- .../api-reference/comprehensive-action-items.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/conversation-api/api-reference/comprehensive-action-items.md b/docs/conversation-api/api-reference/comprehensive-action-items.md index 08120999..ab60e219 100644 --- a/docs/conversation-api/api-reference/comprehensive-action-items.md +++ b/docs/conversation-api/api-reference/comprehensive-action-items.md @@ -153,9 +153,9 @@ Field | Description ```id``` | Unique identifier of the comprehensive action item. ```text``` | Text of the comprehensive action item. ```type``` | Response type. Default is `action_item`. -```score``` | Confidence score of the detected action item. Value from 0 - 1. +```score``` | Confidence score of the detected action item. Value from 0 - 1. The score shows the relevancy of the action item in the transcript. Higher the confidence score, the more relevant it is. ```messageRefs.id``` | Unique identifiers of the corresponding messages from where the action item was derived. You may get multiple message IDs here as Symbl identifies all the relevant messages in the conversation and generates the required action item accordingly. ```entities``` | List of detected entity objects in the insight with `type` - entity type and `text` - corresponding text. -```definitive``` | Boolean indicating if the action item is definitive or not. +```definitive``` | Boolean indicating if the action item is definitive or not. Implies that the action item is conclusive and not open-ended. For e.g, ‘I will complete this task today’ is a definitive sentence. ```phrases``` | List of detected phrases with `type` - phrase type and `text` - corresponding text. The `action_phrase` type represents the actionable part of an insight. ```assignee``` | This field contains the name and email of the person to whom the action item is assigned. From acef550aa382cf72e7a53925120c994e09b50226 Mon Sep 17 00:00:00 2001 From: Pema <81958801+pema-s@users.noreply.github.com> Date: Tue, 22 Mar 2022 18:50:28 +0530 Subject: [PATCH 19/43] Revert "Updated/Added slugs for every Page required (DC-307) (#439)" (#441) This reverts commit 5fd0dde52e00954a8b23411b7cd6b41e5ccce8ec. --- .../experience-api/post-text-summary-ui.md | 1 - .../post-trackers-and-analytics-ui.md | 2 +- .../experience-api/post-video-summary-ui.md | 1 - .../how-to-use-sentiment-analysis.md | 1 - .../receive-conversation-analytics.md | 1 - .../code-snippets/receive-entities.md | 1 - .../receive-speech-to-text-and-ai-insights.md | 1 - .../sentiment-analysis-on-messages.md | 1 - .../sentiment-analysis-on-topics.md | 1 - .../track-phrases-in-a-conversation.md | 1 - .../overview/audio/post-audio-url.md | 1 - docs/async-api/overview/audio/post-audio.md | 1 - .../async-api/overview/audio/put-audio-url.md | 1 - docs/async-api/overview/audio/put-audio.md | 1 - docs/async-api/overview/jobs-api.md | 1 - docs/async-api/overview/text/post-text.md | 1 - docs/async-api/overview/text/put-text.md | 1 - .../overview/video/post-video-url.md | 1 - docs/async-api/overview/video/post-video.md | 1 - .../async-api/overview/video/put-video-url.md | 1 - docs/async-api/overview/video/put-video.md | 1 - .../reference/supported-languages.md | 1 - docs/changelog.md | 4 -- .../concepts/ui-components.md | 1 - docs/conversation-api/introduction.md | 1 - docs/developer-tools/authentication.md | 1 - docs/developer-tools/errors.md | 1 - docs/developer-tools/postman.md | 1 - docs/developer-tools/sample_apps.md | 2 +- docs/faq.md | 1 - docs/guides/abstract-topics.md | 1 - docs/how-tos/get-speech-to-text-async.md | 3 +- docs/how-tos/get-speech-to-text-real-time.md | 1 - docs/how-tos/get-topics.md | 1 - docs/labs/abstract-topics.md | 41 ------------------- docs/pre-built-ui/custom-domain.md | 2 +- docs/pre-built-ui/symbl-elements.md | 1 - docs/pre-built-ui/text-summary-ui.md | 1 - docs/pre-built-ui/tuning-summary-page.md | 2 +- docs/pre-built-ui/video-summary-ui.md | 2 +- docs/pre-built-ui/waveform-ui.md | 1 - .../code-snippets/detect-key-phrases.md | 1 - .../code-snippets/receive-live-captioning.md | 2 +- .../code-snippets/receive-live-insights.md | 2 +- .../code-snippets/receive-live-topics.md | 2 +- ...-speech-to-text-for-different-languages.md | 1 - .../receive-trackers-in-spanish.md | 1 - docs/streamingapi/reference/reference.md | 4 +- .../code-snippets/connect-to-pstn.md | 1 - .../telephony/code-snippets/connect-to-sip.md | 1 - ...ve-prebuilt-ui-email-after-conversation.md | 1 - ...speech-to-text-for-a-different-language.md | 1 - .../creating-text-summary-ui.md | 2 +- .../creating-trackers-and-analytics-ui.md | 2 +- .../creating-video-summary-ui.md | 2 +- .../whitelabeling-summary-ui.md | 2 +- docusaurus-staging.config.js | 2 +- docusaurus.config.js | 2 +- sidebars.js | 3 +- 59 files changed, 18 insertions(+), 105 deletions(-) delete mode 100644 docs/labs/abstract-topics.md diff --git a/docs/api-reference/experience-api/post-text-summary-ui.md b/docs/api-reference/experience-api/post-text-summary-ui.md index e22bb3af..b73dd558 100644 --- a/docs/api-reference/experience-api/post-text-summary-ui.md +++ b/docs/api-reference/experience-api/post-text-summary-ui.md @@ -2,7 +2,6 @@ id: post-text-summary-ui title: POST Text Summary UI sidebar_label: POST Text Summary UI -slug: /api-reference/experience-api/post-text-summary-ui/ --- diff --git a/docs/api-reference/experience-api/post-trackers-and-analytics-ui.md b/docs/api-reference/experience-api/post-trackers-and-analytics-ui.md index b8acc970..e17329a5 100644 --- a/docs/api-reference/experience-api/post-trackers-and-analytics-ui.md +++ b/docs/api-reference/experience-api/post-trackers-and-analytics-ui.md @@ -2,7 +2,7 @@ id: post-trackers-and-analytics-ui title: POST Trackers and Analytics UI sidebar_label: POST Trackers and Analytics UI -slug: /api-reference/experience-api/post-trackers-and-analytics-ui/ + --- import Tabs from '@theme/Tabs'; diff --git a/docs/api-reference/experience-api/post-video-summary-ui.md b/docs/api-reference/experience-api/post-video-summary-ui.md index 40c6238f..c058fbcb 100644 --- a/docs/api-reference/experience-api/post-video-summary-ui.md +++ b/docs/api-reference/experience-api/post-video-summary-ui.md @@ -2,7 +2,6 @@ id: post-video-summary-ui title: POST Video Summary UI sidebar_label: POST Video Summary UI -slug: /api-reference/experience-api/post-video-summary-ui/ --- diff --git a/docs/async-api/code-snippets/how-to-use-sentiment-analysis.md b/docs/async-api/code-snippets/how-to-use-sentiment-analysis.md index ab638e9b..fcb12b92 100644 --- a/docs/async-api/code-snippets/how-to-use-sentiment-analysis.md +++ b/docs/async-api/code-snippets/how-to-use-sentiment-analysis.md @@ -1,7 +1,6 @@ --- id: how-to-use-sentiment-analysis title: How To Use Sentiment Analysis (Beta) -slug: /async-api/code-snippets/how-to-use-sentiment-analysis/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/async-api/code-snippets/receive-conversation-analytics.md b/docs/async-api/code-snippets/receive-conversation-analytics.md index b71e766e..b25b9a44 100644 --- a/docs/async-api/code-snippets/receive-conversation-analytics.md +++ b/docs/async-api/code-snippets/receive-conversation-analytics.md @@ -1,7 +1,6 @@ --- id: receive-conversation-analytics title: Receive Conversation Analytics -slug: /async-api/code-snippets/receive-conversation-analytics/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/async-api/code-snippets/receive-entities.md b/docs/async-api/code-snippets/receive-entities.md index 741a393b..c703c47a 100644 --- a/docs/async-api/code-snippets/receive-entities.md +++ b/docs/async-api/code-snippets/receive-entities.md @@ -1,7 +1,6 @@ --- id: receive-entities title: Receive Entities From Conversation -slug: /async-api/code-snippets/receive-entities/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/async-api/code-snippets/receive-speech-to-text-and-ai-insights.md b/docs/async-api/code-snippets/receive-speech-to-text-and-ai-insights.md index cedb9b51..3e48d467 100644 --- a/docs/async-api/code-snippets/receive-speech-to-text-and-ai-insights.md +++ b/docs/async-api/code-snippets/receive-speech-to-text-and-ai-insights.md @@ -1,7 +1,6 @@ --- id: receive-speech-to-text-and-ai-insights title: Receive Speech-to-Text and AI Insights -slug: /async-api/code-snippets/receive-speech-to-text-and-ai-insights/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/async-api/code-snippets/sentiment-analysis-on-messages.md b/docs/async-api/code-snippets/sentiment-analysis-on-messages.md index fadbbbb8..f8005cb9 100644 --- a/docs/async-api/code-snippets/sentiment-analysis-on-messages.md +++ b/docs/async-api/code-snippets/sentiment-analysis-on-messages.md @@ -1,7 +1,6 @@ --- id: sentiment-analysis-on-messages title: Sentiment Analysis on Messages (Beta) -slug: /async-api/code-snippets/sentiment-analysis-on-messages/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/async-api/code-snippets/sentiment-analysis-on-topics.md b/docs/async-api/code-snippets/sentiment-analysis-on-topics.md index 6383058e..e73ea234 100644 --- a/docs/async-api/code-snippets/sentiment-analysis-on-topics.md +++ b/docs/async-api/code-snippets/sentiment-analysis-on-topics.md @@ -1,7 +1,6 @@ --- id: sentiment-analysis-on-topics title: Sentiment Analysis on Topics (Beta) -slug: /async-api/code-snippets/sentiment-analysis-on-topics/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/async-api/code-snippets/track-phrases-in-a-conversation.md b/docs/async-api/code-snippets/track-phrases-in-a-conversation.md index 75668d8f..b7ac7d4e 100644 --- a/docs/async-api/code-snippets/track-phrases-in-a-conversation.md +++ b/docs/async-api/code-snippets/track-phrases-in-a-conversation.md @@ -1,7 +1,6 @@ --- id: track-phrases-in-a-conversation title: Track Phrases In A Conversation -slug: /async-api/code-snippets/track-phrases-in-a-conversation/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/async-api/overview/audio/post-audio-url.md b/docs/async-api/overview/audio/post-audio-url.md index 2370ecfd..3497999b 100644 --- a/docs/async-api/overview/audio/post-audio-url.md +++ b/docs/async-api/overview/audio/post-audio-url.md @@ -1,7 +1,6 @@ --- id: post-audio-url title: POST Audio URL API -slug: /async-api/overview/audio/post-audio-url/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/async-api/overview/audio/post-audio.md b/docs/async-api/overview/audio/post-audio.md index 58564b17..de85cec4 100644 --- a/docs/async-api/overview/audio/post-audio.md +++ b/docs/async-api/overview/audio/post-audio.md @@ -1,7 +1,6 @@ --- id: post-audio title: POST Audio API -slug: /async-api/overview/audio/post-audio/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/async-api/overview/audio/put-audio-url.md b/docs/async-api/overview/audio/put-audio-url.md index d949f62b..0c7649f2 100644 --- a/docs/async-api/overview/audio/put-audio-url.md +++ b/docs/async-api/overview/audio/put-audio-url.md @@ -1,7 +1,6 @@ --- id: put-audio-url title: PUT Audio URL API -slug: /async-api/overview/audio/put-audio-url/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/async-api/overview/audio/put-audio.md b/docs/async-api/overview/audio/put-audio.md index dd65d0a0..eecc412c 100644 --- a/docs/async-api/overview/audio/put-audio.md +++ b/docs/async-api/overview/audio/put-audio.md @@ -1,7 +1,6 @@ --- id: put-audio title: PUT Audio API -slug: /async-api/overview/audio/put-audio/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/async-api/overview/jobs-api.md b/docs/async-api/overview/jobs-api.md index f4951012..c05c3a95 100644 --- a/docs/async-api/overview/jobs-api.md +++ b/docs/async-api/overview/jobs-api.md @@ -2,7 +2,6 @@ id: jobs-api title: What is the Job API? sidebar_label: Get Job Status -slug: /async-api/overview/jobs-api/ --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/async-api/overview/text/post-text.md b/docs/async-api/overview/text/post-text.md index 446a3901..90b86789 100644 --- a/docs/async-api/overview/text/post-text.md +++ b/docs/async-api/overview/text/post-text.md @@ -1,7 +1,6 @@ --- id: post-text title: POST Text API -slug: /async-api/overview/text/post-text/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/async-api/overview/text/put-text.md b/docs/async-api/overview/text/put-text.md index 5fb25ba2..a66cf4f0 100644 --- a/docs/async-api/overview/text/put-text.md +++ b/docs/async-api/overview/text/put-text.md @@ -1,7 +1,6 @@ --- id: put-text title: PUT Text API -slug: /async-api/overview/text/put-text/ --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/async-api/overview/video/post-video-url.md b/docs/async-api/overview/video/post-video-url.md index ae47cfe3..6a2ebb7b 100644 --- a/docs/async-api/overview/video/post-video-url.md +++ b/docs/async-api/overview/video/post-video-url.md @@ -1,7 +1,6 @@ --- id: post-video-url title: POST Video URL API -slug: /async-api/overview/video/post-video-url/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/async-api/overview/video/post-video.md b/docs/async-api/overview/video/post-video.md index 50a5e85e..7436be1b 100644 --- a/docs/async-api/overview/video/post-video.md +++ b/docs/async-api/overview/video/post-video.md @@ -1,7 +1,6 @@ --- id: post-video title: POST Video API -slug: /async-api/overview/video/post-video/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/async-api/overview/video/put-video-url.md b/docs/async-api/overview/video/put-video-url.md index 70b59959..12783d88 100644 --- a/docs/async-api/overview/video/put-video-url.md +++ b/docs/async-api/overview/video/put-video-url.md @@ -1,7 +1,6 @@ --- id: put-video-url title: PUT Video URL API -slug: /async-api/overview/video/put-video-url/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/async-api/overview/video/put-video.md b/docs/async-api/overview/video/put-video.md index 76e80ceb..c560cc7a 100644 --- a/docs/async-api/overview/video/put-video.md +++ b/docs/async-api/overview/video/put-video.md @@ -1,7 +1,6 @@ --- id: put-video title: PUT Video API -slug: /async-api/overview/video/put-video/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/async-api/reference/supported-languages.md b/docs/async-api/reference/supported-languages.md index ffb014ea..e6202bcb 100644 --- a/docs/async-api/reference/supported-languages.md +++ b/docs/async-api/reference/supported-languages.md @@ -2,7 +2,6 @@ id: supported-languages title: Supported Languages sidebar_label: Supported Languages -slug: /async-api/reference/supported-languages/ --- ## Supported Languages diff --git a/docs/changelog.md b/docs/changelog.md index bc62e60b..e39bb789 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -11,10 +11,6 @@ import TabItem from '@theme/TabItem'; We continuously add new features and enhancements, fix critical bugs, and regularly deploy changes to improve performance. Keep a tab of our latest updates on this page. -### 14th March 2022 - -![api update](/img/api-update.png) -- **Enabling All Trackers with Streaming API**: Streaming API now supports enabling all the Trackers associated with an account. [Read more here](/docs/streaming-api/api-reference/#using-trackers).
### 8 Feb 2022 diff --git a/docs/conversation-api/concepts/ui-components.md b/docs/conversation-api/concepts/ui-components.md index 38e9b82d..590736db 100644 --- a/docs/conversation-api/concepts/ui-components.md +++ b/docs/conversation-api/concepts/ui-components.md @@ -2,7 +2,6 @@ id: ui-components title: Reusable and Customizable UI Components sidebar_label: Introduction -slug: /conversation-api/concepts/ui-components/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/conversation-api/introduction.md b/docs/conversation-api/introduction.md index 63c4c992..869977f9 100644 --- a/docs/conversation-api/introduction.md +++ b/docs/conversation-api/introduction.md @@ -3,7 +3,6 @@ id: introduction title: Conversation API- Extract Conversation Insights description: Use Symbl.ai Conversation APIs to get speech-to-text data and actionable insights from your conversations. Learn more. sidebar_label: Introduction -slug: /conversation-api/introduction/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/developer-tools/authentication.md b/docs/developer-tools/authentication.md index 097ab227..f95973b5 100644 --- a/docs/developer-tools/authentication.md +++ b/docs/developer-tools/authentication.md @@ -2,7 +2,6 @@ id: authentication title: Authentication sidebar_label: Authentication -slug: /developer-tools/authentication/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/developer-tools/errors.md b/docs/developer-tools/errors.md index 65fa5ac4..009a8caf 100644 --- a/docs/developer-tools/errors.md +++ b/docs/developer-tools/errors.md @@ -2,7 +2,6 @@ id: errors title: Error Codes sidebar_label: Error Codes -slug: /developer-tools/errors/ --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/developer-tools/postman.md b/docs/developer-tools/postman.md index 76985a6f..6ae26a96 100644 --- a/docs/developer-tools/postman.md +++ b/docs/developer-tools/postman.md @@ -3,7 +3,6 @@ id: postman title: Using Postman sidebar_label: Using Postman image: https://i.imgur.com/mErPwqL.png -slug: /developer-tools/postman/ --- Postman is a desktop and web application that allows you to send HTTP requests from a graphical user interface. diff --git a/docs/developer-tools/sample_apps.md b/docs/developer-tools/sample_apps.md index 60eaeb92..15ee15b2 100644 --- a/docs/developer-tools/sample_apps.md +++ b/docs/developer-tools/sample_apps.md @@ -2,7 +2,7 @@ id: sample-apps title: Explore Sample Apps sidebar_label: Explore Sample Apps -slug: /developer-tools/sample-apps/ + --- import useBaseUrl from '@docusaurus/useBaseUrl'; diff --git a/docs/faq.md b/docs/faq.md index 96c1f3af..0a54cda6 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -2,7 +2,6 @@ id: faq title: Frequently Asked Questions sidebar_label: FAQ -slug: /faq/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/guides/abstract-topics.md b/docs/guides/abstract-topics.md index 0aee00c4..e571d3b9 100644 --- a/docs/guides/abstract-topics.md +++ b/docs/guides/abstract-topics.md @@ -2,7 +2,6 @@ id: abstract-topics title: Abstract Topics (Labs) sidebar_label: Introduction -slug: /guides/abstract-topics/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/how-tos/get-speech-to-text-async.md b/docs/how-tos/get-speech-to-text-async.md index 0f8049d7..70b109dc 100644 --- a/docs/how-tos/get-speech-to-text-async.md +++ b/docs/how-tos/get-speech-to-text-async.md @@ -1,8 +1,7 @@ --- id: get-speech-to-text-async title: Speech-to-Text- Async -sidebar_label: Async Speech-to-Text -slug: /how-tos/get-speech-to-text-async/ +sidebar_label: Async Speech-to-Text --- import Tabs from '@theme/Tabs'; diff --git a/docs/how-tos/get-speech-to-text-real-time.md b/docs/how-tos/get-speech-to-text-real-time.md index a00b75ae..afe2ba34 100644 --- a/docs/how-tos/get-speech-to-text-real-time.md +++ b/docs/how-tos/get-speech-to-text-real-time.md @@ -2,7 +2,6 @@ id: get-speech-to-text-real-time title: Speech-to-Text in Real-time sidebar_label: Real-time Speech-to-Text -slug: /how-tos/get-speech-to-text-real-time/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/how-tos/get-topics.md b/docs/how-tos/get-topics.md index a31160e7..02753faa 100644 --- a/docs/how-tos/get-topics.md +++ b/docs/how-tos/get-topics.md @@ -2,7 +2,6 @@ id: how-to-get-topics title: Getting Topics sidebar_label: Real-time Topics -slug: /how-tos/how-to-get-topics/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/labs/abstract-topics.md b/docs/labs/abstract-topics.md deleted file mode 100644 index 9d1021e0..00000000 --- a/docs/labs/abstract-topics.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -id: abstract-topics-labs -title: Abstract Topics (Labs) -sidebar_label: Introduction -slug: /labs/abstract-topics-labs/ ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - ---- - -:::info Symbl Labs -This feature is a part of the Symbl Labs. Symbl Labs is our experimental wing designed to share our bleeding edge AI research on human conversations with anyone who wants to explore its limits. - - -You can access the Labs features using your Symbl App Id and Secret. If you don't already have it, sign up on [platform](https://platform.symbl.ai/#/login) to get your credentials. - -**Note**: The usage of data for Labs projects is stored for enhancing our research. We may continue to build, iterate, mutate or discontinue any of the below given features on the sole discretion of our team as deemed necessary. - -For any queries or feedback, please contact us at labs@symbl.ai. -::: - -Abstract Topics are topics that at a glance help you determine recurrent themes in a conversation. - -#### Example - -- Conversation on topics such as pricing, negotiation, sales representative, etc., are abstracted to **Sales**. - -- Conversation on coughing, cold, fever, chills, chest pain, etc., are abstracted to **Covid-19 Symptoms**. - -:::note -Currently, Abstract Topics are not supported in real-time. -::: - -## Abstract Topics API - -To get abstract topics, you must first process your conversation using [Async APIs](/docs/async-api/introduction). After you process the conversation, you will receive a Conversation ID which you must pass in the [Abstract Topics API](/docs/api-reference/abstract-topics). - -👉 [Abstract Topics API](/docs/api-reference/abstract-topics) - diff --git a/docs/pre-built-ui/custom-domain.md b/docs/pre-built-ui/custom-domain.md index 49e0f069..6ac33aa3 100644 --- a/docs/pre-built-ui/custom-domain.md +++ b/docs/pre-built-ui/custom-domain.md @@ -2,7 +2,7 @@ id: custom-domain title: Adding a Custom Domain (Beta) sidebar_label: Adding a Custom Domain (Beta) -slug: /pre-built-ui/custom-domain/ + --- import Tabs from '@theme/Tabs'; diff --git a/docs/pre-built-ui/symbl-elements.md b/docs/pre-built-ui/symbl-elements.md index 976182d8..5c87f31e 100644 --- a/docs/pre-built-ui/symbl-elements.md +++ b/docs/pre-built-ui/symbl-elements.md @@ -2,7 +2,6 @@ id: symbl-elements title: Symbl React Elements sidebar_label: Symbl React Elements -slug: /pre-built-ui/symbl-elements/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/pre-built-ui/text-summary-ui.md b/docs/pre-built-ui/text-summary-ui.md index beb2cab7..bd4ec38e 100644 --- a/docs/pre-built-ui/text-summary-ui.md +++ b/docs/pre-built-ui/text-summary-ui.md @@ -2,7 +2,6 @@ id: text-summary-ui title: Text Summary UI sidebar_label: Text Summary UI -slug: /pre-built-ui/text-summary-ui/ --- diff --git a/docs/pre-built-ui/tuning-summary-page.md b/docs/pre-built-ui/tuning-summary-page.md index e40a1092..c223d38f 100644 --- a/docs/pre-built-ui/tuning-summary-page.md +++ b/docs/pre-built-ui/tuning-summary-page.md @@ -3,7 +3,7 @@ id: tuning-summary-page title: Tuning your Summary Page sidebar_label: Tuning your Summary Page -slug: /pre-built-ui/tuning-summary-page/ + --- --- diff --git a/docs/pre-built-ui/video-summary-ui.md b/docs/pre-built-ui/video-summary-ui.md index 53befa95..c836b272 100644 --- a/docs/pre-built-ui/video-summary-ui.md +++ b/docs/pre-built-ui/video-summary-ui.md @@ -2,7 +2,7 @@ id: video-summary-ui title: Video Summary UI sidebar_label: Video Summary UI -slug: /pre-built-ui/video-summary-ui/ + --- import Tabs from '@theme/Tabs'; diff --git a/docs/pre-built-ui/waveform-ui.md b/docs/pre-built-ui/waveform-ui.md index 84dfce20..96c5e5d8 100644 --- a/docs/pre-built-ui/waveform-ui.md +++ b/docs/pre-built-ui/waveform-ui.md @@ -2,7 +2,6 @@ id: trackers-and-analytics-ui title: Trackers and Analytics UI sidebar_label: Trackers and Analytics UI -slug: /pre-built-ui/trackers-and-analytics-ui/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/streamingapi/code-snippets/detect-key-phrases.md b/docs/streamingapi/code-snippets/detect-key-phrases.md index ca848ecf..db5c9087 100644 --- a/docs/streamingapi/code-snippets/detect-key-phrases.md +++ b/docs/streamingapi/code-snippets/detect-key-phrases.md @@ -1,7 +1,6 @@ --- id: detect-key-phrases title: Detect Key Phrases -slug: /streamingapi/code-snippets/detect-key-phrases/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/streamingapi/code-snippets/receive-live-captioning.md b/docs/streamingapi/code-snippets/receive-live-captioning.md index 730f73ef..1529af4c 100644 --- a/docs/streamingapi/code-snippets/receive-live-captioning.md +++ b/docs/streamingapi/code-snippets/receive-live-captioning.md @@ -1,7 +1,7 @@ --- id: receive-live-captioning title: Receive Live Captioning -slug: /streamingapi/code-snippets/receive-live-captioning/ +slug: /streamingapi/code-snippets/receive-live-captioning --- import Tabs from '@theme/Tabs'; diff --git a/docs/streamingapi/code-snippets/receive-live-insights.md b/docs/streamingapi/code-snippets/receive-live-insights.md index 7598edc4..69106b40 100644 --- a/docs/streamingapi/code-snippets/receive-live-insights.md +++ b/docs/streamingapi/code-snippets/receive-live-insights.md @@ -1,7 +1,7 @@ --- id: receive-ai-insights title: Receive Live AI Insights -slug: /streamingapi/code-snippets/receive-live-insights/ +slug: /streamingapi/code-snippets/receive-live-insights --- import Tabs from '@theme/Tabs'; diff --git a/docs/streamingapi/code-snippets/receive-live-topics.md b/docs/streamingapi/code-snippets/receive-live-topics.md index 4f65f623..e9c974c7 100644 --- a/docs/streamingapi/code-snippets/receive-live-topics.md +++ b/docs/streamingapi/code-snippets/receive-live-topics.md @@ -1,7 +1,7 @@ --- id: receive-live-topics title: Receive Live Topics -slug: /streamingapi/code-snippets/receive-live-topics/ +slug: /streamingapi/code-snippets/receive-live-topics --- import Tabs from '@theme/Tabs'; diff --git a/docs/streamingapi/code-snippets/receive-speech-to-text-for-different-languages.md b/docs/streamingapi/code-snippets/receive-speech-to-text-for-different-languages.md index 1dfcd0a0..586a4f85 100644 --- a/docs/streamingapi/code-snippets/receive-speech-to-text-for-different-languages.md +++ b/docs/streamingapi/code-snippets/receive-speech-to-text-for-different-languages.md @@ -1,7 +1,6 @@ --- id: receive-speech-to-text-for-different-languages title: Receive Speech to Text for a different language in a conversation -slug: /streamingapi/code-snippets/receive-speech-to-text-for-different-languages/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/streamingapi/code-snippets/receive-trackers-in-spanish.md b/docs/streamingapi/code-snippets/receive-trackers-in-spanish.md index 52f9b534..66d65129 100644 --- a/docs/streamingapi/code-snippets/receive-trackers-in-spanish.md +++ b/docs/streamingapi/code-snippets/receive-trackers-in-spanish.md @@ -1,7 +1,6 @@ --- id: receive-trackers-in-spanish title: Receive Trackers in Spanish (Labs) -slug: /streamingapi/code-snippets/receive-trackers-in-spanish/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/streamingapi/reference/reference.md b/docs/streamingapi/reference/reference.md index 33477d26..87e2d1b7 100644 --- a/docs/streamingapi/reference/reference.md +++ b/docs/streamingapi/reference/reference.md @@ -30,8 +30,7 @@ The previous endpoint `wss://api.symbl.ai/v1/realtime/insights/` is now updated Field | Required | Supported Value | Description ---------- | ------- | ------- | ------- -```type``` | Mandatory | `start_request`, `stop_request` | Type of message. -```type``` | Optional | `modify_request` | Allows you to modify the request. [See the Modify Request section below for more details](#modify-request) +```type``` | Optional | start_request, stop_request, modify_request | Type of message ```insightTypes``` | Optional | action_item, question | Types of insights to return. If not provided, no insights will be returned. ```customVocabulary``` | Optional | List of String | An array of strings containing a vocabulary specific to your company, products, or phrases. ```config``` | Optional | Find the supported value [here](#config) | Configuration for this request. [See the config section below for more details](#config). @@ -222,7 +221,6 @@ setTimeout(() => { ``` ### Modify Request​ - The `modify_request` allows you to modify the request during Streaming API call, i.e., after the WebSocket connection has established, if there is a device change event. Using the `type` field with the supported value `modify_request` you can update the sample rate and encoding based on the new device information in the same conversation itself. diff --git a/docs/telephony/code-snippets/connect-to-pstn.md b/docs/telephony/code-snippets/connect-to-pstn.md index 2c3a4ed1..2eabee46 100644 --- a/docs/telephony/code-snippets/connect-to-pstn.md +++ b/docs/telephony/code-snippets/connect-to-pstn.md @@ -1,7 +1,6 @@ --- id: connect-to-pstn title: Connect to a PSTN connection to get Speech to Text and AI Insights -slug: /telephony/code-snippets/connect-to-pstn/ --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/telephony/code-snippets/connect-to-sip.md b/docs/telephony/code-snippets/connect-to-sip.md index c508b580..620fd6ca 100644 --- a/docs/telephony/code-snippets/connect-to-sip.md +++ b/docs/telephony/code-snippets/connect-to-sip.md @@ -1,7 +1,6 @@ --- id: connect-to-sip title: Connect to a SIP connection to get Speech to Text and AI Insights -slug: /telephony/code-snippets/connect-to-sip/ --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/telephony/code-snippets/receive-prebuilt-ui-email-after-conversation.md b/docs/telephony/code-snippets/receive-prebuilt-ui-email-after-conversation.md index 990ef4e4..4d7c70ff 100644 --- a/docs/telephony/code-snippets/receive-prebuilt-ui-email-after-conversation.md +++ b/docs/telephony/code-snippets/receive-prebuilt-ui-email-after-conversation.md @@ -1,7 +1,6 @@ --- id: receive-prebuilt-ui-email-after-conversation title: Receive Prebuilt Summary UI email after each conversation -slug: /telephony/code-snippets/receive-prebuilt-ui-email-after-conversation/ --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/telephony/code-snippets/receive-speech-to-text-for-a-different-language.md b/docs/telephony/code-snippets/receive-speech-to-text-for-a-different-language.md index be44257f..e3ab4672 100644 --- a/docs/telephony/code-snippets/receive-speech-to-text-for-a-different-language.md +++ b/docs/telephony/code-snippets/receive-speech-to-text-for-a-different-language.md @@ -1,7 +1,6 @@ --- id: receive-speech-to-text-for-a-different-language title: Receive Speech-to-Text for a different language in a Conversation -slug: /telephony/code-snippets/receive-speech-to-text-for-a-different-language/ --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/tutorials/pre-built-summary-ui/creating-text-summary-ui.md b/docs/tutorials/pre-built-summary-ui/creating-text-summary-ui.md index 4fd5a29d..9f34c8f8 100644 --- a/docs/tutorials/pre-built-summary-ui/creating-text-summary-ui.md +++ b/docs/tutorials/pre-built-summary-ui/creating-text-summary-ui.md @@ -2,7 +2,7 @@ id: creating-text-summary-ui title: Creating Text Summary UI sidebar_label: Text Summary UI -slug: /tutorials/pre-built-summary-ui/creating-text-summary-ui/ + --- import Tabs from '@theme/Tabs'; diff --git a/docs/tutorials/pre-built-summary-ui/creating-trackers-and-analytics-ui.md b/docs/tutorials/pre-built-summary-ui/creating-trackers-and-analytics-ui.md index d7b2417e..7658e883 100644 --- a/docs/tutorials/pre-built-summary-ui/creating-trackers-and-analytics-ui.md +++ b/docs/tutorials/pre-built-summary-ui/creating-trackers-and-analytics-ui.md @@ -2,7 +2,7 @@ id: creating-trackers-and-analytics-ui title: Creating Trackers and Analytics UI sidebar_label: Trackers and Analytics UI -slug: /tutorials/pre-built-summary-ui/creating-trackers-and-analytics-ui/ + --- import Tabs from '@theme/Tabs'; diff --git a/docs/tutorials/pre-built-summary-ui/creating-video-summary-ui.md b/docs/tutorials/pre-built-summary-ui/creating-video-summary-ui.md index bf044eb4..74b9b4e2 100644 --- a/docs/tutorials/pre-built-summary-ui/creating-video-summary-ui.md +++ b/docs/tutorials/pre-built-summary-ui/creating-video-summary-ui.md @@ -2,7 +2,7 @@ id: creating-video-summary-ui title: Creating Video Summary UI sidebar_label: Video Summary UI -slug: /tutorials/pre-built-summary-ui/creating-video-summary-ui/ + --- import Tabs from '@theme/Tabs'; diff --git a/docs/tutorials/pre-built-summary-ui/whitelabeling-summary-ui.md b/docs/tutorials/pre-built-summary-ui/whitelabeling-summary-ui.md index 6cfac06a..cce1091d 100644 --- a/docs/tutorials/pre-built-summary-ui/whitelabeling-summary-ui.md +++ b/docs/tutorials/pre-built-summary-ui/whitelabeling-summary-ui.md @@ -2,7 +2,7 @@ id: whitelabeling-summary-ui title: White labeling Summary UI sidebar_label: White labeling Summary UI -slug: /tutorials/pre-built-summary-ui/whitelabeling-summary-ui/ + --- import Tabs from '@theme/Tabs'; diff --git a/docusaurus-staging.config.js b/docusaurus-staging.config.js index 1d96b13d..597129d4 100644 --- a/docusaurus-staging.config.js +++ b/docusaurus-staging.config.js @@ -304,7 +304,7 @@ module.exports = { { label: "🆕Changelog", ImageData: "/img/tick-mark.png", - href: '/changelog/', + href: '/changelog', position: "right", }, ], diff --git a/docusaurus.config.js b/docusaurus.config.js index 66656bbd..55228a51 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -304,7 +304,7 @@ module.exports = { { label: "🆕 Changelog", ImageData: "/img/tick-mark.png", - href: '/changelog/', + href: '/changelog', position: "right", }, ], diff --git a/sidebars.js b/sidebars.js index 77ff525f..12b93ce3 100644 --- a/sidebars.js +++ b/sidebars.js @@ -675,6 +675,7 @@ LabsSidebar: [{ type: 'category', collapsed: true, items: [ + 'conversation-api/concepts/comprehensive-action-items', 'conversation-api/api-reference/comprehensive-action-items', ], }, @@ -691,7 +692,7 @@ LabsSidebar: [{ type: 'category', collapsed: true, items: [ - 'labs/abstract-topics-labs', + 'guides/abstract-topics', ], }, From 5bc0c8e3c15c2cb0d4f38ef15dd962532fefe855 Mon Sep 17 00:00:00 2001 From: Kush Vora Date: Tue, 22 Mar 2022 19:31:08 +0530 Subject: [PATCH 20/43] DC 356 implement the title tags for seo (#435) * DC-356 * DC-356 * DC-356 Co-authored-by: Pema <81958801+pema-s@users.noreply.github.com> --- docs/async-api/introduction.md | 67 +- docs/conversation-api/concepts/sentiment.md | 34 +- .../concepts/speech-to-text.md | 59 +- .../concepts/summarization.md | 29 +- .../concepts/summary-topic.md | 57 +- docs/conversation-api/introduction.md | 39 +- docs/streamingapi/concepts.md | 12 +- docs/streamingapi/introduction.md | 34 +- docs/telephony/introduction.md | 41 +- package-lock.json | 13027 +++++++++++++++- 10 files changed, 13185 insertions(+), 214 deletions(-) diff --git a/docs/async-api/introduction.md b/docs/async-api/introduction.md index d4f67630..842160ea 100644 --- a/docs/async-api/introduction.md +++ b/docs/async-api/introduction.md @@ -1,11 +1,15 @@ --- id: introduction -title: Async API Documentation +title: Async API description: Symbl.ai Async APIs provides a REST interface for submitting any recorded or saved conversations for transcription. Check out our Async APIs documentation to get started. sidebar_label: Introduction slug: /async-api/introduction/ --- + + Async API Documentation + + --- The Async API provides a REST interface that helps you to submit any recorded or saved conversations to Symbl. When you submit a conversation, you'll receive a Conversation ID (`conversationId`), which is unique to your conversation. @@ -20,23 +24,19 @@ You must wait for the job to complete processing before you proceed with getting #### `conversationId` helps you with: -1. Helps you append the transcription of an existing file using `PUT` (also known as `append file`) Async APIs. +1. Helps you append the transcription of an existing file using `PUT` (also known as `append file`) Async APIs. 2. Using [Conversation API](/docs/conversation-api/introduction) you can receive Speech to Text data and conversational insights. - - ## Async API Types - ### Text API The Async Text API allows you to process any text payload. It can be useful for any use case where you have access to textual content and want to extract insights and other conversational attributes supported by Symbl's [Conversation API](/docs/conversation-api/introduction). -* [Submit Text File](/docs/async-api/overview/text/post-text) -* [Append Text File To Existing Conversation](/docs/async-api/overview/text/put-text) - +- [Submit Text File](/docs/async-api/overview/text/post-text) +- [Append Text File To Existing Conversation](/docs/async-api/overview/text/put-text) ### Audio API @@ -46,13 +46,13 @@ It can be useful for any use case where you have access to recorded audio and wa #### Audio File Endpoints -* [Submit Audio File](/docs/async-api/overview/audio/post-audio) -* [Append Audio File To Existing Conversation](/docs/async-api/overview/audio/post-audio) +- [Submit Audio File](/docs/async-api/overview/audio/post-audio) +- [Append Audio File To Existing Conversation](/docs/async-api/overview/audio/post-audio) #### Audio URL Endpoints -* [Submit Audio URL](/docs/async-api/overview/audio/post-audio-url) -* [Append Audio URL To Existing Conversation](/docs/async-api/overview/audio/put-audio-url) +- [Submit Audio URL](/docs/async-api/overview/audio/post-audio-url) +- [Append Audio URL To Existing Conversation](/docs/async-api/overview/audio/put-audio-url) ### Video API @@ -62,40 +62,37 @@ It can be useful in any use case where you have access to a video file of any ty #### Video File Endpoints -* [Submit Video File](/docs/async-api/overview/video/post-video) -* [Append Video File To Existing Conversation](/docs/async-api/overview/video/post-video) +- [Submit Video File](/docs/async-api/overview/video/post-video) +- [Append Video File To Existing Conversation](/docs/async-api/overview/video/post-video) #### Video URL Endpoints -* [Submit Video URL](/docs/async-api/overview/video/post-video-url) -* [Append Video URL To Existing Conversation](/docs/async-api/overview/video/put-video-url) - +- [Submit Video URL](/docs/async-api/overview/video/post-video-url) +- [Append Video URL To Existing Conversation](/docs/async-api/overview/video/put-video-url) ## Endpoints ### Text API -| Method | Endpoint | | -|--------|----------|-| -|`POST` | `https://api.symbl.ai/v1/process/text` | [Reference](/docs/async-api/overview/text/post-text) -|`PUT` | `https://api.symbl.ai/v1/process/text/{conversationId}` | [Reference](/docs/async-api/overview/text/put-text) - +| Method | Endpoint | | +| ------ | ------------------------------------------------------- | ---------------------------------------------------- | +| `POST` | `https://api.symbl.ai/v1/process/text` | [Reference](/docs/async-api/overview/text/post-text) | +| `PUT` | `https://api.symbl.ai/v1/process/text/{conversationId}` | [Reference](/docs/async-api/overview/text/put-text) | ### Audio API -| Method | Endpoint | | -|--------|----------|-| -|`POST` | `https://api.symbl.ai/v1/process/audio` | [Reference](/docs/async-api/overview/audio/post-audio) -|`POST` | `https://api.symbl.ai/v1/process/audio/url` | [Reference](/docs/async-api/overview/audio/post-audio-url) -|`PUT` | `https://api.symbl.ai/v1/process/audio/{conversationId}` | [Reference](/docs/async-api/overview/audio/put-audio) -|`PUT` | `https://api.symbl.ai/v1/process/audio/url/{conversationId}` | [Reference](/docs/async-api/overview/audio/put-audio-url) - +| Method | Endpoint | | +| ------ | ------------------------------------------------------------ | ---------------------------------------------------------- | +| `POST` | `https://api.symbl.ai/v1/process/audio` | [Reference](/docs/async-api/overview/audio/post-audio) | +| `POST` | `https://api.symbl.ai/v1/process/audio/url` | [Reference](/docs/async-api/overview/audio/post-audio-url) | +| `PUT` | `https://api.symbl.ai/v1/process/audio/{conversationId}` | [Reference](/docs/async-api/overview/audio/put-audio) | +| `PUT` | `https://api.symbl.ai/v1/process/audio/url/{conversationId}` | [Reference](/docs/async-api/overview/audio/put-audio-url) | ### Video API -| Method | Endpoint | | -|--------|----------|-| -|`POST` | `https://api.symbl.ai/v1/process/video` | [Reference](/docs/async-api/overview/video/post-video) -|`POST` | `https://api.symbl.ai/v1/process/video/url` | [Reference](/docs/async-api/overview/video/post-video-url) -|`PUT` | `https://api.symbl.ai/v1/process/video/{conversationId}` | [Reference](/docs/async-api/overview/video/put-video) -|`PUT` | `https://api.symbl.ai/v1/process/video/url/{conversationId}` | [Reference](/docs/async-api/overview/video/put-video-url) +| Method | Endpoint | | +| ------ | ------------------------------------------------------------ | ---------------------------------------------------------- | +| `POST` | `https://api.symbl.ai/v1/process/video` | [Reference](/docs/async-api/overview/video/post-video) | +| `POST` | `https://api.symbl.ai/v1/process/video/url` | [Reference](/docs/async-api/overview/video/post-video-url) | +| `PUT` | `https://api.symbl.ai/v1/process/video/{conversationId}` | [Reference](/docs/async-api/overview/video/put-video) | +| `PUT` | `https://api.symbl.ai/v1/process/video/url/{conversationId}` | [Reference](/docs/async-api/overview/video/put-video-url) | diff --git a/docs/conversation-api/concepts/sentiment.md b/docs/conversation-api/concepts/sentiment.md index 6e0e1ee4..b7b7f30c 100644 --- a/docs/conversation-api/concepts/sentiment.md +++ b/docs/conversation-api/concepts/sentiment.md @@ -1,11 +1,15 @@ --- id: sentiment -title: Sentiment API- Analysing Texts in Real-time (Beta) +title: Sentiment Analysis (Beta) sidebar_label: Introduction description: Sentiment API enables developers to detect positive or negative sentiment from conversations in real-time. Learn more. slug: /concepts/sentiment-analysis/ --- + + Sentiment API- Analysing Texts in Real-time (Beta) + + import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; @@ -25,7 +29,6 @@ Symbl's Sentiment API works over Speech-to-Text sentences and Topics (or aspect) - ## Sentiment API To see Sentiment API in action, you need to process a conversation using Symbl. After you process a conversation, you'll receive a **conversation Id** which can be passed in below-mentioned Conversation APIs. All you need to do is pass query parameters `sentiment=true`. @@ -40,17 +43,16 @@ Each continuous sentence spoken by a speaker in conversation is referred to as a For topic level, the sentiment is calculated over the topic messages scope i.e. it factors in the sentiment of messages where the topic was talked about. ::: - ### 👉[Topics API](/docs/conversation-api/get-topics) ### API Response @@ -80,6 +82,7 @@ For topic level, the sentiment is calculated over the topic messages scope i.e. } ] } ``` + @@ -112,10 +115,10 @@ For topic level, the sentiment is calculated over the topic messages scope i.e. #### Object -| Field | Description | -|------------------|--------------------------------------------------------------------| -| ```polarity``` | Shows the intensity of the sentiment. It ranges from -1.0 to 1.0, where -1.0 is the most negative sentiment and 1.0 is the most positive sentiment. | -| ```suggested``` | display suggested sentiment type (negative, neutral and positive). | +| Field | Description | +| ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | +| `polarity` | Shows the intensity of the sentiment. It ranges from -1.0 to 1.0, where -1.0 is the most negative sentiment and 1.0 is the most positive sentiment. | +| `suggested` | display suggested sentiment type (negative, neutral and positive). | #### suggested object @@ -124,14 +127,13 @@ We have chosen the below polarity ranges wrt sentiment type which covers a wide Polarity Sentiment may vary for your use case. We recommend that you define a threshold that works for you, and then adjust the threshold after testing and verifying the results. ::: - | polarity | Suggested Sentiment | -|------------------|---------------------| +| ---------------- | ------------------- | | -1.0 => x > -0.3 | negative | -| -0.3 => x <= 0.3 | neutral | +| -0.3 => x <= 0.3 | neutral | | 0.3 > x <= 1.0 | positive | ### Tutorials - View tutorial on Sentiment Analysis on Messages [here](/docs/async-api/code-snippets/sentiment-analysis-on-messages) -- View tutorial on Sentiment Analysis on Topics [here](/docs/async-api/code-snippets/sentiment-analysis-on-topics) \ No newline at end of file +- View tutorial on Sentiment Analysis on Topics [here](/docs/async-api/code-snippets/sentiment-analysis-on-topics) diff --git a/docs/conversation-api/concepts/speech-to-text.md b/docs/conversation-api/concepts/speech-to-text.md index 6f6263ac..8db0fc01 100644 --- a/docs/conversation-api/concepts/speech-to-text.md +++ b/docs/conversation-api/concepts/speech-to-text.md @@ -1,11 +1,15 @@ --- id: speech-to-text -title: Transcribe Speech-to-Text in Real-Time +title: Speech-to-Text description: Get real-time speech-to-text data and analytics from your conversations with Symbl.ai APIs. Learn more. sidebar_label: Introduction slug: /concepts/speech-to-text/ --- + + Transcribe Speech-to-Text in Real-Time + + import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; @@ -20,7 +24,7 @@ Symbl offers state-of-the-art Speech-to-Text capability (also called transcripti - **Domain specific**: Symbl's recognizes Speech-to-Text models for mobile call and video calls for state-of-the-art accuracy. - **Multi-language Support**: We support 20+ languages including English, Russian, French, Italian, Hindi, Japanese, Spanish, etc. We also support models for different accents. For example, the way American and British English are spoken are different and we have Speech Recognition Models that are fine-tuned for different accents.
-[Languages Supported](/docs/streaming-api/api-reference#supported-languages) + [Languages Supported](/docs/streaming-api/api-reference#supported-languages) - **Custom Vocabulary**: We support Custom Vocabulary which help Speech-to-Text recognize specific words or phrases that are more frequently used within a context. For example, suppose that your audio data often includes the word "sell". When Speech-to-Text encounters the word "sell," you want it to transcribe the word as "sell" more often than "cell." In this case, you might use speech adaptation to bias Speech-to-Text toward recognizing "sell." @@ -38,9 +42,9 @@ Symbl offers state-of-the-art Speech-to-Text capability (also called transcripti Each continuous sentence spoken by a speaker in a conversation is referred to as a Message. Hence, we named our Speech to Text API to Messages API. Messages API returns you a list of messages in a conversation. ::: -To see Messages API in action, you need to process a conversation using Symbl. After you process a meeting, you'll receive a **Conversation ID**. A Conversation ID is the key to receiving conversational insights from any conversation. As an example, here's a simple API call which grabs the speech-to-text transcription from the conversation. +To see Messages API in action, you need to process a conversation using Symbl. After you process a meeting, you'll receive a **Conversation ID**. A Conversation ID is the key to receiving conversational insights from any conversation. As an example, here's a simple API call which grabs the speech-to-text transcription from the conversation. -Using the conversation API, you can get a pre-formatted transcript in markdown language or in standard transcription or closed captioning format like SRT. See [Formatted Transcript](/docs/conversation-api/transcript) section for more. +Using the conversation API, you can get a pre-formatted transcript in markdown language or in standard transcription or closed captioning format like SRT. See [Formatted Transcript](/docs/conversation-api/transcript) section for more. 👉 [Messages API](/docs/conversation-api/messages) @@ -49,12 +53,12 @@ Using the conversation API, you can get a pre-formatted transcript in markdown l Remember to replace the `conversationId` in the API call with the Conversation ID you get from the previous API call. @@ -68,17 +72,20 @@ curl "https://api.symbl.ai/v1/conversations/{conversationId}/messages" \ ```js -const request = require('request'); +const request = require("request"); const authToken = AUTH_TOKEN; const conversationId = "conversationId"; -request.get({ +request.get( + { url: `https://api.symbl.ai/v1/conversations/${conversationId}/messages`, - headers: { 'Authorization': `Bearer ${authToken}` }, - json: true -}, (err, response, body) => { + headers: { Authorization: `Bearer ${authToken}` }, + json: true, + }, + (err, response, body) => { console.log(body); -}); + } +); ``` @@ -91,37 +98,37 @@ const url = `https://api.symbl.ai/v1/conversations/${conversationId}/messages`; // Set headers let headers = new Headers(); -headers.append('Authorization', `Bearer ${authToken}`); +headers.append("Authorization", `Bearer ${authToken}`); const data = { method: "GET", headers: headers, -} +}; // https://developer.mozilla.org/en-US/docs/Web/API/Request const request = new Request(url, data); fetch(request) - .then(response => { - console.log('response', response); + .then((response) => { + console.log("response", response); if (response.status === 200) { return response.json(); } else { - throw new Error('Something went wrong on api server!'); + throw new Error("Something went wrong on api server!"); } }) - .then(response => { - console.log('Success'); + .then((response) => { + console.log("Success"); // ... - }).catch(error => { + }) + .catch((error) => { console.error(error); }); ``` + - ## Our customers love our Speech to Text! ❤️ - diff --git a/docs/conversation-api/concepts/summarization.md b/docs/conversation-api/concepts/summarization.md index ad62ebc6..7d730d2b 100644 --- a/docs/conversation-api/concepts/summarization.md +++ b/docs/conversation-api/concepts/summarization.md @@ -1,11 +1,15 @@ --- id: summarization -title: Summarization API- Capturing Key Points (Alpha) +title: Summarization (Labs) description: Use Symbl.ai’s summarization API to capture key points in a conversation and create succinct summaries. Learn more. -sidebar_label: Introduction +sidebar_label: Introduction slug: /concepts/summarization/ --- + + Summarization API- Capturing Key Points (Alpha) + + import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; @@ -15,12 +19,12 @@ import TabItem from '@theme/TabItem'; This feature is in the [Alpha](/docs/product-releases) phase. If you have any questions, ideas or suggestions please reach out to us at devrelations@symbl.ai. ::: -Symbl distills important messages and creates succinct Summaries for long conversations. You can get these Summaries using the [Summary API](/docs/conversation-api/summary). +Symbl distills important messages and creates succinct Summaries for long conversations. You can get these Summaries using the [Summary API](/docs/conversation-api/summary). -Summaries help you save time required to grasp the contents of a conversation that has several pages of transcripts. +Summaries help you save time required to grasp the contents of a conversation that has several pages of transcripts. -:::info -Currently, real-time Summaries are not supported. +:::info +Currently, real-time Summaries are not supported. ::: ### Example @@ -29,15 +33,15 @@ Given below is an example of a multi-line transcript and its corresponding Summa ![Transcript](/img/summary_labs_final.png) - :::note + - The Summary API generates high-quality Summaries for longer meetings so it is recommended that you use longer meetings with Summary API.
-If the number of words in a conversation is below 50 or the number of sentences below 3, the Summary will not be created. + If the number of words in a conversation is below 50 or the number of sentences below 3, the Summary will not be created. ::: ### Where can I find the Summary API? -You can enable the Summary API for Async APIs using the following endpoints:
+You can enable the Summary API for Async APIs using the following endpoints:
API | Summary Endpoint ---------- | ------- @@ -49,9 +53,10 @@ API | Summary Endpoint Once the above API job is complete, the corresponding Summary can be obtained by sending a GET request to the Summary API. See the [**Summary API Documentation**](/docs/conversation-api/summary) for details. -**Note**: The PUT operations for the above mentioned Async APIs are also supported. +**Note**: The PUT operations for the above mentioned Async APIs are also supported. ## Tutorials -- [How to get a Summary using Async APIs](/docs/tutorials/summarization/getting-summary) + +- [How to get a Summary using Async APIs](/docs/tutorials/summarization/getting-summary) - [How to Refresh a Summary](/docs/tutorials/summarization/refreshing-summary) -- [Providing Speaker Information to generate Summary](/docs/tutorials/summarization/adding-speaker-info) \ No newline at end of file +- [Providing Speaker Information to generate Summary](/docs/tutorials/summarization/adding-speaker-info) diff --git a/docs/conversation-api/concepts/summary-topic.md b/docs/conversation-api/concepts/summary-topic.md index e3b19353..45d7a47e 100644 --- a/docs/conversation-api/concepts/summary-topic.md +++ b/docs/conversation-api/concepts/summary-topic.md @@ -1,11 +1,15 @@ --- id: topics -title: Topics API- Extracting Relevant Topics -description: Automatically identify and extract topics from conversations with Symbl.ai's Topic API. -sidebar_label: Introduction +title: Topics +description: Automatically identify and extract topics from conversations with Symbl.ai's Topic API. +sidebar_label: Introduction slug: /concepts/topics/ --- + + Topics API- Extracting Relevant Topics + + import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; @@ -17,7 +21,6 @@ Human beings when in a free-flowing conversation tend to initiate a discourse on The topics algorithm provide a framework for user to calibrate and exactly model the relationship among the concepts and understand how the semantics of the meetings are talked upon and the analysis of certain fundamental features of the graph provide an ability to abstract and derive the most relevant topics unlike the keyword and LDA driven models. - ## Key Features - **Keywords Ranking**: It not only identifies the top keywords in a conversation but also assigns a contextual score to them based on the graph intelligence that model’s the structure of conversation. You can see this scoring of keyword ranking in the Topics API response. @@ -30,7 +33,6 @@ The topics algorithm provide a framework for user to calibrate and exactly model - Works with **real-time and Offline** conversations. - ## Topics API To see Topics API in action, you need to process a conversation using Symbl. After you process a meeting, you'll receive a **Conversation ID** which is passed in Topics API. A Conversation ID is the key to receiving conversational insights from any conversation. As an example, here's a simple API call which grabs the detected topics from the conversation. @@ -42,12 +44,12 @@ To see Topics API in action, you need to process a conversation using Symbl. Aft Remember to replace the `conversationId` in the API call with the Conversation ID you get from the previous API call. @@ -61,17 +63,20 @@ curl "https://api.symbl.ai/v1/conversations/{conversationId}/topics" \ ```js -const request = require('request'); +const request = require("request"); const authToken = AUTH_TOKEN; const conversationId = "conversationId"; -request.get({ +request.get( + { url: `https://api.symbl.ai/v1/conversations/${conversationId}/topics`, - headers: { 'Authorization': `Bearer ${authToken}` }, - json: true -}, (err, response, body) => { + headers: { Authorization: `Bearer ${authToken}` }, + json: true, + }, + (err, response, body) => { console.log(body); -}); + } +); ``` @@ -84,31 +89,33 @@ const url = `https://api.symbl.ai/v1/conversations/${conversationId}/topics`; // Set headers let headers = new Headers(); -headers.append('Authorization', `Bearer ${authToken}`); +headers.append("Authorization", `Bearer ${authToken}`); const data = { method: "GET", headers: headers, -} +}; // https://developer.mozilla.org/en-US/docs/Web/API/Request const request = new Request(url, data); fetch(request) - .then(response => { - console.log('response', response); + .then((response) => { + console.log("response", response); if (response.status === 200) { return response.json(); } else { - throw new Error('Something went wrong on api server!'); + throw new Error("Something went wrong on api server!"); } }) - .then(response => { - console.log('Success'); + .then((response) => { + console.log("Success"); // ... - }).catch(error => { + }) + .catch((error) => { console.error(error); }); ``` + diff --git a/docs/conversation-api/introduction.md b/docs/conversation-api/introduction.md index 869977f9..6abdaf9e 100644 --- a/docs/conversation-api/introduction.md +++ b/docs/conversation-api/introduction.md @@ -1,10 +1,14 @@ --- id: introduction -title: Conversation API- Extract Conversation Insights +title: Introduction description: Use Symbl.ai Conversation APIs to get speech-to-text data and actionable insights from your conversations. Learn more. sidebar_label: Introduction --- + + Conversation API- Extract Conversation Insights + + import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; @@ -15,27 +19,28 @@ The Conversation API provides a REST API interface for getting your processed Sp To view insights about a conversion, you must provide the API with a Conversation ID. ### What's a Conversation ID? -When you process any conversation through Symbl whether it's from [Async API](/docs/async-api/overview/introduction), [Javascript SDK](/docs/javascript-sdk/overview/introduction), [Python SDK](/docs/python-sdk/overview), [Telephony](/docs/telephony/introduction) or [Streaming API](/docs/streamingapi/overview/introduction), you'll always receive a unique Conversation ID (`conversationId`), which consists of numerical digits. +When you process any conversation through Symbl whether it's from [Async API](/docs/async-api/overview/introduction), [Javascript SDK](/docs/javascript-sdk/overview/introduction), [Python SDK](/docs/python-sdk/overview), [Telephony](/docs/telephony/introduction) or [Streaming API](/docs/streamingapi/overview/introduction), you'll always receive a unique Conversation ID (`conversationId`), which consists of numerical digits. ### Concepts -* [Speech to Text](/docs/concepts/speech-to-text) -* [Action Items](/docs/concepts/action-items) -* [Follow Ups](/docs/concepts/follow-ups) -* [Topics](/docs/concepts/topics) -* [Questions](/docs/concepts/questions) -* [Conversational Analytics](/docs/concepts/conversational-analytics) -* [Topic Hierarchy](/docs/concepts/topic-hierarchy) -* [Comprehensive Action Items](/docs/concepts/comprehensive-action-items) -* [Sentiment Analysis](/docs/concepts/sentiment-analysis) -* [Trackers](/docs/concepts/trackers) -* [Summarization (Labs)](/docs/concepts/summarization) +- [Speech to Text](/docs/concepts/speech-to-text) +- [Action Items](/docs/concepts/action-items) +- [Follow Ups](/docs/concepts/follow-ups) +- [Topics](/docs/concepts/topics) +- [Questions](/docs/concepts/questions) +- [Conversational Analytics](/docs/concepts/conversational-analytics) +- [Topic Hierarchy](/docs/concepts/topic-hierarchy) +- [Comprehensive Action Items](/docs/concepts/comprehensive-action-items) +- [Sentiment Analysis](/docs/concepts/sentiment-analysis) +- [Trackers](/docs/concepts/trackers) +- [Summarization (Labs)](/docs/concepts/summarization) ### API Reference If you have a Conversation ID the Conversation API can help you: -1. [Conversation](/docs/conversation-api/conversation-data): Find the meeting name, member name and email, start and end time of the meeting, meeting type and meeting ID details. + +1. [Conversation](/docs/conversation-api/conversation-data): Find the meeting name, member name and email, start and end time of the meeting, meeting type and meeting ID details. 2. [Delete Conversation](/docs/conversation-api/delete-conversation): Delete a conversation and all related entities. 3. [Members](/docs/conversation-api/members): Find all members/participants from a conversation. 4. [Update Members](/docs/conversation-api/update-members): Update the unique speakers detected as members/participants. @@ -44,8 +49,8 @@ If you have a Conversation ID the Conversation API can help you: 7. [Action Items](/docs/conversation-api/action-items): Provides you with important action items from a conversation. 8. [Questions](/docs/conversation-api/questions): Provides you with questions present in a conversation. 9. [Follow Ups](/docs/conversation-api/follow-ups): Provides you with follow-up requests said in a conversation. -10. [Analytics](/docs/conversation-api/analytics): Find speaker ratio, talk time, silence, pace and overlap in a conversation. +10. [Analytics](/docs/conversation-api/analytics): Find speaker ratio, talk time, silence, pace and overlap in a conversation. 11. [Entities](/docs/conversation-api/entities): Provides you with entities like location, person, date, number, organization, datetime, daterange, etc. -12. [Trackers](/docs/conversation-api/trackers): Trackers allow you to track the occurrence of certain key words or phrases in a conversation so you can identify emerging trends and gauge the nature of interactions. +12. [Trackers](/docs/conversation-api/trackers): Trackers allow you to track the occurrence of certain key words or phrases in a conversation so you can identify emerging trends and gauge the nature of interactions. 13. [Summary](/docs/conversation-api/summary): This API allows you to get a Summary of important contextual messages in a conversation. -14. [Comprehensive Action Items](/docs/conversation-api/comprehensive-action-items): This API allows you to get a Summary of important contextual messages in a conversation. \ No newline at end of file +14. [Comprehensive Action Items](/docs/conversation-api/comprehensive-action-items): This API allows you to get a Summary of important contextual messages in a conversation. diff --git a/docs/streamingapi/concepts.md b/docs/streamingapi/concepts.md index e6325aba..7cfaa18c 100644 --- a/docs/streamingapi/concepts.md +++ b/docs/streamingapi/concepts.md @@ -1,10 +1,15 @@ --- id: concepts -title: Building a Websocket Connection +title: Websockets description: Symbl.ai's Streaming API is based on Websocket protocol. Learn more about what is a WebSocket and how to establish a connection now. sidebar_label: Websockets slug: /concepts/websockets/ --- + + + Building a Websocket Connection + + import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; @@ -16,7 +21,6 @@ Symbl's Streaming API is based on WebSocket protocol. This Web Socket is a gener WebSockets are a thin transport layer built on top of a device’s TCP/IP stack that support the famous “full duplex” connection. - ### Establishing a Websocket Connection To establish a WebSocket connection, an HTTP-based handshake is exchanged between the client and the server. @@ -27,6 +31,4 @@ This allows data to be sent or received using WebSockets with a much lower laten - - -For either of those to run smoothly, the application has to establish a two-way communication so that both the client app and the server can send messages to one another, at the same time. +For either of those to run smoothly, the application has to establish a two-way communication so that both the client app and the server can send messages to one another, at the same time. diff --git a/docs/streamingapi/introduction.md b/docs/streamingapi/introduction.md index eb7964bf..e26737ff 100644 --- a/docs/streamingapi/introduction.md +++ b/docs/streamingapi/introduction.md @@ -1,11 +1,15 @@ --- id: introduction -title: How to Implement Streaming API +title: Streaming API description: Streaming API can provide real-time transcription and extract actionable insights from your conversations. Learn how to implement Symbl.ai’s Streaming API now. sidebar_label: Introduction slug: /streamingapi/introduction/ --- + + How to Implement Streaming API + + import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; @@ -21,20 +25,18 @@ Symbl allows you to identify and redact Personally Identifiable Information (PII Here is a list of tutorials to help you understand how to use Symbl's Streaming API: -* [Get Real-time Speech-To-Text Transcriptions Using Streaming API](/docs/streamingapi/tutorials/receive-ai-insights-from-your-web-browser) -* [Gain Real-time AI Insights From Your Device's Mic Using Symbl's Javascript SDK](/docs/javascript-sdk/tutorials/receive-ai-insights-from-your-computer) - +- [Get Real-time Speech-To-Text Transcriptions Using Streaming API](/docs/streamingapi/tutorials/receive-ai-insights-from-your-web-browser) +- [Gain Real-time AI Insights From Your Device's Mic Using Symbl's Javascript SDK](/docs/javascript-sdk/tutorials/receive-ai-insights-from-your-computer) ### Code Snippets Here is a list of code snippets to help you get started on your journey with the Symbl Streaming API: -* [Start and Stop Streaming API Connection](/docs/streamingapi/code-snippets/start-and-stop-connection) -* [Receive Live Captioning](/docs/streamingapi/code-snippets/receive-live-captioning) -* [Receive Live Topics](/docs/streamingapi/code-snippets/receive-live-topics) -* [Receive Live AI Insights](/docs/streamingapi/code-snippets/receive-ai-insights) -* [Receive Speech to Text for a different language in a conversation](/docs/streamingapi/code-snippets/receive-speech-to-text-for-different-languages) -* [Detect key phrases](/docs/streamingapi/code-snippets/detect-key-phrases) +- [Start and Stop Streaming API Connection](/docs/streamingapi/code-snippets/start-and-stop-connection) +- [Receive Live Captioning](/docs/streamingapi/code-snippets/receive-live-captioning) +- [Receive Live Topics](/docs/streamingapi/code-snippets/receive-live-topics) +- [Receive Live AI Insights](/docs/streamingapi/code-snippets/receive-ai-insights) +- [Receive Speech to Text for a different language in a conversation](/docs/streamingapi/code-snippets/receive-speech-to-text-for-different-languages) ### Symbl Javascript SDK @@ -43,17 +45,15 @@ The Programmable Javascript SDK allows you to add Conversational Intelligence di [Learn more about Symbl's Javascript SDK](/docs/javascript-sdk/introduction) - ### API Reference The Streaming API allows you to easily use Symbl's Language Insights capabilities. It exposes the functionality of Symbl to dial in to the conference. Supported endpoints are given below. Additionally, events can be passed for further processing: -* [Request Parameters](/docs/streaming-api/api-reference#request-parameters) -* [Connection Establishment](/docs/streaming-api/api-reference#connection-establishment) -* [Messages](/docs/streaming-api/api-reference#messages) -* [Subscribe API](/docs/subscribe-api) +- [Request Parameters](/docs/streaming-api/api-reference#request-parameters) +- [Connection Establishment](/docs/streaming-api/api-reference#connection-establishment) +- [Messages](/docs/streaming-api/api-reference#messages) +- [Subscribe API](/docs/subscribe-api) :::info Termination due to elongated silence -If a meeting is silent for more than 30 minutes, it will be automatically terminated. The charges towards the silent minutes apply. +If a meeting is silent for more than 30 minutes, it will be automatically terminated. The charges towards the silent minutes apply. ::: - diff --git a/docs/telephony/introduction.md b/docs/telephony/introduction.md index a0e6effe..f4f793a7 100644 --- a/docs/telephony/introduction.md +++ b/docs/telephony/introduction.md @@ -1,10 +1,15 @@ --- id: introduction -title: Telephony API Tutorial- Introduction +title: Telephony API description: Telephony API enables developers to add Symbl.ai to bridges and join VoIP calls to get real-time intelligence. Check out the Telephony API tutorials to help you get started. sidebar_label: Introduction slug: /telephony/introduction/ --- + + + Telephony API Tutorial- Introduction + + import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; @@ -16,19 +21,17 @@ Based on PSTN and SIP protocols, the Telephony API provides an interface for the We have prepared a list of tutorials to help you understand how to use Symbl's Telephony API -* [Gain AI Insights On Your Zoom Call](/docs/telephony/tutorials/connect-to-zoom) -* [Get A Live Transcription From A Phone Call](/docs/telephony/tutorials/connect-to-phone-call) - +- [Gain AI Insights On Your Zoom Call](/docs/telephony/tutorials/connect-to-zoom) +- [Get A Live Transcription From A Phone Call](/docs/telephony/tutorials/connect-to-phone-call) ### Code Snippets We have provided a list of code snippets to help you get started on your journey with the Symbl Telephony API -* [Connect to a PSTN connection to get Speech to Text and AI Insights](/docs/telephony/code-snippets/connect-to-pstn) -* [Connect to a SIP connection to get Speech to Text and AI Insights](/docs/telephony/code-snippets/connect-to-sip) -* [Receive Speech to Text for a different language in a conversation](/docs/telephony/code-snippets/receive-speech-to-text-for-a-different-language) -* [Receive Prebuilt Summary UI email after each conversation](/docs/telephony/code-snippets/receive-prebuilt-ui-email-after-conversation) - +- [Connect to a PSTN connection to get Speech to Text and AI Insights](/docs/telephony/code-snippets/connect-to-pstn) +- [Connect to a SIP connection to get Speech to Text and AI Insights](/docs/telephony/code-snippets/connect-to-sip) +- [Receive Speech to Text for a different language in a conversation](/docs/telephony/code-snippets/receive-speech-to-text-for-a-different-language) +- [Receive Prebuilt Summary UI email after each conversation](/docs/telephony/code-snippets/receive-prebuilt-ui-email-after-conversation) ### Symbl Javascript SDK @@ -36,25 +39,23 @@ The Programmable Javascript SDK allows you to add Conversational Intelligence di [Learn more about Symbl's Javascript SDK](/docs/javascript-sdk/overview/introduction) - ### API Reference -The Telephony API allows you to easily use Symbl's Language Insights capabilities. It exposes the functionality of Symbl to dial into the conference. Supported endpoints are given below. Additionally, events can be passed for further processing: - -* [Endpoint](/docs/telephony-api/api-reference#endpoint) -* [Request Parameters](/docs/telephony-api/api-reference#request-parameters) -* [Response Parameters](/docs/telephony-api/api-reference#response-parameters) -* [Supported Languages](/docs/telephony-api/api-reference#supported-languages) -* [Specifying Timezones](/docs/telephony-api/api-reference#specifying-timezones) +The Telephony API allows you to easily use Symbl's Language Insights capabilities. It exposes the functionality of Symbl to dial into the conference. Supported endpoints are given below. Additionally, events can be passed for further processing: +- [Endpoint](/docs/telephony-api/api-reference#endpoint) +- [Request Parameters](/docs/telephony-api/api-reference#request-parameters) +- [Response Parameters](/docs/telephony-api/api-reference#response-parameters) +- [Supported Languages](/docs/telephony-api/api-reference#supported-languages) +- [Specifying Timezones](/docs/telephony-api/api-reference#specifying-timezones) ### Concepts The concepts sections explain various keywords you might find when looking through the Telephony API documentation: -* [PSTN (Public Switched Telephone Networks)](/docs/concepts/pstn-and-sip#pstn-public-switched-telephone-networks) -* [SIP (Session Initiation Protocol)](/docs/concepts/pstn-and-sip#sip-session-initiation-protocol) +- [PSTN (Public Switched Telephone Networks)](/docs/concepts/pstn-and-sip#pstn-public-switched-telephone-networks) +- [SIP (Session Initiation Protocol)](/docs/concepts/pstn-and-sip#sip-session-initiation-protocol) :::info Termination due to elongated silence -If the meeting is silent for more than 30 minutes, it will be automatically terminated. The charges towards the silent minutes apply. +If the meeting is silent for more than 30 minutes, it will be automatically terminated. The charges towards the silent minutes apply. ::: diff --git a/package-lock.json b/package-lock.json index 5305a676..d2116056 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,8 +1,12928 @@ { "name": "docs-poc", "version": "0.0.0", - "lockfileVersion": 1, + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "name": "docs-poc", + "version": "0.0.0", + "license": "ISC", + "dependencies": { + "@docusaurus/core": "^2.0.0-beta.16", + "@docusaurus/plugin-client-redirects": "^2.0.0-beta.16", + "@docusaurus/plugin-content-blog": "^2.0.0-beta.16", + "@docusaurus/plugin-content-docs": "^2.0.0-beta.16", + "@docusaurus/plugin-content-pages": "^2.0.0-beta.16", + "@docusaurus/plugin-debug": "^2.0.0-beta.16", + "@docusaurus/plugin-google-analytics": "^2.0.0-beta.16", + "@docusaurus/plugin-google-gtag": "^2.0.0-beta.16", + "@docusaurus/plugin-sitemap": "^2.0.0-beta.16", + "@docusaurus/preset-classic": "^2.0.0-beta.16", + "@docusaurus/theme-classic": "^2.0.0-beta.16", + "@docusaurus/theme-common": "^2.0.0-beta.16", + "@docusaurus/theme-search-algolia": "^2.0.0-beta.16", + "@lilib/hooks": "^0.1.1", + "caniuse-lite": "^1.0.30001294", + "clsx": "^1.1.1", + "docusaurus-plugin-hotjar": "0.0.2", + "docusaurus-plugin-moesif": "0.0.1", + "docusaurus-plugin-munchkin": "0.0.1", + "docusaurus2-dotenv": "^1.4.0", + "dotenv": "^14.3.2", + "postcss": "^8.4.5", + "prism-react-renderer": "^1.2.1", + "react": "^17.0.2", + "react-dom": "^17.0.2", + "webpack": "^5.65.0" + } + }, + "node_modules/@algolia/autocomplete-core": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.5.2.tgz", + "integrity": "sha512-DY0bhyczFSS1b/CqJlTE/nQRtnTAHl6IemIkBy0nEWnhDzRDdtdx4p5Uuk3vwAFxwEEgi1WqKwgSSMx6DpNL4A==", + "dependencies": { + "@algolia/autocomplete-shared": "1.5.2" + } + }, + "node_modules/@algolia/autocomplete-preset-algolia": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.5.2.tgz", + "integrity": "sha512-3MRYnYQFJyovANzSX2CToS6/5cfVjbLLqFsZTKcvF3abhQzxbqwwaMBlJtt620uBUOeMzhdfasKhCc40+RHiZw==", + "dependencies": { + "@algolia/autocomplete-shared": "1.5.2" + }, + "peerDependencies": { + "@algolia/client-search": "^4.9.1", + "algoliasearch": "^4.9.1" + } + }, + "node_modules/@algolia/autocomplete-shared": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.5.2.tgz", + "integrity": "sha512-ylQAYv5H0YKMfHgVWX0j0NmL8XBcAeeeVQUmppnnMtzDbDnca6CzhKj3Q8eF9cHCgcdTDdb5K+3aKyGWA0obug==" + }, + "node_modules/@algolia/cache-browser-local-storage": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.12.1.tgz", + "integrity": "sha512-ERFFOnC9740xAkuO0iZTQqm2AzU7Dpz/s+g7o48GlZgx5p9GgNcsuK5eS0GoW/tAK+fnKlizCtlFHNuIWuvfsg==", + "dependencies": { + "@algolia/cache-common": "4.12.1" + } + }, + "node_modules/@algolia/cache-common": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.12.1.tgz", + "integrity": "sha512-UugTER3V40jT+e19Dmph5PKMeliYKxycNPwrPNADin0RcWNfT2QksK9Ff2N2W7UKraqMOzoeDb4LAJtxcK1a8Q==" + }, + "node_modules/@algolia/cache-in-memory": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.12.1.tgz", + "integrity": "sha512-U6iaunaxK1lHsAf02UWF58foKFEcrVLsHwN56UkCtwn32nlP9rz52WOcHsgk6TJrL8NDcO5swMjtOQ5XHESFLw==", + "dependencies": { + "@algolia/cache-common": "4.12.1" + } + }, + "node_modules/@algolia/client-account": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.12.1.tgz", + "integrity": "sha512-jGo4ConJNoMdTCR2zouO0jO/JcJmzOK6crFxMMLvdnB1JhmMbuIKluOTJVlBWeivnmcsqb7r0v7qTCPW5PAyxQ==", + "dependencies": { + "@algolia/client-common": "4.12.1", + "@algolia/client-search": "4.12.1", + "@algolia/transporter": "4.12.1" + } + }, + "node_modules/@algolia/client-analytics": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.12.1.tgz", + "integrity": "sha512-h1It7KXzIthlhuhfBk7LteYq72tym9maQDUsyRW0Gft8b6ZQahnRak9gcCvKwhcJ1vJoP7T7JrNYGiYSicTD9g==", + "dependencies": { + "@algolia/client-common": "4.12.1", + "@algolia/client-search": "4.12.1", + "@algolia/requester-common": "4.12.1", + "@algolia/transporter": "4.12.1" + } + }, + "node_modules/@algolia/client-common": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.12.1.tgz", + "integrity": "sha512-obnJ8eSbv+h94Grk83DTGQ3bqhViSWureV6oK1s21/KMGWbb3DkduHm+lcwFrMFkjSUSzosLBHV9EQUIBvueTw==", + "dependencies": { + "@algolia/requester-common": "4.12.1", + "@algolia/transporter": "4.12.1" + } + }, + "node_modules/@algolia/client-personalization": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.12.1.tgz", + "integrity": "sha512-sMSnjjPjRgByGHYygV+5L/E8a6RgU7l2GbpJukSzJ9GRY37tHmBHuvahv8JjdCGJ2p7QDYLnQy5bN5Z02qjc7Q==", + "dependencies": { + "@algolia/client-common": "4.12.1", + "@algolia/requester-common": "4.12.1", + "@algolia/transporter": "4.12.1" + } + }, + "node_modules/@algolia/client-search": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.12.1.tgz", + "integrity": "sha512-MwwKKprfY6X2nJ5Ki/ccXM2GDEePvVjZnnoOB2io3dLKW4fTqeSRlC5DRXeFD7UM0vOPPHr4ItV2aj19APKNVQ==", + "dependencies": { + "@algolia/client-common": "4.12.1", + "@algolia/requester-common": "4.12.1", + "@algolia/transporter": "4.12.1" + } + }, + "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.12.1", + "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.12.1.tgz", + "integrity": "sha512-fCgrzlXGATNqdFTxwx0GsyPXK+Uqrx1SZ3iuY2VGPPqdt1a20clAG2n2OcLHJpvaa6vMFPlJyWvbqAgzxdxBlQ==" + }, + "node_modules/@algolia/logger-console": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.12.1.tgz", + "integrity": "sha512-0owaEnq/davngQMYqxLA4KrhWHiXujQ1CU3FFnyUcMyBR7rGHI48zSOUpqnsAXrMBdSH6rH5BDkSUUFwsh8RkQ==", + "dependencies": { + "@algolia/logger-common": "4.12.1" + } + }, + "node_modules/@algolia/requester-browser-xhr": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.12.1.tgz", + "integrity": "sha512-OaMxDyG0TZG0oqz1lQh9e3woantAG1bLnuwq3fmypsrQxra4IQZiyn1x+kEb69D2TcXApI5gOgrD4oWhtEVMtw==", + "dependencies": { + "@algolia/requester-common": "4.12.1" + } + }, + "node_modules/@algolia/requester-common": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.12.1.tgz", + "integrity": "sha512-XWIrWQNJ1vIrSuL/bUk3ZwNMNxl+aWz6dNboRW6+lGTcMIwc3NBFE90ogbZKhNrFRff8zI4qCF15tjW+Fyhpow==" + }, + "node_modules/@algolia/requester-node-http": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.12.1.tgz", + "integrity": "sha512-awBtwaD+s0hxkA1aehYn8F0t9wqGoBVWgY4JPHBmp1ChO3pK7RKnnvnv7QQa9vTlllX29oPt/BBVgMo1Z3n1Qg==", + "dependencies": { + "@algolia/requester-common": "4.12.1" + } + }, + "node_modules/@algolia/transporter": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.12.1.tgz", + "integrity": "sha512-BGeNgdEHc6dXIk2g8kdlOoQ6fQ6OIaKQcplEj7HPoi+XZUeAvRi3Pff3QWd7YmybWkjzd9AnTzieTASDWhL+sQ==", + "dependencies": { + "@algolia/cache-common": "4.12.1", + "@algolia/logger-common": "4.12.1", + "@algolia/requester-common": "4.12.1" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz", + "integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "dependencies": { + "@babel/highlight": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.0.tgz", + "integrity": "sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.17.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.5.tgz", + "integrity": "sha512-/BBMw4EvjmyquN5O+t5eh0+YqB3XXJkYD2cjKpYtWOfFy4lQ4UozNSmxAcWT8r2XtZs0ewG+zrfsqeR15i1ajA==", + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.3", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helpers": "^7.17.2", + "@babel/parser": "^7.17.3", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.3.tgz", + "integrity": "sha512-+R6Dctil/MgUsZsZAkYgK+ADNSZzJRRy0TvY65T71z/CR854xHQ1EweBYXdfT+HNeN7w0cSJJEzgxZMv40pxsg==", + "dependencies": { + "@babel/types": "^7.17.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", + "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", + "dependencies": { + "@babel/helper-explode-assignable-expression": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz", + "integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==", + "dependencies": { + "@babel/compat-data": "^7.16.4", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.17.5", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.17.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.6.tgz", + "integrity": "sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz", + "integrity": "sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "regexpu-core": "^5.0.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", + "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", + "dependencies": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0-0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", + "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-explode-assignable-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", + "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", + "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", + "dependencies": { + "@babel/helper-get-function-arity": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-get-function-arity": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", + "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz", + "integrity": "sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q==", + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.17.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.6.tgz", + "integrity": "sha512-2ULmRdqoOMpdvkbT8jONrZML/XALfzxlb052bldftkicAUy8AxSCkD5trDPQcwHNmolcl7wP6ehNqMlyUw6AaA==", + "dependencies": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", + "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", + "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-wrap-function": "^7.16.8", + "@babel/types": "^7.16.8" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", + "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", + "dependencies": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz", + "integrity": "sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==", + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", + "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", + "dependencies": { + "@babel/helper-function-name": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.8", + "@babel/types": "^7.16.8" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.17.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.2.tgz", + "integrity": "sha512-0Qu7RLR1dILozr/6M0xgj+DFPmi6Bnulgm9M8BVa9ZCWxDqlSnqt3cf8IDPB5m45sVXUZ0kuQAgUrdSFFH79fQ==", + "dependencies": { + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.0", + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", + "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.3.tgz", + "integrity": "sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA==", + "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.16.7", + "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.16.7.tgz", + "integrity": "sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz", + "integrity": "sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz", + "integrity": "sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-remap-async-to-generator": "^7.16.8", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz", + "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-static-block": { + "version": "7.17.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz", + "integrity": "sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.17.6", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-proposal-dynamic-import": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", + "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-export-namespace-from": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz", + "integrity": "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@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-proposal-json-strings": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz", + "integrity": "sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz", + "integrity": "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@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-proposal-nullish-coalescing-operator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz", + "integrity": "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@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-proposal-numeric-separator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", + "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz", + "integrity": "sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw==", + "dependencies": { + "@babel/compat-data": "^7.17.0", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-catch-binding": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", + "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@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-proposal-optional-chaining": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz", + "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.16.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz", + "integrity": "sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.16.10", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz", + "integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@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-proposal-unicode-property-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz", + "integrity": "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "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-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.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz", + "integrity": "sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "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.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz", + "integrity": "sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz", + "integrity": "sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz", + "integrity": "sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==", + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-remap-async-to-generator": "^7.16.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", + "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz", + "integrity": "sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz", + "integrity": "sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "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.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz", + "integrity": "sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.3.tgz", + "integrity": "sha512-dDFzegDYKlPqa72xIlbmSkly5MluLoaC1JswABGktyt6NTXSBcUuse/kWE/wvKFWJHPETpi158qJZFS3JmykJg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", + "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz", + "integrity": "sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", + "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz", + "integrity": "sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", + "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", + "dependencies": { + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz", + "integrity": "sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", + "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz", + "integrity": "sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==", + "dependencies": { + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd/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-transform-modules-commonjs": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.8.tgz", + "integrity": "sha512-oflKPvsLT2+uKQopesJt3ApiaIS2HW+hzHFcwRNtyDGieAeC/dIHZX8buJQ2J2X1rxGPy4eRcUijm3qcSPjYcA==", + "dependencies": { + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-simple-access": "^7.16.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs/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-transform-modules-systemjs": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.7.tgz", + "integrity": "sha512-DuK5E3k+QQmnOqBR9UkusByy5WZWGRxfzV529s9nPra1GE7olmxfqO2FHobEOYSPIjPBTr4p66YDcjQnt8cBmw==", + "dependencies": { + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs/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-transform-modules-umd": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz", + "integrity": "sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==", + "dependencies": { + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz", + "integrity": "sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz", + "integrity": "sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", + "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz", + "integrity": "sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", + "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-constant-elements": { + "version": "7.17.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.17.6.tgz", + "integrity": "sha512-OBv9VkyyKtsHZiHLoSfCn+h6yU7YKX8nrs32xUmOa1SRSk+t03FosB6fBZ0Yz4BpD1WV7l73Nsad+2Tz7APpqw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz", + "integrity": "sha512-qgIg8BcZgd0G/Cz916D5+9kqX0c7nPZyXaP8R2tLNN5tkyIZdG5fEwBrxwplzSnjC1jvQmyMNVwUCZPcbGY7Pg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.3.tgz", + "integrity": "sha512-9tjBm4O07f7mzKSIlEmPdiE6ub7kfIe6Cd+w+oQebpATfTQMAgW+YOuWxogbKVTulA+MEO7byMeIUtQ1z+z+ZQ==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-jsx": "^7.16.7", + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.7.tgz", + "integrity": "sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A==", + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.7.tgz", + "integrity": "sha512-hs71ToC97k3QWxswh2ElzMFABXHvGiJ01IB1TbYQDGeWRKWz/MPUTh5jGExdHvosYKpnJW5Pm3S4+TA3FyX+GA==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz", + "integrity": "sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q==", + "dependencies": { + "regenerator-transform": "^0.14.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz", + "integrity": "sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.0.tgz", + "integrity": "sha512-fr7zPWnKXNc1xoHfrIU9mN/4XKX4VLZ45Q+oMhfsYIaHvg7mHgmhfOy/ckRWqDK7XF3QDigRpkh5DKq6+clE8A==", + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", + "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz", + "integrity": "sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", + "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz", + "integrity": "sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz", + "integrity": "sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.8.tgz", + "integrity": "sha512-bHdQ9k7YpBDO2d0NVfkj51DpQcvwIzIusJ7mEUaMlbZq3Kt/U47j24inXZHQ5MDiYpCs+oZiwnXyKedE8+q7AQ==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-typescript": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", + "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", + "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.16.11", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.11.tgz", + "integrity": "sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==", + "dependencies": { + "@babel/compat-data": "^7.16.8", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.7", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.7", + "@babel/plugin-proposal-async-generator-functions": "^7.16.8", + "@babel/plugin-proposal-class-properties": "^7.16.7", + "@babel/plugin-proposal-class-static-block": "^7.16.7", + "@babel/plugin-proposal-dynamic-import": "^7.16.7", + "@babel/plugin-proposal-export-namespace-from": "^7.16.7", + "@babel/plugin-proposal-json-strings": "^7.16.7", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.7", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7", + "@babel/plugin-proposal-numeric-separator": "^7.16.7", + "@babel/plugin-proposal-object-rest-spread": "^7.16.7", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", + "@babel/plugin-proposal-optional-chaining": "^7.16.7", + "@babel/plugin-proposal-private-methods": "^7.16.11", + "@babel/plugin-proposal-private-property-in-object": "^7.16.7", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.7", + "@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-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-transform-arrow-functions": "^7.16.7", + "@babel/plugin-transform-async-to-generator": "^7.16.8", + "@babel/plugin-transform-block-scoped-functions": "^7.16.7", + "@babel/plugin-transform-block-scoping": "^7.16.7", + "@babel/plugin-transform-classes": "^7.16.7", + "@babel/plugin-transform-computed-properties": "^7.16.7", + "@babel/plugin-transform-destructuring": "^7.16.7", + "@babel/plugin-transform-dotall-regex": "^7.16.7", + "@babel/plugin-transform-duplicate-keys": "^7.16.7", + "@babel/plugin-transform-exponentiation-operator": "^7.16.7", + "@babel/plugin-transform-for-of": "^7.16.7", + "@babel/plugin-transform-function-name": "^7.16.7", + "@babel/plugin-transform-literals": "^7.16.7", + "@babel/plugin-transform-member-expression-literals": "^7.16.7", + "@babel/plugin-transform-modules-amd": "^7.16.7", + "@babel/plugin-transform-modules-commonjs": "^7.16.8", + "@babel/plugin-transform-modules-systemjs": "^7.16.7", + "@babel/plugin-transform-modules-umd": "^7.16.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.8", + "@babel/plugin-transform-new-target": "^7.16.7", + "@babel/plugin-transform-object-super": "^7.16.7", + "@babel/plugin-transform-parameters": "^7.16.7", + "@babel/plugin-transform-property-literals": "^7.16.7", + "@babel/plugin-transform-regenerator": "^7.16.7", + "@babel/plugin-transform-reserved-words": "^7.16.7", + "@babel/plugin-transform-shorthand-properties": "^7.16.7", + "@babel/plugin-transform-spread": "^7.16.7", + "@babel/plugin-transform-sticky-regex": "^7.16.7", + "@babel/plugin-transform-template-literals": "^7.16.7", + "@babel/plugin-transform-typeof-symbol": "^7.16.7", + "@babel/plugin-transform-unicode-escapes": "^7.16.7", + "@babel/plugin-transform-unicode-regex": "^7.16.7", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.16.8", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.20.2", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@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.16.7", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.16.7.tgz", + "integrity": "sha512-fWpyI8UM/HE6DfPBzD8LnhQ/OcH8AgTaqcqP2nGOXEUV+VKBR5JRN9hCk9ai+zQQ57vtm9oWeXguBCPNUjytgA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-transform-react-display-name": "^7.16.7", + "@babel/plugin-transform-react-jsx": "^7.16.7", + "@babel/plugin-transform-react-jsx-development": "^7.16.7", + "@babel/plugin-transform-react-pure-annotations": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.16.7.tgz", + "integrity": "sha512-WbVEmgXdIyvzB77AQjGBEyYPZx+8tTsO50XtfozQrkW8QB2rLJpH2lgx0TRw5EJrBxOZQ+wCcyPVQvS8tjEHpQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-transform-typescript": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.17.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.2.tgz", + "integrity": "sha512-hzeyJyMA1YGdJTuWU0e/j4wKXrU4OMFvY2MSlaI9B7VQb0r5cxTE3EAIS2Q7Tn2RIcDkRvTA/v2JsAEhxe99uw==", + "dependencies": { + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/runtime-corejs3": { + "version": "7.17.2", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.17.2.tgz", + "integrity": "sha512-NcKtr2epxfIrNM4VOmPKO46TvDMCBhgi2CrSHaEarrz+Plk2K5r9QemmOFTGpZaoKnWoGH5MO+CzeRsih/Fcgg==", + "dependencies": { + "core-js-pure": "^3.20.2", + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz", + "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.3", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.17.3", + "@babel/types": "^7.17.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@docsearch/css": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.0.0.tgz", + "integrity": "sha512-1kkV7tkAsiuEd0shunYRByKJe3xQDG2q7wYg24SOw1nV9/2lwEd4WrUYRJC/ukGTl2/kHeFxsaUvtiOy0y6fFA==" + }, + "node_modules/@docsearch/react": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.0.0.tgz", + "integrity": "sha512-yhMacqS6TVQYoBh/o603zszIb5Bl8MIXuOc6Vy617I74pirisDzzcNh0NEaYQt50fVVR3khUbeEhUEWEWipESg==", + "dependencies": { + "@algolia/autocomplete-core": "1.5.2", + "@algolia/autocomplete-preset-algolia": "1.5.2", + "@docsearch/css": "3.0.0", + "algoliasearch": "^4.0.0" + }, + "peerDependencies": { + "@types/react": ">= 16.8.0 < 18.0.0", + "react": ">= 16.8.0 < 18.0.0", + "react-dom": ">= 16.8.0 < 18.0.0" + } + }, + "node_modules/@docusaurus/core": { + "version": "2.0.0-beta.16", + "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-2.0.0-beta.16.tgz", + "integrity": "sha512-0AbNSpTKapz+tctg7PHvuGQRtW7nd3Tm3axNqnFowO3SV2VvFCaBji2s1H3XCGXVRGveQ04g20vl2ZqG5GheUA==", + "dependencies": { + "@babel/core": "^7.17.5", + "@babel/generator": "^7.17.3", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-runtime": "^7.17.0", + "@babel/preset-env": "^7.16.11", + "@babel/preset-react": "^7.16.7", + "@babel/preset-typescript": "^7.16.7", + "@babel/runtime": "^7.17.2", + "@babel/runtime-corejs3": "^7.17.2", + "@babel/traverse": "^7.17.3", + "@docusaurus/cssnano-preset": "2.0.0-beta.16", + "@docusaurus/logger": "2.0.0-beta.16", + "@docusaurus/mdx-loader": "2.0.0-beta.16", + "@docusaurus/react-loadable": "5.5.2", + "@docusaurus/utils": "2.0.0-beta.16", + "@docusaurus/utils-common": "2.0.0-beta.16", + "@docusaurus/utils-validation": "2.0.0-beta.16", + "@slorber/static-site-generator-webpack-plugin": "^4.0.1", + "@svgr/webpack": "^6.2.1", + "autoprefixer": "^10.4.2", + "babel-loader": "^8.2.3", + "babel-plugin-dynamic-import-node": "2.3.0", + "boxen": "^6.2.1", + "chokidar": "^3.5.3", + "clean-css": "^5.2.4", + "cli-table3": "^0.6.1", + "combine-promises": "^1.1.0", + "commander": "^5.1.0", + "copy-webpack-plugin": "^10.2.4", + "core-js": "^3.21.1", + "css-loader": "^6.6.0", + "css-minimizer-webpack-plugin": "^3.4.1", + "cssnano": "^5.0.17", + "del": "^6.0.0", + "detect-port": "^1.3.0", + "escape-html": "^1.0.3", + "eta": "^1.12.3", + "file-loader": "^6.2.0", + "fs-extra": "^10.0.1", + "html-minifier-terser": "^6.1.0", + "html-tags": "^3.1.0", + "html-webpack-plugin": "^5.5.0", + "import-fresh": "^3.3.0", + "is-root": "^2.1.0", + "leven": "^3.1.0", + "lodash": "^4.17.21", + "mini-css-extract-plugin": "^2.5.3", + "nprogress": "^0.2.0", + "postcss": "^8.4.6", + "postcss-loader": "^6.2.1", + "prompts": "^2.4.2", + "react-dev-utils": "^12.0.0", + "react-helmet-async": "^1.2.3", + "react-loadable": "npm:@docusaurus/react-loadable@5.5.2", + "react-loadable-ssr-addon-v5-slorber": "^1.0.1", + "react-router": "^5.2.0", + "react-router-config": "^5.1.1", + "react-router-dom": "^5.2.0", + "remark-admonitions": "^1.2.1", + "rtl-detect": "^1.0.4", + "semver": "^7.3.4", + "serve-handler": "^6.1.3", + "shelljs": "^0.8.5", + "terser-webpack-plugin": "^5.3.1", + "tslib": "^2.3.1", + "update-notifier": "^5.1.0", + "url-loader": "^4.1.1", + "wait-on": "^6.0.1", + "webpack": "^5.69.1", + "webpack-bundle-analyzer": "^4.5.0", + "webpack-dev-server": "^4.7.4", + "webpack-merge": "^5.8.0", + "webpackbar": "^5.0.2" + }, + "bin": { + "docusaurus": "bin/docusaurus.mjs" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/cssnano-preset": { + "version": "2.0.0-beta.16", + "resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-2.0.0-beta.16.tgz", + "integrity": "sha512-dkGpb+xoFNmcp5m5EpwGcFlMT4C7kOTzgZ73QoNoU930NL6OXuqcJdMd4XI6yYuGz+t8Bo8UzzCryEjHTiObOg==", + "dependencies": { + "cssnano-preset-advanced": "^5.1.12", + "postcss": "^8.4.6", + "postcss-sort-media-queries": "^4.2.1" + } + }, + "node_modules/@docusaurus/logger": { + "version": "2.0.0-beta.16", + "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-2.0.0-beta.16.tgz", + "integrity": "sha512-/fta5gCXHMLip+8WxYoi+hlB1pwJEeVpFc7Z4iIMwAxn8SrcmCJ0K3wPNjZpDdz0EHrpLHEJ/vEkCuL+7Su4ZQ==", + "dependencies": { + "chalk": "^4.1.2", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@docusaurus/logger/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/@docusaurus/logger/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/@docusaurus/logger/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/@docusaurus/logger/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/@docusaurus/logger/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/@docusaurus/logger/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/@docusaurus/mdx-loader": { + "version": "2.0.0-beta.16", + "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-2.0.0-beta.16.tgz", + "integrity": "sha512-NR0Cptz4UGlzgu08AITffRL4rj+SU8HYq2yNFxbY8FSuj/GWI3SrSsBi7grB6fKql0s4SGUKEEzSweewzW1Rgg==", + "dependencies": { + "@babel/parser": "^7.17.3", + "@babel/traverse": "^7.17.3", + "@docusaurus/logger": "2.0.0-beta.16", + "@docusaurus/utils": "2.0.0-beta.16", + "@mdx-js/mdx": "^1.6.22", + "escape-html": "^1.0.3", + "file-loader": "^6.2.0", + "fs-extra": "^10.0.1", + "image-size": "^1.0.1", + "mdast-util-to-string": "^2.0.0", + "remark-emoji": "^2.1.0", + "stringify-object": "^3.3.0", + "tslib": "^2.3.1", + "unist-util-visit": "^2.0.2", + "url-loader": "^4.1.1", + "webpack": "^5.69.1" + }, + "engines": { + "node": ">=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.0.0-beta.16", + "resolved": "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-2.0.0-beta.16.tgz", + "integrity": "sha512-x6/JlbrSfhGuDc6dWybt/E1T6xh/jjEJemlizAGArHpKB0mTuxRm5FRCmksX7z7IM8HZs43tpftGS8gXNL5gug==", + "dependencies": { + "@docusaurus/types": "2.0.0-beta.16", + "@types/react": "*", + "@types/react-router-config": "*", + "@types/react-router-dom": "*", + "react-helmet-async": "*" + }, + "peerDependencies": { + "react": "*", + "react-dom": "*" + } + }, + "node_modules/@docusaurus/plugin-client-redirects": { + "version": "2.0.0-beta.16", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-client-redirects/-/plugin-client-redirects-2.0.0-beta.16.tgz", + "integrity": "sha512-ZtIOytsUlHmuU/Lb844IuTgFwF/aqom3es2E6rn0UXeW4xsgf68PgPypqLADyhEfJo5B4bBEl0a7bBIe1FR6vw==", + "dependencies": { + "@docusaurus/core": "2.0.0-beta.16", + "@docusaurus/logger": "2.0.0-beta.16", + "@docusaurus/utils": "2.0.0-beta.16", + "@docusaurus/utils-common": "2.0.0-beta.16", + "@docusaurus/utils-validation": "2.0.0-beta.16", + "eta": "^1.12.3", + "fs-extra": "^10.0.1", + "lodash": "^4.17.21", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/plugin-content-blog": { + "version": "2.0.0-beta.16", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.0.0-beta.16.tgz", + "integrity": "sha512-JSRzNKpuMPAndIDIZKbA4G2rA0sC3jPHO+TOmBliO8SBUkw1DL58MZTp98y+5EeUg+KjNIYoz7wRMj3YhFIhJA==", + "dependencies": { + "@docusaurus/core": "2.0.0-beta.16", + "@docusaurus/logger": "2.0.0-beta.16", + "@docusaurus/mdx-loader": "2.0.0-beta.16", + "@docusaurus/utils": "2.0.0-beta.16", + "@docusaurus/utils-common": "2.0.0-beta.16", + "@docusaurus/utils-validation": "2.0.0-beta.16", + "cheerio": "^1.0.0-rc.10", + "feed": "^4.2.2", + "fs-extra": "^10.0.1", + "lodash": "^4.17.21", + "reading-time": "^1.5.0", + "remark-admonitions": "^1.2.1", + "tslib": "^2.3.1", + "utility-types": "^3.10.0", + "webpack": "^5.69.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/plugin-content-blog/node_modules/cheerio": { + "version": "1.0.0-rc.10", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz", + "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==", + "dependencies": { + "cheerio-select": "^1.5.0", + "dom-serializer": "^1.3.2", + "domhandler": "^4.2.0", + "htmlparser2": "^6.1.0", + "parse5": "^6.0.1", + "parse5-htmlparser2-tree-adapter": "^6.0.1", + "tslib": "^2.2.0" + }, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/@docusaurus/plugin-content-blog/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/@docusaurus/plugin-content-docs": { + "version": "2.0.0-beta.16", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.0.0-beta.16.tgz", + "integrity": "sha512-IiNEud1WYj9a0rkNHjX1JNLfim8f6pyB5w17arRDK6HiY3w51zCQsZJo0popRp1KQQf/g66I+5Y3qP5rHGeU6Q==", + "dependencies": { + "@docusaurus/core": "2.0.0-beta.16", + "@docusaurus/logger": "2.0.0-beta.16", + "@docusaurus/mdx-loader": "2.0.0-beta.16", + "@docusaurus/utils": "2.0.0-beta.16", + "@docusaurus/utils-validation": "2.0.0-beta.16", + "combine-promises": "^1.1.0", + "fs-extra": "^10.0.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "lodash": "^4.17.21", + "remark-admonitions": "^1.2.1", + "tslib": "^2.3.1", + "utility-types": "^3.10.0", + "webpack": "^5.69.1" + }, + "engines": { + "node": ">=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.0.0-beta.16", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.0.0-beta.16.tgz", + "integrity": "sha512-XH/dNfDhnad7qA+RUdyJW94Yf8LzALz0bJRwp8GbtjXeAmfP/DWGvVPT/egd9Pz99uO5UgiO9vR1i7UlktQSwA==", + "dependencies": { + "@docusaurus/core": "2.0.0-beta.16", + "@docusaurus/mdx-loader": "2.0.0-beta.16", + "@docusaurus/utils": "2.0.0-beta.16", + "@docusaurus/utils-validation": "2.0.0-beta.16", + "fs-extra": "^10.0.1", + "remark-admonitions": "^1.2.1", + "tslib": "^2.3.1", + "webpack": "^5.69.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/plugin-debug": { + "version": "2.0.0-beta.16", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-2.0.0-beta.16.tgz", + "integrity": "sha512-uzp4hrL/PozgDNEWF/Y+DH+nH0GoC+dOyNLqsyFqQLlzykFHTJYLMK1tfwKHUJ3WqhQFbRwLTR4rzFC89Kaf7g==", + "dependencies": { + "@docusaurus/core": "2.0.0-beta.16", + "@docusaurus/utils": "2.0.0-beta.16", + "fs-extra": "^10.0.1", + "react-json-view": "^1.21.3", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=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.0.0-beta.16", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.0.0-beta.16.tgz", + "integrity": "sha512-UKd1RWYHeSm/RLjJ2ZflLTT6hbiWQWFAxVzYRBiyOnDbBP+un8qmP692QZCIP+rrm+KkxsV1FGte0NtrcsFUEw==", + "dependencies": { + "@docusaurus/core": "2.0.0-beta.16", + "@docusaurus/utils-validation": "2.0.0-beta.16", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=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.0.0-beta.16", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.0.0-beta.16.tgz", + "integrity": "sha512-WUD1Kh5y/9VaV/ubg8c6a43gE2+N+yeLUL/qfrUZuLHheaBaozGjioHRbndmfN6W7l2EhuxO1QRN3SlBqc7kjA==", + "dependencies": { + "@docusaurus/core": "2.0.0-beta.16", + "@docusaurus/utils-validation": "2.0.0-beta.16", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/plugin-sitemap": { + "version": "2.0.0-beta.16", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.0.0-beta.16.tgz", + "integrity": "sha512-B8fa2qvScNSiuCos6vZjPERikRTbbebzy33s5zV+VTZsqLtrjs4//Y0HlJ0tuz5qHWCzavb6nFX/mgFAJoyqFQ==", + "dependencies": { + "@docusaurus/core": "2.0.0-beta.16", + "@docusaurus/utils": "2.0.0-beta.16", + "@docusaurus/utils-common": "2.0.0-beta.16", + "@docusaurus/utils-validation": "2.0.0-beta.16", + "fs-extra": "^10.0.1", + "sitemap": "^7.1.1", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/preset-classic": { + "version": "2.0.0-beta.16", + "resolved": "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-2.0.0-beta.16.tgz", + "integrity": "sha512-HLY2dC412Lexe2ZupUEUJpY44yz6uqtvibKTXvXH392hFB43Thp7MKr5zACRTwacjbddIoqPVbdzRWtvugSU2g==", + "dependencies": { + "@docusaurus/core": "2.0.0-beta.16", + "@docusaurus/plugin-content-blog": "2.0.0-beta.16", + "@docusaurus/plugin-content-docs": "2.0.0-beta.16", + "@docusaurus/plugin-content-pages": "2.0.0-beta.16", + "@docusaurus/plugin-debug": "2.0.0-beta.16", + "@docusaurus/plugin-google-analytics": "2.0.0-beta.16", + "@docusaurus/plugin-google-gtag": "2.0.0-beta.16", + "@docusaurus/plugin-sitemap": "2.0.0-beta.16", + "@docusaurus/theme-classic": "2.0.0-beta.16", + "@docusaurus/theme-common": "2.0.0-beta.16", + "@docusaurus/theme-search-algolia": "2.0.0-beta.16" + }, + "engines": { + "node": ">=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.0.0-beta.16", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-2.0.0-beta.16.tgz", + "integrity": "sha512-7cylhb2hwAUSM+ZD2ClQwS/Ag8tnt5gTDrma9WzWA+sB7Zd/b5Dc9WHFowzUjieC++UZ+KxYktCfKE/1RWF77w==", + "dependencies": { + "@docusaurus/core": "2.0.0-beta.16", + "@docusaurus/plugin-content-blog": "2.0.0-beta.16", + "@docusaurus/plugin-content-docs": "2.0.0-beta.16", + "@docusaurus/plugin-content-pages": "2.0.0-beta.16", + "@docusaurus/theme-common": "2.0.0-beta.16", + "@docusaurus/theme-translations": "2.0.0-beta.16", + "@docusaurus/utils": "2.0.0-beta.16", + "@docusaurus/utils-common": "2.0.0-beta.16", + "@docusaurus/utils-validation": "2.0.0-beta.16", + "@mdx-js/react": "^1.6.22", + "clsx": "^1.1.1", + "copy-text-to-clipboard": "^3.0.1", + "infima": "0.2.0-alpha.37", + "lodash": "^4.17.21", + "postcss": "^8.4.6", + "prism-react-renderer": "^1.2.1", + "prismjs": "^1.27.0", + "react-router-dom": "^5.2.0", + "rtlcss": "^3.3.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/theme-common": { + "version": "2.0.0-beta.16", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-2.0.0-beta.16.tgz", + "integrity": "sha512-7jP+lVrNMlEXH9bUvjnRxyF1MQpIC0Z+FpBmahTwi1lNAVe1kbs3r7SVsXnBHwI4F+tIWaRMkpEfZfNhH1MjNA==", + "dependencies": { + "@docusaurus/module-type-aliases": "2.0.0-beta.16", + "@docusaurus/plugin-content-blog": "2.0.0-beta.16", + "@docusaurus/plugin-content-docs": "2.0.0-beta.16", + "@docusaurus/plugin-content-pages": "2.0.0-beta.16", + "clsx": "^1.1.1", + "parse-numeric-range": "^1.3.0", + "prism-react-renderer": "^1.3.1", + "tslib": "^2.3.1", + "utility-types": "^3.10.0" + }, + "engines": { + "node": ">=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.0.0-beta.16", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.0.0-beta.16.tgz", + "integrity": "sha512-yNQ7nWWAzT+abQiiSgnPT3FDE07KDIt4UZgxEwo2WvynDD4O7G+6uUkBryAZXYvgc2GEMw7u0E/8+2EPbJ5yyg==", + "dependencies": { + "@docsearch/react": "^3.0.0", + "@docusaurus/core": "2.0.0-beta.16", + "@docusaurus/logger": "2.0.0-beta.16", + "@docusaurus/theme-common": "2.0.0-beta.16", + "@docusaurus/theme-translations": "2.0.0-beta.16", + "@docusaurus/utils": "2.0.0-beta.16", + "@docusaurus/utils-validation": "2.0.0-beta.16", + "algoliasearch": "^4.12.1", + "algoliasearch-helper": "^3.7.0", + "clsx": "^1.1.1", + "eta": "^1.12.3", + "fs-extra": "^10.0.1", + "lodash": "^4.17.21", + "tslib": "^2.3.1", + "utility-types": "^3.10.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/theme-translations": { + "version": "2.0.0-beta.16", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-translations/-/theme-translations-2.0.0-beta.16.tgz", + "integrity": "sha512-OMYjraIbkQyPEdpPGe4zc9gDUm1FxruyBMcxW9pnqh8BoEogPpyFGTJwXiKzOWS6W+xiyctWJYIYmS5laDkriw==", + "dependencies": { + "fs-extra": "^10.0.1", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@docusaurus/types": { + "version": "2.0.0-beta.16", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-2.0.0-beta.16.tgz", + "integrity": "sha512-ttej9CFthe9+mDMGKMI1wRegXJHLXUZUhxsiYaGczW7PZXdbCQZvKVAoMtrEp/Oa/KOMtqwva60iEEot//KGnQ==", + "dependencies": { + "commander": "^5.1.0", + "joi": "^17.6.0", + "querystring": "0.2.1", + "utility-types": "^3.10.0", + "webpack": "^5.69.1", + "webpack-merge": "^5.8.0" + } + }, + "node_modules/@docusaurus/types/node_modules/querystring": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz", + "integrity": "sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/@docusaurus/utils": { + "version": "2.0.0-beta.16", + "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-2.0.0-beta.16.tgz", + "integrity": "sha512-ngOVqWlT+JvHsWDYH1i0oou9Dhhm6gKcTB3PR3nkIlDOdn+MViuhhKivTBD9et5JxAnf8A1hk/oaUO9tBU7WGA==", + "dependencies": { + "@docusaurus/logger": "2.0.0-beta.16", + "@svgr/webpack": "^6.0.0", + "file-loader": "^6.2.0", + "fs-extra": "^10.0.1", + "github-slugger": "^1.4.0", + "globby": "^11.0.4", + "gray-matter": "^4.0.3", + "js-yaml": "^4.1.0", + "lodash": "^4.17.21", + "micromatch": "^4.0.4", + "resolve-pathname": "^3.0.0", + "shelljs": "^0.8.5", + "tslib": "^2.3.1", + "url-loader": "^4.1.1", + "webpack": "^5.69.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@docusaurus/utils-common": { + "version": "2.0.0-beta.16", + "resolved": "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-2.0.0-beta.16.tgz", + "integrity": "sha512-xAUBVX/BftMPAw9rvdeIKBKmmAX2xus+HbXciL+5VKNG9ePI5X+W739lCqJVm6C2fDRXENBbeaKnnMx9wTeEUg==", + "dependencies": { + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@docusaurus/utils-validation": { + "version": "2.0.0-beta.16", + "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-2.0.0-beta.16.tgz", + "integrity": "sha512-gXAKMP1D5ERX3d5SF88Yp7G9ROYd2XOhyLSErPRaHs5b9SzYhI9lIiPUoXFk6VyRnUjXiUley2/MtdrEgt989A==", + "dependencies": { + "@docusaurus/logger": "2.0.0-beta.16", + "@docusaurus/utils": "2.0.0-beta.16", + "joi": "^17.6.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@hapi/hoek": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.1.tgz", + "integrity": "sha512-gfta+H8aziZsm8pZa0vj04KO6biEiisppNgA1kbJvFrrWu9Vm7eaUEy76DIxsuTaWvti5fkJVhllWc6ZTE+Mdw==" + }, + "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/@jridgewell/resolve-uri": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", + "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.11", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", + "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz", + "integrity": "sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@lilib/hooks": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@lilib/hooks/-/hooks-0.1.1.tgz", + "integrity": "sha512-B/ac2Jn4mbHOQ7vpYcUu7EfJSH4hGjW4KYG/+qph9WxpyHU5Gp/2psIw+OvRiqn3KWY++YY2QWuZPsMLzsss5w==", + "dependencies": { + "@babel/runtime": "^7.7.4", + "@types/js-cookie": "^2.2.6", + "@types/react": "^17.0.0", + "@types/react-dom": "^17.0.0", + "js-cookie": "^2.2.1" + }, + "peerDependencies": { + "react": "^17.0.0", + "react-dom": "^17.0.0" + } + }, + "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.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "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/@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.3", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.3.tgz", + "integrity": "sha512-8ncEUtmnTsMmL7z1YPB47kPUq7LpKWJNFPsRzHiIajGC5uXlWGn+AmkYPcHNl8S4tcEGx+cnORnNYaw2wvL+LQ==", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@sideway/formula": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", + "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==" + }, + "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/@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.1", + "resolved": "https://registry.npmjs.org/@slorber/static-site-generator-webpack-plugin/-/static-site-generator-webpack-plugin-4.0.1.tgz", + "integrity": "sha512-PSv4RIVO1Y3kvHxjvqeVisk3E9XFoO04uwYBDWe217MFqKspplYswTuKLiJu0aLORQWzuQjfVsSlLPojwfYsLw==", + "dependencies": { + "bluebird": "^3.7.1", + "cheerio": "^0.22.0", + "eval": "^0.1.4", + "url": "^0.11.0", + "webpack-sources": "^1.4.3" + } + }, + "node_modules/@slorber/static-site-generator-webpack-plugin/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/@slorber/static-site-generator-webpack-plugin/node_modules/webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dependencies": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "node_modules/@svgr/babel-plugin-add-jsx-attribute": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.0.0.tgz", + "integrity": "sha512-MdPdhdWLtQsjd29Wa4pABdhWbaRMACdM1h31BY+c6FghTZqNGT7pEYdBoaGeKtdTOBC/XNFQaKVj+r/Ei2ryWA==", + "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": "6.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-6.0.0.tgz", + "integrity": "sha512-aVdtfx9jlaaxc3unA6l+M9YRnKIZjOhQPthLKqmTXC8UVkBLDRGwPKo+r8n3VZN8B34+yVajzPTZ+ptTSuZZCw==", + "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-empty-expression": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-6.0.0.tgz", + "integrity": "sha512-Ccj42ApsePD451AZJJf1QzTD1B/BOU392URJTeXFxSK709i0KUsGtbwyiqsKu7vsYxpTM0IA5clAKDyf9RCZyA==", + "engines": { + "node": ">=10" + }, + "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.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.0.0.tgz", + "integrity": "sha512-88V26WGyt1Sfd1emBYmBJRWMmgarrExpKNVmI9vVozha4kqs6FzQJ/Kp5+EYli1apgX44518/0+t9+NU36lThQ==", + "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.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.0.0.tgz", + "integrity": "sha512-F7YXNLfGze+xv0KMQxrl2vkNbI9kzT9oDK55/kUuymh1ACyXkMV+VZWX1zEhSTfEKh7VkHVZGmVtHg8eTZ6PRg==", + "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.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.0.0.tgz", + "integrity": "sha512-+rghFXxdIqJNLQK08kwPBD3Z22/0b2tEZ9lKiL/yTfuyj1wW8HUXu4bo/XkogATIYuXSghVQOOCwURXzHGKyZA==", + "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.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.0.0.tgz", + "integrity": "sha512-VaphyHZ+xIKv5v0K0HCzyfAaLhPGJXSk2HkpYfXIOKb7DjLBv0soHDxNv6X0vr2titsxE7klb++u7iOf7TSrFQ==", + "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.2.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.2.0.tgz", + "integrity": "sha512-bhYIpsORb++wpsp91fymbFkf09Z/YEKR0DnFjxvN+8JHeCUD2unnh18jIMKnDJTWtvpTaGYPXELVe4OOzFI0xg==", + "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.2.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-6.2.0.tgz", + "integrity": "sha512-4WQNY0J71JIaL03DRn0vLiz87JXx0b9dYm2aA8XHlQJQoixMl4r/soYHm8dsaJZ3jWtkCiOYy48dp9izvXhDkQ==", + "dependencies": { + "@svgr/babel-plugin-add-jsx-attribute": "^6.0.0", + "@svgr/babel-plugin-remove-jsx-attribute": "^6.0.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "^6.0.0", + "@svgr/babel-plugin-replace-jsx-attribute-value": "^6.0.0", + "@svgr/babel-plugin-svg-dynamic-title": "^6.0.0", + "@svgr/babel-plugin-svg-em-dimensions": "^6.0.0", + "@svgr/babel-plugin-transform-react-native-svg": "^6.0.0", + "@svgr/babel-plugin-transform-svg-component": "^6.2.0" + }, + "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.2.1", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-6.2.1.tgz", + "integrity": "sha512-NWufjGI2WUyrg46mKuySfviEJ6IxHUOm/8a3Ph38VCWSp+83HBraCQrpEM3F3dB6LBs5x8OElS8h3C0oOJaJAA==", + "dependencies": { + "@svgr/plugin-jsx": "^6.2.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.2.1", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.2.1.tgz", + "integrity": "sha512-pt7MMkQFDlWJVy9ULJ1h+hZBDGFfSCwlBNW1HkLnVi7jUhyEXUaGYWi1x6bM2IXuAR9l265khBT4Av4lPmaNLQ==", + "dependencies": { + "@babel/types": "^7.15.6", + "entities": "^3.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/hast-util-to-babel-ast/node_modules/entities": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", + "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/@svgr/plugin-jsx": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-6.2.1.tgz", + "integrity": "sha512-u+MpjTsLaKo6r3pHeeSVsh9hmGRag2L7VzApWIaS8imNguqoUwDq/u6U/NDmYs/KAsrmtBjOEaAAPbwNGXXp1g==", + "dependencies": { + "@babel/core": "^7.15.5", + "@svgr/babel-preset": "^6.2.0", + "@svgr/hast-util-to-babel-ast": "^6.2.1", + "svg-parser": "^2.0.2" + }, + "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.2.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-6.2.0.tgz", + "integrity": "sha512-oDdMQONKOJEbuKwuy4Np6VdV6qoaLLvoY86hjvQEgU82Vx1MSWRyYms6Sl0f+NtqxLI/rDVufATbP/ev996k3Q==", + "dependencies": { + "cosmiconfig": "^7.0.1", + "deepmerge": "^4.2.2", + "svgo": "^2.5.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "^6.0.0" + } + }, + "node_modules/@svgr/webpack": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-6.2.1.tgz", + "integrity": "sha512-h09ngMNd13hnePwgXa+Y5CgOjzlCvfWLHg+MBnydEedAnuLRzUHUJmGS3o2OsrhxTOOqEsPOFt5v/f6C5Qulcw==", + "dependencies": { + "@babel/core": "^7.15.5", + "@babel/plugin-transform-react-constant-elements": "^7.14.5", + "@babel/preset-env": "^7.15.6", + "@babel/preset-react": "^7.14.5", + "@babel/preset-typescript": "^7.15.0", + "@svgr/core": "^6.2.1", + "@svgr/plugin-jsx": "^6.2.1", + "@svgr/plugin-svgo": "^6.2.0" + }, + "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/@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.3.5", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", + "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/eslint": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz", + "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==" + }, + "node_modules/@types/express": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.28", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", + "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "node_modules/@types/hast": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.4.tgz", + "integrity": "sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/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-proxy": { + "version": "1.17.8", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.8.tgz", + "integrity": "sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/js-cookie": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-2.2.7.tgz", + "integrity": "sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA==" + }, + "node_modules/@types/json-schema": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==" + }, + "node_modules/@types/mdast": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz", + "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==", + "dependencies": { + "@types/unist": "*" + } + }, + "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": "17.0.21", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.21.tgz", + "integrity": "sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ==" + }, + "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.4", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz", + "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==" + }, + "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": "17.0.39", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.39.tgz", + "integrity": "sha512-UVavlfAxDd/AgAacMa60Azl7ygyQNRwC/DsHZmKgNvPmRR5p70AJ5Q9EAmL2NWOJmeV+vVUI4IAP7GZrN8h8Ug==", + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "17.0.12", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.12.tgz", + "integrity": "sha512-SeJ430ndLI15JtRSHuzotn7AIdUtr8bdk6XW8mMfzjZo3vahRgJGHZqHiI4nAzCHTVG4qC21ObfsHBVUEHcDhg==", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/react-router": { + "version": "5.1.18", + "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.18.tgz", + "integrity": "sha512-YYknwy0D0iOwKQgz9v8nOzt2J6l4gouBmDnWqUUznltOTaon+r8US8ky8HvN0tXvc38U9m6z/t2RsVsnd1zM0g==", + "dependencies": { + "@types/history": "^4.7.11", + "@types/react": "*" + } + }, + "node_modules/@types/react-router-config": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@types/react-router-config/-/react-router-config-5.0.6.tgz", + "integrity": "sha512-db1mx37a1EJDf1XeX8jJN7R3PZABmJQXR8r28yUjVMFSjkmnQo6X6pOEEmNl+Tp2gYQOGPdYbFIipBtdElZ3Yg==", + "dependencies": { + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router": "*" + } + }, + "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.1", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz", + "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==" + }, + "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.2", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" + }, + "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.13.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", + "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", + "dependencies": { + "@types/mime": "^1", + "@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.6", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", + "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==" + }, + "node_modules/@types/ws": { + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.2.tgz", + "integrity": "sha512-VXI82ykONr5tacHEojnErTQk+KQSoYbW1NB6iz6wUwrNd+BqfkfggQNoNdCqhJSzbNumShPERbM+Pc5zpfhlbw==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@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/acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "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.1.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", + "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==", + "engines": { + "node": ">= 0.12.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.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz", + "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==", + "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.12.1", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.12.1.tgz", + "integrity": "sha512-c0dM1g3zZBJrkzE5GA/Nu1y3fFxx3LCzxKzcmp2dgGS8P4CjszB/l3lsSh2MSrrK1Hn/KV4BlbBMXtYgG1Bfrw==", + "dependencies": { + "@algolia/cache-browser-local-storage": "4.12.1", + "@algolia/cache-common": "4.12.1", + "@algolia/cache-in-memory": "4.12.1", + "@algolia/client-account": "4.12.1", + "@algolia/client-analytics": "4.12.1", + "@algolia/client-common": "4.12.1", + "@algolia/client-personalization": "4.12.1", + "@algolia/client-search": "4.12.1", + "@algolia/logger-common": "4.12.1", + "@algolia/logger-console": "4.12.1", + "@algolia/requester-browser-xhr": "4.12.1", + "@algolia/requester-common": "4.12.1", + "@algolia/requester-node-http": "4.12.1", + "@algolia/transporter": "4.12.1" + } + }, + "node_modules/algoliasearch-helper": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.7.0.tgz", + "integrity": "sha512-XJ3QfERBLfeVCyTVx80gon7r3/rgm/CE8Ha1H7cbablRe/X7SfYQ14g/eO+MhjVKIQp+gy9oC6G5ilmLwS1k6w==", + "dependencies": { + "@algolia/events": "^4.0.1" + }, + "peerDependencies": { + "algoliasearch": ">= 3.1 < 5" + } + }, + "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/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": "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/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.1.tgz", + "integrity": "sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA==" + }, + "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/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": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" + }, + "node_modules/async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dependencies": { + "lodash": "^4.17.14" + } + }, + "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.2", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.2.tgz", + "integrity": "sha512-9fOPpHKuDW1w/0EKfRmVnxTDt8166MAnLI3mgZ1JCnhNtYWxcJ6Ud5CO/AVOZi/AvFa8DY9RTy3h3+tFBlrrdQ==", + "dependencies": { + "browserslist": "^4.19.1", + "caniuse-lite": "^1.0.30001297", + "fraction.js": "^4.1.2", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "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.2.3", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.3.tgz", + "integrity": "sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw==", + "dependencies": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^1.4.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-loader/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/babel-loader/node_modules/loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/babel-loader/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/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.0", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz", + "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==", + "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.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", + "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", + "dependencies": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.3.1", + "semver": "^6.1.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz", + "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.1", + "core-js-compat": "^3.21.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", + "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.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": "sha1-4pf2DX7BAUp6lxo568ipjAtoHnA=" + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=" + }, + "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/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, + "node_modules/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.9.7", + "raw-body": "2.4.3", + "type-is": "~1.6.18" + }, + "engines": { + "node": ">= 0.8" + } + }, + "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": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "node_modules/bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dependencies": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" + }, + "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/boxen/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/boxen/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/boxen/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/boxen/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/boxen/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/boxen/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/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.19.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.3.tgz", + "integrity": "sha512-XK3X4xtKJ+Txj8G5c30B4gsm71s69lqXlkYui4s6EkKxuv49qjYlY6oVd+IFJ73d4YymtM3+djvvt/R/iJwwDg==", + "dependencies": { + "caniuse-lite": "^1.0.30001312", + "electron-to-chromium": "^1.4.71", + "escalade": "^3.1.1", + "node-releases": "^2.0.2", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "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/buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==" + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "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.30001312", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001312.tgz", + "integrity": "sha512-Wiz1Psk2MEK0pX3rUzWaunLTZzqS2JYZFzNKqAiJGiuxIjRPLgV6+VDPOg6lQOUxmDwhTlh198JsTTi8Hzw6aQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "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": "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/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": "0.22.0", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz", + "integrity": "sha1-qbqoYKP5tZWmuBsahocxIe06Jp4=", + "dependencies": { + "css-select": "~1.2.0", + "dom-serializer": "~0.1.0", + "entities": "~1.1.1", + "htmlparser2": "^3.9.1", + "lodash.assignin": "^4.0.9", + "lodash.bind": "^4.1.4", + "lodash.defaults": "^4.0.1", + "lodash.filter": "^4.4.0", + "lodash.flatten": "^4.2.0", + "lodash.foreach": "^4.3.0", + "lodash.map": "^4.4.0", + "lodash.merge": "^4.4.0", + "lodash.pick": "^4.2.1", + "lodash.reduce": "^4.4.0", + "lodash.reject": "^4.4.0", + "lodash.some": "^4.4.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cheerio-select": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.5.0.tgz", + "integrity": "sha512-qocaHPv5ypefh6YNxvnbABM07KMxExbtbfuJoIie3iZXX1ERwYmJcIiRrr9H05ucQP1k28dav8rpdDgjQd8drg==", + "dependencies": { + "css-select": "^4.1.3", + "css-what": "^5.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0", + "domutils": "^2.7.0" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cheerio/node_modules/css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "dependencies": { + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" + } + }, + "node_modules/cheerio/node_modules/css-what": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", + "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", + "engines": { + "node": "*" + } + }, + "node_modules/cheerio/node_modules/dom-serializer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", + "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", + "dependencies": { + "domelementtype": "^1.3.0", + "entities": "^1.1.1" + } + }, + "node_modules/cheerio/node_modules/domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" + }, + "node_modules/cheerio/node_modules/domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dependencies": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "node_modules/cheerio/node_modules/entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" + }, + "node_modules/cheerio/node_modules/nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dependencies": { + "boolbase": "~1.0.0" + } + }, + "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": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "node_modules/clean-css": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.2.4.tgz", + "integrity": "sha512-nKseG8wCzEuji/4yrgM/5cthL9oTDc5UOQyFMvW/Q53oP6gLH690o1NbuTh6Y18nujr7BxlsFuS7gXLnLzKJGg==", + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/clean-css/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/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.1", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.1.tgz", + "integrity": "sha512-w0q/enDHhPLq44ovMGdQeeDLvwxwavsJX7oQGYt/LrBlYsyaxyDnp6z3QzFut/6kLLKnlcUVJLrpB7KBfgG/RA==", + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "colors": "1.4.0" + } + }, + "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.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "dependencies": { + "mimic-response": "^1.0.0" + } + }, + "node_modules/clsx": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz", + "integrity": "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==", + "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": "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/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "node_modules/colord": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.2.tgz", + "integrity": "sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ==" + }, + "node_modules/colorette": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==" + }, + "node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "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": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" + }, + "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/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": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "node_modules/configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "dependencies": { + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "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": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "node_modules/copy-text-to-clipboard": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/copy-text-to-clipboard/-/copy-text-to-clipboard-3.0.1.tgz", + "integrity": "sha512-rvVsHrpFcL4F2P8ihsoLdFHmd404+CMg71S756oRSeQgqk51U3kicGdnvfkrxva0xXH92SjGS62B0XIJsbh+9Q==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/copy-webpack-plugin": { + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-10.2.4.tgz", + "integrity": "sha512-xFVltahqlsRcyyJqQbDY6EYTtyQZF9rf+JPjwHObLdPFMEISqkFkr7mFoVOC6BfYS/dNThyoQKvziugm+OnwBg==", + "dependencies": { + "fast-glob": "^3.2.7", + "glob-parent": "^6.0.1", + "globby": "^12.0.2", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" + }, + "engines": { + "node": ">= 12.20.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/ajv": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz", + "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==", + "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/array-union": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz", + "integrity": "sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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": "12.2.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-12.2.0.tgz", + "integrity": "sha512-wiSuFQLZ+urS9x2gGPl1H5drc5twabmm4m2gTR27XDFyjUHJUNsS8o/2aKyIF6IoBaR630atdher0XJ5g6OMmA==", + "dependencies": { + "array-union": "^3.0.1", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.7", + "ignore": "^5.1.9", + "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.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.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.21.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.21.1.tgz", + "integrity": "sha512-FRq5b/VMrWlrmCzwRrpDYNxyHP9BcAZC+xHJaqTgIE5091ZV1NTmyh0sGOg5XqpnHvR0svdy0sv1gWA1zmhxig==", + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.21.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.21.1.tgz", + "integrity": "sha512-gbgX5AUvMb8gwxC7FLVWYT7Kkgu/y7+h/h1X43yJkNqhlK2fuYyQimqvKGNZFAY6CKii/GFKJ2cp/1/42TN36g==", + "dependencies": { + "browserslist": "^4.19.1", + "semver": "7.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/core-js-pure": { + "version": "3.21.1", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.21.1.tgz", + "integrity": "sha512-12VZfFIu+wyVbBebyHmRTuEE/tZrB4tJToWcwAMcsp3h4+sHR+fMJWbKpYiCRWlhFBq+KNyO8rIV9rTkeVmznQ==", + "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.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "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.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "dependencies": { + "node-fetch": "2.6.7" + } + }, + "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.1.4", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.1.4.tgz", + "integrity": "sha512-lpfkqS0fctcmZotJGhnxkIyJWvBXgpyi2wsFd4J8VB7wzyrT6Ch/3Q+FMNJpjK4gu1+GN5khOnpU2ZVKrLbhCw==", + "dependencies": { + "timsort": "^0.3.0" + }, + "engines": { + "node": ">= 10" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/css-loader": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.6.0.tgz", + "integrity": "sha512-FK7H2lisOixPT406s5gZM1S3l8GrfhEBT3ZiL2UX1Ng1XWs0y2GPllz/OTyvbaHe12VgQrIXIzuEGVlbUhodqg==", + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.5", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.3.5" + }, + "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": "3.4.1", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz", + "integrity": "sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==", + "dependencies": { + "cssnano": "^5.0.6", + "jest-worker": "^27.0.2", + "postcss": "^8.3.5", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@parcel/css": { + "optional": true + }, + "clean-css": { + "optional": true + }, + "csso": { + "optional": true + }, + "esbuild": { + "optional": true + } + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/ajv": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz", + "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==", + "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.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/css-minimizer-webpack-plugin/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/css-select": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.2.1.tgz", + "integrity": "sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ==", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^5.1.0", + "domhandler": "^4.3.0", + "domutils": "^2.8.0", + "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-tree/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/css-what": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", + "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", + "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.0", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.0.tgz", + "integrity": "sha512-wWxave1wMlThGg4ueK98jFKaNqXnQd1nVZpSkQ9XvR+YymlzP1ofWqES1JkHtI250LksP9z5JH+oDcrKDJezAg==", + "dependencies": { + "cssnano-preset-default": "^5.2.0", + "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.2.0", + "resolved": "https://registry.npmjs.org/cssnano-preset-advanced/-/cssnano-preset-advanced-5.2.0.tgz", + "integrity": "sha512-E7jJoKc2GjZsRLm8wQd2wZa+1a6tslA1elimwpcJTnH6dBQBkjQ8tAwNWUeyT72owYcCNGWTnar60bTnrnEWzw==", + "dependencies": { + "autoprefixer": "^10.3.7", + "cssnano-preset-default": "^5.2.0", + "postcss-discard-unused": "^5.1.0", + "postcss-merge-idents": "^5.1.0", + "postcss-reduce-idents": "^5.1.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.0", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.0.tgz", + "integrity": "sha512-3N5Vcptj2pqVKpHVqH6ezOJvqikR2PdLTbTrsrhF61FbLRQuujAqZ2sKN5rvcMsb7hFjrNnjZT8CGEkxoN/Pwg==", + "dependencies": { + "css-declaration-sorter": "^6.0.3", + "cssnano-utils": "^3.1.0", + "postcss-calc": "^8.2.3", + "postcss-colormin": "^5.3.0", + "postcss-convert-values": "^5.1.0", + "postcss-discard-comments": "^5.1.0", + "postcss-discard-duplicates": "^5.1.0", + "postcss-discard-empty": "^5.1.0", + "postcss-discard-overridden": "^5.1.0", + "postcss-merge-longhand": "^5.1.0", + "postcss-merge-rules": "^5.1.0", + "postcss-minify-font-values": "^5.1.0", + "postcss-minify-gradients": "^5.1.0", + "postcss-minify-params": "^5.1.0", + "postcss-minify-selectors": "^5.2.0", + "postcss-normalize-charset": "^5.1.0", + "postcss-normalize-display-values": "^5.1.0", + "postcss-normalize-positions": "^5.1.0", + "postcss-normalize-repeat-style": "^5.1.0", + "postcss-normalize-string": "^5.1.0", + "postcss-normalize-timing-functions": "^5.1.0", + "postcss-normalize-unicode": "^5.1.0", + "postcss-normalize-url": "^5.1.0", + "postcss-normalize-whitespace": "^5.1.0", + "postcss-ordered-values": "^5.1.0", + "postcss-reduce-initial": "^5.1.0", + "postcss-reduce-transforms": "^5.1.0", + "postcss-svgo": "^5.1.0", + "postcss-unique-selectors": "^5.1.0" + }, + "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.0.10", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz", + "integrity": "sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==" + }, + "node_modules/debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "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": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "dependencies": { + "mimic-response": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dependencies": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "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.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/del": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", + "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", + "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": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "node_modules/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.3.0", + "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.3.0.tgz", + "integrity": "sha512-E+B1gzkl2gqxt1IhUzwjrxBKRqx1UzC3WLONHinn8S3T6lwV/agVCyitiFOsGJ/eYuEUBvD71MZHy3Pv1G9doQ==", + "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/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/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "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": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=" + }, + "node_modules/dns-packet": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", + "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", + "dependencies": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dependencies": { + "buffer-indexof": "^1.0.0" + } + }, + "node_modules/docusaurus-plugin-hotjar": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/docusaurus-plugin-hotjar/-/docusaurus-plugin-hotjar-0.0.2.tgz", + "integrity": "sha512-Jsdxa6k4YQm4SBiY5mv9h/6sKUrQs6lC6mRoPUfjiPVtnhURE3d0dj4Vnrpy/tRVSAbywAqA0F/PGn5RKHtVaw==" + }, + "node_modules/docusaurus-plugin-moesif": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/docusaurus-plugin-moesif/-/docusaurus-plugin-moesif-0.0.1.tgz", + "integrity": "sha512-AnKnF2PFcjG+wdVCH+dp549jQvoXwePIc1JlLmvD6R/lF0Par3NKqTAlWQhwia0A2BJdr2xgpddaGXHy2MWdHw==" + }, + "node_modules/docusaurus-plugin-munchkin": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/docusaurus-plugin-munchkin/-/docusaurus-plugin-munchkin-0.0.1.tgz", + "integrity": "sha512-Akx1fQZ4Q+TmyIk1i0HSxpVAs3l+T22GSzsdaFt7grvWaeqWA1AGWHDZKRcOSX/XKSqTrmxEwINGm1ZeLuOsKg==" + }, + "node_modules/docusaurus2-dotenv": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/docusaurus2-dotenv/-/docusaurus2-dotenv-1.4.0.tgz", + "integrity": "sha512-iWqem5fnBAyeBBtX75Fxp71uUAnwFaXzOmade8zAhN4vL3RG9m27sLSRwjJGVVgIkEo3esjGyCcTGTiCjfi+sg==", + "dependencies": { + "dotenv-webpack": "1.7.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": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "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/domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.0.tgz", + "integrity": "sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "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/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/dotenv": { + "version": "14.3.2", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-14.3.2.tgz", + "integrity": "sha512-vwEppIphpFdvaMCaHfCEv9IgwcxMljMw2TnAQBB4VWPvzXQLTb82jwmdOKzlEVUL3gNFT4l4TPKO+Bn+sqcrVQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/dotenv-defaults": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/dotenv-defaults/-/dotenv-defaults-1.1.1.tgz", + "integrity": "sha512-6fPRo9o/3MxKvmRZBD3oNFdxODdhJtIy1zcJeUSCs6HCy4tarUpd+G67UTU9tF6OWXeSPqsm4fPAB+2eY9Rt9Q==", + "dependencies": { + "dotenv": "^6.2.0" + } + }, + "node_modules/dotenv-defaults/node_modules/dotenv": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.2.0.tgz", + "integrity": "sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w==", + "engines": { + "node": ">=6" + } + }, + "node_modules/dotenv-webpack": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/dotenv-webpack/-/dotenv-webpack-1.7.0.tgz", + "integrity": "sha512-wwNtOBW/6gLQSkb8p43y0Wts970A3xtNiG/mpwj9MLUhtPCQG6i+/DSXXoNN7fbPCU/vQ7JjwGmgOeGZSSZnsw==", + "dependencies": { + "dotenv-defaults": "^1.0.2" + }, + "peerDependencies": { + "webpack": "^1 || ^2 || ^3 || ^4" + } + }, + "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.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" + }, + "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": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "node_modules/electron-to-chromium": { + "version": "1.4.75", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.75.tgz", + "integrity": "sha512-LxgUNeu3BVU7sXaKjUDD9xivocQLxFtq6wgERrutdY/yIOps3ODOZExK1jg8DTEg4U8TUCb5MLGeWFOYuxjF3Q==" + }, + "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/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": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.9.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.1.tgz", + "integrity": "sha512-jdyZMwCQ5Oj4c5+BTnkxPgDZO/BJzh/ADDmKebayyzNwjVX1AFCeGkOfxNx0mHi2+8BKC5VxUYiw3TIvoT7vhw==", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "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/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": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==" + }, + "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": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "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": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "engines": { + "node": ">=0.8.0" + } + }, + "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": "1.12.3", + "resolved": "https://registry.npmjs.org/eta/-/eta-1.12.3.tgz", + "integrity": "sha512-qHixwbDLtekO/d51Yr4glcaUJCIjGVJyTzuqV4GPlgZo1YpgOKG+avQynErZIYrfM6JIJdtiG2Kox8tbb+DoGg==", + "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": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eval": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/eval/-/eval-0.1.6.tgz", + "integrity": "sha512-o0XUw+5OGkXw4pJZzQoXUk+H87DHuC+7ZE//oSrRGtatTmr12oTnLfg6QOq9DyTt0c/p4TwzgmkKrBzWTSizyQ==", + "dependencies": { + "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.17.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz", + "integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.19.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.4.2", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.9.7", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.17.2", + "serve-static": "1.14.2", + "setprototypeof": "1.2.0", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "node_modules/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": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "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": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "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/express/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/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": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "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.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "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-url-parser": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", + "integrity": "sha1-9K8+qfNNiicc9YrSs3WfQx8LMY0=", + "dependencies": { + "punycode": "^1.3.2" + } + }, + "node_modules/fast-url-parser/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "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.4", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.4.tgz", + "integrity": "sha512-ucV0tDODnGV3JCnnkmoszb5lf4bNpzjv80K41wd4k798Etq+UYD0y0TIfalLjZoKgjive6/adkRnszwapiDgBQ==", + "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": "^0.7.30" + } + }, + "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/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.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/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": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "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.3", + "resolved": "https://registry.npmjs.org/flux/-/flux-4.0.3.tgz", + "integrity": "sha512-yKAbrp7JhZhj6uiT1FTuVMlIAT1J4jqEyBpFApi1kxpGZCvacMVc/t1pMQyotqHhAgvoE3bNvAykhCo2CLjnYw==", + "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.14.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", + "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==", + "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.0", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.0.tgz", + "integrity": "sha512-cS178Y+xxtIjEUorcHddKS7yCMlrDPV31mt47blKKRfMd70Kxu5xruAFE2o9sDY6wVC5deuob/u/alD04YYHnw==", + "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/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/fork-ts-checker-webpack-plugin/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/fork-ts-checker-webpack-plugin/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/fork-ts-checker-webpack-plugin/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/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/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/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/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/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.1.3", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.3.tgz", + "integrity": "sha512-pUHWWt6vHzZZiQJcM6S/0PXfS+g6FM4BF5rj9wZyreivhQPdsh5PpE25VtSNxq80wHS5RfY51Ii+8Z0Zl/pmzg==", + "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": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", + "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs-monkey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==" + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "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.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + }, + "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.4.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.4.0.tgz", + "integrity": "sha512-w0dzqw/nt51xMVmlaV1+JRzN+oCa1KfcgGEWhxUG16wbdA+Xnt/yoFO8Z8x/V82ZcZ0wy6ln9QDup5avbhiDhQ==" + }, + "node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/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.0", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", + "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", + "dependencies": { + "ini": "2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/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.9", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", + "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" + }, + "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/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": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "engines": { + "node": ">=4" + } + }, + "node_modules/has-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-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "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-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": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "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": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "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/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/html-entities": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.2.tgz", + "integrity": "sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==" + }, + "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.1.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.1.0.tgz", + "integrity": "sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==", + "engines": { + "node": ">=8" + } + }, + "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.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz", + "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==", + "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": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dependencies": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + } + }, + "node_modules/htmlparser2/node_modules/dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dependencies": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + } + }, + "node_modules/htmlparser2/node_modules/dom-serializer/node_modules/domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/htmlparser2/node_modules/dom-serializer/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/htmlparser2/node_modules/domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" + }, + "node_modules/htmlparser2/node_modules/domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dependencies": { + "domelementtype": "1" + } + }, + "node_modules/htmlparser2/node_modules/domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dependencies": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "node_modules/htmlparser2/node_modules/entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" + }, + "node_modules/http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=" + }, + "node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.5.tgz", + "integrity": "sha512-x+JVEkO2PoM8qqpbPbOL3cqHPwerep7OwzK7Ay+sMQjKzaKCqWvjoXm5tqMP9tXWWTnTzAjIhXg+J99XYuPhPA==" + }, + "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.3", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.3.tgz", + "integrity": "sha512-1bloEwnrHMnCoO/Gcwbz7eSVvW50KPES01PecpagI+YLNLci4AcuKJrujW4Mc3sBLpFxMSlsLNHS5Nl/lvrTPA==", + "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.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/image-size": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.0.1.tgz", + "integrity": "sha512-VAwkvNSNGClRw9mDHhc5Efax8PLlsOGcUTh0T/LIriC8vPA3U5PdqXWqkz406MoYHMKW8Uf9gWr05T/rYB44kQ==", + "dependencies": { + "queue": "6.0.2" + }, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/immer": { + "version": "9.0.12", + "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.12.tgz", + "integrity": "sha512-lk7UNmSbAukB5B6dh9fnh5D0bJTOFKxVg2cyJWTYrWRfhLrLMBquONcUs3aFq507hNoIZEDDh8lb8UtOizSMhA==", + "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": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", + "engines": { + "node": ">=4" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/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.37", + "resolved": "https://registry.npmjs.org/infima/-/infima-0.2.0-alpha.37.tgz", + "integrity": "sha512-4GX7Baw+/lwS4PPW/UJNY89tWSvYG1DL6baKVdpK6mC593iRgMssxNtORMTFArLPJ/A/lzsGhRmx+z6MaMxj0Q==", + "engines": { + "node": ">=12" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "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/ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" + }, + "node_modules/ipaddr.js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", + "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-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "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-core-module": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", + "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "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": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "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": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-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": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "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-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", + "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": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "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": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "engines": { + "node": ">=0.10.0" + } + }, + "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/jest-worker/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/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/joi": { + "version": "17.6.0", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.6.0.tgz", + "integrity": "sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw==", + "dependencies": { + "@hapi/hoek": "^9.0.0", + "@hapi/topo": "^5.0.0", + "@sideway/address": "^4.1.3", + "@sideway/formula": "^3.0.0", + "@sideway/pinpoint": "^2.0.0" + } + }, + "node_modules/js-cookie": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.1.tgz", + "integrity": "sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==" + }, + "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/js-yaml/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/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": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + }, + "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.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/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/klona": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", + "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", + "engines": { + "node": ">= 8" + } + }, + "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/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.0.4", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.4.tgz", + "integrity": "sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==", + "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.2.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", + "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "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.assignin": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz", + "integrity": "sha1-uo31+4QesKPoBEIysOJjqNxqKKI=" + }, + "node_modules/lodash.bind": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-4.2.1.tgz", + "integrity": "sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU=" + }, + "node_modules/lodash.curry": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.curry/-/lodash.curry-4.1.1.tgz", + "integrity": "sha1-JI42By7ekGUB11lmIAqG2riyMXA=" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" + }, + "node_modules/lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=" + }, + "node_modules/lodash.filter": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz", + "integrity": "sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4=" + }, + "node_modules/lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=" + }, + "node_modules/lodash.flow": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/lodash.flow/-/lodash.flow-3.5.0.tgz", + "integrity": "sha1-h79AKSuM+D5OjOGjrkIJ4gBxZ1o=" + }, + "node_modules/lodash.foreach": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz", + "integrity": "sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM=" + }, + "node_modules/lodash.map": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", + "integrity": "sha1-dx7Hg540c9nEzeKLGTlMNWL09tM=" + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + }, + "node_modules/lodash.pick": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", + "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=" + }, + "node_modules/lodash.reduce": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz", + "integrity": "sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs=" + }, + "node_modules/lodash.reject": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.reject/-/lodash.reject-4.6.0.tgz", + "integrity": "sha1-gNZJLcFHCGS79YNTO2UfQqn1JBU=" + }, + "node_modules/lodash.some": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz", + "integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" + }, + "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": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/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": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.1.tgz", + "integrity": "sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw==", + "dependencies": { + "fs-monkey": "1.0.3" + }, + "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": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "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": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + }, + "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.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "dependencies": { + "mime-db": "1.51.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-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-create-react-context": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz", + "integrity": "sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ==", + "dependencies": { + "@babel/runtime": "^7.12.1", + "tiny-warning": "^1.0.3" + }, + "peerDependencies": { + "prop-types": "^15.0.0", + "react": "^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.5.3.tgz", + "integrity": "sha512-YseMB8cs8U/KCaAGQoqYmfUuhhGW0a9p9XvWXrxVOkE3/IiISTLw4ALNt7JR5B2eYauFM+PQGSbXMDmVbR7Tfw==", + "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.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz", + "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==", + "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.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.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.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mrmime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.0.tgz", + "integrity": "sha512-a70zx7zFfVO7XpnQ2IX1Myh9yY4UYvfld/dikWRnsXxbyvMcfz+u6UfgNAtH+k2QqtJuzVpv6eLTx1G2+WKZbQ==", + "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": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dependencies": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=" + }, + "node_modules/nanoid": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", + "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", + "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.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "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.2.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.2.1.tgz", + "integrity": "sha512-Fcvtbb+zBcZXbTTVwqGA5W+MKBj56UjVRevvchv5XrcyXbmNdesfZL37nlcWOfpgHhgmxApw3tQbTr4CqNmX4w==", + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-releases": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", + "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==" + }, + "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": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "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": "sha1-y480xTIT2JVyP8urkH6UIq28r7E=" + }, + "node_modules/nth-check": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "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": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "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.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "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.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/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": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "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.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "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.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", + "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", + "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.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/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": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "dependencies": { + "parse5": "^6.0.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": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "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": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" + }, + "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": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "engines": { + "node": ">=4" + } + }, + "node_modules/portfinder": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", + "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", + "dependencies": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" + }, + "engines": { + "node": ">= 0.12.0" + } + }, + "node_modules/portfinder/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/postcss": { + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.7.tgz", + "integrity": "sha512-L9Ye3r6hkkCeOETQX6iOaWZgjp3LL6Lpqm6EtgbKrgqGGteRMNb9vzBfRL96YOSu8o7x3MfIH9Mo5cPJFGrW6A==", + "dependencies": { + "nanoid": "^3.3.1", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "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.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz", + "integrity": "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==", + "dependencies": { + "browserslist": "^4.16.6", + "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.0", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.0.tgz", + "integrity": "sha512-GkyPbZEYJiWtQB0KZ0X6qusqFHUepguBCNFi9t5JJc7I2OTXG7C0twbTLvCfaKOLl3rSXmpAwV7W5txd91V84g==", + "dependencies": { + "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.0", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.0.tgz", + "integrity": "sha512-L0IKF4jAshRyn03SkEO6ar/Ipz2oLywVbg2THf2EqqdNkBwmVMxuTR/RoAltOw4piiaLt3gCAdrbAqmTBInmhg==", + "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.0", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.0.tgz", + "integrity": "sha512-782T/buGgb3HOuHOJAHpdyKzAAKsv/BxWqsutnZ+QsiHEcDkY7v+6WWdturuBiSal6XMOO1p1aJvwXdqLD5vhA==", + "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": "6.2.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", + "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", + "dependencies": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.5" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + } + }, + "node_modules/postcss-merge-idents": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-5.1.0.tgz", + "integrity": "sha512-l+awq6+uUiCILsHahWK5KE25495I4oCKlUrIA+EdBvklnVdWlBEsbkzq5+ouPKb8OAe4WwRBgFvaSq7f77FY+w==", + "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.0", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.0.tgz", + "integrity": "sha512-Gr46srN2tsLD8fudKYoHO56RG0BLQ2nsBRnSZGY04eNBPwTeWa9KeHrbL3tOLAHyB2aliikycPH2TMJG1U+W6g==", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^5.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-merge-rules": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.0.tgz", + "integrity": "sha512-NecukEJovQ0mG7h7xV8wbYAkXGTO3MPKnXvuiXzOKcxoOodfTTKYjeo8TMhAswlSkjcPIBlnKbSFcTuVSDaPyQ==", + "dependencies": { + "browserslist": "^4.16.6", + "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.0", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.0.tgz", + "integrity": "sha512-J/TMLklkONn3LuL8wCwfwU8zKC1hpS6VcxFkNUNjmVt53uKqrrykR3ov11mdUYyqVMEx67slMce0tE14cE4DTg==", + "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.0", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.0.tgz", + "integrity": "sha512-q67dcts4Hct6x8+JmhBgctHkbvUsqGIg2IItenjE63iZXMbhjr7AlVZkNnKtIGt/1Wsv7p/7YzeSII6Q+KPXRg==", + "dependencies": { + "browserslist": "^4.16.6", + "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.0", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.0.tgz", + "integrity": "sha512-vYxvHkW+iULstA+ctVNx0VoRAR4THQQRkG77o0oa4/mBS0OzGvvzLIvHDv/nNEM0crzN2WIyFU5X7wZhaUK3RA==", + "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.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "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.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.0.tgz", + "integrity": "sha512-8gmItgA4H5xiUxgN/3TVvXRoJxkAWLW6f/KKhdsH03atg0cB8ilXnrB5PpSshwVu/dD2ZsRFQcR1OEmSBDAgcQ==", + "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.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.0.tgz", + "integrity": "sha512-IR3uBjc+7mcWGL6CtniKNQ4Rr5fTxwkaDHwMBDGGs1x9IVRkYIT/M4NelZWkAOBdV6v3Z9S46zqaKGlyzHSchw==", + "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.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz", + "integrity": "sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ==", + "dependencies": { + "browserslist": "^4.16.6", + "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.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.0.tgz", + "integrity": "sha512-7O1FanKaJkpWFyCghFzIkLhehujV/frGkdofGLwhg5upbLyGsSfiTcZAdSzoPsSUgyPCkBkNMeWR8yVgPdQybg==", + "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.0", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.0.tgz", + "integrity": "sha512-wU4Z4D4uOIH+BUKkYid36gGDJNQtkVJT7Twv8qH6UyfttbbJWyw4/xIPuVEkkCtQLAJ0EdsNSh8dlvqkXb49TA==", + "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.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-5.1.0.tgz", + "integrity": "sha512-2xDoPTzv98D/HFDrGTgVEBlcuS47wvua2oc4g2WoZdYPwzPWMWb2TCRruCyN7vbl+HAtVLGvEOMZIZb3wYgv7w==", + "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.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz", + "integrity": "sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw==", + "dependencies": { + "browserslist": "^4.16.6", + "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.9", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz", + "integrity": "sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ==", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-sort-media-queries": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/postcss-sort-media-queries/-/postcss-sort-media-queries-4.2.1.tgz", + "integrity": "sha512-9VYekQalFZ3sdgcTjXMa0dDjsfBVHXlraYJEMiOJ/2iMmI2JGCMavP16z3kWOaRu8NSaJCTgVpB/IVpH5yT9YQ==", + "dependencies": { + "sort-css-media-queries": "2.0.4" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "postcss": "^8.4.4" + } + }, + "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.0", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.0.tgz", + "integrity": "sha512-LmUhgGobtpeVJJHuogzjLRwJlN7VH+BL5c9GKMVJSS/ejoyePZkXvNsYUtk//F6vKOGK86gfRS0xH7fXQSDtvA==", + "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/prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "engines": { + "node": ">=4" + } + }, + "node_modules/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.1", + "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-1.3.1.tgz", + "integrity": "sha512-xUeDMEz074d0zc5y6rxiMp/dlC7C+5IDDlaEUlcBOFE2wddz7hz5PNupb087mPwTt7T9BrFmewObfCBuf/LKwQ==", + "peerDependencies": { + "react": ">=0.14.9" + } + }, + "node_modules/prismjs": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.27.0.tgz", + "integrity": "sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/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": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "engines": { + "node": ">=6" + } + }, + "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": "sha1-H+Bk+wrIUfDeYTIKi/eWg2Qi8z4=" + }, + "node_modules/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==", + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "engines": { + "node": ">=0.4.x" + } + }, + "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": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz", + "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/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/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": "sha1-7yFW1mz0E5aVyKFniGy2nqZgeSw=", + "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.0", + "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.0.tgz", + "integrity": "sha512-xBQkitdxozPxt1YZ9O1097EJiVpwHr9FoAuEVURCKV0Av8NBERovJauzP7bo1ThvuhZ4shsQ1AJiu4vQpoT1AQ==", + "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.10", + "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/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/react-dev-utils/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/react-dev-utils/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/react-dev-utils/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/react-dev-utils/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/react-dev-utils/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/react-dev-utils/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/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/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/react-dev-utils/node_modules/loader-utils": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.0.tgz", + "integrity": "sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ==", + "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/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "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-dev-utils/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/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.10", + "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.10.tgz", + "integrity": "sha512-mKR90fX7Pm5seCOfz8q9F+66VCc1PGsWSBxKbITjfKVQHMNF2zudxHnMdJiB1fRCb+XsbQV9sO9DCkgsMQgBIA==" + }, + "node_modules/react-fast-compare": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz", + "integrity": "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==" + }, + "node_modules/react-helmet-async": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.2.3.tgz", + "integrity": "sha512-mCk2silF53Tq/YaYdkl2sB+/tDoPnaxN7dFS/6ZLJb/rhUY2EWGI5Xj2b4jHppScMqY45MbgPSwTxDchKpZ5Kw==", + "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", + "react-dom": "^16.6.0 || ^17.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" + } + }, + "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-router": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.2.1.tgz", + "integrity": "sha512-lIboRiOtDLFdg1VTemMwud9vRVuOCZmUIT/7lUoZiSpPODiiH1UQlfXy+vPLC/7IWdFYnhRwAyNqA/+I7wnvKQ==", + "dependencies": { + "@babel/runtime": "^7.12.13", + "history": "^4.9.0", + "hoist-non-react-statics": "^3.1.0", + "loose-envify": "^1.3.1", + "mini-create-react-context": "^0.4.0", + "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.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.0.tgz", + "integrity": "sha512-ObVBLjUZsphUUMVycibxgMdh5jJ1e3o+KpAZBVeHcNQZ4W+uUGGWsokurzlF4YOldQYRQL4y6yFRWM4m3svmuQ==", + "dependencies": { + "@babel/runtime": "^7.12.13", + "history": "^4.9.0", + "loose-envify": "^1.3.1", + "prop-types": "^15.6.2", + "react-router": "5.2.1", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + }, + "peerDependencies": { + "react": ">=15" + } + }, + "node_modules/react-textarea-autosize": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.3.3.tgz", + "integrity": "sha512-2XlHXK2TDxS6vbQaoPbMOfQ8GK7+irc2fVK6QFIcC8GOnH3zI/v481n+j1L0WaPVvKxwesnY93fEfH++sus2rQ==", + "dependencies": { + "@babel/runtime": "^7.10.2", + "use-composed-ref": "^1.0.0", + "use-latest": "^1.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0" + } + }, + "node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "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": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/recursive-readdir": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", + "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==", + "dependencies": { + "minimatch": "3.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/recursive-readdir/node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "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.0.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", + "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + }, + "node_modules/regenerator-transform": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz", + "integrity": "sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpu-core": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz", + "integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==", + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.0.1", + "regjsgen": "^0.6.0", + "regjsparser": "^0.8.2", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/registry-auth-token": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", + "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", + "dependencies": { + "rc": "^1.2.8" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/registry-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", + "dependencies": { + "rc": "^1.2.8" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/regjsgen": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", + "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==" + }, + "node_modules/regjsparser": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", + "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", + "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": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/rehype-parse": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-6.0.2.tgz", + "integrity": "sha512-0S3CpvpTAgGmnz8kiCyFLGuW5yA4OQhyNTm/nwPopZ7+PI11WnGl1TTWTGv/2hPEe/g2jRLlhVVSsoDH8waRug==", + "dependencies": { + "hast-util-from-parse5": "^5.0.0", + "parse5": "^5.0.0", + "xtend": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-parse/node_modules/hast-util-from-parse5": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-5.0.3.tgz", + "integrity": "sha512-gOc8UB99F6eWVWFtM9jUikjN7QkWxB3nY0df5Z0Zq1/Nkwl5V4hAAsl0tmwlgWl/1shlTF8DnNYLO8X6wRV9pA==", + "dependencies": { + "ccount": "^1.0.3", + "hastscript": "^5.0.0", + "property-information": "^5.0.0", + "web-namespaces": "^1.1.2", + "xtend": "^4.0.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-parse/node_modules/hastscript": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-5.1.2.tgz", + "integrity": "sha512-WlztFuK+Lrvi3EggsqOkQ52rKbxkXL3RwB6t5lwoa8QLMemoWfBuL43eDrwOamJyR7uKQKdmKYaBH1NZBiIRrQ==", + "dependencies": { + "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/rehype-parse/node_modules/parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==" + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/remark-admonitions": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/remark-admonitions/-/remark-admonitions-1.2.1.tgz", + "integrity": "sha512-Ji6p68VDvD+H1oS95Fdx9Ar5WA2wcDA4kwrrhVU7fGctC6+d3uiMICu7w7/2Xld+lnU7/gi+432+rRbup5S8ow==", + "dependencies": { + "rehype-parse": "^6.0.2", + "unified": "^8.4.2", + "unist-util-visit": "^2.0.1" + } + }, + "node_modules/remark-admonitions/node_modules/unified": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-8.4.2.tgz", + "integrity": "sha512-JCrmN13jI4+h9UAyKEoGcDZV+i1E7BLFuG7OsaDvTXI5P0qhHX+vZO/kOhz9jn8HGENDKbwSeB0nVOg4gVStGA==", + "dependencies": { + "bail": "^1.0.0", + "extend": "^3.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-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-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/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.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "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/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": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "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": "sha1-rW8wwTvs15cBDEaK+ndcDAprR/o=", + "engines": { + "node": "*" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" + }, + "node_modules/resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "dependencies": { + "is-core-module": "^2.8.1", + "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": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "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/rtlcss/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/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.5.4", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.4.tgz", + "integrity": "sha512-h5M3Hk78r6wAheJF0a5YahB1yRQKCsZ4MsGdZ5O9ETbVtjPcScGfrMmoOq7EBsCRzd4BDkvDJ7ogP8Sz5tTFiQ==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "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/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": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "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/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": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=" + }, + "node_modules/selfsigned": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.0.tgz", + "integrity": "sha512-cUdFiCbKoa1mZ6osuJs2uDHrs0k0oprsKveFiiaBKCNq3SYyb5gs2HxhQyDNLCmL51ZZThqi4YNDpCK6GOP1iQ==", + "dependencies": { + "node-forge": "^1.2.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver-diff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", + "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "dependencies": { + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semver-diff/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/send": { + "version": "0.17.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", + "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", + "dependencies": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "1.8.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/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": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "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.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-handler": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.3.tgz", + "integrity": "sha512-FosMqFBNrLyeiIDvP1zgO6YoTzFYHxLDEIavhlmQ+knB2Z7l1t+kGLHkZIDN7UVWqQAmKI3D20A6F6jo3nDd4w==", + "dependencies": { + "bytes": "3.0.0", + "content-disposition": "0.5.2", + "fast-url-parser": "1.1.3", + "mime-types": "2.1.18", + "minimatch": "3.0.4", + "path-is-inside": "1.0.2", + "path-to-regexp": "2.2.1", + "range-parser": "1.2.0" + } + }, + "node_modules/serve-handler/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/serve-handler/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/serve-handler/node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "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": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "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/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "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": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "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-static": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", + "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + }, + "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.7.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", + "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==" + }, + "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/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/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.0.4", + "resolved": "https://registry.npmjs.org/sort-css-media-queries/-/sort-css-media-queries-2.0.4.tgz", + "integrity": "sha512-PAIsEK/XupCQwitjv7XxoMvYhT7EAfyzI3hsy/MyDgTvc+Ft55ctdkctJLOy6cQejaIC+zjpUL4djFVm2ivOOw==", + "engines": { + "node": ">= 6.3.0" + } + }, + "node_modules/source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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/source-map-support/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/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": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "node_modules/stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" + }, + "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": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/std-env": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.0.1.tgz", + "integrity": "sha512-mC1Ps9l77/97qeOZc+HrOL7TIaOboHqMZ24dGVQrlxFcpPpfCHpH+qfUT7Dz+6mlG8+JPA1KfBQo19iC/+Ngcw==" + }, + "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_decoder/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/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/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/string-width/node_modules/strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "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": "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=", + "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": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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.0", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz", + "integrity": "sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q==", + "dependencies": { + "browserslist": "^4.16.6", + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "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/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/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.12.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.12.0.tgz", + "integrity": "sha512-R3AUhNBGWiFc77HXag+1fXpAxTAFRQTJemlJKjAgD9r8xXTpjNKqIXwHM/o7Rh+O0kUJtS3WQVdBeMKFk5sw9A==", + "dependencies": { + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", + "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", + "dependencies": { + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1", + "terser": "^5.7.2" + }, + "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/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/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/terser/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" + }, + "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/timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=" + }, + "node_modules/tiny-invariant": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.2.0.tgz", + "integrity": "sha512-1Uhn/aqw5C6RI4KejVeTg6mIS7IqxnLJ8Mv2tV5rTc0qWobay7pDUz6Wi392Cnc8ak1H0F2cjoRzb2/AW4+Fvg==" + }, + "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": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "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": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" + }, + "node_modules/trim": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", + "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=" + }, + "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.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + }, + "node_modules/type-fest": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.12.0.tgz", + "integrity": "sha512-Qe5GRT+n/4GoqCNGGVp5Snapg1Omq3V7irBJB3EaKsp7HWDo5Gv2d/67gfNyV+d5EXD+x/RF5l1h4yJ7qNkcGA==", + "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/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/ua-parser-js": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.31.tgz", + "integrity": "sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==", + "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.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", + "engines": { + "node": ">=4" + } + }, + "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/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": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-notifier": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", + "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", + "dependencies": { + "boxen": "^5.0.0", + "chalk": "^4.1.0", + "configstore": "^5.0.1", + "has-yarn": "^2.1.0", + "import-lazy": "^2.1.0", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.4.0", + "is-npm": "^5.0.0", + "is-yarn-global": "^0.3.0", + "latest-version": "^5.1.0", + "pupa": "^2.1.1", + "semver": "^7.3.4", + "semver-diff": "^3.1.1", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/yeoman/update-notifier?sponsor=1" + } + }, + "node_modules/update-notifier/node_modules/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/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/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/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/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/update-notifier/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/update-notifier/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/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/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/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/url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dependencies": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, + "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-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "dependencies": { + "prepend-http": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/url/node_modules/punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + }, + "node_modules/use-composed-ref": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.2.1.tgz", + "integrity": "sha512-6+X1FLlIcjvFMAeAD/hcxDT8tmyrWnbSPMU0EnxQuDLIxokuFzWliXBiYZuGIx+mrAMLBw0WFfCkaPw8ebzAhw==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0" + } + }, + "node_modules/use-isomorphic-layout-effect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.1.tgz", + "integrity": "sha512-L7Evj8FGcwo/wpbv/qvSfrkHFtOpCzvM5yl2KVyDJoylVuSvzphiiasmjgQPttIGBAy2WKiBNR98q8w7PiNgKQ==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-latest": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/use-latest/-/use-latest-1.2.0.tgz", + "integrity": "sha512-d2TEuG6nSLKQLAfW3By8mKr8HurOlTkul0sOpxbClIv4SQ4iOd7BYr7VIzdbktUCnv7dua/60xzd8igMU6jmyw==", + "dependencies": { + "use-isomorphic-layout-effect": "^1.0.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "node_modules/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=" + }, + "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": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "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": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "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.3.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", + "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "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": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" + }, + "node_modules/webpack": { + "version": "5.69.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.69.1.tgz", + "integrity": "sha512-+VyvOSJXZMT2V5vLzOnDuMz5GxEqLk7hKWQ56YxPW/PQRUuKimPqmEIJOx8jHYeyo65pKbapbW464mvsKbaj4A==", + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.4.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.8.3", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.3.1", + "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.5.0", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.5.0.tgz", + "integrity": "sha512-GUMZlM3SKwS8Z+CKeIFx7CVoHn3dXFcUAjT/dcZQQmfSZGvitPfMob2ipjai7ovFFqPvTqkEZ/leL4O0YOdAYQ==", + "dependencies": { + "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/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/webpack-bundle-analyzer/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/webpack-bundle-analyzer/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/webpack-bundle-analyzer/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/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-bundle-analyzer/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/webpack-bundle-analyzer/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/webpack-dev-middleware": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.1.tgz", + "integrity": "sha512-81EujCKkyles2wphtdrnPg/QqegC/AtqNH//mQkBYSMqwFVCQrxM6ktB2O/SPlZy7LqeEfTbV3cZARGQz6umhg==", + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.1", + "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.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz", + "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==", + "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/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.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server": { + "version": "4.7.4", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.7.4.tgz", + "integrity": "sha512-nfdsb02Zi2qzkNmgtZjkrMOcXnYZ6FLKcQwpxT7MvmHKc+oTtDsBju8j+NMyAygZ9GW1jMEUpy3itHtqgEhe1A==", + "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/sockjs": "^0.3.33", + "@types/ws": "^8.2.2", + "ansi-html-community": "^0.0.8", + "bonjour": "^3.5.0", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "default-gateway": "^6.0.3", + "del": "^6.0.0", + "express": "^4.17.1", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.0", + "ipaddr.js": "^2.0.1", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "portfinder": "^1.0.28", + "schema-utils": "^4.0.0", + "selfsigned": "^2.0.0", + "serve-index": "^1.9.1", + "sockjs": "^0.3.21", + "spdy": "^4.0.2", + "strip-ansi": "^7.0.0", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.4.2" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/ajv": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz", + "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==", + "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/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/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.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server/node_modules/strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/webpack-dev-server/node_modules/ws": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "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.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "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/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/webpackbar/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/webpackbar/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/webpackbar/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/webpackbar/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/webpackbar/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/webpackbar/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/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": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "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.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==" + }, + "node_modules/wrap-ansi": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.0.1.tgz", + "integrity": "sha512-QFF+ufAqhoYHvoHdajT/Po7KoXVBPXS2bgjIam5isfWJPfIOnQZ50JtUiVvCv/sjgacf3yRrt2ZKUZ/V4itN4g==", + "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.1.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.1.0.tgz", + "integrity": "sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "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": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/ws": { + "version": "7.5.7", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", + "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", + "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": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "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" + } + } + }, "dependencies": { "@algolia/autocomplete-core": { "version": "1.5.2", @@ -1929,7 +14849,8 @@ "@mdx-js/react": { "version": "1.6.22", "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-1.6.22.tgz", - "integrity": "sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg==" + "integrity": "sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg==", + "requires": {} }, "@mdx-js/util": { "version": "1.6.22", @@ -2018,42 +14939,50 @@ "@svgr/babel-plugin-add-jsx-attribute": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.0.0.tgz", - "integrity": "sha512-MdPdhdWLtQsjd29Wa4pABdhWbaRMACdM1h31BY+c6FghTZqNGT7pEYdBoaGeKtdTOBC/XNFQaKVj+r/Ei2ryWA==" + "integrity": "sha512-MdPdhdWLtQsjd29Wa4pABdhWbaRMACdM1h31BY+c6FghTZqNGT7pEYdBoaGeKtdTOBC/XNFQaKVj+r/Ei2ryWA==", + "requires": {} }, "@svgr/babel-plugin-remove-jsx-attribute": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-6.0.0.tgz", - "integrity": "sha512-aVdtfx9jlaaxc3unA6l+M9YRnKIZjOhQPthLKqmTXC8UVkBLDRGwPKo+r8n3VZN8B34+yVajzPTZ+ptTSuZZCw==" + "integrity": "sha512-aVdtfx9jlaaxc3unA6l+M9YRnKIZjOhQPthLKqmTXC8UVkBLDRGwPKo+r8n3VZN8B34+yVajzPTZ+ptTSuZZCw==", + "requires": {} }, "@svgr/babel-plugin-remove-jsx-empty-expression": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-6.0.0.tgz", - "integrity": "sha512-Ccj42ApsePD451AZJJf1QzTD1B/BOU392URJTeXFxSK709i0KUsGtbwyiqsKu7vsYxpTM0IA5clAKDyf9RCZyA==" + "integrity": "sha512-Ccj42ApsePD451AZJJf1QzTD1B/BOU392URJTeXFxSK709i0KUsGtbwyiqsKu7vsYxpTM0IA5clAKDyf9RCZyA==", + "requires": {} }, "@svgr/babel-plugin-replace-jsx-attribute-value": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.0.0.tgz", - "integrity": "sha512-88V26WGyt1Sfd1emBYmBJRWMmgarrExpKNVmI9vVozha4kqs6FzQJ/Kp5+EYli1apgX44518/0+t9+NU36lThQ==" + "integrity": "sha512-88V26WGyt1Sfd1emBYmBJRWMmgarrExpKNVmI9vVozha4kqs6FzQJ/Kp5+EYli1apgX44518/0+t9+NU36lThQ==", + "requires": {} }, "@svgr/babel-plugin-svg-dynamic-title": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.0.0.tgz", - "integrity": "sha512-F7YXNLfGze+xv0KMQxrl2vkNbI9kzT9oDK55/kUuymh1ACyXkMV+VZWX1zEhSTfEKh7VkHVZGmVtHg8eTZ6PRg==" + "integrity": "sha512-F7YXNLfGze+xv0KMQxrl2vkNbI9kzT9oDK55/kUuymh1ACyXkMV+VZWX1zEhSTfEKh7VkHVZGmVtHg8eTZ6PRg==", + "requires": {} }, "@svgr/babel-plugin-svg-em-dimensions": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.0.0.tgz", - "integrity": "sha512-+rghFXxdIqJNLQK08kwPBD3Z22/0b2tEZ9lKiL/yTfuyj1wW8HUXu4bo/XkogATIYuXSghVQOOCwURXzHGKyZA==" + "integrity": "sha512-+rghFXxdIqJNLQK08kwPBD3Z22/0b2tEZ9lKiL/yTfuyj1wW8HUXu4bo/XkogATIYuXSghVQOOCwURXzHGKyZA==", + "requires": {} }, "@svgr/babel-plugin-transform-react-native-svg": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.0.0.tgz", - "integrity": "sha512-VaphyHZ+xIKv5v0K0HCzyfAaLhPGJXSk2HkpYfXIOKb7DjLBv0soHDxNv6X0vr2titsxE7klb++u7iOf7TSrFQ==" + "integrity": "sha512-VaphyHZ+xIKv5v0K0HCzyfAaLhPGJXSk2HkpYfXIOKb7DjLBv0soHDxNv6X0vr2titsxE7klb++u7iOf7TSrFQ==", + "requires": {} }, "@svgr/babel-plugin-transform-svg-component": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.2.0.tgz", - "integrity": "sha512-bhYIpsORb++wpsp91fymbFkf09Z/YEKR0DnFjxvN+8JHeCUD2unnh18jIMKnDJTWtvpTaGYPXELVe4OOzFI0xg==" + "integrity": "sha512-bhYIpsORb++wpsp91fymbFkf09Z/YEKR0DnFjxvN+8JHeCUD2unnh18jIMKnDJTWtvpTaGYPXELVe4OOzFI0xg==", + "requires": {} }, "@svgr/babel-preset": { "version": "6.2.0", @@ -2563,7 +15492,8 @@ "acorn-import-assertions": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==" + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "requires": {} }, "acorn-walk": { "version": "8.2.0", @@ -2624,7 +15554,8 @@ "ajv-keywords": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==" + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "requires": {} }, "algoliasearch": { "version": "4.12.1", @@ -3845,7 +16776,8 @@ "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==" + "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", + "requires": {} }, "csso": { "version": "4.2.0", @@ -5268,7 +18200,8 @@ "icss-utils": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==" + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "requires": {} }, "ignore": { "version": "5.2.0", @@ -6569,22 +19502,26 @@ "postcss-discard-comments": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.0.tgz", - "integrity": "sha512-L0IKF4jAshRyn03SkEO6ar/Ipz2oLywVbg2THf2EqqdNkBwmVMxuTR/RoAltOw4piiaLt3gCAdrbAqmTBInmhg==" + "integrity": "sha512-L0IKF4jAshRyn03SkEO6ar/Ipz2oLywVbg2THf2EqqdNkBwmVMxuTR/RoAltOw4piiaLt3gCAdrbAqmTBInmhg==", + "requires": {} }, "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==" + "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", + "requires": {} }, "postcss-discard-empty": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.0.tgz", - "integrity": "sha512-782T/buGgb3HOuHOJAHpdyKzAAKsv/BxWqsutnZ+QsiHEcDkY7v+6WWdturuBiSal6XMOO1p1aJvwXdqLD5vhA==" + "integrity": "sha512-782T/buGgb3HOuHOJAHpdyKzAAKsv/BxWqsutnZ+QsiHEcDkY7v+6WWdturuBiSal6XMOO1p1aJvwXdqLD5vhA==", + "requires": {} }, "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==" + "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", + "requires": {} }, "postcss-discard-unused": { "version": "5.1.0", @@ -6672,7 +19609,8 @@ "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==" + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "requires": {} }, "postcss-modules-local-by-default": { "version": "4.0.0", @@ -6703,7 +19641,8 @@ "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==" + "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", + "requires": {} }, "postcss-normalize-display-values": { "version": "5.1.0", @@ -6847,7 +19786,8 @@ "postcss-zindex": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-5.1.0.tgz", - "integrity": "sha512-fgFMf0OtVSBR1va1JNHYgMxYk73yhn/qb4uQDq1DLGYolz8gHCyr/sesEuGUaYs58E3ZJRcpoGuPVoB7Meiq9A==" + "integrity": "sha512-fgFMf0OtVSBR1va1JNHYgMxYk73yhn/qb4uQDq1DLGYolz8gHCyr/sesEuGUaYs58E3ZJRcpoGuPVoB7Meiq9A==", + "requires": {} }, "prepend-http": { "version": "2.0.0", @@ -6871,7 +19811,8 @@ "prism-react-renderer": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-1.3.1.tgz", - "integrity": "sha512-xUeDMEz074d0zc5y6rxiMp/dlC7C+5IDDlaEUlcBOFE2wddz7hz5PNupb087mPwTt7T9BrFmewObfCBuf/LKwQ==" + "integrity": "sha512-xUeDMEz074d0zc5y6rxiMp/dlC7C+5IDDlaEUlcBOFE2wddz7hz5PNupb087mPwTt7T9BrFmewObfCBuf/LKwQ==", + "requires": {} }, "prismjs": { "version": "1.27.0", @@ -8211,6 +21152,21 @@ "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.0.1.tgz", "integrity": "sha512-mC1Ps9l77/97qeOZc+HrOL7TIaOboHqMZ24dGVQrlxFcpPpfCHpH+qfUT7Dz+6mlG8+JPA1KfBQo19iC/+Ngcw==" }, + "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==", + "requires": { + "safe-buffer": "~5.2.0" + }, + "dependencies": { + "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==" + } + } + }, "string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", @@ -8241,21 +21197,6 @@ } } }, - "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==", - "requires": { - "safe-buffer": "~5.2.0" - }, - "dependencies": { - "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==" - } - } - }, "stringify-object": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", @@ -8788,12 +21729,14 @@ "use-composed-ref": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.2.1.tgz", - "integrity": "sha512-6+X1FLlIcjvFMAeAD/hcxDT8tmyrWnbSPMU0EnxQuDLIxokuFzWliXBiYZuGIx+mrAMLBw0WFfCkaPw8ebzAhw==" + "integrity": "sha512-6+X1FLlIcjvFMAeAD/hcxDT8tmyrWnbSPMU0EnxQuDLIxokuFzWliXBiYZuGIx+mrAMLBw0WFfCkaPw8ebzAhw==", + "requires": {} }, "use-isomorphic-layout-effect": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.1.tgz", - "integrity": "sha512-L7Evj8FGcwo/wpbv/qvSfrkHFtOpCzvM5yl2KVyDJoylVuSvzphiiasmjgQPttIGBAy2WKiBNR98q8w7PiNgKQ==" + "integrity": "sha512-L7Evj8FGcwo/wpbv/qvSfrkHFtOpCzvM5yl2KVyDJoylVuSvzphiiasmjgQPttIGBAy2WKiBNR98q8w7PiNgKQ==", + "requires": {} }, "use-latest": { "version": "1.2.0", @@ -9141,7 +22084,8 @@ "ws": { "version": "8.5.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", - "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==" + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "requires": {} } } }, @@ -9309,7 +22253,8 @@ "ws": { "version": "7.5.7", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", - "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==" + "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", + "requires": {} }, "xdg-basedir": { "version": "4.0.0", From 9065719961253adefd88011652b6500b15b34de3 Mon Sep 17 00:00:00 2001 From: Pema <81958801+pema-s@users.noreply.github.com> Date: Wed, 23 Mar 2022 14:21:34 +0530 Subject: [PATCH 21/43] Adds changes to Tracker Tutorials (#444) --- .../best-practices/best-practices-trackers.md | 48 ++++++++++++++ .../trackers/consuming-trackers-async-api.md | 64 +++++++++---------- .../consuming-trackers-streaming-api.md | 21 ++---- docs/tutorials/trackers/consuming-trackers.md | 42 ++++++------ .../trackers/creating-trackers-async-api.md | 26 +++----- .../creating-trackers-streaming-api.md | 14 +--- sidebars.js | 5 +- 7 files changed, 118 insertions(+), 102 deletions(-) create mode 100644 docs/best-practices/best-practices-trackers.md diff --git a/docs/best-practices/best-practices-trackers.md b/docs/best-practices/best-practices-trackers.md new file mode 100644 index 00000000..03d4afd7 --- /dev/null +++ b/docs/best-practices/best-practices-trackers.md @@ -0,0 +1,48 @@ +--- +id: best-practices-trackers +title: Trackers Best Practice +sidebar_label: Trackers Best Practice +slug: /best-practices/best-practices-trackers/ +--- + +--- +:::note In Beta Phase +This feature is in the Beta phase. If you have any questions, ideas or suggestions please reach out to us at devrelations@symbl.ai. +::: + +Some of the best practices to keep in mind while creating the Trackers vocabulary are given below: + +## Using Keywords + +**Dos**
+Densely pack the vocabulary with keywords. Each keyword should add meaning to the sentence. +For example, using “subscription fees” is a good practice because both the words “subscription” and “fees” contain keywords. + +**Don’ts**
+Do not preface a keyword with words that don’t add meaning. +For example, using “Could you please kindly inform me about your subscription fees?” is not a good vocabulary item because the first part of the sentence conveys very little information. Only the last two words in the sentence contain useful information, which is “subscription fees”. + + +## Sentence Structure + +**Dos**
+Structure the sentences in a simple way avoiding words that do not add to the meaning. +For example, “I can’t afford this” is a simple sentence where all the four words contribute to the meaning. + +**Don’ts**
+Do not use complex sentence structures that do not add meaning such as “I think”, “I feel”, etc. +For example, “I am thinking that I can’t afford this”. Here, the words “I am thinking that ” do not contribute to the meaning of this sentence since “I can’t afford this” is the key meaning of this sentence. + +## One meaning per vocabulary phrase + +**Dos**
+Each phrase in the vocabulary should convey only one meaning. +For example, +“I used to like chocolate” and “I don’t like chocolate anymore” are conveying two different meanings and are constructed as different phrases. + +**Don’ts**
+Do not use two different meanings or thoughts in a single phrase. +For example, +“I used to like chocolate, but I don’t anymore”. This vocabulary phrase is combining two meanings into one sentence and is not a good practice. + + diff --git a/docs/tutorials/trackers/consuming-trackers-async-api.md b/docs/tutorials/trackers/consuming-trackers-async-api.md index 3e891660..2c41fa6b 100644 --- a/docs/tutorials/trackers/consuming-trackers-async-api.md +++ b/docs/tutorials/trackers/consuming-trackers-async-api.md @@ -10,22 +10,22 @@ slug: /tutorials/trackers/consuming-trackers-async-api/ This feature is in the Beta phase. If you have any questions, ideas or suggestions please reach out to us at devrelations@symbl.ai. ::: -To use Trackers with Async API, follow the steps given below: +This tutorial covers step-by-step information on how to use Trackers with Async API. We have used the example of the [Async Audio URL API](/docs/management-api/trackers/create-tracker#async-audio-url-api) here. However, you can follow the same steps with other Async APIs as well. ### Step 1: Create a Tracker --- -The first step is to create a Tracker with a set of phrases and keywords using Async APIs. +The first step is to create a Tracker vocabulary with a set of phrases and keywords that you wish to track and pass the same in the Async API payload. :::tip -If you want to create multiple trackers in bulk, use [Trackers Management API for bulk creation](/docs/management-api/trackers/create-tracker#create-trackers-in-bulk). The Trackers Management API handles Trackers at your account level and is recommended for usecases where where you want to use multiple Trackers. -::: +- Before creating the Trackers, go through the [Best Practices](/docs/best-practices/best-practices-trackers/) document to learn about the dos and don'ts of the Tracker vocabulary creation. -:::tip Best Practises -Before creating the Trackers, go through the [Best Practices](#best-practices) section to learn about how to create Trackers. +- If you want to create multiple trackers, use [Trackers Management API for bulk creation](/docs/management-api/trackers/create-tracker#create-trackers-in-bulk). The Trackers Management API handles all the Trackers you have created at your account level and makes it easy to maintain them. ::: -Given below is an example of an [Async Audio URL API](/docs/management-api/trackers/create-tracker#async-audio-url-api): +#### Authentication + +Before using the API, ensure that you have your Authentication Token (`AUTH_TOKEN`) handy. To learn about how to get your auth token, see the step-by-step instructions on the [Authentication](/docs/developer-tools/authentication) page. #### API Endpoint @@ -34,11 +34,12 @@ POST https://api.symbl.ai/v1/process/audio/url ``` #### Request Body -```json + +```shell { - "url": "", - "confidenceThreshold": 0.6, - "timezoneOffset": 0, + "url": "", # The URL must be publicly accessible. + "confidenceThreshold": 0.6, # Minimum confidence score to consider an insight - action items, follow-ups, topics, and questions as valid. + "timezoneOffset": 0, # Specifies the actual timezoneOffset used for detecting the time/date-related entities. "trackers": [ { "name": "Promotion Mention", @@ -55,16 +56,16 @@ POST https://api.symbl.ai/v1/process/audio/url #### Response -This creates a Tracker and returns the following response. Note that every Tracker has a unique `id`. +This creates a Tracker and returns the following response. Note the conversation ID for the next step. -```json +```shell { - "conversationId": "5815170693595136", - "jobId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d" + "conversationId": "5815170693595136", # This is the unique identifier of the conversation. Use this to topics, action items, etc. + "jobId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d" # Use the Job ID to know the status of the job. } ``` :::note -To create Trackers with Async APIs, see detailed documentation in the links given below. +See detailed documentation in the links given below: - [Create Trackers- Async Audio File API](/docs/management-api/trackers/create-tracker#async-audio-file-api) - [Create Trackers- Async Audio URL API](/docs/management-api/trackers/create-tracker#async-audio-url-api) - [Create Trackers- Async Video File API](/docs/management-api/trackers/create-tracker#async-video-file-api) @@ -81,7 +82,9 @@ After creating the Tracker, you can: ### Step 2: Get the detected messages containing Trackers --- -Using the `conversation_id` you get from Step 1, you can `GET` the Trackers for the conversation. +Using the `conversation_id` you got from Step 1, make a `GET` request to the Trackers API endpoint given below: + +#### API Endpoint ```shell GET "https://api.symbl.ai/v1/conversations/{{conversation_id}}/trackers-detected" @@ -91,7 +94,7 @@ GET "https://api.symbl.ai/v1/conversations/{{conversation_id}}/trackers-detected ```json [ { - "id": "4527907378937856", + "id": "4527907378937856", // this is the ID of the Tracker "name": "Promotion Mention", "matches": [ { @@ -112,12 +115,13 @@ GET "https://api.symbl.ai/v1/conversations/{{conversation_id}}/trackers-detected ] ``` -### Detecting Trackers with Async API +### Get Trackers by ID -You can also use the Async API to detect Trackers by sending a list of Tracker IDs of previously created trackers (from the Management API). The Trackers will be searched in the submitted Async API request containing the conversation. +You can also use the Async API to get Trackers by sending a list of Tracker IDs of previously created trackers. The Trackers will be searched in the submitted Async API request containing the conversation. #### Example -In the example given below, we will send the following trackers IDs in the Async API request assuming they were already created: +In the example given below, we will send the following trackers IDs in the Async API request body: + ```shell "trackers": [ { @@ -128,7 +132,8 @@ In the example given below, we will send the following trackers IDs in the Async }, ``` #### Full Request Sample -Given below is an example of an Async Text API call sent with Tracker IDs: + +Given below is an example of an Async Text API request body containing Tracker IDs: ```shell curl --location --request POST 'https://api.symbl.ai/v1/process/text' \ @@ -148,7 +153,7 @@ curl --location --request POST 'https://api.symbl.ai/v1/process/text' \ ], "detectEntities": true, "messages": [], - "trackers": [ + "trackers": [ { "id": "5123033831841280" }, @@ -163,17 +168,6 @@ The old endpoint for fetching Trackers (given below) is deprecated and not recom `GET https://api.symbl.ai/v1/conversations/{conversationId}/trackers` ::: -### Best Practices - -Following are the best practices to be followed while creating Trackers: - -Dos' and Don'ts | Example | ----------- | ------- | -Densely pack your vocabulary with information | "What’s the price?" | -Don't preface your information with lots of words that don’t convey meaning | "I was wondering if you could tell me about your pricing structure". | -Use simple sentences or phrases | Short sentence: "I want to understand your product". Phrase: "understand your product" | -Avoid using complex sentence structure | "I want to make sure that I have a full understanding of your product". - ## Read more --- @@ -207,4 +201,4 @@ Avoid using complex sentence structure | "I want to make sure that I have a full
-
\ No newline at end of file +
diff --git a/docs/tutorials/trackers/consuming-trackers-streaming-api.md b/docs/tutorials/trackers/consuming-trackers-streaming-api.md index 02f27e8a..860ff1a7 100644 --- a/docs/tutorials/trackers/consuming-trackers-streaming-api.md +++ b/docs/tutorials/trackers/consuming-trackers-streaming-api.md @@ -20,9 +20,15 @@ Additionally, you can pass the parameter `enableAllTrackers` in the `config` obj ::: :::tip Best Practises -Before creating the Trackers, go through the [Best Practices](#best-practices) section to learn about how to create Trackers. +Before creating the Trackers, go through the [Best Practices](/docs/best-practices/best-practices-trackers/) document to learn about the dos and don'ts of the Tracker vocabulary creation. ::: +#### Authentication + +Before using the API, ensure that you have your Authentication Token (`AUTH_TOKEN`) handy. To learn about how to get your auth token, see the step-by-step instructions on the [Authentication](/docs/developer-tools/authentication) page. + +### Sample Request + ```js const connection = await sdk.startRealtimeRequest({ id, @@ -151,19 +157,6 @@ Field Name | Description `messageRefs.text` | The text body of the message. | `messageRefs.offset`| The closest match of the text in the message. Offset of -1 means that an exact match for that specific vocabulary wasn’t found and this was the similar match. An offset greater than 0 indicates an exact match for the tracker in the payload of the message. - -### Best Practices - -Following are the best practices to be followed while creating Trackers: - -Dos' and Don'ts | Example | ----------- | ------- | -Densely pack your vocabulary with information | "What’s the price?" | -Don't preface your information with lots of words that don’t convey meaning | "I was wondering if you could tell me about your pricing structure". | -Use simple sentences or phrases | Short sentence: "I want to understand your product". Phrase: "understand your product" | -Avoid using complex sentence structure | "I want to make sure that I have a full understanding of your product". - - ## Read more ---
diff --git a/docs/tutorials/trackers/consuming-trackers.md b/docs/tutorials/trackers/consuming-trackers.md index 6a3cf454..915ff03a 100644 --- a/docs/tutorials/trackers/consuming-trackers.md +++ b/docs/tutorials/trackers/consuming-trackers.md @@ -1,7 +1,7 @@ --- id: consuming-trackers-management-api -title: How to Create and Use Trackers- Trackers Management API -sidebar_label: Creating and using Trackers- Trackers Management API +title: Consuming Trackers with Trackers Management API +sidebar_label: Consuming Trackers with Trackers Management API slug: /tutorials/trackers/consuming-trackers-management-api/ --- @@ -11,7 +11,7 @@ This feature is in the Beta phase. If you have any questions, ideas or suggestio ::: -Trackers can be consumed via the Management API, which takes the onus of maintaining these entities from the developer and shifts it to Symbl’s backend. The Management API provides an easy-to-consume REST interface for managing these entities. +Trackers can be consumed via the Management API, which takes the onus of maintaining these entities from you and shifts it to Symbl’s backend. The Management API provides an easy-to-consume REST interface for managing these entities. All Trackers created using Management API are saved and can be reused for other operations such as PUT, UPDATE and DELETE. To read about the capabilities of the Management API, see the [Management API](/docs/management-api/introduction) page. @@ -24,10 +24,20 @@ You can also create, view, edit and delete Trackers via the Trackers Management - **Trackers limitation**: You can create up to 500 trackers per account. ::: +:::tip +Before creating the Trackers, go through the [Best Practices](/docs/best-practices/best-practices-trackers/) document to learn about the dos and don'ts of the Tracker vocabulary creation. +::: + ### Step 1: Create Trackers --- - Create Trackers by sending a `POST` request to the Trackers Management API endpoint given below: +Create Trackers by sending a `POST` request to the Trackers Management API endpoint: + +#### Authentication + +Before using the API, ensure that you have your Authentication Token (`AUTH_TOKEN`) handy. To learn about how to get your auth token, see the step-by-step instructions on the [Authentication](/docs/developer-tools/authentication) page. + +#### API Endpoint ```shell POST "https://api.symbl.ai/v1/manage/tracker" @@ -41,10 +51,6 @@ You can only pass the following punctuations in trackers vocabulary: Using any other punctuation mark such as `?`, `,`, `!`, `:` is not allowed. ::: -:::tip Best Practises -Before creating the Trackers, go through the [Best Practices](#best-practices) section to learn about how to create Trackers. -::: - You can define the phrases and keywords in the **vocabulary** of the request body as shown below: ```json @@ -80,6 +86,8 @@ When you send a recorded audio, video or text using [Async API](http://localhost Given below is an example of a POST request to Async Audio API for processing an audio recording with `enableAllTrackers` set to `true`. By default this is set to `false`. +#### API Endpoint + ```shell POST "https://api.symbl.ai/v1/process/audio?enableAllTrackers=true" ``` @@ -95,7 +103,7 @@ As a query-param | Async Audio File API, Async Video File API. In Request Body | Async Audio URL API, Async Video URL API, Async Text API. ::: -On successful processing by the above mentioned API, you will get the `conversationId` and the `jobId` as shown below: +On successful processing of the job, you will get the `conversationId` and the `jobId` as shown below: #### Response ```json @@ -113,7 +121,9 @@ Ensure that you wait for the job to complete before proceeding to Step 3. ### Step 3: Get detected messages containing Trackers --- -Using the `conversationId` from Step 2, you can `GET` the Trackers for the conversation. +Using the `conversationId` from Step 2, you can `GET` the detected Trackers using the following endpoint: + +#### API Endpoint ```shell GET "https://api.symbl.ai/v1/conversations/{{conversation_id}}/trackers-detected" @@ -167,18 +177,6 @@ The old endpoint for fetching Trackers (given below) is deprecated and not recom `GET https://api.symbl.ai/v1/conversations/{conversationId}/trackers` ::: -### Best Practices - -Following are the best practices to be followed while creating Trackers: - -Dos' and Don'ts | Example | ----------- | ------- | -Densely pack your vocabulary with information | "What’s the price?" | -Don't preface your information with lots of words that don’t convey meaning | "I was wondering if you could tell me about your pricing structure". | -Use simple sentences or phrases | Short sentence: "I want to understand your product". Phrase: "understand your product" | -Avoid using complex sentence structure | "I want to make sure that I have a full understanding of your product". - - ## Read more ---
diff --git a/docs/tutorials/trackers/creating-trackers-async-api.md b/docs/tutorials/trackers/creating-trackers-async-api.md index 8774eca5..295f9980 100644 --- a/docs/tutorials/trackers/creating-trackers-async-api.md +++ b/docs/tutorials/trackers/creating-trackers-async-api.md @@ -10,7 +10,7 @@ slug: /tutorials/trackers/create-trackers-async-api/ This feature is in the Beta phase. If you have any questions, ideas or suggestions please reach out to us at devrelations@symbl.ai. ::: -Symbl provides a diverse set of Async APIs based on Audio/Video or Textual content. For more details on Async APIs refer to the documentation [here](/docs/async-api/introduction). +Symbl provides a set of Async APIs based on audio, video or text content. For more details on Async APIs refer to the documentation [here](/docs/async-api/introduction). The Trackers once ingested via the request, will then try to detect these in the Conversation. Once the job is complete, you can fetch the Trackers from the Conversation API through the `/trackers` endpoint described below. @@ -18,14 +18,19 @@ The Trackers once ingested via the request, will then try to detect these in the While you can create Trackers with Async or Streaming APIs, it is recommended that you create Trackers using Management API because Trackers created with Management APIs are saved and can be reused while the same is not possible with Async or Streaming APIs. ::: - ### Async Audio File API -The Tracker entities should be passed in as a **query parameter** in the Async Audio API’s URL like shown below +The Tracker entities should be passed as a **query parameter** in the Async Audio API’s URL as shown below. + +:::tip +- Before creating the Trackers, go through the [Best Practices](/docs/best-practices/best-practices-trackers/) document to learn about the dos and don'ts of the Tracker vocabulary creation. -:::tip Best Practises -Before creating the Trackers, go through the [Best Practices](#best-practices) section to learn about how to create Trackers. +- If you want to create multiple trackers, use [Trackers Management API for bulk creation](/docs/management-api/trackers/create-tracker#create-trackers-in-bulk). The Trackers Management API handles all the Trackers you have created at your account level and makes it easy to maintain them. ::: +#### Authentication + +Before using the API, ensure that you have your Authentication Token (`AUTH_TOKEN`) handy. To learn about how to get your auth token, see the step-by-step instructions on the [Authentication](/docs/developer-tools/authentication) page. + ### API Endpoint ```json @@ -238,17 +243,6 @@ Notice that the trackers member follows the same structure as the Trackers secti } ``` -### Best Practices - -Following are the best practices to be followed while creating Trackers: - -Dos' and Don'ts | Example | ----------- | ------- | -Densely pack your vocabulary with information | "What’s the price?" | -Don't preface your information with lots of words that don’t convey meaning | "I was wondering if you could tell me about your pricing structure". | -Use simple sentences or phrases | Short sentence: "I want to understand your product". Phrase: "understand your product" | -Avoid using complex sentence structure | "I want to make sure that I have a full understanding of your product". - ## Read more ---
diff --git a/docs/tutorials/trackers/creating-trackers-streaming-api.md b/docs/tutorials/trackers/creating-trackers-streaming-api.md index 99cdf90e..d6e2f7a5 100644 --- a/docs/tutorials/trackers/creating-trackers-streaming-api.md +++ b/docs/tutorials/trackers/creating-trackers-streaming-api.md @@ -19,7 +19,7 @@ While you can create Trackers with Async or Streaming APIs, it is recommended th ::: :::tip Best Practises -Before creating the Trackers, go through the [Best Practices](#best-practices) section to learn about how to create Trackers. +Before creating the Trackers, go through the [Best Practices](/docs/best-practices/best-practices-trackers/) document to learn about the dos and don'ts of the Tracker vocabulary creation. ::: ```js @@ -107,18 +107,6 @@ Field | Required | `handlers` | The object encapsulating the call-back functions to be invoked on detection of those specific entities. For more information on various such handlers, check out this [link](/docs/javascript-sdk/tutorials/receive-ai-insights-from-your-computer/). `onTrackerResponse`| This function is invoked when Symbl detects a Tracker in real-time. The structure of the Tracker object is shown in the above code snippet. -### Best Practices - -Following are the best practices to be followed while creating Trackers: - -Dos' and Don'ts | Example | ----------- | ------- | -Densely pack your vocabulary with information | "What’s the price?" | -Don't preface your information with lots of words that don’t convey meaning | "I was wondering if you could tell me about your pricing structure". | -Use simple sentences or phrases | Short sentence: "I want to understand your product". Phrase: "understand your product" | -Avoid using complex sentence structure | "I want to make sure that I have a full understanding of your product". - - ## Read more ---
diff --git a/sidebars.js b/sidebars.js index 12b93ce3..8cf69ee6 100644 --- a/sidebars.js +++ b/sidebars.js @@ -454,11 +454,12 @@ id: 'developer-tools/postman', type: 'category', collapsed: true, items: [ - 'tutorials/trackers/consuming-trackers-management-api', + 'tutorials/trackers/create-trackers-async-api', 'tutorials/trackers/create-trackers-streaming-api', 'tutorials/trackers/consuming-trackers-async-api', - 'tutorials/trackers/create-trackers-async-api', 'tutorials/trackers/consuming-trackers-streaming-api', + 'tutorials/trackers/consuming-trackers-management-api', + 'best-practices/best-practices-trackers', ], }, { From 122c3bb94ca07a3b070a183919a01b4fc7d38142 Mon Sep 17 00:00:00 2001 From: harshal kaigaonkar <65395607+harshalkaigaonkar@users.noreply.github.com> Date: Wed, 23 Mar 2022 17:02:12 +0530 Subject: [PATCH 22/43] fix: build errors due to #439 , resolved. (#445) * slugs added/updated as per DC-307 * updated id from `text-summary-ui` to `summary-ui` * removed redirects, due to using urls for the same version, causing build errors * Some incorrect changes with the last commit resolved --- docs/api-reference/experience-api/post-text-summary-ui.md | 2 +- .../experience-api/post-trackers-and-analytics-ui.md | 2 +- docs/api-reference/experience-api/post-video-summary-ui.md | 2 +- .../code-snippets/how-to-use-sentiment-analysis.md | 1 + .../code-snippets/receive-conversation-analytics.md | 1 + docs/async-api/code-snippets/receive-entities.md | 1 + .../code-snippets/receive-speech-to-text-and-ai-insights.md | 1 + .../code-snippets/sentiment-analysis-on-messages.md | 1 + .../async-api/code-snippets/sentiment-analysis-on-topics.md | 1 + .../code-snippets/track-phrases-in-a-conversation.md | 1 + docs/async-api/overview/audio/post-audio-url.md | 1 + docs/async-api/overview/audio/post-audio.md | 1 + docs/async-api/overview/audio/put-audio-url.md | 1 + docs/async-api/overview/audio/put-audio.md | 1 + docs/async-api/overview/jobs-api.md | 1 + docs/async-api/overview/text/post-text.md | 1 + docs/async-api/overview/text/put-text.md | 1 + docs/async-api/overview/video/post-video-url.md | 1 + docs/async-api/overview/video/post-video.md | 1 + docs/async-api/overview/video/put-video-url.md | 1 + docs/async-api/overview/video/put-video.md | 1 + docs/async-api/reference/supported-languages.md | 1 + docs/conversation-api/concepts/ui-components.md | 1 + docs/conversation-api/introduction.md | 1 + docs/developer-tools/authentication.md | 1 + docs/developer-tools/errors.md | 1 + docs/developer-tools/postman.md | 1 + docs/developer-tools/sample_apps.md | 1 + docs/faq.md | 1 + docs/guides/abstract-topics.md | 1 + docs/how-tos/get-speech-to-text-async.md | 1 + docs/how-tos/get-speech-to-text-real-time.md | 1 + docs/how-tos/get-topics.md | 1 + docs/pre-built-ui/custom-domain.md | 2 +- docs/pre-built-ui/summary-ui.md | 2 +- docs/pre-built-ui/symbl-elements.md | 1 + docs/pre-built-ui/text-summary-ui.md | 2 +- docs/pre-built-ui/tuning-summary-page.md | 2 +- docs/pre-built-ui/video-summary-ui.md | 2 +- docs/pre-built-ui/waveform-ui.md | 1 + docs/streamingapi/code-snippets/detect-key-phrases.md | 1 + docs/streamingapi/code-snippets/receive-live-captioning.md | 2 +- docs/streamingapi/code-snippets/receive-live-insights.md | 2 +- docs/streamingapi/code-snippets/receive-live-topics.md | 2 +- .../receive-speech-to-text-for-different-languages.md | 1 + .../code-snippets/receive-trackers-in-spanish.md | 1 + docs/telephony/code-snippets/connect-to-pstn.md | 1 + docs/telephony/code-snippets/connect-to-sip.md | 1 + .../receive-prebuilt-ui-email-after-conversation.md | 1 + .../receive-speech-to-text-for-a-different-language.md | 1 + .../pre-built-summary-ui/creating-text-summary-ui.md | 2 +- .../creating-trackers-and-analytics-ui.md | 2 +- .../pre-built-summary-ui/creating-video-summary-ui.md | 2 +- .../pre-built-summary-ui/whitelabeling-summary-ui.md | 2 +- docusaurus-staging.config.js | 6 ------ docusaurus.config.js | 6 ------ 56 files changed, 54 insertions(+), 27 deletions(-) diff --git a/docs/api-reference/experience-api/post-text-summary-ui.md b/docs/api-reference/experience-api/post-text-summary-ui.md index b73dd558..ce23864c 100644 --- a/docs/api-reference/experience-api/post-text-summary-ui.md +++ b/docs/api-reference/experience-api/post-text-summary-ui.md @@ -2,7 +2,7 @@ id: post-text-summary-ui title: POST Text Summary UI sidebar_label: POST Text Summary UI - +slug: /api-reference/experience-api/post-text-summary-ui/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/api-reference/experience-api/post-trackers-and-analytics-ui.md b/docs/api-reference/experience-api/post-trackers-and-analytics-ui.md index e17329a5..b8acc970 100644 --- a/docs/api-reference/experience-api/post-trackers-and-analytics-ui.md +++ b/docs/api-reference/experience-api/post-trackers-and-analytics-ui.md @@ -2,7 +2,7 @@ id: post-trackers-and-analytics-ui title: POST Trackers and Analytics UI sidebar_label: POST Trackers and Analytics UI - +slug: /api-reference/experience-api/post-trackers-and-analytics-ui/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/api-reference/experience-api/post-video-summary-ui.md b/docs/api-reference/experience-api/post-video-summary-ui.md index c058fbcb..8af29bda 100644 --- a/docs/api-reference/experience-api/post-video-summary-ui.md +++ b/docs/api-reference/experience-api/post-video-summary-ui.md @@ -2,7 +2,7 @@ id: post-video-summary-ui title: POST Video Summary UI sidebar_label: POST Video Summary UI - +slug: /api-reference/experience-api/post-video-summary-ui/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/async-api/code-snippets/how-to-use-sentiment-analysis.md b/docs/async-api/code-snippets/how-to-use-sentiment-analysis.md index fcb12b92..ab638e9b 100644 --- a/docs/async-api/code-snippets/how-to-use-sentiment-analysis.md +++ b/docs/async-api/code-snippets/how-to-use-sentiment-analysis.md @@ -1,6 +1,7 @@ --- id: how-to-use-sentiment-analysis title: How To Use Sentiment Analysis (Beta) +slug: /async-api/code-snippets/how-to-use-sentiment-analysis/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/async-api/code-snippets/receive-conversation-analytics.md b/docs/async-api/code-snippets/receive-conversation-analytics.md index b25b9a44..b71e766e 100644 --- a/docs/async-api/code-snippets/receive-conversation-analytics.md +++ b/docs/async-api/code-snippets/receive-conversation-analytics.md @@ -1,6 +1,7 @@ --- id: receive-conversation-analytics title: Receive Conversation Analytics +slug: /async-api/code-snippets/receive-conversation-analytics/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/async-api/code-snippets/receive-entities.md b/docs/async-api/code-snippets/receive-entities.md index c703c47a..741a393b 100644 --- a/docs/async-api/code-snippets/receive-entities.md +++ b/docs/async-api/code-snippets/receive-entities.md @@ -1,6 +1,7 @@ --- id: receive-entities title: Receive Entities From Conversation +slug: /async-api/code-snippets/receive-entities/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/async-api/code-snippets/receive-speech-to-text-and-ai-insights.md b/docs/async-api/code-snippets/receive-speech-to-text-and-ai-insights.md index 3e48d467..cedb9b51 100644 --- a/docs/async-api/code-snippets/receive-speech-to-text-and-ai-insights.md +++ b/docs/async-api/code-snippets/receive-speech-to-text-and-ai-insights.md @@ -1,6 +1,7 @@ --- id: receive-speech-to-text-and-ai-insights title: Receive Speech-to-Text and AI Insights +slug: /async-api/code-snippets/receive-speech-to-text-and-ai-insights/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/async-api/code-snippets/sentiment-analysis-on-messages.md b/docs/async-api/code-snippets/sentiment-analysis-on-messages.md index f8005cb9..fadbbbb8 100644 --- a/docs/async-api/code-snippets/sentiment-analysis-on-messages.md +++ b/docs/async-api/code-snippets/sentiment-analysis-on-messages.md @@ -1,6 +1,7 @@ --- id: sentiment-analysis-on-messages title: Sentiment Analysis on Messages (Beta) +slug: /async-api/code-snippets/sentiment-analysis-on-messages/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/async-api/code-snippets/sentiment-analysis-on-topics.md b/docs/async-api/code-snippets/sentiment-analysis-on-topics.md index e73ea234..6383058e 100644 --- a/docs/async-api/code-snippets/sentiment-analysis-on-topics.md +++ b/docs/async-api/code-snippets/sentiment-analysis-on-topics.md @@ -1,6 +1,7 @@ --- id: sentiment-analysis-on-topics title: Sentiment Analysis on Topics (Beta) +slug: /async-api/code-snippets/sentiment-analysis-on-topics/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/async-api/code-snippets/track-phrases-in-a-conversation.md b/docs/async-api/code-snippets/track-phrases-in-a-conversation.md index b7ac7d4e..75668d8f 100644 --- a/docs/async-api/code-snippets/track-phrases-in-a-conversation.md +++ b/docs/async-api/code-snippets/track-phrases-in-a-conversation.md @@ -1,6 +1,7 @@ --- id: track-phrases-in-a-conversation title: Track Phrases In A Conversation +slug: /async-api/code-snippets/track-phrases-in-a-conversation/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/async-api/overview/audio/post-audio-url.md b/docs/async-api/overview/audio/post-audio-url.md index 3497999b..2370ecfd 100644 --- a/docs/async-api/overview/audio/post-audio-url.md +++ b/docs/async-api/overview/audio/post-audio-url.md @@ -1,6 +1,7 @@ --- id: post-audio-url title: POST Audio URL API +slug: /async-api/overview/audio/post-audio-url/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/async-api/overview/audio/post-audio.md b/docs/async-api/overview/audio/post-audio.md index de85cec4..58564b17 100644 --- a/docs/async-api/overview/audio/post-audio.md +++ b/docs/async-api/overview/audio/post-audio.md @@ -1,6 +1,7 @@ --- id: post-audio title: POST Audio API +slug: /async-api/overview/audio/post-audio/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/async-api/overview/audio/put-audio-url.md b/docs/async-api/overview/audio/put-audio-url.md index 0c7649f2..d949f62b 100644 --- a/docs/async-api/overview/audio/put-audio-url.md +++ b/docs/async-api/overview/audio/put-audio-url.md @@ -1,6 +1,7 @@ --- id: put-audio-url title: PUT Audio URL API +slug: /async-api/overview/audio/put-audio-url/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/async-api/overview/audio/put-audio.md b/docs/async-api/overview/audio/put-audio.md index eecc412c..dd65d0a0 100644 --- a/docs/async-api/overview/audio/put-audio.md +++ b/docs/async-api/overview/audio/put-audio.md @@ -1,6 +1,7 @@ --- id: put-audio title: PUT Audio API +slug: /async-api/overview/audio/put-audio/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/async-api/overview/jobs-api.md b/docs/async-api/overview/jobs-api.md index c05c3a95..f4951012 100644 --- a/docs/async-api/overview/jobs-api.md +++ b/docs/async-api/overview/jobs-api.md @@ -2,6 +2,7 @@ id: jobs-api title: What is the Job API? sidebar_label: Get Job Status +slug: /async-api/overview/jobs-api/ --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/async-api/overview/text/post-text.md b/docs/async-api/overview/text/post-text.md index 90b86789..446a3901 100644 --- a/docs/async-api/overview/text/post-text.md +++ b/docs/async-api/overview/text/post-text.md @@ -1,6 +1,7 @@ --- id: post-text title: POST Text API +slug: /async-api/overview/text/post-text/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/async-api/overview/text/put-text.md b/docs/async-api/overview/text/put-text.md index a66cf4f0..5fb25ba2 100644 --- a/docs/async-api/overview/text/put-text.md +++ b/docs/async-api/overview/text/put-text.md @@ -1,6 +1,7 @@ --- id: put-text title: PUT Text API +slug: /async-api/overview/text/put-text/ --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/async-api/overview/video/post-video-url.md b/docs/async-api/overview/video/post-video-url.md index 6a2ebb7b..ae47cfe3 100644 --- a/docs/async-api/overview/video/post-video-url.md +++ b/docs/async-api/overview/video/post-video-url.md @@ -1,6 +1,7 @@ --- id: post-video-url title: POST Video URL API +slug: /async-api/overview/video/post-video-url/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/async-api/overview/video/post-video.md b/docs/async-api/overview/video/post-video.md index 7436be1b..50a5e85e 100644 --- a/docs/async-api/overview/video/post-video.md +++ b/docs/async-api/overview/video/post-video.md @@ -1,6 +1,7 @@ --- id: post-video title: POST Video API +slug: /async-api/overview/video/post-video/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/async-api/overview/video/put-video-url.md b/docs/async-api/overview/video/put-video-url.md index 12783d88..70b59959 100644 --- a/docs/async-api/overview/video/put-video-url.md +++ b/docs/async-api/overview/video/put-video-url.md @@ -1,6 +1,7 @@ --- id: put-video-url title: PUT Video URL API +slug: /async-api/overview/video/put-video-url/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/async-api/overview/video/put-video.md b/docs/async-api/overview/video/put-video.md index c560cc7a..76e80ceb 100644 --- a/docs/async-api/overview/video/put-video.md +++ b/docs/async-api/overview/video/put-video.md @@ -1,6 +1,7 @@ --- id: put-video title: PUT Video API +slug: /async-api/overview/video/put-video/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/async-api/reference/supported-languages.md b/docs/async-api/reference/supported-languages.md index e6202bcb..ffb014ea 100644 --- a/docs/async-api/reference/supported-languages.md +++ b/docs/async-api/reference/supported-languages.md @@ -2,6 +2,7 @@ id: supported-languages title: Supported Languages sidebar_label: Supported Languages +slug: /async-api/reference/supported-languages/ --- ## Supported Languages diff --git a/docs/conversation-api/concepts/ui-components.md b/docs/conversation-api/concepts/ui-components.md index 590736db..38e9b82d 100644 --- a/docs/conversation-api/concepts/ui-components.md +++ b/docs/conversation-api/concepts/ui-components.md @@ -2,6 +2,7 @@ id: ui-components title: Reusable and Customizable UI Components sidebar_label: Introduction +slug: /conversation-api/concepts/ui-components/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/conversation-api/introduction.md b/docs/conversation-api/introduction.md index 6abdaf9e..5fd7584f 100644 --- a/docs/conversation-api/introduction.md +++ b/docs/conversation-api/introduction.md @@ -3,6 +3,7 @@ id: introduction title: Introduction description: Use Symbl.ai Conversation APIs to get speech-to-text data and actionable insights from your conversations. Learn more. sidebar_label: Introduction +slug: /conversation-api/introduction/ --- diff --git a/docs/developer-tools/authentication.md b/docs/developer-tools/authentication.md index f95973b5..097ab227 100644 --- a/docs/developer-tools/authentication.md +++ b/docs/developer-tools/authentication.md @@ -2,6 +2,7 @@ id: authentication title: Authentication sidebar_label: Authentication +slug: /developer-tools/authentication/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/developer-tools/errors.md b/docs/developer-tools/errors.md index 009a8caf..65fa5ac4 100644 --- a/docs/developer-tools/errors.md +++ b/docs/developer-tools/errors.md @@ -2,6 +2,7 @@ id: errors title: Error Codes sidebar_label: Error Codes +slug: /developer-tools/errors/ --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/developer-tools/postman.md b/docs/developer-tools/postman.md index 6ae26a96..76985a6f 100644 --- a/docs/developer-tools/postman.md +++ b/docs/developer-tools/postman.md @@ -3,6 +3,7 @@ id: postman title: Using Postman sidebar_label: Using Postman image: https://i.imgur.com/mErPwqL.png +slug: /developer-tools/postman/ --- Postman is a desktop and web application that allows you to send HTTP requests from a graphical user interface. diff --git a/docs/developer-tools/sample_apps.md b/docs/developer-tools/sample_apps.md index 15ee15b2..03b41d68 100644 --- a/docs/developer-tools/sample_apps.md +++ b/docs/developer-tools/sample_apps.md @@ -2,6 +2,7 @@ id: sample-apps title: Explore Sample Apps sidebar_label: Explore Sample Apps +slug: /developer-tools/sample-apps/ --- diff --git a/docs/faq.md b/docs/faq.md index 0a54cda6..96c1f3af 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -2,6 +2,7 @@ id: faq title: Frequently Asked Questions sidebar_label: FAQ +slug: /faq/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/guides/abstract-topics.md b/docs/guides/abstract-topics.md index e571d3b9..0aee00c4 100644 --- a/docs/guides/abstract-topics.md +++ b/docs/guides/abstract-topics.md @@ -2,6 +2,7 @@ id: abstract-topics title: Abstract Topics (Labs) sidebar_label: Introduction +slug: /guides/abstract-topics/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/how-tos/get-speech-to-text-async.md b/docs/how-tos/get-speech-to-text-async.md index 70b109dc..66e7be8f 100644 --- a/docs/how-tos/get-speech-to-text-async.md +++ b/docs/how-tos/get-speech-to-text-async.md @@ -2,6 +2,7 @@ id: get-speech-to-text-async title: Speech-to-Text- Async sidebar_label: Async Speech-to-Text +slug: /how-tos/get-speech-to-text-async/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/how-tos/get-speech-to-text-real-time.md b/docs/how-tos/get-speech-to-text-real-time.md index afe2ba34..a00b75ae 100644 --- a/docs/how-tos/get-speech-to-text-real-time.md +++ b/docs/how-tos/get-speech-to-text-real-time.md @@ -2,6 +2,7 @@ id: get-speech-to-text-real-time title: Speech-to-Text in Real-time sidebar_label: Real-time Speech-to-Text +slug: /how-tos/get-speech-to-text-real-time/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/how-tos/get-topics.md b/docs/how-tos/get-topics.md index 02753faa..a31160e7 100644 --- a/docs/how-tos/get-topics.md +++ b/docs/how-tos/get-topics.md @@ -2,6 +2,7 @@ id: how-to-get-topics title: Getting Topics sidebar_label: Real-time Topics +slug: /how-tos/how-to-get-topics/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/pre-built-ui/custom-domain.md b/docs/pre-built-ui/custom-domain.md index 6ac33aa3..49e0f069 100644 --- a/docs/pre-built-ui/custom-domain.md +++ b/docs/pre-built-ui/custom-domain.md @@ -2,7 +2,7 @@ id: custom-domain title: Adding a Custom Domain (Beta) sidebar_label: Adding a Custom Domain (Beta) - +slug: /pre-built-ui/custom-domain/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/pre-built-ui/summary-ui.md b/docs/pre-built-ui/summary-ui.md index c82cf0df..b166eaa8 100644 --- a/docs/pre-built-ui/summary-ui.md +++ b/docs/pre-built-ui/summary-ui.md @@ -1,5 +1,5 @@ --- -id: text-summary-ui +id: summary-ui title: Summary UI sidebar_label: Summary UI slug: /pre-built-ui/summary-ui/ diff --git a/docs/pre-built-ui/symbl-elements.md b/docs/pre-built-ui/symbl-elements.md index 5c87f31e..976182d8 100644 --- a/docs/pre-built-ui/symbl-elements.md +++ b/docs/pre-built-ui/symbl-elements.md @@ -2,6 +2,7 @@ id: symbl-elements title: Symbl React Elements sidebar_label: Symbl React Elements +slug: /pre-built-ui/symbl-elements/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/pre-built-ui/text-summary-ui.md b/docs/pre-built-ui/text-summary-ui.md index bd4ec38e..61d220b7 100644 --- a/docs/pre-built-ui/text-summary-ui.md +++ b/docs/pre-built-ui/text-summary-ui.md @@ -2,7 +2,7 @@ id: text-summary-ui title: Text Summary UI sidebar_label: Text Summary UI - +slug: /pre-built-ui/text-summary-ui/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/pre-built-ui/tuning-summary-page.md b/docs/pre-built-ui/tuning-summary-page.md index c223d38f..e40a1092 100644 --- a/docs/pre-built-ui/tuning-summary-page.md +++ b/docs/pre-built-ui/tuning-summary-page.md @@ -3,7 +3,7 @@ id: tuning-summary-page title: Tuning your Summary Page sidebar_label: Tuning your Summary Page - +slug: /pre-built-ui/tuning-summary-page/ --- --- diff --git a/docs/pre-built-ui/video-summary-ui.md b/docs/pre-built-ui/video-summary-ui.md index c836b272..53befa95 100644 --- a/docs/pre-built-ui/video-summary-ui.md +++ b/docs/pre-built-ui/video-summary-ui.md @@ -2,7 +2,7 @@ id: video-summary-ui title: Video Summary UI sidebar_label: Video Summary UI - +slug: /pre-built-ui/video-summary-ui/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/pre-built-ui/waveform-ui.md b/docs/pre-built-ui/waveform-ui.md index 96c5e5d8..84dfce20 100644 --- a/docs/pre-built-ui/waveform-ui.md +++ b/docs/pre-built-ui/waveform-ui.md @@ -2,6 +2,7 @@ id: trackers-and-analytics-ui title: Trackers and Analytics UI sidebar_label: Trackers and Analytics UI +slug: /pre-built-ui/trackers-and-analytics-ui/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/streamingapi/code-snippets/detect-key-phrases.md b/docs/streamingapi/code-snippets/detect-key-phrases.md index db5c9087..ca848ecf 100644 --- a/docs/streamingapi/code-snippets/detect-key-phrases.md +++ b/docs/streamingapi/code-snippets/detect-key-phrases.md @@ -1,6 +1,7 @@ --- id: detect-key-phrases title: Detect Key Phrases +slug: /streamingapi/code-snippets/detect-key-phrases/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/streamingapi/code-snippets/receive-live-captioning.md b/docs/streamingapi/code-snippets/receive-live-captioning.md index 1529af4c..730f73ef 100644 --- a/docs/streamingapi/code-snippets/receive-live-captioning.md +++ b/docs/streamingapi/code-snippets/receive-live-captioning.md @@ -1,7 +1,7 @@ --- id: receive-live-captioning title: Receive Live Captioning -slug: /streamingapi/code-snippets/receive-live-captioning +slug: /streamingapi/code-snippets/receive-live-captioning/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/streamingapi/code-snippets/receive-live-insights.md b/docs/streamingapi/code-snippets/receive-live-insights.md index 69106b40..7598edc4 100644 --- a/docs/streamingapi/code-snippets/receive-live-insights.md +++ b/docs/streamingapi/code-snippets/receive-live-insights.md @@ -1,7 +1,7 @@ --- id: receive-ai-insights title: Receive Live AI Insights -slug: /streamingapi/code-snippets/receive-live-insights +slug: /streamingapi/code-snippets/receive-live-insights/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/streamingapi/code-snippets/receive-live-topics.md b/docs/streamingapi/code-snippets/receive-live-topics.md index e9c974c7..4f65f623 100644 --- a/docs/streamingapi/code-snippets/receive-live-topics.md +++ b/docs/streamingapi/code-snippets/receive-live-topics.md @@ -1,7 +1,7 @@ --- id: receive-live-topics title: Receive Live Topics -slug: /streamingapi/code-snippets/receive-live-topics +slug: /streamingapi/code-snippets/receive-live-topics/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/streamingapi/code-snippets/receive-speech-to-text-for-different-languages.md b/docs/streamingapi/code-snippets/receive-speech-to-text-for-different-languages.md index 586a4f85..1dfcd0a0 100644 --- a/docs/streamingapi/code-snippets/receive-speech-to-text-for-different-languages.md +++ b/docs/streamingapi/code-snippets/receive-speech-to-text-for-different-languages.md @@ -1,6 +1,7 @@ --- id: receive-speech-to-text-for-different-languages title: Receive Speech to Text for a different language in a conversation +slug: /streamingapi/code-snippets/receive-speech-to-text-for-different-languages/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/streamingapi/code-snippets/receive-trackers-in-spanish.md b/docs/streamingapi/code-snippets/receive-trackers-in-spanish.md index 66d65129..52f9b534 100644 --- a/docs/streamingapi/code-snippets/receive-trackers-in-spanish.md +++ b/docs/streamingapi/code-snippets/receive-trackers-in-spanish.md @@ -1,6 +1,7 @@ --- id: receive-trackers-in-spanish title: Receive Trackers in Spanish (Labs) +slug: /streamingapi/code-snippets/receive-trackers-in-spanish/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/telephony/code-snippets/connect-to-pstn.md b/docs/telephony/code-snippets/connect-to-pstn.md index 2eabee46..2c3a4ed1 100644 --- a/docs/telephony/code-snippets/connect-to-pstn.md +++ b/docs/telephony/code-snippets/connect-to-pstn.md @@ -1,6 +1,7 @@ --- id: connect-to-pstn title: Connect to a PSTN connection to get Speech to Text and AI Insights +slug: /telephony/code-snippets/connect-to-pstn/ --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/telephony/code-snippets/connect-to-sip.md b/docs/telephony/code-snippets/connect-to-sip.md index 620fd6ca..c508b580 100644 --- a/docs/telephony/code-snippets/connect-to-sip.md +++ b/docs/telephony/code-snippets/connect-to-sip.md @@ -1,6 +1,7 @@ --- id: connect-to-sip title: Connect to a SIP connection to get Speech to Text and AI Insights +slug: /telephony/code-snippets/connect-to-sip/ --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/telephony/code-snippets/receive-prebuilt-ui-email-after-conversation.md b/docs/telephony/code-snippets/receive-prebuilt-ui-email-after-conversation.md index 4d7c70ff..990ef4e4 100644 --- a/docs/telephony/code-snippets/receive-prebuilt-ui-email-after-conversation.md +++ b/docs/telephony/code-snippets/receive-prebuilt-ui-email-after-conversation.md @@ -1,6 +1,7 @@ --- id: receive-prebuilt-ui-email-after-conversation title: Receive Prebuilt Summary UI email after each conversation +slug: /telephony/code-snippets/receive-prebuilt-ui-email-after-conversation/ --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/telephony/code-snippets/receive-speech-to-text-for-a-different-language.md b/docs/telephony/code-snippets/receive-speech-to-text-for-a-different-language.md index e3ab4672..be44257f 100644 --- a/docs/telephony/code-snippets/receive-speech-to-text-for-a-different-language.md +++ b/docs/telephony/code-snippets/receive-speech-to-text-for-a-different-language.md @@ -1,6 +1,7 @@ --- id: receive-speech-to-text-for-a-different-language title: Receive Speech-to-Text for a different language in a Conversation +slug: /telephony/code-snippets/receive-speech-to-text-for-a-different-language/ --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/tutorials/pre-built-summary-ui/creating-text-summary-ui.md b/docs/tutorials/pre-built-summary-ui/creating-text-summary-ui.md index 9f34c8f8..4fd5a29d 100644 --- a/docs/tutorials/pre-built-summary-ui/creating-text-summary-ui.md +++ b/docs/tutorials/pre-built-summary-ui/creating-text-summary-ui.md @@ -2,7 +2,7 @@ id: creating-text-summary-ui title: Creating Text Summary UI sidebar_label: Text Summary UI - +slug: /tutorials/pre-built-summary-ui/creating-text-summary-ui/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/tutorials/pre-built-summary-ui/creating-trackers-and-analytics-ui.md b/docs/tutorials/pre-built-summary-ui/creating-trackers-and-analytics-ui.md index 7658e883..d7b2417e 100644 --- a/docs/tutorials/pre-built-summary-ui/creating-trackers-and-analytics-ui.md +++ b/docs/tutorials/pre-built-summary-ui/creating-trackers-and-analytics-ui.md @@ -2,7 +2,7 @@ id: creating-trackers-and-analytics-ui title: Creating Trackers and Analytics UI sidebar_label: Trackers and Analytics UI - +slug: /tutorials/pre-built-summary-ui/creating-trackers-and-analytics-ui/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/tutorials/pre-built-summary-ui/creating-video-summary-ui.md b/docs/tutorials/pre-built-summary-ui/creating-video-summary-ui.md index 74b9b4e2..bf044eb4 100644 --- a/docs/tutorials/pre-built-summary-ui/creating-video-summary-ui.md +++ b/docs/tutorials/pre-built-summary-ui/creating-video-summary-ui.md @@ -2,7 +2,7 @@ id: creating-video-summary-ui title: Creating Video Summary UI sidebar_label: Video Summary UI - +slug: /tutorials/pre-built-summary-ui/creating-video-summary-ui/ --- import Tabs from '@theme/Tabs'; diff --git a/docs/tutorials/pre-built-summary-ui/whitelabeling-summary-ui.md b/docs/tutorials/pre-built-summary-ui/whitelabeling-summary-ui.md index cce1091d..6cfac06a 100644 --- a/docs/tutorials/pre-built-summary-ui/whitelabeling-summary-ui.md +++ b/docs/tutorials/pre-built-summary-ui/whitelabeling-summary-ui.md @@ -2,7 +2,7 @@ id: whitelabeling-summary-ui title: White labeling Summary UI sidebar_label: White labeling Summary UI - +slug: /tutorials/pre-built-summary-ui/whitelabeling-summary-ui/ --- import Tabs from '@theme/Tabs'; diff --git a/docusaurus-staging.config.js b/docusaurus-staging.config.js index 597129d4..c6481314 100644 --- a/docusaurus-staging.config.js +++ b/docusaurus-staging.config.js @@ -188,12 +188,6 @@ module.exports = { '/conversation-api/api-reference/update-members', '/conversation-api/overview/update-members' ] - }, { - to: '/pre-built-ui/summary-ui/', - 'from': [ - '/pre-built-ui/video-summary-ui', - '/pre-built-ui/text-summary-ui' - ] }] } ] diff --git a/docusaurus.config.js b/docusaurus.config.js index 55228a51..cd61c494 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -192,12 +192,6 @@ module.exports = { '/conversation-api/api-reference/update-members', '/conversation-api/overview/update-members' ] - }, { - to: '/pre-built-ui/summary-ui/', - 'from': [ - '/pre-built-ui/video-summary-ui', - '/pre-built-ui/text-summary-ui' - ] }] } ] From cff35c28bce2e4cb60d9a75ae95a070dd3c30f3b Mon Sep 17 00:00:00 2001 From: Amritesh Singh <88492460+amritesh-singh@users.noreply.github.com> Date: Wed, 23 Mar 2022 19:05:36 +0530 Subject: [PATCH 23/43] DC-358 (#447) --- docs/streamingapi/reference/reference.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/streamingapi/reference/reference.md b/docs/streamingapi/reference/reference.md index 87e2d1b7..2353a2e0 100644 --- a/docs/streamingapi/reference/reference.md +++ b/docs/streamingapi/reference/reference.md @@ -37,7 +37,7 @@ Field | Required | Supported Value | Description ```speaker``` | Optional | Find the supported value [here](#speaker) | Speaker identity to use for audio in this WebSocket connection. If omitted, no speaker identification will be used for processing. [See the speaker section below for more details](#speaker). ```noConnectionTimeout``` | Optional | Between `0` to `1800` seconds | The buffer time (in seconds) during which the WebSocket API connection stays open even if there’s no Streaming API connection active for that duration. This allows the Speaker to reconnect to the same meeting with the same Subscribers if they lost the connection previously.

For example, when this parameter is set to `noConnectionTimeout = 600 secs` and if there is no graceful termination using `stop_request` message sent explicitly when there just one WebSocket connection, the `connectionId` and `conversationId` are kept valid for 600 seconds before finalizing the connection, after which connectionId will be not available to subscribe and `conversationId` will have all the last know information associated with it. ```disconnectOnStopRequest``` | Optional | `true` or `false` | This parameter allows you to set your Streaming API connection in such a way that even when the `stop_request` is sent. The connection does not drop-off, only the processing is stopped and the `conversationId` and connection is kept live for `1800` seconds by default. You can always override this value by passing the `disconnectOnStopRequest` parameter.

This allows you to stop and start the Streaming API processing without dropping the WebSocket connection, so that you can stop and resume the processing in the middle of a call and optimize the Streaming API usage costs.

The default value is `true`. | -```disconnectOnStopRequestTimeout``` | Optional | Between `0` to `3600` seconds | This parameter allows you to override the idle time out (if a WebSocket connection is idle for 30 minutes). Set this parameter with a value between `0` to `3600` seconds. If the idle connection needs to be kept alive beyond `3600` seconds, you have to restart the connection at `3600` seconds elapsed.

If the value is passed as `0`, the WebSocket connection is dropped when `stop_request` is received. The default value is `1800`. +```disconnectOnStopRequestTimeout``` | Optional | Between `0` to `1800` seconds | This parameter allows you to override the idle time out (if a WebSocket connection is idle for 30 minutes). Set this parameter with a value between `0` to `1800` seconds. If the idle connection needs to be kept alive beyond `1800` seconds, you have to restart the connection at `1800` seconds elapsed.

If the value is passed as `0`, the WebSocket connection is dropped when `stop_request` is received. The default value is `1800`. ##### Code Example From b2a365078bc658d2af989f82e05556b8c65f78d2 Mon Sep 17 00:00:00 2001 From: Mukulika <60316606+Mukulikaa@users.noreply.github.com> Date: Wed, 23 Mar 2022 20:27:03 +0530 Subject: [PATCH 24/43] Added the styleguide and moved readme, CoC (#446) --- styleguide.md | 389 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 389 insertions(+) create mode 100644 styleguide.md diff --git a/styleguide.md b/styleguide.md new file mode 100644 index 00000000..f4857563 --- /dev/null +++ b/styleguide.md @@ -0,0 +1,389 @@ +# Symbl Documentation Styleguide + + +This style guide contains a set of standards for the writing and designing of technical documentation for Symbl.ai. The aim is to bring a consistent tone and style to our documentation so that it is easier for our users to understand information. + +These guidelines are applicable to our product guides, references, changelog, and tutorials. + + +## Capitalization + +*** + +Symbl.ai uses sentence-style capitalization, which implies everything is lowercase excluding the first word and proper nouns, which includes brands, products, and services. (For customers to find it clear to identify, locate, and purchase them, and reserve capitalization for only product and service names.) + +Follow these 4 Guidelines in Symbl.ai content: + + +### 1. Capitalize the First Word of a Sentence + +Always capitalize the first word of a sentence. That means to Capitalize the first word of every sentence, heading, title, UI name, or standalone phrase. + +For example, + +* _An action item is a specific outcome recognized in the conversation._ +* _Topics are key drivers of the conversation._ + + +### 2. Capitalize Names and Other Proper Nouns + +Capitalize proper nouns: name for a particular person, place, or thing. Names are proper nouns. The names of programs, gadgets, companies, and software are also proper nouns, so you should capitalize them, too. + +For example, + +* _Symbl offers a comprehensive suite of APIs._ +* _Symbl's Streaming API is based on WebSocket protocol._ + + +### 3. Capitalize Most Words in Titles + +In most titles and headings, you should use sentence-style capitalization: capitalize the first word and lowercase the rest. + +Exceptions include Proper nouns, including brand, product, and service names, which are always capitalized. If a title or heading consists of a colon, capitalize the first word after it. + +* Don't capitalize _a, an_, or _the_ unless it's the first word. +* Don't capitalize prepositions of four or fewer letters (such as on, to, in, up, down, of, and for) unless the preposition is the first or last word. +* Don't capitalize and, but, or, nor, yet, or so unless it's the first word or the last word. +* Capitalize the first word of labels and terms that appear in UI and APIs unless they're always lowercase (for example, fdisk). +* In programming languages, follow the traditional capitalization of keywords and other special terms. + +For example, + +* _Transcribe Speech-to-Text in Real-Time_ +* _Topics API- Extracting Relevant Topics_ + + +### 4. Don't use all uppercase for emphasis + +It's okay to use italic sparingly for emphasis. The Chicago Manual of Style has a note (7.48) on capitalization for emphasis, affirming: + +“Capitalizing an entire word or phrase for importance is rarely suitable. Suppose capitals are wanted–in dialogue or in representing newspaper headlines. For example, small caps rather than full capitals look more graceful.” + +To show emphasis on a particular word or phrase, we recommend using italics. This lets you understand that the author is trying to distinguish this word or phrase from the rest of the text because it appears different. Additionally, it has a more professional and "graceful" emphasis that doesn't seem like "yelling." + +For example, + +* _"DO NOT copy-paste this code."_ +* _"This function STOPS the servers."_ + + +## Grammar and Parts of Speech + +*** + +## Person + +A person is a category used to differentiate between: + +1. those speaking + +2. those being addressed + +3. those who are neither speaking nor being addressed (i.e., everybody else). + +These three categories are called the first, second, and third person. They are ways of describing points of view. + +* **First-person** is the **I/we** perspective. +* **Second-person** is the **you** perspective. +* **Third-person** is the **he/she/it/they** perspective. + +Follow these 3 Guidelines in Symbl.ai content: + + +### 1. Use second-person + +The second-person point of view refers to the person (or people) being spoken to. This is the “you” perspective. The biggest sign of the second person is the practice of second-person pronouns: you, your, yours, yourself, yourselves. The second-person point of view is usually used to give directions, offer advice, or explain. This perspective allows you to connect with your audience by focusing on the reader and treating them with a compassionate, friendly human tone. + +For example, + +* _To begin, get your API Credentials from Symbl Platform. Using these credentials, you can then generate the Access Token to invoke Symbl API calls._ +* _You can choose to tune your Summary Page with query parameters in order to play with different configurations and see how the results look._ + + +### 2. Use first-person accurately + +Use first person (usually I or me) only when you need to write from the customer's point of view. The first-person point of view is more personal than the three points of view. Using I or We gives you the chance to show off your personality as a business owner or establish a clear voice for your brand. This point of view helps build trust with consumers, as any text will read as if it is coming straight from you. + +For example, + +* _Alert me when a new Symbl update comes in. (checkbox text)_ +* _I want to be part of the Symbl slack feedback team._ + + +### 3. Avoid the first-person plural + +A grammatical classification of pronouns and verbs used by the speaker to refer to or speak about themselves with others. First-person plural, which often uses the pronoun we, can feel like an intimidating corporate presence which is the exact opposite of Symbl's own modern voice. It's OK if you use phrasing like "we recommend" if it helps you avoid awkward phrasing like "it's recommended", but write around it if you can. Try and keep the focus on the customer, not Symbl itself. + +For example, + +* _The Management API allows you to access and manage various resources against your Symbl account. (Instead of Symbl’s Management API …)_ +* _The Summary UI provides users with a translated meeting summary page with transcript, attendees, topics, action items, follow-ups, and more._ + + +## Dangling and misplaced modifiers + +A practical definition for the word "modify" is to change or to alter something. This meaning is the same when considering the purpose of modifiers within a sentence. + +A modifier modifies a word/phrase/clause in a sentence to add emphasis, explanation, or detail. Modifiers are descriptive words, such as adverbs and adjectives. Modifier phrases, such as adjective clauses and adverbial phrases, also exist and descriptive adjectives and adverbs. + +For example, + +* _Pre-Built UI is an interface for users to interact with Symbl's APIs output and understand the conversation better._ + +Follow these 2 Guidelines in Symbl.ai content: + + +### 1. Strictly avoid misplaced modifier + +A misplaced modifier is a kind of modifier that is placed far too away from the word, phrase, or clause it is meant to modify and, as a result, appears to be changing something else entirely. + +A misplaced modifier can be fixed by removing and moving it to connect to the right subject. + +For example, + +* _Currently, this utility only supports one feature._ + + +### 2. Strictly avoid dangling modifier + +A dangling modifier happens when the subject of a modifier is missing from the sentence. + +Dangling modifiers usually take the form of an introductory phrase accompanied by a clause that doesn't state the intended subject. + +For example, + +* _There are repositories that can’t be removed on the drive._ + + +## Verbs + +Verbs represent external actions (run, jump, work) and internal (love, think, consider). Verbs determine what the subject is doing or feeling, even if they're just _being_. Verbs are the only type of word that's absolutely essential to make a sentence. + +Follow these 4 Guidelines in Symbl.ai content: + + +### 1. Use present tense verb + +In the present tense, the action is occurring now. The present tense is usually simpler to read and understand than the past or future tense. It's the most suitable choice for most of the content. + +For example, + +* _Symbl's APIs let you generate real-time Sentiment Analysis, Action Items, Topics, Trackers, Summary, and much more in your applications._ + + +### 2. Use the indicative mood of a verb + +The mood of a verb states the writer's intent. Most of the time, it's better to use the indicative mood. An indicative mood is a verb form that gives a statement or asks a question. It's crisp and straightforward without being bossy. Don't switch moods within a sentence. + +For example, + +* _The action items provide you with insights into 'who has to do what, by when.'_ + + +### 3. Use Active voice + +When the subject of a sentence does the verb's action, it's called Active voice. Simply put, it tells what a person or thing does. The sentence is direct, strong, and easy to read. The active voice describes a sentence where the subject performs an action stated by the verb. + +For example: + +* _Symbl recognizes if an action item has a connotation or nature of language._ + + +### 4. Apply Subject-verb agreement + +Verbs and subjects must **agree** with one another in **number**. Hence, if a subject is singular, its verb must also be singular; if a subject is plural, its verb also needs to be plural. No matter what tense you use, your verb has to match the number of the subject. Simply put, singular subjects conjugate verbs differently than plural subjects. + +Often, you either add -s to the end of the verb or you don't. However, more advanced tenses with auxiliary verbs can get tricky—both be and have are irregular verbs, so you have to pay close consideration to use their suitable forms even when they're not the main verb. + +For example, + +* _Symbl uses different APIs to analyze conversation data._ + + +## Lists + +Lists are an excellent way to present complex content in a way that's simple, easy, and straightforward to study. + +Lists operate best when they have two to seven items. Each item should be reasonably short so that the reader can see at least two or three list items at a glimpse. It's OK to have a couple of brief paragraphs in a list item, but you shouldn't exceed that length too much. + +Follow these 5 Guidelines in Symbl.ai content: + + +### 1. Introductory paragraph + +You should make sure the concept and purpose of the list are clear and straightforward. Introduce the list with a title, a complete sentence, or a small bit that concludes with a colon. + +If you introduce a list with a title, don't use descriptive text after the title. Additionally, don't use a colon or period after the title. + +For example, + +* _Response Body Parameters_ +* _Query Params_ + + +### 2. Implement Capitalization + +You should begin each piece of item in a list with a capital letter unless and until if there's a reason not to (Note: it's a command that's always lowercase). If needed, rewrite all the list items so that all items begin with capital letters or all items begin with lowercase words. + +For example, + +* _cURL (command)_ +* _Sentiment_ + +To learn more, go to the Capitalization section. + + +### 3. Use a Bullet-point list + +A set of items in a bullet point list is neither a sequence nor an option. Use a bulleted point list for items that have something in common but don't necessarily need to appear in a particular order. Bullet points can work as a point of entry for readers, a mode of emphasis, or a way to indicate importance and value. + +They can split up long text paragraphs and add variation to a body of work while giving your reader an easy source of quick information. Bullets are clear to spot, short, quick to read, and the information they contain is much easily remembered. + +For example, + +* _**Speaker Ratio**: The speaker ratio is the total ratio of a speaker versus another._ +* _**Talk time**: Talk time per speaker._ +* _**Silence**: Indicates the time during which none of the speakers spoke anything._ + + +### 4. Use Numbered lists + +Numbered lists are an elegant way of using the natural sparsity of data within a business. The numbered list represents a hierarchy. You should use a numbered list for sequential items (like a process or a step-by-step method) or prioritized items (like a list of top 10). + +For example, + +1. _Get Symbl Authentication 🔐_ +2. _Submit your Audio file 🎤_ +3. _Receive Speech to Text & Conversational Action Items 🎁_ + + +### 5. Mind the Punctuation + +In either a bullet point or a numbered list, end each item with a period only if any item produces a complete sentence when combined with the introduction of the list that leads to the colon. + +Additionally, follow these Don'ts: + +* Don't use a period if all items have three or fewer words or if the items are headings, subheadings, UI labels, or strings. +* Don't use commas, semicolons, or conjunctions (and, or) at the end of list items. +* Don't use a period if the item consists of a single word. +* Don't use a period if the item doesn't include a verb. +* Don't use a period if the item is entirely in code font. +* Don't use a period if the item is entirely linked text or a document title. + +For example, + +* _If you want to learn more, check out [Introduction to Conversation API.](https://docs.symbl.ai/docs/conversation-api/introduction)_ +* _If you want to try more APIs, click on **Get Topics**, **Get Questions**, **Get Entities**, etc. in the **Conversation API** tab in Postman._ + + +## Procedures and Instructions + +*** + +## Writing Step-by-Step Instructions + +To write clear and accurate instructions, first, make sure you understand precisely how to complete the task. Follow and perform your own instructions exactly to make sure they will complete the task successfully. + +Follow these 4 guidelines in Symbl.ai content to help you create precise, easy-to-follow instructions, whether you're writing simple, single-step, or complicated processes that consist of multiple steps: + + +### 1. Format Multiple-step instructions consistently + +Complicated instructions often consist of multiple steps formatted into a numbered list. For multiple-step step instruction in numbered lists, you should consistently format the steps so customers can find them quickly and can easily grasp them. + +You should consider using a title to help clients find the instructions instantly. Use the title to tell clients what the instructions will assist them to do. + +For example, + +* _To create a Symbl account_ + + +### 2. Start each step with a verb + +Every step you write should be action-active. It shows your users precisely the action they need to take to complete a step of the given task. + +* Apply the [imperative verb forms](https://docs.microsoft.com/en-us/style-guide/grammar/verbs). In the step-by-step instructions, users want you to tell them what to do. + +* Use consistent sentence structures, such as using a phrase when you want to tell the customer _where to begin_. The rest of the time, begin each sentence with a verb. + + For example, + + 1. _On the ribbon, go to the **Design** tab._ + 2. _Open **Photos**._ + 3. _For **Alignment**, choose **Left**._ + +* Word your instructions in phrases of what someone needs to do, not what someone must think or know. Usually, include actions that achieve the end of a step, such as OK or SEND buttons. + + For example, + + * _In the response body, check if you have received the conversationID._ + + +### 3. Write from a second-person point of view + +The pronoun "you" enables you to address your reader directly and can avoid confusion. When using the pronoun "you", the user knows precisely what they must do to perform the task and doesn't have to speculate. + +For example, + +* _In this guide, you will learn how to get started with Symbl's native Streaming API._ + + +### 4. Shorten a simple series of instructions + +Shorten a simple series of instructions by using right-angle brackets. + +Add a space before and after each bracket, and you shouldn't make the brackets bold. + +For example, + +* _Go to **Settings** tab > **API Keys**._ + + +## Word Choice + +*** + + +## Use US spellings and avoid non-English words + +Symbl’s Styleguide practices US English which has many dialects and variations depending on geography, but for most purposes, use "General American" English. + +Follow these 3 main guidelines in Symbl content, when writing or editing in American English: + + +### 1. The spelling of English words varies by locale; use the US spelling. + +For example, + +* _Use "analyze" not "analyze."_ +* _Use “strategize” not “strategize.”_ + + +### 2. Avoid non-English words or phrases. + +For example, + +* _ad hoc_ +* _de facto_ + + +## 3. Avoid Latin acronyms for general English phrases. + +For example, + +* _e.g. instead use - for example_ +* _i.e. instead use - that is_ +* _viz. instead use - namely_ +* _ergo instead use - therefore_ + +Exception: It's OK to use etc., in certain situations where the space is limited and restrictive. + + +## References + +*** + +The following writing style guide documents were referred to while creating this document: + +* [Microsoft Styleguide](https://docs.microsoft.com/en-us/style-guide/welcome/) +* [Google Developer Documentation Styleguide](https://developers.google.com/style) \ No newline at end of file From 598f64fc1fd5d042ba342d862193a79e27c6198c Mon Sep 17 00:00:00 2001 From: Pema <81958801+pema-s@users.noreply.github.com> Date: Wed, 23 Mar 2022 20:54:30 +0530 Subject: [PATCH 25/43] Adds authentication info (#448) --- docs/api-reference/get-abstract-topics.md | 3 ++ docs/changelog.md | 4 ++ .../api-reference/action-items.md | 20 +++----- .../api-reference/all-conversations.md | 15 +++--- .../api-reference/analytics.md | 11 ++--- .../comprehensive-action-items.md | 7 ++- .../api-reference/conversation.md | 9 ++-- docs/conversation-api/api-reference/delete.md | 10 ++-- .../api-reference/entities.md | 7 ++- .../api-reference/follow-ups.md | 7 ++- .../api-reference/insights.md | 8 +-- .../conversation-api/api-reference/members.md | 8 +-- .../api-reference/messages.md | 21 ++++---- .../api-reference/put-all-conversation.md | 9 ++-- .../api-reference/questions.md | 8 +-- .../api-reference/speakers.md | 7 ++- .../conversation-api/api-reference/summary.md | 4 ++ docs/conversation-api/api-reference/topics.md | 9 ++-- .../api-reference/trackers.md | 10 ++-- .../api-reference/transcript.md | 7 ++- .../api-reference/update-members.md | 9 ++-- docs/labs/abstract-topics-labs.md | 41 ++++++++++++++++ docs/management-api/trackers/overview.md | 5 +- docs/streamingapi/reference/reference.md | 49 ++++++++++--------- sidebars.js | 11 ++++- 25 files changed, 168 insertions(+), 131 deletions(-) create mode 100644 docs/labs/abstract-topics-labs.md diff --git a/docs/api-reference/get-abstract-topics.md b/docs/api-reference/get-abstract-topics.md index ac0bd9fb..e8b43299 100644 --- a/docs/api-reference/get-abstract-topics.md +++ b/docs/api-reference/get-abstract-topics.md @@ -28,6 +28,9 @@ The Abstract Topics are suitable for scenarios where you want to determine recur Currently, Abstract Topics are not supported in real-time. ::: +### Authentication + +Before using this API, you must generate your authentication token (`AUTH_TOKEN`). To learn how to get the authentication token, see the [Authentication](/docs/developer-tools/authentication) page. ### HTTP Request diff --git a/docs/changelog.md b/docs/changelog.md index e39bb789..1ddf164a 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -11,6 +11,10 @@ import TabItem from '@theme/TabItem'; We continuously add new features and enhancements, fix critical bugs, and regularly deploy changes to improve performance. Keep a tab of our latest updates on this page. +### 14 March 2022 + +![api update](/img/api-update.png) +- **Enabling All Trackers with Streaming API**: Streaming API now supports enabling all the Trackers associated with an account. [Read more here](/docs/streaming-api/api-reference/#using-trackers).
### 8 Feb 2022 diff --git a/docs/conversation-api/api-reference/action-items.md b/docs/conversation-api/api-reference/action-items.md index 515e0e1a..2fee0128 100644 --- a/docs/conversation-api/api-reference/action-items.md +++ b/docs/conversation-api/api-reference/action-items.md @@ -11,14 +11,13 @@ import TabItem from '@theme/TabItem'; This API returns a list of all the action items generated from the conversation. -An action item is a specific outcome recognized in the conversation that requires one or more people in the conversation to act in the future. - -These actions can be definitive in nature and owned with a commitment to working on a presentation, sharing a file, completing a task, etc. -Or they can be non-definitive like an idea, suggestion or an opinion that could be worked upon. +An action item is a specific outcome recognized in the conversation that requires one or more people in the conversation to act in the future. These actions can be definitive in nature and owned with a commitment to working on a task such as creating the presentation, sharing a file, completing a task, etc. Or they can be non-definitive like an idea, suggestion or an opinion that could be worked upon. All action items are generated with action phrases, assignees and due dates so that you can build workflow automation with your own tools. +### Authentication +Before using the Conversation API, you must generate your authentication token (`AUTH_TOKEN`). To learn how to get the authentication token, see the [Authentication](/docs/developer-tools/authentication) page. ### HTTP Request @@ -27,11 +26,6 @@ All action items are generated with action phrases, assignees and due dates so t ### Example API Call -:::info -Before using the Conversation API you must get the authentication token (`AUTH_TOKEN`) from [our authentication process](/docs/developer-tools/authentication). -::: - - Value accepted is between `0` to `65536` | -`offset` | Integer (int16) | Specifies a non-negative number of items to skip before applying `limit`. | Optional | 0 | +`limit` | Integer (int16) | Specifies a non-negative integer `count`, to indicate that no more than `count` items in the result will be returned. `limit` set to `0` returns 0 items in the result. | Optional | 20.
Value accepted is between `0` to `65536`. | +`offset` | Integer (int16) | Specifies a non-negative number of items to skip before applying the `limit`. | Optional | 0 | `order` | String / enum | Specifies the order in which the results should be sorted. The `order` is applied on the `startTime` field of the associated Conversation entity. | Optional | `asc`. Values accepted are `asc` and `desc`. `startTime` | String / [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date format | Specifies the start of the datetime range for the results to be returned. This `startTime` is associated with the `startTime` field of the associated Conversation entity. If `startTime` is not mentioned, then `startTime` is calculated as - `startTime = endTime - duration('7 days')`.| Optional | `startTime = endTime - duration('7 days')`. Values accepted are [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) formatted strings with value less than current timestamp and less than `endTime`. | `endTime` | String / [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date format | Specifies the end of the date time range for the results to be returned. This `endTime` is associated with the `endTime` field of the associated Conversation entity. If `endTime` is not mentioned, then the current timestamp is considered as `endTime` automatically. | Optional | `endTime = currentDatetime()`. Values accepted are [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) formatted strings with value less than current timestamp and greater than `startTime`.| diff --git a/docs/conversation-api/api-reference/analytics.md b/docs/conversation-api/api-reference/analytics.md index 6bdc8956..2fbf00e8 100644 --- a/docs/conversation-api/api-reference/analytics.md +++ b/docs/conversation-api/api-reference/analytics.md @@ -34,16 +34,13 @@ For each conversation it returns: 4. Pace - Words per minute spoken in the conversation. 5. Overlap - When more than 1 speaker are speaking the same time, then conversation has overlap. -### HTTP Request - -`GET https://api.symbl.ai/v1/conversations/{conversationId}/analytics` +### Authentication -### Example API Call +Before using the Conversation API, you must generate your authentication token (`AUTH_TOKEN`). To learn how to get the authentication token, see the [Authentication](/docs/developer-tools/authentication) page. -:::info -Before using the Conversation API you must get the authentication token (`AUTH_TOKEN`) from [our authentication process](/docs/developer-tools/authentication). -::: +### HTTP Request +`GET https://api.symbl.ai/v1/conversations/{conversationId}/analytics` BETA -#### Sentiment Analysis in messages BETA +You can enable sentiment analysis over each message being spoken in the conversation. To do this, pass the query parameter `sentiment=true`. Read more about Sentiment Analysis [here](/docs/concepts/sentiment-analysis). +::: -You can enable sentiment analysis over each message being spoken in the conversation. +### Authentication -To do this, pass the query parameter `sentiment=true`. Read more about Sentiment Analysis [here](/docs/concepts/sentiment-analysis). +Before using this API, you must generate your authentication token (`AUTH_TOKEN`). To learn how to get the authentication token, see the [Authentication](/docs/developer-tools/authentication) page. ### HTTP Request @@ -26,10 +27,6 @@ To do this, pass the query parameter `sentiment=true`. Read more about Sentiment ### Example API Call -:::info -Before using the Conversation API you must get the authentication token (`AUTH_TOKEN`) from [our authentication process](/docs/developer-tools/authentication). -::: - `duration= endTime (of current sentence/ word) - startTime (of current sentence/ word)`.
This variable is currently in Labs. ```conversationId``` | Unique conversation identifier. Read more about the Conversation ID [here](/docs/api-reference/getting-conversation-intelligence#what-is-a-conversation-id). | ```words``` | Words object with properties `word`, `startTime`, `endTime` and `score`. The `score` is the word level confidence score that represents the confidence level of individual words within the transcript. The `score` shows the relevancy of the word in the transcript. Higher the word-level confidence score, the more relevant it is to the transcript message. When you pass `verbose=true`, the word-level confidence score is by default returned.
Note that a processed `text` conversation will not return any confidence score since it is already in the transcript form. `words` also return the `timeOffset` and `duration` variables. The word level confidence score is currently in Labs. | -```phrases``` | It shows the most important action phrases in each sentence. It's enabled when you pass `detectPhrases=true` during submiting the request in Async and Websocket API.| -```sentiment```| Shows the sentiment polarity(intensity of negativity or positivity of a sentence) and suggested sentiment type (positive, negative and neutral). | \ No newline at end of file +```phrases``` | It shows the most important action phrases in each sentence. It is enabled when you pass `detectPhrases=true` while submiting the request in Async and Websocket API.| +```sentiment```| Shows the sentiment polarity (intensity of negativity or positivity of a sentence) and suggested sentiment type (positive, negative and neutral). | \ No newline at end of file diff --git a/docs/conversation-api/api-reference/put-all-conversation.md b/docs/conversation-api/api-reference/put-all-conversation.md index ba53d349..35b5016c 100644 --- a/docs/conversation-api/api-reference/put-all-conversation.md +++ b/docs/conversation-api/api-reference/put-all-conversation.md @@ -11,17 +11,16 @@ import TabItem from '@theme/TabItem'; This API updates an existing Conversation object with any metadata you would like to maintain. +### Authentication + +Before using this API, you must generate your authentication token (`AUTH_TOKEN`). To learn how to get the authentication token, see the [Authentication](/docs/developer-tools/authentication) page. + ### API Request `PUT https://api.symbl.ai/v1/conversations/{conversationId}` ### Example API Call -:::info -Before using the Conversation API, you must get the authentication token (`AUTH_TOKEN`) from [our authentication process](/docs/developer-tools/authentication). -::: - - GET `https://api.symbl.ai/v1/conversations/{conversationId}/summary`** diff --git a/docs/conversation-api/api-reference/topics.md b/docs/conversation-api/api-reference/topics.md index f14bf171..ca85bf86 100644 --- a/docs/conversation-api/api-reference/topics.md +++ b/docs/conversation-api/api-reference/topics.md @@ -41,6 +41,11 @@ You can enable custom vocabulary in Topics API by passing the query parameter `c :::note Backward Compatibility We recommend you to use the parameter `customTopicVocabulary` instead of `customVocabulary` with the Topics API as we are standardizing our API nomenclature. ::: + +### Authentication + +Before using this API, you must generate your authentication token (`AUTH_TOKEN`). To learn how to get the authentication token, see the [Authentication](/docs/developer-tools/authentication) page. + ### HTTP Request `GET https://api.symbl.ai/v1/conversations/{conversationId}/topics` @@ -48,10 +53,6 @@ We recommend you to use the parameter `customTopicVocabulary` instead of `custom ### Example API Call -:::info -Before using the Conversation API you must get the authentication token (`AUTH_TOKEN`) from [our authentication process](/docs/developer-tools/authentication). -::: -
Speaker 1: It's good to see you again.

Speaker 2: Thanks a lot.

Speaker 1: Start Let us talk about the pricing of your accounting software.

Speaker 1: How much does it cost to the customer?

Speaker 2: The software is sold as a yearly subscription the full cost to the customer is two thousand five hundred dollars per.

Speaker 1: Okay.

+### Authentication + +Before using this API, you must generate your authentication token (`AUTH_TOKEN`). To learn how to get the authentication token, see the [Authentication](/docs/developer-tools/authentication) page. ### HTTP Request @@ -51,10 +54,6 @@ Speaker 1: Good morning Mr. Lewis.

Speaker 1: It's good to see you aga ### Request Body Sample -:::info -Before using the Conversation API you must get the authentication token (`AUTH_TOKEN`) from [our authentication process](/docs/developer-tools/authentication). -::: - While you can create Trackers with Async or Streaming APIs, it is recommended that you create Trackers using Management API because Trackers created with Management APIs are saved and can be reused while the same is not possible with Async or Streaming APIs. ::: -## Endpoints +## API Endpoints Operation | Endpoint ---------- | ------- @@ -32,4 +32,5 @@ Create Trackers in Bulk | [`POST` v1/manage/trackers](/management-api/trackers/c Get Tracker with ID| [`GET` v1/manage/tracker/{trackerId}](/management-api/trackers/get-tracker#get-tracker-by-id) Get Tracker with name | [`GET` v1/manage/trackers?&name={trackerName}](/management-api/trackers/get-tracker#get-tracker) Update Tracker| [`PUT`v1/manage/tracker/{trackerId}](/management-api/trackers/update-tracker) -Delete Tracker| [`DELETE`v1/manage/tracker/{trackerId}](/management-api/trackers/delete-tracker) \ No newline at end of file +Delete Tracker| [`DELETE`v1/manage/tracker/{trackerId}](/management-api/trackers/delete-tracker) + diff --git a/docs/streamingapi/reference/reference.md b/docs/streamingapi/reference/reference.md index 2353a2e0..7759303e 100644 --- a/docs/streamingapi/reference/reference.md +++ b/docs/streamingapi/reference/reference.md @@ -13,12 +13,16 @@ import TabItem from '@theme/TabItem'; Symbl's Streaming API is based on the WebSocket protocol and can be used for real-time use-cases where both the audio and its results need to be available in real-time. :::info -Currently, Streaming API is supported in English only. However, the support for Spanish is available as a part of Symbl Labs. +Currently, Streaming API is supported in English only. However, the support for Spanish is available as a part of [Symbl Labs](/docs/labs/). ::: ## Request Parameters -#### Endpoint +### Authentication + +Before using this API, you must generate your authentication token (`AUTH_TOKEN`). To learn how to get the authentication token, see the [Authentication](/docs/developer-tools/authentication) page. + +### Endpoint `wss://api.symbl.ai/v1/streaming/{CONVERSATION_ID}?access_token=ACCESS_TOKEN` @@ -30,9 +34,10 @@ The previous endpoint `wss://api.symbl.ai/v1/realtime/insights/` is now updated Field | Required | Supported Value | Description ---------- | ------- | ------- | ------- -```type``` | Optional | start_request, stop_request, modify_request | Type of message +```type``` | Mandatory | `start_request`, `stop_request` | Type of message. +```type``` | Optional | `modify_request` | Type of message. Allows you to modify the request. See the [Modify Request](#modify-request) section below for more details. ```insightTypes``` | Optional | action_item, question | Types of insights to return. If not provided, no insights will be returned. -```customVocabulary``` | Optional | List of String | An array of strings containing a vocabulary specific to your company, products, or phrases. +```customVocabulary``` | Optional | List of String | An array of strings containing vocabulary specific to your company, products, or phrases. ```config``` | Optional | Find the supported value [here](#config) | Configuration for this request. [See the config section below for more details](#config). ```speaker``` | Optional | Find the supported value [here](#speaker) | Speaker identity to use for audio in this WebSocket connection. If omitted, no speaker identification will be used for processing. [See the speaker section below for more details](#speaker). ```noConnectionTimeout``` | Optional | Between `0` to `1800` seconds | The buffer time (in seconds) during which the WebSocket API connection stays open even if there’s no Streaming API connection active for that duration. This allows the Speaker to reconnect to the same meeting with the same Subscribers if they lost the connection previously.

For example, when this parameter is set to `noConnectionTimeout = 600 secs` and if there is no graceful termination using `stop_request` message sent explicitly when there just one WebSocket connection, the `connectionId` and `conversationId` are kept valid for 600 seconds before finalizing the connection, after which connectionId will be not available to subscribe and `conversationId` will have all the last know information associated with it. @@ -96,8 +101,8 @@ Field | Required | Supported value | Default Value | Description Field | Required | Supported Value ---------- | ------- | ------- -```userId``` | false | Any user identifier for the user. -```name``` | false | Display name of the user. +```userId``` | Optional | Any user identifier for the user. +```name``` | Optional | Display name of the user. ##### Code Example @@ -135,7 +140,7 @@ Field | Required | Supported Value ## Connection Establishment -This is a WebSocket endpoint, and it starts as an HTTP request that contains HTTP headers that indicate the client's desire to upgrade the connection to a WebSocket instead of using HTTP semantics. The server indicates its willingness to participate in the WebSocket connection by returning an HTTP 101 Switching Protocols response. After the exchange of this handshake, both client and service keep the socket open and begin using a message-based protocol to send and receive information. +This is a WebSocket endpoint, and it starts as an HTTP request that contains HTTP headers that indicate the client's desire to upgrade the connection to a WebSocket instead of using HTTP semantics. The server indicates its willingness to participate in the WebSocket connection by returning an HTTP 101 Switching Protocols response. After the exchange of this handshake, both client and server keep the socket open and begin using a message-based protocol to send and receive information. Please refer to [WebSocket Specification RFC 6455](https://tools.ietf.org/html/rfc6455) for a more in-depth understanding of the Handshake process. @@ -161,7 +166,7 @@ Please refer to [WebSocket Specification RFC 6455](https://tools.ietf.org/html/r This is a request to start the processing after the connection is established. Right after this message has been sent, the audio should be streamed, any binary audio streamed before the receipt of this message will be ignored. -To get direct access to the mic, we're going to use an API in the WebRTC specification called `getUserMedia()`. +To get direct access to the mic, we are going to use an API in the WebRTC specification called `getUserMedia()`. Once the code is running, start speaking and you should see the `message_response` and `insight_response` messages getting printed on the console. @@ -223,7 +228,7 @@ setTimeout(() => { ### Modify Request​ The `modify_request` allows you to modify the request during Streaming API call, i.e., after the WebSocket connection has established, if there is a device change event. -Using the `type` field with the supported value `modify_request` you can update the sample rate and encoding based on the new device information in the same conversation itself. +Using the `type` field with the supported value `modify_request`, you can update the sample rate and encoding based on the new device information in the same conversation itself. ```js setTimeout(() => { @@ -249,10 +254,10 @@ Using the `type` field with the supported value `modify_request` you can update ## Messages ### Message Formats -Client and Server both can send messages after the connection is established. According to RFC 6455, WebSocket messages can have either text or a binary encoding. The two encodings use different on-the-wire formats. Each format is optimized for efficient encoding, transmission, and decoding of the message payload. +Client and server can both send messages after the connection is established. According to RFC 6455, WebSocket messages can have either text or a binary encoding. The two encodings use different on-the-wire formats. Each format is optimized for efficient encoding, transmission, and decoding of the message payload. #### Text Message -Text messages over WebSocket must use UTF-8 encoding. Text Message is the serialized JSON message. Every text message has a type field to specify the type or the purpose of the message. +Text messages over WebSocket must use UTF-8 encoding. Text message is the serialized JSON message. Every text message has a type field to specify the type or the purpose of the message. #### Binary Message Binary WebSocket messages carry a binary payload. For the Real-time API, audio is transmitted to the service by using binary messages. All other messages are the Text messages. @@ -271,11 +276,9 @@ This section describes the messages that originate in Service and are sent to th Service sends mainly two types of messages (`message_response`, `insight_response`) to the client as soon as they're available. ### Message Response -The `message_response` contains the processed messages as soon as they're ready and available, in the processing of the continuous audio stream. This message does not contain any insights. - - +The `message_response` contains the processed messages as soon as they are ready and available, in the processing of the continuous audio stream. This message does not contain any insights. -Example of the `message_response` object +Example of the `message_response` object: ```js @@ -354,9 +357,9 @@ Example of the `insight_response` object This feature is in the Beta phase. If you have any questions, ideas or suggestions please reach out to us at devrelations@symbl.ai. ::: -Symbl provides a real-time Streaming API for processing audio content in real time. You can also capture Trackers for a conversation in real time. For more details on Trackers, refer to the documentation [here](/docs/concepts/trackers). +Symbl provides a real-time Streaming API for processing audio content in real-time. You can also capture Trackers for a conversation in real-time. For more details on Trackers, refer to the [Trackers](/docs/concepts/trackers) documentation. -Below is an example that shows how to pass Trackers in the config object for the `startRealtimeRequest` of the Symbl’s JS SDK. This example also shows how to consume the results of the detected Trackers in real-time. +Below is an example that shows how to pass Trackers in the `config` object for the `startRealtimeRequest` of the Symbl’s JavaScript SDK. This example also shows how to consume the results of the detected Trackers in real-time. Below is the code snippet: @@ -430,7 +433,7 @@ Let’s go over all the parameters passed in the configuration object in the abo 3. `trackers`: The **Trackers** to be detected in real-time for that conversation. -4. `config`: The config object encapsulates the metadata for the WebSocket API’s session. +4. `config`: The `config` object encapsulates the metadata for the WebSocket API session. a. `meetingTitle`: The title for this conversation or meeting. @@ -454,7 +457,7 @@ Let’s go over all the parameters passed in the configuration object in the abo ### Tracker Response -The following reponse is returned when Tracker object is passed in the Streaming API: +The following response is returned when Tracker object is passed in the Streaming API: ```js "trackers":[ @@ -481,19 +484,19 @@ The following reponse is returned when Tracker object is passed in the Streaming Field Name | Description ---------- | ------- | -`name` | The name of the Tracker detected | +`name` | The name of the Tracker detected. | `matches` | Array of match objects which contain the references to messages and insights detected in that conversation. | -`type` | The match type for the text. In the above example, the match is of type vocabulary. | +`type` | The match type for the text. In the above example, the match is of type `vocabulary`. | `value` | The textual value of the vocabulary for which this match was detected. | `messageRefs` | Array of messages for which this Tracker was detected. | `messageRefs.id`| The unique identifier of the message. | `messageRefs.text` | The text body of the message. | -`messageRefs.offset`| The closest match of the text in the message. Offset of -1 means that an exact match for that specific vocabulary wasn’t found and this was the similar match. An offset greater than 0 indicates an exact match for the tracker in the payload of the message. +`messageRefs.offset`| The closest match of the text in the message. Offset of -1 means that an exact match for that specific vocabulary wasn’t found and this was the similar match. An offset value greater than 0 indicates an exact match for the tracker in the payload of the message. ### Streaming API Logs -You can view the logs of your Streaming API request on your Symbl Platform account. To view the logs, sign in to [Symbl Platform](https://platform.symbl.ai/#/login). The logs provide the following: +You can view the logs of your Streaming API request on your Symbl Platform account. To view the logs, sign in to [Symbl Platform](https://platform.symbl.ai/#/login). The logs provide the following details: - Connection ID diff --git a/sidebars.js b/sidebars.js index 8cf69ee6..2fcd42ab 100644 --- a/sidebars.js +++ b/sidebars.js @@ -676,7 +676,6 @@ LabsSidebar: [{ type: 'category', collapsed: true, items: [ - 'conversation-api/concepts/comprehensive-action-items', 'conversation-api/api-reference/comprehensive-action-items', ], }, @@ -693,7 +692,7 @@ LabsSidebar: [{ type: 'category', collapsed: true, items: [ - 'guides/abstract-topics', + 'labs/abstract-topics-labs', ], }, @@ -720,6 +719,14 @@ ChangelogSidebar: [{ id: "changelog", type: "doc", }, +{ + type: 'doc', + id: 'changelog', + customProps: { + hash: '#14-march-2022', + label: '14 March 2022', + } +}, { type: 'doc', id: 'changelog', From 63f58c547cc858121aeaa095b7cdca3b844808b8 Mon Sep 17 00:00:00 2001 From: Amritesh Singh <88492460+amritesh-singh@users.noreply.github.com> Date: Thu, 24 Mar 2022 16:23:40 +0530 Subject: [PATCH 26/43] DC-149 (#419) * DC-149 * DC-149 --- docs/javascript-sdk/reference/reference.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/javascript-sdk/reference/reference.md b/docs/javascript-sdk/reference/reference.md index e8d3c9cb..ab1bfcf7 100644 --- a/docs/javascript-sdk/reference/reference.md +++ b/docs/javascript-sdk/reference/reference.md @@ -239,6 +239,7 @@ Name | Description #### Code Example ```js +const {sdk, SpeakerEvent} = require("@symblai/symbl-js); const speakerEvent = new SpeakerEvent(); speakerEvent.type = SpeakerEvent.types.startedSpeaking; speakerEvent.user = { From 8565dedd7b0e92640eee96613c560e45687e09c7 Mon Sep 17 00:00:00 2001 From: Kush Vora Date: Thu, 24 Mar 2022 16:48:06 +0530 Subject: [PATCH 27/43] Add logos to sdk (#452) * DC-360 * DC-360 --- docs/sdk-intro.md | 34 ++++++++++++++------ src/css/custom.css | 55 ++++++++++++++++++++++++++++++++- static/img/csharp-logo.png | Bin 0 -> 18172 bytes static/img/javascript-logo.png | Bin 0 -> 4253 bytes static/img/python-logo.png | Bin 0 -> 9955 bytes static/img/websdk-logo.png | Bin 0 -> 42692 bytes 6 files changed, 79 insertions(+), 10 deletions(-) create mode 100644 static/img/csharp-logo.png create mode 100644 static/img/javascript-logo.png create mode 100644 static/img/python-logo.png create mode 100644 static/img/websdk-logo.png diff --git a/docs/sdk-intro.md b/docs/sdk-intro.md index 36d1e5c8..3ed844db 100644 --- a/docs/sdk-intro.md +++ b/docs/sdk-intro.md @@ -8,6 +8,10 @@ slug: /sdk-intro/ import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; +import JavaScriptLogo from '@site/static/img/javascript-logo.png'; +import PythonLogo from '@site/static/img/python-logo.png'; +import CsharpLogo from '@site/static/img/csharp-logo.png'; +import WebSdkLogo from '@site/static/img/SDK.png'; --- @@ -16,16 +20,28 @@ Programmatically use Symbl APIs and integrate it with your web applications and Use Symbl's SDKs to directly add Symbl's capabilities onto your web conferencing platforms. It is available in popular programming languages given below:   - - - -
- - -  -  -  +

diff --git a/src/css/custom.css b/src/css/custom.css index c5ae6524..822a557f 100644 --- a/src/css/custom.css +++ b/src/css/custom.css @@ -75,6 +75,7 @@ html[data-theme='dark'] .menu>ul>li>a.menu__link.menu__link--sublist { background-size: 23px; } + /* .menu .menu__link--sublist:after { background-size: 1.5rem 1.5rem; @@ -435,4 +436,56 @@ th:empty { .button2 {background-color: #c1e7f3;} /* Blue */ .button3 {background-color: #d0d8e2;} /* Blue */ .button4 {background-color: #acc7f0;} /* Blue */ - \ No newline at end of file + + .sdk-card-container { + display:grid; + grid-template-columns: repeat(auto-fill, 400px); + } + + .sdk-card { + width:360px; + margin: 1.25rem; + padding: 1.5rem; + display:flex; + align-items: center; + flex-direction: row; + text-decoration: none; + font-size: var(--font-size-normal); + color:black; + border-radius: 10px; +} + +.sdk-card1-bg { + background-color: #e0ebe0; +} + +.sdk-card2-bg { + background-color: #c1e7f3; +} + +.sdk-card3-bg { + background-color: #acc7f0; +} + +.sdk-card4-bg { + background-color: #d0d8e2; +} + +.sdk-card:hover { + text-decoration: none; + color:black; + box-shadow: 0px 5px 40px rgba(0, 0, 0, 0.1); +} + +html[data-theme='dark'] .sdk-card:hover { + box-shadow: 0px 5px 40px rgba(11, 69, 146, 0.1); +} + +.sdk-card-logo { + height: 50px; +} + +.sdk-card-header{ + margin-left:25px; + margin-bottom: 0px; +} \ No newline at end of file diff --git a/static/img/csharp-logo.png b/static/img/csharp-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..760906b83947743ef0cdcd379d1a62917a0c63b0 GIT binary patch literal 18172 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 amsj0$DDj%SoC@$%8wO8TKbLh*2~7Yc62*=H literal 0 HcmV?d00001 diff --git a/static/img/javascript-logo.png b/static/img/javascript-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..4637ac92a54e728830ce5e72ff0fb6b017ba1797 GIT binary patch literal 4253 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 O0OjuLb*RDxO#KHrCLiqp literal 0 HcmV?d00001 diff --git a/static/img/python-logo.png b/static/img/python-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..49ea8f5ba9252776c0a9e0ab37d21700b42e3b2b GIT binary patch literal 9955 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 P#sMr$Y>g`n>2d!b!VCd- literal 0 HcmV?d00001 diff --git a/static/img/websdk-logo.png b/static/img/websdk-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..47cb8df0453740ee72d2874428e241f342811988 GIT binary patch literal 42692 zcmV)mK%T!+Nk&GzrT_p}MM6+kP&iDmrT_ph|HJ77n$#|gAxGlHJ{^y>2qZ)x)NCS7JH^Z`jxNRk7#;M;F+ zB)i(Sw$V{k_=n5P7;f)>Jr^)bp0TW7RaEAB80`ERUc+^5TeUK>bF#C8J5*Xx^7-!W ze1^lRaEK(^woUDszu5p=uk_n$ydCF^IJ*?Q@fz?K`#%BruT)OUMpBLk^00C^;OEWc zznN@MRt^V-Usrz4P&1R-?GTy;NKs^@f7E;=Np}cRaZJ}-t*w?gu+qc)Xv2O+CeG4f|z5!Ta&C#0SEek6amh6o& z$AYYZ>J`H&W4z5Tzzc|_ZE>z1jy9d zYR#?G+)BOt{`C5{G6f(KU50|^y-n#=+p89ct|I{OtbfUU0)R*a=v8+((52KepCVxm z5Q#1$sLaW!CE$F^)3azvks)D2Zv%kbV-A3jGS@i(dRvaSKqhHuD1a^Y06Dqq+;!$% z<{1FacK~US`5=Hj#|O~Y5eI;wfqammktE@RoWBRa;R$C-&Nu>2(08_dIwteeTTe=lyI8C$d7|0O7s~SBG_ytnj%44?OHb^#G2ODo2&aGC2X8 zs0UE(BTr^kpa7az)#>Ov$BvAO>RUJMd z4#Sr*GkaDQX3kh)Fr%#CRA*(jI}DvtV3S{*jiOX7DNH*MjsnIG!&jp!vp=&Z3dli) zL4h%L&@k1tH7;iO!pVGLHj@^|%p~K2nb`_+(q`y2(}bCs7tEjygUbCYTfQUNR&Cq1 zEsr{xC7xf)mJCaYB?L<_nVFfX*OI*1wr$$Bwr#nzag58hZQHi3s9te6F}Z$SY0uG{ z+-%#HXE~GaeLso)3NtVR9TU(p00$KZrS`NOY~aoSEMUF6mTvj-c`^ZXtnFVUE5Bb! zOLgP!?(XjH?oQ_J&Jx%RJ8*Y*ckA&U!N*Sj|MiRNJF^6`t1)_Aa$Gh*IK+g6tifZL zLwI9c(|Zoi9&C0&NNS-=OitvG-cwlQ5OKF~30)RI>XyL<++A|_?5;r$ZQG{yoclii zdY}FK({J0hZQHhO+eU2Ls!}FZN~6^Gq+r{2{Ll5ge{;5txTLxzBQ7o4)%LQ{Y-D@Y zO6E`B_rreQ``j@Bx}X1F_eOI*w&VCV#)-!PCxc0bAz9|#GBYzX9QL&T0W)(4%CyW( zLk|pjc!HBSiNj6|2X^M^(f9lHZ(&}gWiNw^%h9rPpDmVKkEMlK-m>Ll_Lf{8-AbQA z){+aE;& zEG{Nlkr`Mo_7${k^n&N=59M@dyGRlVVP zo;zLF2bD_q{k+e8-IwOmVYk#)kEaN>2_mRXT4FsgLY+it48ings0cM zGjfL_T3V*%JPV7FYt7i6^f-y+7M&d01g*voFKPHo8+92?;?x``(LJz3|$^ zIA81TJg>{^Jzvq9?|DOLn|9k%T{O|eS^S|eR z&;OqPT~CX#MX*Q)PaHjQv_-tOMasind*a~1@Nh7CA`Bi36G!*$+Aq>?*M1Q-v*;`~ z{Wfe!-zC2v^rRB!l(PjxS& z3y>FQUVwRSrrDYP-YiVBFw4v|jLFXkA-~?w2w@UTaZTd3-SnS3lGVLMQb$nz+i=P| zS&Q-y-)2{qT`1RJxdMM;aBmdW=4}*Kgw-YU*0iLCHI@h=pYQXPe7+Jv@p9j4DBAw0 zBhiMT3Plr0cmUxx)M3m+nFkT*M;Ag6j6k|K-5ZJ^gn^`l^gsZTz?%+%0Hk~Smf-2P z1dp0Uz>R+M`}!7zc!)$a!0&_JfV4zE$v(f&pO_XOA0MBVNIxgwna$!X7UFQvWN`-W zDL7+sosMG^t`o3KWMPf4oP0^DRHG1j6Cq3pzsZY!zF)l;+MS3PfW8mS)=0-7hBIY9*OTZ;8Y~6ZRs!pz; zc|k$@f^)y)Fe3NF7=>X6jG-8Uh<;9z2SZ_Dp}o)^2 z9MdB)9n0hqjKpIXoPuL(W$H`g3ktetc!tFh$Zv!Ap(OPuu@6Z>#QGuu2!#-62!o1- zLI+kz=Tw*i9UUE+MWpxyQ!!0sVie=YF?P>%Pi9`Q3pT->dh&9YUV5nzVMBhq#P3V` z0Frx?7)0E~z_wnHm6g@t!g`rD8DgQlygZZSKV~Y^6Br-C$d&24dphH>3f5N@e5oGW z1-%f}^@4*4y?xSmBds6ly-4|!zz)zG`ao5d3u|X<`2?50daOexo&D$JUMH68Xw8g-9s0TPFmXT5P z9z*w?@j8|nVfOl|5G#aeA@2Nt`Hn~#PC*noy-0md$Qb}R5#SG4PnUW;W1tq`A5LQE zG4?DQWJy_!MN>$od|o!^j{Y4|z6&Mcq&+8LuzmnUf(z?w+S;`vVHyC5cw^{2 zk=DE8&S7*5)ALN9pb!$D@ELypJEUST6=5VdlCv{JK?T;?^7*Gi8<0d`A_K?MaF5)( zS2~1AVcp#23Wl|UdN17XlA8Y%MhcYf3F{qLZL7PZ!2`VYBnD5Q{;s%mI9~uDI1W5OBHq(!JBr7jn(HwP2`4$)TMY(CqqBNMv{PA4-RO~v2z7`|3{c{Vckyt(e36azu2&cec_;CVO<}Fu-CYXgQ znoFOO9mmjHX`FJeb*)I|-yg=l)Ex*TU>~RwusWZ8znKt+;{+~$Vz!>bV5LzK1VWOK z6VChx!qAVp1L5c1PlJFJ`a2#8nGlElM9v??W?{@A36VmP9}6E8%~0NZAe?=ofae|X{sZA?xSuQmEA`26ICR3lKZ*?>nRCkw(8~$= zSG{el?}c~X4dT0m-QkyFv35qod2aH@@aBsA@8fgV_y`F?ZWJ>gjDpc*9RmH}Utz(X z1osXL;m3^P+8vN&b`}ezLevLFxeM<*5b9r6z@i-khe9nx@V49KGeW4j$^G5m__i^= zH@@~c?sq@v30SvV-f}u%L)VW_zJIExA~ZBFxI7&BJD|2V8SDX3fTjDj$AEBh_vTCQ z0KJLHUH+oCO~Ou;J$VF_V)_21&EShPoVVRJ?}$cdTwYL!3rBWqlm`*x4|_os7Vw-e z?t(z#`ts>_O|)4lTYi(TIFRDTUJwdc#Iu^=;y@~f@%Bc8auXpc4C$><`j`Eoq!`P1 z)mym0MpPspyaQCmFmL@3#2ODl`-a1a3n!UdL;#lboa+NN zvWHM)Hnv|{_V@v4(wniY=hQ$CGy#<78Vo@(Hv(A{sn5AB5U{YfXMr!0o|JrGG{$1_ z=NpVBoOm`=VQFvvr9cnT29s(i=Dyq>#Qh+OvAkCSe(1v~FcD>o8HnMhRoJn>+wI_s z(ne01ad^3#gdvF_t}zhOvBc-u;o_h7VF)n{Z@4ZJMKF4Dim}KScL6>acSL6t);(1e z;Wo5XV4-gSe9#3FYY^7uMxpg5jCL&b?SK#Ap~M>lL0Q%Z^<%f^VX+T@I`}(D#Fzm= z@P>pFadG=5EccsMLhfstfX1itLlBIrvBrS~-;oZDulZpSI=;pgHbgc;$tuQ@Ut9rP zTAI}1HJ1I;o`jHxWxoyxX15TjqiZblMex|G7E5PfG{SpE|LH%T;!Bg^OPC&$Ho01N=1EjNh+%NGKP z1S@fI9|98q7n@)P$CY0>1K(TY<~|SxF}Ud*R%IoL_;7O{27N#fT?m82io>6XA1C*L zFcAo%e|-m)FZlT8I5GO9LzpC^0GUfBL7tF@AOzza|E>Fn6A-*11hlF0YBTXC;K7M` z7YayFv4xO&Ly{w;e5X)JdW2C@fdxu9tOK!O7Q})DFyBZb=EG80k9S-;oIn8U0eE$3 z)$7e-g?PZE-%zY0*a#*dGgX@M9c-0}S>yfaUKroIa zsxjnbM=;A55Oat%9%31^K%eztD;bus6;)XmSB*FT{4nL~kg&oOoMdCd#g=>mF}-4L z`Kn|BE&C_P|o$-LF zCQv>Pe|mz}3IQnT1XW8{KY&&x^HXin+6g^biNLBcm1m7%Wd=5~G1C?P9Nuz*whFO` z!Bk6CtB!uKjH1e-74T<%09Jhw+|%$)#maQRNDDqeL%;0x5SukESN&!5D(UW8)!q&wQ5P zk8`6hK^!x>#u@Yz{02qE=>Yx&!)Vu%C2OLYO<>JiV4BEC(A40MXyFq)&3F4ncX?#FUqMG}J7YLzujcy3`$`K3_3mD`I?_K|!{Xj_Kl~#2$ zGn{C+P85JEgnG>o7S|lZXcE3LfH`gr8rJ{5f>}r;i?OORGfOwPO6`1(+<6@pi= z9gaB;N5MoeMr0+Zum9zWO(2<9S}oB`b|RU}lu-|1*!$C|6T<9RR$~}W^J0iwgGcr6 z_hOJxR>|(2YXr(&Vg^)0Z`uW?J~*!yO$Q##a4l%U|Lh1ZkW|Cp?cupBldD86^nh^g zXoIjUEF8*k0;}^e!@R%#&BK?0yq2*FqtzJqc9ZCaU_6mL)&wCaSgwqHDl-KhBgB{R zul<6L7IMo%tclrXnB1h=3ZW@h3WMK`g40TxpH+YRbkgY=q_ZjH@3$UUM1 z9Q}AIcyvH;ExR|`&N&eGt<+V z%g8W4L4UnVzxo=;vf--0%$zS>qe)N?J1`wWv-$~>lkkk9Bdr6|E5vwLei^g@i6%OB zom*9rD7Zvq&H@~Lxh<@!o*>+MPc*#sv4G*7;Qv_f%iRQWZJ5fQonzSH67jGQLLidU zs`tC^j>+lFWE2=4K3@0SFNZ_A2{Wr8+U=3FaEA)Yp)Zr6w5pvDDtzEX>eI?Gy7U|G z=K6oN0vW&3o|t0>$`zuc8eiCvYr>k+32zxr;Xiy>jBeIFi&x$K-yrK|ob2H_%)<@h zVPOY+12~{^faU=?oo@c^6Botu@jfK zD%vaEGM32{#Xu04nji1o`K@2K6(qxP#+lo!xe1Qq;V6Lq_y@3E%`Po@?^GWI!vRD4 zf$q8A2~m+885Q%ZH+p^*Plg9}<(bf@WJ1xqVCgWlt(aLd;oUp_pG!`VDD@+2-g(2Y zC>=%sR1M_+DkjAHvHDJV&mF?cni)P{_oFAVQ6$axGVi{93#Bs?jse)2{vJG5uQDO; zeIxsH@C7ij6TENg|8$cbB+zN**FXQi6%M1Il|a~)&6Ua}BnRUd&if99fnZ|zI^O%g zeIz8)HuLKJRb_R0CWe!7Z)(ERW~hD zfx5wLS)*7&N*K1my#2to8Yu|5(NFXJJp=L2Of}#-IAWh&UK_2aIaa zQuq4PdPvaB8}sH{Crk27PreJqZO!+~kRQ{+RFFhHJ`}~#jm=ZGJUVS-Z1z>xB1b@N1b5(jDpV#Uy&DogEgS%5 zge-VB*ZZCtlKyF|Pu}Q^J<@rl5H;ls7 zL&1P>rtaw{J_nSc(BU^MXQE7aZ5U3kuwQw;{T<*x0(mLMlN@;8*S!syfie^TulS0= zT>Zu~L6xkY4Lo0ezN0#V;2*zz;y3IH#)ETpPCxVKKrv1Tnl_lJB8i2gf%IV<65c4z z`8M2rDa^<-92M`Ey4QJns7KCj(6B;_65$>JZka`Yexf+v{yh-(>0uCHHpOP0H=l!1 zp(Ja5+w!q0ku8&e1-tT{B}yYmg~(eb`7QsI(Wv-;u6yNK=mS;x^ZZ9EWGIm8*T!)x zJQU6;%@gi~YbL3!n9Q3vZ#@TnKxGC48+5gzJowr$41Wk;Q<{JLZmIM|vIm$9zwWp- z@79Cj)N^D1_{f4(9eV+sf=KwH$_R=J_MnQL!Cb82y#GGvTBy%ES=Tk+ah%$?1+-1( zb1L(Md!Xq}W{$&H_)ph8_f9B;64m1URlh`OPzoa{{`Ly9{GC$PxF=vJzkIz%f+`(n zzN>Z3JE@F|;8YMkr7nV8&<&-6TNsL(L z!9<<2AH?QD(K3|gt(d1Fs7k_-gL^EMf>u$4*mpsWFVYw^amIV!h2Pu?5cyvp&u9ozGC5> z7rrc#c&deCyrOwrMzIVqjCzsYFO(3#IIeyF@srg;Da62R-lZa!h9U1wMpX|m2CeS* zaX-%lB=Fi1cQyYli*P6aEV>;5mJ~3Y_Wf^-qbLPmhya}9Df>$bB1FACQv8rzA5+LV zI%l7Q*&ulN*dIdHJJD3>XsYw&ocKsyf&JV?cPjdgKZbQRGl+2Drcv4W@zwUOVEh z_kW9_n1ANRVY*Oy^-OO4j>;ecpdgO7tH%RJpy)+vm&*iHyx(zd<>`^U)3RRZ{ZC&L z16n@Jgc5}9tjk#ETuBl5Ko0H+7`(R*nbWoiw`iuj2isdy`F(ylY3?)jTC*I1~$% zc|pFQG?&e@S~p;DmB0=F<3XrVjtd5mP9$ib5K;Kx55X`<;6t@+&DYiQSQ87JATn=D z6rcrS|M<9-3h08`Bx+S-@t^EXS{U>M&8v9-#J%<+bRvP5f1!1qtCkUB`u$55QsX4{ zy+`J2^4nBJ>jcUKsbXAk>%{aRv=qI+N#XrJ_=77DML2H+mw;jV_poP$*W4XV{A*`hceWw#B~|37^6Ia)e86Xq3hP z##!%Rf6Sc{TQN+6AD|R37)26QdKUjKX5N)Gkn~p~2jnCi=HYg6030Lp;AeWSx>f}l zY9Xky$Y90r5Ii4DLgawA4a0wW7zkqIdZA*lDpK(TiDgB0HXcoQf>E=y}T*zvp714u#p>5iY?vB4U+1wLjE)jm`un)=mu5f;%9@F-b@dIdnWbS@xWRaK}phHMghaHI4rC^%; z`=2-ms7SsU0ZBOIMld%=yI~vwW;L0sUosyRoDkZJ7%Fs#%ym9r=O??MBuNK33{u5tD?1 z0j5C`8LF_(4^beIf#A{}vf|ud=LcG$DnCugMYx|#-ia?Tr1oX4BTbW!qY(FWjN27K z2-zLA58^^}H(0jt&WB(vP?y4#G^A57C@}^YDP%tTQlpZ1D1>Q<1%oOKMvv}{biS$c zbw@&BlBVU5rZNA-8V;9vf34T(Oh83Xs0#gw(4AM??uDQq7fQzz@sds zhm(NTszL;My=gt>aVJ1+Rsz-#2ts9$GEb`=@dk3$K2`f2&YEcKFdhD}D)d69H7}h% z`{^`Lo@B5RPUn#sZiJMW1FoC>^b0-NBvS#Is!;Ms*tMn0>!EPp%OgowI~c|N1{&ks949X_>=l$2z83@ zm4qe;HQnYEkU@>qVCE#7BB2lO7nia7Qp@-TYEac4qlSbNCEhcZfAv>q*9Yd0?Z;-4c0{>?}4%%E#<=c?YkI~blPraVICPHQRWSR zs|C||UHH%Q1(o93o-9VN7LOaYL^hMQRFdDR^;`cRJDiU?7Gc*s3 zS*nJ!iv9*mdaZa}a%qZ7Naczt6UJ4F)_|)$71(mv37{XC)&Dm$~D0T@2x;NdtsIud{rU1QGxc z2VY(Z)`g>?T{rj^UZ-mzNfU&(dW`QmRTT@c-D!aakN9z`AQ(jLQu0(FDm{B!EBMFQ|7Bxfq7`OAenm+X28sAUHPMmg{*RMHVLPL zxpE4rfUxRyZ@?pItb}Yec*8)#sM88A)oVlOLVyFDbV`VfnS*(Fj0BE|kolJ1>2=FF z>|PwGl*6e${JO0&&^n+2N3W-3X|iaCCPAkLHp2D7A8s%WlJx$j0f7=Xv&wL(BJ_@c z>34dayj*eYL+*xy4L=#ONjChR6ReXc@?aJSQA)5PfN=8k;W?g0XhEVrGLYecTxlc_ zDc_0rlq&}tK0z@I`GQIsN+&}q9YDax>snz+f~bR;@W4v&hr(F!4;+Kr@R!0>g=Ueg zx6^|$@-++96DN%Vm-konyYM>mQI+Tx-WuUD4>VHJigW-P)$G?lHL^?$qhR32Nx&i* z9LgdX0f)eM?)*8tzJDNjGcT`WmdDIj!<$9`a9P}j+~L(KkqKag(MmYv9)<}aW=9D@ zYMnHDgAEfxz(afl2P9yT=OYUy8;3J=|NqzgwGrxrM6LzpgUzBCu|$GR{h9cEc>Nhg zb|MnsaB;iZL+LyYBvm6e`^8VqB9Z~4Ae`)31@LesS&-xixbz&w>-`6kIz#5Ito<>v zqv2AG09eL-6t{EMj7aFY{>})M!K#slyhc(0>j2q1KW11HK^P#};-CcbGjj&+VX% zgrgi0$)5S-t*k>aQlnw4MgRz{Zhh|H&rKA#ekB}?BlyS*U>2Lb|C6UyM%kG-0Jrh4 z+Y8k};@9b#xtb->BN7Q7-5=Ab8@>)#Ojme;0EEn3(0q^?Y?!_Iqo1BCqU=n?_X+v) zdOd%K0wgHRH%2s8)fmY#Y@z^!A#R;l_UFG-9L%`1-o9e*C3sC<{~R zxlMn|Uzx9lBE0vDnfs#Cj0FGTwr;HfC;L=FB4|jz2$#7*ZXrOq!A_YP?9)`0&tgvk zS((XB$jF@^ulsLMhE>g1JvCOjMv_O10^qWEPjuTSSaD=H!lE!(2?q?F_K|V}7>Uh( z_Y+fv>OH9dEMjJ6cm(G@X};#YP#q}6=Xo)+Og+R%K$g1Q*O`L#2z^2kN_I@c8KDtn zaMzO^OboRs)Sy$<%>xk-K`4dbes%8R$KM3Sm}*$B_j7*yuqc3+b6e+WK7K+7TX$8$ zIhHqY$SEY)w8U8(VcM9|J*(=t&AsCVp&mQ+aLv7%rO^XPqX4`Xo!SJ;x#$9`tb%Y; z@|;03geQVEggPiyv~-As#X@m}jNGMt=z8kVr84#>MwuV%l1Zg((%~=?32TIi3mgZ_c-Vkb&d8r3u zRmRNouALD8@OtC?8Gms;Z9pnqowY)0*T@0$PAW7ocZD;p?IY1X66G$50RmY#qr;AL zXGV_>Cii-!wMOppN4LFDpBmW@KA(|hG_ApE3crsxIGc9OAA;2tCM#(u8d|IJ>R$K5 zm0LT7w8COV7~O3om)KF^a$D12Gm|FrjUKmlc!suXt&=T`i7TMmfwUqCFoZaB!|fn%>5dsL?ZENoGtJno9l%b;2wJJ0-d$Z060C+t)o4+tZm-!=zWGccX zH&IE^+KCk=0ubh;BhD~vw}2%>%UlUK9BXNR4xOHd4ftv}xGLvjzLJH{)~K__;fD(A z1k0;4MyU8Sh7I5G^1G}t`DAASb7wL-TT$(ZA0QB?@bpMSAhjX@QG_$T`18VeFOr>z zM^#8a%hY_C zETkpR>@JjyU+X#ANAhjRA-JdvlaXiH?a>3CcYTo?9(BEa@A~LVZun`H4IdrjC!@0! zX{CgL**Fu!0%@pKI;2_T#v5FK2?0@k(vjAHGEKKMqH0xYr00s&2mpBfQ~3P~=H0PB zq}zZ;Xf1POxw<5S3!!pd?7LaYH~ZQTd$p-MKG;hV)P;xbAmpvIa#@5q%&oyjuwk&u zu%Q7j$7P;yF+;15j`oqI1+YWqERHb5Qmtn-UlyXM9`;CXYoS)Pz*u>hh5Yz561-aB z+so~5e+1+b_EbvA06!j_>+V$lhhxB@y`Q6;BE2gV7Hj0onquTH^$C|FF5_aa$I z@yN;T;KSB{Voi@`#QQ7EjD7e>0B>Lm|KP8=0gxMW?GP4+2}cg!S{8~-j3}Uo zq{Hpq!hZ?Y7hKS?R1D~n{t8}y{C)yaCZPB&cR4E~Ou5u308w~W<5`3-BIzQ!;dR`n zg}T*4YF1*EtR6vo1gKgi!-eF3TDPYQr*aZ-@p_Io-eAS;(IT0lP#2*p-&U3Wwec** zS;%ogLSAQc7hlf+m3tU7zg9(!R2Z5F04*TGnvZbX*PpJDI92)JyZTf6pL;W`S3yg) z9Q=sA6v?76-oy|B>GBauo3DOyn}Om@^)Rf8{lH(kXapFKj)e(?V9Lh&!CKwk^+p@W zhAc%3E)#Bz;fCx~S7dYu5wCdMZgLl1&j9s%ZL8#1rE8>=c^d&xT^F+X8s6Z3p1;bD zXyK+6(X}C_H7aD08gFnYk$`ZPIidRmDB(rF%BtKC)G0eL0_hZLy+yb6rpndRg%(d_ zJ2c#yy(u>?Kr}2S#vA>FcxB`Ekh}1DHK^iiTV;D>BdH99B#|9|BVO-u$NVAdqa>Op zMAnALO#tF8qVWblApyxe%+zb*HWmu`H6PD9xK{qrh@BWwWtH(07d~3o;9;nwF~+5M zW4NPy_SPts+qxb9FU-h{3lNRZqZ=6yswo|w{lziM45?K-R*purqoe5xq-nnP=b;*T zcF-`4687l+PFw%Rl@&C6$lbMcf4GEBjo`A(wG21H=t+;Z8YK7Z*Vu6( zK0o%Kyn_*GAapZ5$Stm=`Ba!@8=cx^c4q{>x|LyEfgxCK@DVlC3S-Wyla?DV2JFLd z&Fr+{r)`MAgV0e$B`u~`^2gWh(wp%4D=4|QNBa9(4na}8kT}tJ77;u$sgp9G^h*`! zceP{0-C;y?J0sRkJ%A29#I+cHPP*vSt+!lZA_fmaYv+7Et7!t%C+*!^;oW2#gu5k+|JO^$>(6 zgEf4G!kwP?3d~oH*a^^SU2^KZRz9ol?{hOxbrReV2JJ%$0|as14qo8d^ZEHCzu%ZFol&l@w8~ z#gIPqo)hjj5GN40O0X%HJ7RE03ji1@FKOkfN6u1_kb}d!gXC+wWRZnm?!xHu*1N3L zb@r~sj`AagV>Aq#t*-e+*yc&@x(ioE4~+)rp>OpRwTf&_uoNf{*lVg-6VarfoStY~QT@Mu`C z)k-d+XuHZ?_Yi8g2!sY3aBV*53@rdtjX3S9`B)9ras;Rh{`Z_G>yBsPk`N+6=|Hsu z6{A zf$=8>6G)dw{6XdC?9UFJ-u=_8eOYlsBa9If(E?l1`Lle%-0!5Lh+Tv|TXz%}u!~(D zD^Hy^BO(AQdu1>e^^Q;v! zG3W>5LZr^#Q;a?>GUHh!5D-Sj<63eDmq44D2YT!nv>I{PRTjKM`b*p)3oQ;y8Zf069qxIKLi9PyX!6Sw% zlE;&@odkNUQDPO;D)Pk$pp@UjU&5QlXR?K`rbqydoJ@uGUXD0&#Y%6bH&y zuDcsFcZ&kxs+|61cHKE)V4rADk3djRggz}6<_lshhOAF9RuHp3MQHGbW-3M!MzTf} zyCDWgdb4;7dNT%FS!`rc0O!b5VeOrbBf_`?sD4j?hrz(RU#^2Oq<oa9MmpiXe5{%uwv5NMkzndd zk}{P*cdHsstIP}NVGc#{4rXrLLc_T0_*)2_)h&i{Wi}`HJkTKFn9;kpPSx;mAaRU?`3Bc9&T&pzh1i z+f*YbbMRb1^UruhzwqcAd$Zw+9D!?R$1W6QXKTBTsYZ$srcTR^3#`{Jb#2 za*!lo+lfGwU)o_gsjm@QTQw7EALjFJhR6e9_Vt)ksCV+@lt9q}+Zm)MHe)d&+*T*~ zteufzS?@W8p37Svp|Kc%_RM}V72LEM1%RQ2_6gXmpCnLDlb%I%5%3so!&pl6k1!K7C|x%qVNM{j&^g|?!EQQ=0jY+;E;UnDokAo43Qgu4ue}olbONeQL!$Xf zpp}ZI5R?%wXJwyFyGXo9dcrRuoO6ymcY1$d9Gcqa?;6#P?Ou9u;0MB}! zOa)eEJEOtJQ`TNOcyQPh;$^E#T|~*HvYUqD@yL@ zUF~9CYtLvZ%e(zvCfIR8QK0hy?Y*@t)Ja5xO5t(xk1{S1^mnKpI!ew+gaGHOBdP9J z`@o)G*e-(n2a$FNgWlx0J#j~ei$zJ+$rw@EIW=P4GmQX1p<_;VlnF%vXy|_W*IH>^ zG!npHvH7TN&e#+hEC=$S5ZSx;>CrAo~R-At9LgUB0gaMO|ZL9~kn{4KPf!U#gw8saduQm}GN7m5IzFG-ed zD-wWf9dAU%&SBC+MS`|Ktkcs%8|O;`aE5&42ahMGp8Iq+LgFL{3)$t9DOV%U=7_Xy zO=obOuG`*X?v1|SH}Vx?)9=9bLMC;(y8XOVwYr{5_F z0L`E8YRnCFHoZ?`kug+;=FVz0{tCu61YHRz`dd%@lR?-6Fu|!WM!_AVmX= z|7NRT?DU>J671pgb-L^H66}}&Zjt}1Q0GnOm_UFDqiQB3Q>nGb`yg6jHV|x~eVw7@ z25X4b-FD4X`$)T`p&<|{b}MwY_O~cNP(IX3HB*8?cWN2|u(i)2->5s*#iS3pTDZ#h zP-Sjg`yD8fWxCMGGG%=3=7_W{P{bM9$-aOxVs~-7B32q3hgarezE@a-VkS4OBp%#K z@d%M%inku8o1MQ~`h?MZZK259`otEAlAw&3^xK|jD5AZTH`o8eoo-th@tc})zNuZF z@u4C07vU1xiU|Z$$Jfe^U6P-(R2l)mmG~?Qt-Qk4l81Z)$JTsNV@m`q5=HrLnF@c| zeGu(p!RFq<8CtHlhFEUDW%eb^w1fwtVWV160qs`04{jxL_DBG4S*NqkX!uSgZ}ohG zP~v;^VH_mLbfGQ3@N+juq*J&YXLt+U_4y?b#I_kt=A}GUc<|SK+HWWq6*_e?c2@1; zoMS{91%#%BzBsMxab^#xL!qgAEULl^^#q$q4g_VyM<4Hrh9X*_uDfWVbKU8VDI>nC z@6O=7WO%|7Z?vB zM`wz-<-NjL-Cu8EFt7UE!VyTnGylL9Xc*L2?w27zB*V@1kaRnJtW;7&%awXdH2-G6 z=_}U|`>of~!(`a0h9*?FJp{rbJH^*-P->TW2_3rxGhJYh=nThsHaA)w36LB(gMso6 zHk~I-B*fI9)-K?qKY+P38ZM{l2i-}RgAAr4c3_?j4c?sB6b5QV2jE4%(2PX$VS&7* zH;Xe8_k~>J6eL1tNcB~yvz8Qq_c-N?ym~ZPE?>_p`+Q{p1fo%6FgS5&wZbE}5EffP zyW!vCWs2D}9S~uUzk$=QJI-qiL_+lD9K5;eavl{4l6j$1%%xV^u)W|E4_U!qTf zNdh>BmDD%AWh8*lBHtQ!WCOVpfQQinqv1%y;@jjOFlu1SXg30yt>g=b_Ggukar$|^ zKs95KAl>?-k>8Y%gi%-gWww9xcR(sGLc zkST1o0A4_$zZxSVOQGxwbOxR1bKM?^@;z0T+tq{tkc&nLRwifG35^1PJBQP^g&`J; zJuLfhMuMSjbUBYdV_Hi4^4UXX%X$)bAgRKawgOrvx z1v!cYx|0#i=O)4pY46QrfOqDvRk(7mzv$_*o z7%o2aELP$6> zxrQJTh+1H9)fSTO)72ll&15wsX%uaT@i@sp#hrCv+|2(jb(gWL8kUCcG2E4zq83i7 zw7wzn;D=@p^Na4Yc?5v4ClEH@nOw7Rm3F(k*;h6!g1Ib%EY#vqrL|=8K{Zpj+3K2% z?iK~ca6=v?*PzFiKw=5?S2uI$q#+51n-f&U@ZCylOacPTaI(i^r9{WJ8UY|I_*|N6 z*BRJ&3Pfy=kjJOOsbaX6(kjav^I|x`oKiHAi`VF>;qc(&+ zqM>G?7OOg0rPV20RdT{m3SIw)o0&;Tbz(J~yKG%(uhYF;P0^rgXPB+_C!Q(_Kv?k> z+VsPEtBoP%AwwmsltHT)^nh%pw6<)Or)o_@w##7T(d?{{rDn9`=1qmM8o?FE11LOg z{?Wd{#}^BrQ_PmvE{INHP!t4GK2ol3^Bo9nV~2TWR9NNVt*uJI2n&?9h6a*6VyqGD zsZ2V1+9^OMSx(C-=C{pbn)_p&5rly$#e$tKaS4;bh7kbewl8SxKb7@_rRD$JK1Y3;@ zGsP`K$=VAfDJhPo{ zwuE=wED~@XxeoFzXU&vAN}n0W9SCMv$M%*W5U9j#1*z(?_Ru~?Mi`u)=g8~+l%uy53Bcgq)6PjIALeExfV)KFpLopHO5R(3;yDoZmH19Cq7*V!f$ARGCuiMJ zB&7Zj-Oqp)_+d_O-~NXb4Nj>0naLwl9K)aXNN}O12AqlBrd-;pdSL9z3!xwP*kzSq zC1ZrByzqk>K0rD)?pfmlq9vBO25+|cj<}QM3W^1IKr4Oz-^)h>JEq&SgQiS!#MqYu`7LDxkxbjM}3Z+ z8y#;olCrnfU+b>;A+^#q#oiaYK!O_9lvn*BQ&hr-+NGnw-l@-?btjaHQT6XiP6%pR zG*bxXS8C|`;xJeRs8DTt!0WZRwC$S@*8{jnAn~|`ZURNd6boPk`{JKt(uf2=bA6At z=9rRop1OBO!%_{4YqMh@vQ;J2zYcRnfgyW3{a!;NG;cEdV+3_DK@N(NobcTW6CNu< z+d#t6$9U|#hdYTu$KQ~7fsfbla5=Xf%~j|WgpJ{Q2%9M0s^*13PhB-uTDFL0pfgSG zNxcom)=JZs*?&h5vW$@1f}J?6TdgUCE$U7P6`naF^9ffg4|T7}fRcj?A^MuP!g~gS zI>QKu$0r*bpvAZUhD>Jbs<=-iz-^jpTbLkFT9Py$>Mu<8xO*aOaOth(GXVU;1TNIkn2JaNd+Pu zzM{9G%eF9LpyZuVQorRlWb^mJosj^(kfwT_c{eCE!|uOZO$@pSy{++%FI9s=?DiH6 zp(0zX-zjo`DhG8Z38d*lq_^=maTjsf858V)lG~}l$rM>vRWq=ik>EPHehXuK*k0vQ z(rKpI?OMzP5PCV^V4&i(#7tZ1H*b=t89X7KU&Z6R0xNu=;>W^`PNC4#f$o2UD z2n!`4ooc6J=PIlrkTkqoU6)`^Q3&7C<3^#-uhsOKjWx!d?yr?b7fpiDx6Kcj>&XiH zp|qzk0%Zl>T-dPi9Z+Px63~0JY{O^22V@@(3hbr9p%2 z5ab?-(5nyNuQCP-(avn$aiG+h2R(mfo*c_@mg*SR>q6LLAEl`wF3TF?(Mq)2@na=8 zH4+Fzow?*kbeY*;O3T`_`=tmST_iXNe@yOSn(yrsLm_U_^B$>MgOyFg2RToijWQEh zpIC%-o5C=;p4kL(IY_4@Th{vO9UTd9v*u| zp~oF{GEnW^KW(q1>s4ZGSf-%D@qgqXB;oXRni|IwrxqIkvL&rQv}S0TyOH2#g(>sT z;&Hr9xuxv*tU9)>DWde(ZTuweOs)ZiSa-PDvW0RV{V~1M=AC0JHDg$XAP3=&b(Yfb z_q7P(G~L?_ZvElS6vALc0(d-|JI9&vs4atF+Ub45YZFA`f(W^)^4e?pljNCnuB4g{=rR zIEZ#tp>J~+r++ST6e`iSq^TDTQ2RnxayEw2y@dmWxz{HdZ*AkCA|z zaF<({TxY(AB_~m72+YXIX82!g7>6Lz@^p8lxdEIRxY;sPVuPlhHQuNAut7P7+D3#E zC|El;*jOW&CWX3+In!l_L;(aca{XHvT~9zXWix)NnN+99sSnVV; zsamnwCq=}*)W(P0dw;0K|C@e_Wo{6_#+x);CvJo@WL#!n1|*cF8(VE^CGG}Ubn7c) zN2(!8FrxrGF1dl`pK;i*7+fouOm;F!9CH++Zffz@1p2f=EgAxA`jLtufMPdez zEX?Wvp^SCboaY{GF$b(%U!F|5Ce=Za)BvlOO!nZ-jf0vvpfp;HmHvt&bq4>=Hu z(G=12BP?@+5H|lv-?Pu;G*+gZk=zZ3KwN?SYH`JX#Ku?oaRY20s!a94Yx4f z#TVGs>=Y+Q5c_{hJ4E zsOz?|2fTHCv6*<@x*ExJe;eod<|p;|j2*B+X0X{ze}q9~5TbV0&GmWjOF=c7hSu~0 z8bA=;G3Tjx;VNPTdpI-Ig=_emhSByZjmB>uZADXexeub~uiCrhIoLEtRuv}rPL1#))afT_s3$i_ z`~k3|s4LKpRVNyauzEIUy7_1NqE7GMJ{E&B*~x0Y4nf3i`R8dKjJE;T3*{K}R+HDb z3c`54J_lahXT(R!`U`+#zuKXXJiGK?7pp~q0|DM z&H{}s`XbVD3#!%tOdY4Q#r zakYi z8#vj5P&y;dd-&x@F@ZK`mefvNgzqe~oV(%Ko`OKi#W0N=Oj>p2X@eg9DeMIPODn;5 zwxYm)buD4%m`m^3)`{su0F+YzwJP=}4<{W-K-``y`^cUMe}}UX*xTH#Xnaa+#^n*gj@eYXE7q)pY&QwQ2L7GO^)FroVfmj}?&(RlW$e6&u=D&`e`q|VwG&EeC z8{@9xtm29DZL3{8yw0{^ZO6OXI!7ID(aSBGft*msbG#$#7{@ZW0|z16a*E;C7<;5Z zg(udRP?+9tWG*!b9B`Eth=17HyQTsvAcs*yzQ ztl8Y{#@B&@ENQgU8|_m=$fh%FpA#=H6%TM1>oKv@Zrzqq;Q=TUgtm`dbpN{$#H9z0 z8mXfh{i98qTwR0E_H_<-aXYeix$~q|$FDY?09tSj@8E6e%x+v$W7)$YEY1It*&OyRHIQ$9TYQWLrD+)`3Japwou{m_7tR zt%?#^^S1E?{n@!OR$MJI09Ht|Imsl}^rvOi@>4eV`daHiMJ`9ooLjv-s8=0e`$${i z&&9(t`nR4-p9lWIAT~fOv^BT7lqER2Uq%&0NiL_WdYtB8;4pRB)S@FO7sw{JE~_S$ z(JjE^(%hTEq8EXROotwGs8_E<%mC1N>FvH|j|Q|WveA1rf5qYHwGw0@{-NL=2p|ry zK~wE&zOiC&)8w$2n(wMhyG(ZW#6$+*M`bg}B=CI2#R@T2BSE}=AWf`ARY&97Ai6mTIW|UU4od0 zTn6!Uz`aB5r`(r_J{*&0QUs=Bf!oCSo%QrIt%ewjLM{71$J7TVOz2_Kb6Lg zx%#RR0gGqTo5>&(-D$<(uF=#t?s9#ZP?BrIo#QZx#!D7Jxqt zY!85v2Lv)U(y{EAjXRmx#u^al(%fV7_yiKBM+4w+&zMcA721e?`A>1Uvow@sXKyyE zdgBJf2;_022ET{Cxv4q3PonUTKbXJqommxOe)R7L^mhg+ePuv{S0}h)edhTR=0co- z9K1|J$6TZqRaN)Kj%i&!cKB*YBJlV&_b0zJz8EM;w{+Oov_0RHjhc|>0qx2lCwtqC ze=G=p|0nZz)C|I&1K?S*{`5a~*I(VcW{8>C&BS!^pB-Zu-aIfkq=U><<9JC>tc}v$TTQQuDS&l~VxgXb62d zBQE~V8p`qS_c;VsLuVb$0|u9y(7hlx8H@`EhviX`p_+-M$07Uv-Cs5^Dqu(^!EB1z zB;Id<`2w1o$@k!~DMLy2kOekY*uW91I@{YnT)YE2I|*6xFeD*)@o|0-l4p6DZKJ?!Wyp|JN^L?vB;b z>OL?Jb)p7F4Wofm$LE~;O^pPda5(g<>+J_dhCv3=Y`S$R7-R~f26)78t1F(^e4(|W{Lc;|8on$eRiR@^Tg6Xe@vTZcVX+-3tdhvHSErgk1 zm(dQ3A@409`r-vKg)LJ6c!yV7 z(GJG&^Ulw4E#~I5J1;$c>T2WB)(Jp39fG#b=|cvNeZPx*yDvpJY<+KTHjp#Wmq1`$ zo|*@NlGOy5w(+Z>D5sf3uW{~7lvY@Df)T(9@mviZdOTK*4pZCf_Lxn?z_hb}ftuf% zoAhkcp(dBzXu1&&V(i^mMfoxzEe@zW>R7LBjQ)Q6X8YZFG#;5;Wv*O+%w-4-iue7- z6_ziP~2&Gnn~6SjvcNYGX}x&p`~_w zntR&N?kdxx1MZwnB%7=qZGZB!HV@S05NL&(>>W+dWtoMT90FIU-q_%QqRlCjjeIal zf2%c2BL~yEpn39T)j`7IX}=6WC)taZotAZs7S&9$-AfW0PTRf8evfG$!B<)g=?hzd z)aRLr=A5awWz#T)c|3_wlq+s5wERP2c1XCk6fbKTLlFm+>ZAI}U6`gcS2cGmdV0PT zJIv0IfNT<5IZTAjA^>0o@!{F{y23P%;c^icp(e+-*jQ4C@i`>uirQt1%tFl0i^-N; z;s5~66Ei5?E38X3G&8{FF&kR-r4&c?Qq@|Z28wc(WxKuGQ{-PuC-Ji z84du`G&kxC)1%5K4T-r@pI$43dvl9Lp)e!S`iw;vVx?8`7o7{d1F^6mzSvj?0O&r{ zWv9o1oHHCSFY`0@Yt$7TLrAeLqt`Jr;fgjo4f^_FtO2~>3?-HOxmXwqC6#XtOM`;RdmGNcN&|g-aM>2fS6|lX3Dx)g(H@Nk5!mgk#`o8nEFhzCvZw zQ5IO%6k>CsMkv&6NZvxM%_I$%k|IBhdi5Dk`R(B#!>Hyv?)O>Smo?y5220k zSxJvWObUtXVK7>iNiQ@T%MWa~(USFwid8E^Yz2zo?Xy5+I+j`A@6VkU(wm(hs`R;k z*CgzB>||FoEErQ~T3RYv}hwVVg z@mZ6^HEhPCyA?tfRvlpid(_BEqbb$`_WaUSihgBGdkyS3OEf$w3SpTfdRDbtcB^3t zv#xMFNmNJ#T8^bG?E3fZqUcw7{5o5L@}u@WUP@9Lf~TC}(5{TIbIZeZmKDe<);#|X8aI2ez?f?IhP_D(p-XPy-vLlCxW}4=L%}8BpGLf1@5WcYCvg!L} zH&7c*mhO2lH<^owR9I}@vR1jQNqxDHL=(XEk80e41$O{KSWcrz5uAp)Jvkn@{ciQx1w7s4?{5SNs0|I zY$QOx_po*_8HUgCDSIPoZZtpGz7Mz{)a7e0Xl;l=dqB6=D5ik2qt03HV1Mb}W&oZ@ zVPeQu5lkZoI>zC3$*x!zuSH=Xx$r57-ru&ViNbg<2xXbN2-=P4f=PP~)e0}&iaE%J zMu&on?J-yF1Tu-#m*KABtYt4@swb11*xM7bH-jfog2QsFRdNCiE;q8-6mHkR8fY-_ zq$W|#+auX@%h|Y)ts2s;HbN2BUff+GKT3X>R%Ovu7TWrbm^JDes?{klX-36S^ANB( zY?j?a-Cnv^b=qG0F)w`?+#-Xy54UncPpam|cNG>f$t+GF8agW;*1);ANhHu|k|8^z znTsgev4L8D%f8>^ED2Sax>&32__G++uUg&3D3DVc-z%@!98!x;eJPJ)l0g5-!8G(& zI5`E1KW+GvzCX|fRoOij+E^VJH>{{ucNm6@YG+kDWY`;^p?&loWoD!8UrP?;9J&f; zSt!fJrHv6Om^XN+)+E!wKW=>UGByVdp%rX>hV^ODk+iVBUvaR6Kw0*XrpBs*i8B?| z8gCu~HKRgDhP@%xeXUP$#)F=-B^8*=_4f4nI#8BN8m;jm7&%K(t*C1l2ntHWj=Qoq zRCPFZh&_vW`%|6zXyrwA_dY44si{sMcMW35rGiR_3rbY@~Tvm*folF#RYtZsyGv z_hio79$yZW<;WJs=fK#xF-EnLOhu-sAH~Do0On~Xgqet{GaR6MCNEqpd!4YrvH67sHr%MMU@IugUeet9 z9GJY2=vIzlF#bk^R^hNUV4CJ>w+v=J33IVH^6PqXZ(ZQvZ3~sToV1YJ#puPZpKNwIWz-4S?nE%qO_iW>Ezy&i}yudg5#J<&qQO01C5zig?YVPlfTzT|v1El%-%c$Wt1%a)r$? znAwQVe6$wDYB~UWo$&q2zS{i?0>@q<(0f&1B^2mWwM2i+|4Q0bWMKT18rP~68MX#Y zoB2rV6EF#Io5G6b&ge7xy6kt=-Nt&d+<%T49i=PsjGqrBI<%!M2L!muXVCIWAyzLuIxcOb-Yop5ChqzVaZ?A zFHW=hy;#8%B-t>MR1AOnf11}I00!J>WK=HIBSrUCHkui06;$%Bs*Cj!I@TcOAN?K3 z5%- zM@R>}M!onNYW5**WC=l_WiIj#>orsjhnl4~2l*g#G>9UiWUH0u8-+kK%M6e3oGAOh z&;o(V2W(fTj8U);`OixRBHhWOJSW=jnfzA=c*XgZ1lgidDNxjFRXpD)L|P}F6MdhT z-+tl}(Ef{pj7p8a^V+I4zO}U!kZGY(>l)VoQ8*mp1#bu`%^8i$cU7#P&>TI1Ouxp? zAIWo~^8e--azaYgi>f6ZCp!OzeR#+Tg@Q1t0`M=fI^)*9s_(fdXT&nYSJ%=hp&lxZca`51{R&2feB;@*4|0MY+ z|8oiuvGAShyA*5a(9o70%UKBa!htdKq5c=Uuq76Fr@CG4Nr9fKWtoIv-yZ^*4*|TG zd}q0ktu%0XX6@mE_tCh{aeHe1<}4cIED`~TsY3T71@vr8C9cdD@AFRjh5(L5N+cGgOczeh|85T zVUk=RPc(MqEE@A`e#hrPwtozW;X@Qxzj6j^O$dh9uF+ z9a$<`BLWCF!?3!-ao?tke$J!8EY)Ae%A3^Qi=HCEzdL(;v}B+ZzR(E$=poHI-W};~ z6!LGi;m@sR{dV4UV+~nl=A+jgJ?uR~`xx_IkO(~5-}P|*?)q!G%&`9DuAv?O@0mXY z;reT&vU&zNB*W&mjWj8W%_B(!@Xs&KU-a1n+eK!eeAKpHTQf#AZLJnaH_l^)24Xf~ ziydGbEcS$4A`S(~pW?jcGI)?5GUE_ZLypoY@`qZaE*@>=Ly+!zeymbPmX={l4~+R3 zD4Gay_-BFq>EJ^XATYxy2l-w@tIUv5MgDh+PIQyIU0slFCeF&$Y~T)ZyW^Bt);LHQ z{sAC=2Ke9t0D!6TpkLeLg)#%V@z9$nMCu}F---&PyP*p!)sV>oxo-wBHOlT4g}(vF zpABATM*nB-_Q1cYnUEP$YFt!ChBkCTQ*;WXo26;1l(Jp`$kPyFLX>rnJPzS60p`yE zFASh1_4|Bjw`FAp{^xyXhbr94!g#-1LAo(JR;nX|2lAMKk+B$e@E3sd7XX6+F34w86n^Io>?9;14X1k zSzigR-T{k5D$-3hWyN~Zr6518rJE5|;sow~UMz6tVD?9uz24sKX2@c^anXjud-tZ%Ly+z!b7wGTc5^6(g7^U2E8pJ< z=FbEletcL!_XQ97rIuEifyewWzuCbJX+8cQ;w@k~SS8J5kpBe;UZ_pD+H=R3~L+8U?MbU;CE>XOd{@5qq=O7~58P+&R ztA<{gA)``9%?=kFSvXqZ(;!|K&B4lP3nZ`Q-b#0TK12gFLk-Q<;HW zR+ElAEeEzNTE-;AJ5M}^Dk5+f#a#eemree-C*R)^MR?Hzb*NjA8NAgysyKqeVU2u) zn<8Eh$-&EL2m{3)BqbJ|3qhIj*MNhfwA3E7*=}5A2J%_oKS#?^{lC^*LlAFY28Y;( z?*)o~{Sr{QN`qo0kXa`^KrfmdnITZCRnc-z-J_}FB@l1m_ALrPG%o*_F>;m zW(Y;SR%y!#b+MXR9b1U^!w*%&Jn^FCHaO9?^jd=$UboFb8_md&87OYOf2MFc(b2(L z*!staw<(B&m3u3+;GC#3l&#TWP)q}}bAUc(ov|6duIFZhQ{Xq@_}3plsB&Udp+oeU`;Ke2BL>z=K!dU_eWs_MmBF zrnp0_)U6z_)0t+G8nQ)Wt00`pDy?RYKaF^WtB20DR~ji=d?D05DB4svA&4D750(dM z#?UJ>Y+n(ztbh}_-BymJI*@OUH%z!fy_GU z?1M4~GK1#}m4yT7c+>P(y4)aN*N6LU4iu$!Z-0@lU=MH(u>&B(;-Htzu#p)U2ybfx z#Y<}wi-#MCH|>+)p)SJVqU6pyQ1BMxsq6vF%IrTlORc{}X6OmEmnhxF&00Nxd_5G0 zth6x%l;C!yizwJ!3$|H5%Ym9rk4C_KV>na^fu|_Nn=Y`WU#rPy zun%Y^4)D1%J*F%(_(4n6R*KA)M$6VfNP@)$S{kq6_02=|ik9(l&m@;Js za<=NrTM4XtG_zI?1bo>O{5vSse`maUUBtj%bqxo+;|!fh4U|INRu%}$cY}6TB#`fQ z4^_-7pmg`fqD8x|{Zuvs^z8OPxBSIYLr7F>RhEFHI!4ou&OpG8VH~1D9|=l%2hpyk zg8dr19_VAbk192gtyLSPL`?p+tw-`9-@wB;OFD17DDBG(?P{^u5Xv((GRGHc2BZe^ zw`$98lF z4c%IJ!L~CT4t&K76S)DGl! z9l3$+%SiPYE0nZ$jzwBN1bp>F?8n7`c=YPl@?v8^c9{d$XbF`Z*nXSp@?=x%26rPKuc9ZmHIH?kKi~6V3jOGu2y`9N7LxSG|tBB8`zP9Lu(laGv5JD{=53 zHY1B_tt8lew@D9p19L~&0e)K5C>oOREo!xOL<9mBF80c$cP0WR;xinowV~}n*D=SZ z&d`qhKyImm(ybIJtZMzfHCsryK;n>96bK+rvlP|pB=!gN==XrP)YZrjWR3FW^8Y{r z-K0&&vKA8Fq<1#Gve^W&8eCNC!At-{!2xd3eOL*CloF*NOj}9d45IAJD zKNB&Vt*BP7Vgz7@r_Av=ze$3CpHfji-xz~Ml*?SQH696XGEauR^0+zTHixKI6bu1V z;sLKyKaCVYsQkQg)`uDDhhFA3dly9PU^!H^Plfo+UsTIy3J}OlbA-l0sZB*qw}t1KK#$Dc*U zu0MymZ7x8>@ioGVYGnz7fZ3VlH)r{sXObjf%wI2U6_FHE{GexDF;bCn+UKZqzYq5m zv0S2oYG*Ab0WxbG@ESHxX#&FV8YNqW5wO2|U9$DhyB4JEkvQ~Cn^QzgZ>L*%i&?-d z%=VoZFUu1!rWju1Gbh>Et*nG=uMmG0DW`o8FxN+LxQOd2*U+ukHw;iW%>h4VW0?Xn z3ZPi)xpTv&){uw!E4>6c`*;q0!=_9T+k+~FZe7DT_)W9l_bPJL=iexT!YJIazRjer z8ZY`(TO;Xy70h`Fju7!(KC+5#WsleY6Q%+Fr#Wu(=(5%4CO_>r{igNpqW_((6dR93 z)IQcZuhEzb;=F!Axl3JXIm`oH#T<9(KA?p4nWMbghvkn=Qes)}@)Ga^PjxcNXh1hMb3E11vtYwUb6w$iAc?tT>JugVL314p2i?T%t#)5^L51&_`vMK6 zKpN+`LCep0ct*nk-Itxc-E%E?(3C@$j}_8*r!|L~tt=ND#)F}Cj;GXfSdbt5%-Zd(77S?KkzLjr&;b&f`CwhHe!y*{Mh zejt~%#^$=lVpw5_0KaACUzq8?)Kpz_hA-mdZ3XqIo8p^373%cVN!b$p_b%^e<4_*ItG79jw2Q_OJ-Lxy7G zUcPw0DpJU1nK8pb<5)xnTFY0G0W=-6-M4!;N-dY{T-SMTNN3hKz{5i4+b+nl+W@oO zQ&*$R_Uiqv{SJ^4fOHNz@WVps-}C3o0lI?O?^-{OBFiT_*L6KIkkCEcp!VIQi)<+d zphv5-euZX4f$i1%J^NLYLPDoGl*J38GV)O zqxnrw4u6OiIeiX-g(fejTvPA|Lvd!helI-Kqx2_Un= zY`3ulDydwCb6>&72{|2d(0dUV_&&EP3Y>M8AL#kmvU1``dwoRXJ|U??4t@{f2G4$S z${SGt*%@ZLtszA*HD}rDG66u|6BL-&Ul$btv? zU2md8@7Vj?Hthw{+PY?aCiB)Ns4faD|LdE4l9&HuwLe}*7V!Tz`BnCXsR5XR1bzU&CE{oNuzzKbvj`J4iO&y#7-$&b^V2jsOEUU>q=p8y8LG2%S! zL~sAnyq|xGFu0qcdH=!pQ94b9%=1y-5z@-QuzJN24T}3hBG32fSDf^npNrZ>77+SD z3jPgSth(9vIL$dgUaucV{Z3qL;G*dq_Jfo~!8cXT@VZRFUN+8xtSU>R%u%RH10B(XwMf@oo=ds-1 zzn}Y!zq0;#4PgKoKC?Ars8lQ0>3ylW3?Q*Yb5`b=`5yq<22BRuJV+)sI-;W;zVzg{E^ppMO~&FXqoiBIrixilcLL=nsL%&lTe4h%jfL=#LL+T#dr-+;BZ{(Kep zn}6c|_G6@h&!44@`W2K&+E~Fn@A7((Smsn&o+GNTrP~Kh1+j6EFf3>t&8@ev4&9%B zh5MafvF_&x1L(HMEFC?O`tXVNsxhAoB$mix;{prH$Za!V(?He+APRFkPGm)cb!`3q zI?-?ZmG#5>NCUc-S(}>WqBsab<9_;_m3s+^Wmb(9xvP=;`zM0fJ$M|#Sskab=vPbJ zAAg(s{hzST(}aO?k7;J=>NYCFC)w+Yg#;k6gozCcEU8pNUNYDy;Bg0MaGcS>x@i6S zX3?+zo%QqE2?H<{%-V!4L|LQ_2kG;c!b3C_G7KVn4WbtiEnj^OLxHtVXjr?@}- z0r!XBSC$OaW*F-X17!}>gco4%%M@aT#1aPUmspzk$osBFe4N17zirlS>&JKDoQsT= z48Yo9)eBEe39KdaVeb#+)D)@+PS|tO&WyXQ_ zoS>!}+z@-$;LwG{`mCF6qn+xk$VN7>$gk->Ls=bMc%I9+Awpsa#1h!B zbS4U7m=z4wYl}}}rLmq1#R$%lP00YV9A;_mlPCh=X5ZIoIKq#D#1h?D;fzNV&@gd{ z;w>wO@<}~G47{}9R45`F(2UI7*7{|XfD`3Mc>zLZSrFM6B7p*%&q`6dHI0M$q}4#o zJnBzslMJAKg_&FX=85m7^S)ujK~hL8QDJ#xHYmsipmo{s34Kxr5L3y#f{oBzvH@Mk z%ukwSlkhs{x#Vdfv&?mtIZ+G+dUy#-=R)K^oYx}ewu)^9za5eR0_irxjGfi2Bsh+6 z-nVQjCxyfknHQNS6!a`o0xDMtZi5*8^nwNHDjC3yW@*G;Cb8wynCF54PRJ~A!r{N5 zpr)?FANdvv_xmynF}zH|BZO2W1LYp|%m|;V@(Jk@!cvJV0L=` zMbA3OLBa~K&U4OuCXm?@HWW!hB^1`2sA4JG%cjH%fYj%M$y~_*taWC&iygP;CUa<3A#H9dEj-DupEaeB@~% zv$tpDvcN;Ipj7sf^I5wwR4na`4(zckL<-?W&PoQ#-N&4vi*1s~SIzsj&BdgUS@J-m z9YTu|I**lh6AgRxPiGSV>C0J?0m%SNDKj@{iAf&0Z03F6eIc_1l#yh?OhYN{Y%PE( z4F&U^-NHV}iP%(#ElUQ-LC*nu4%(G0p0>{izAU7c+-0;fpQ6Oh>o|;8C|C>Y1#AQ$ z4V)b^RWgA0n7n<0NSi9?dj<{{Qp@mVp^QVRZHF$%4gH!E*lU;IR!AT~$-p)}yX-!0 zIVt!!`kcp!7E()YvM?AHl-_78VC}?Euhp#Ew;4dFB3Mh7N(NwWFjE7DnnWO6Xw0D@ zzc+`}o@T_ND8&m}sP}~}pY4Eb6&!>-vVluJbNw_4zzv|!fqFzBwd9%`Z;#Uanh_ET z?Rs?V_`QDJ7|8&#Ys~l<-GJl?5Be3gF`X1r%Y0$s-UB5%c~PsnpO80A`+)W+Wbn8t7cgdk-09ht8G;)jPau#=%4Q$hW!0rufBWJk;`j(f&fz(c8Az>t!Kq+4u z%GCpl!@fXZg%}~ACK;Yg%I_4SOrxfYkoj|Boow5-9Z@QAAYhlEB_Ca$gdjvTT5v=w5I4 zM$RfzE`@my^*)eW^3F>g4yFHvQ0?vR!QKGUR;(|Xlnp?a(erofhA7L@HP6+QK?o3opTgSlmdpuKYsw z2as|2^vN%QHLNR9wSAyHpYl#M{r6zM?O%_j&M6; z8@WjbHx%`nkXu6Lr3ewkWw@nU8=3(i`3ly#v~&Q^lQ&cP7Bp|RPUcsw%o+1zc_5$4=lbN9`5d>v$<6gK2klWio z4GXf0n9UE>@)-pn!@6JlGwY{!5DBnMeG}PXmeUkpTKGbzK}rS0Dr5-dMsLKysHL%CKMwCStd+j8LsCFb!-K{rX>6 zzr2Y|0A?pML46zc5^;C2hJTqWRz5KhAk+~|eu1n2GgG%j-5i#Xn0nRbT$-}s zUO;y1vobOpn7NARR$eg@+J2qbiL?N?(ZlSZtBD^D=MkH;;hsQxS*TJX8xpfiDjK@= z#mof!yMnnBRThaAA5T**xkSze=_OitmN||@T>s51t$90OD30&PXH2J=2_wy5_m&HyUGjZK9^uZ%E}FZMKUbzXtUV6lnEFPgM1Q& zC>|0rOafyCry_xWv8>Rp>W0BUfF!yFFXX7?0H{6d|9K@-N@+@6D)~h6@o)r?;xeod z@dFb2)PiX|saA1S&!EHKg3l+Qbr|>nRmK#0jUsz@f7?WVuXj;u{itH3R*g%rF~3x{7s4 zzj8F+8~x9w5KGJjn3ER9J#m9^Lvcd!D5Q|*OKO)vqTiXJVL@Uz)V_yA43VYzZe#9X ziZCQ>e*tEvMWj9vFMtR2g7L_tkm&k0=f@?!;hK=`daO_xB>ou>Wt?1BUrm69kx z5sMo&Ma!7o2*?1fB>p^>94r_>+;CZasNy~h)O_>lT~hmMIDkyhDx|LRyNQ%dBr+&t z69Yxxosk7du}qsKo;9^c93#`l`cTIHdlXIk$GbGd0Fd6-KefUma+MUfNF1P$o1yA6 z86`vxAZOo*HYuw*;=Cu5%S10gA!|!f=$dE$Mv%w>xby4(XeCGF8p&^w9<0ysOZ_6ZbQ5y@|p^hG5o<&F&W zJ(C>D<>^ELvXxknq)Lt0AIa=8(Q{DCFS$ceI7;KU$O0f~1=C9_vm%z=A?dS9P|Gb2 zXrS^tHl{L!0kSIApj{Lhu|KiNC1U)8V!GrY21!XnI41j|D{*K`cT*ookR zMQuEyXfS4=2L`wLDqz>P;+!b+=p0biI5>(!ZaZ6wn&6x#* zl_04j_AkU$zVv&F1bBmyq({YUCn6!-LRJgo5C(CV#ib-*6ak3vnFd*Xy1hto zpp-+vCl!V_Ln0Ymn8zjVH4ZYZ|0ue2aAy9f`7m z)_Bs@MI^Z0Bob|_IylL(2nnS1D;!7=tPc`~8ISLRe6M^$%qJoNXjis;lNm)oP()ZL zh!nCqd?w5Qq-(JSd5!K}(*7w{WQV`N+#+z_k#7l|c^{vt(6A%dF z4`Zhzk&!DR0^uj*wV~|ILd1#SeK+&R1xRZG6XZ-Iw?bO`?^E&u z8OKAwqBh=EcTS?92t49dWP;N(HjFm}ny{7^krf0XueGsnAmv2xnr}jHTH+-IrO*Jw zMFNmoZ2>YSNi87)BIt~Rv_9Ql@y!u)JOtj&e0MG_M!eQL$OPnou`VWn0232=DWX?k zguGVAeg#4Iv6=ZI=)?u(aR)L1*sg3TWKJ?72qLh8R)Ps>9kEAL5+t1l>D!nuoK|4; zpA5MrweO+;+0|BLTS-C!HD4ppLS8G%0WD-54}p6$o<;wLq{#~^OAR1YwxhNLSxq`M z9yTI`8l*LSH@Fr8yOjBQQp=27XoBn_6Fh;oB$JwKgik~a0vX6_X&eNI+Yh1mZN{6> zgNAsK!Ta8gOaLZQTji;f3&G&@>-+=}(wZ{6H5HI|JOnKM8_%L&i12X$ z(iX}TCKZ7j9y9laycUy#T1dPPi^_aGXywN6x+n*kfIyfa8WVDmM95Vh5#c{eKw5{- zWbFuu+z+9+l<_8Xq#|ByPy|nKlQf9{q>r`$Q#W}CQg~Fz9mwk^KPV7-JOplFzOK~7 zM?-F;Ji(Ecr45mQKs63*Bb8*a{C_S8KwgLM1T(e}dSW78@1=}KSE>giO>ht)r(Vut zBuWH$oi};p1hK?-aeBrm~;bB%cN$_)!vw zqLv>tlcOyiMI<1*+FCSW6TlboXap*d*ePU>f$06yl%_jRUo8Sn3lmNDgq$b%JkUFPv;xSGn zAP0A0ya#e3XM$253Aq*$TTk{?aDd4WhUb$&FG|M%SA2~25D7qrXv?x)C5$|m#~^S( zV*BsCd~%$E#V-l0#nM5LdKafy#)||vslIZPC6bl$V0gF$6B1h!`wN_*7<#gF60i)8 zxUq!D1muXusm8NQrUV)ut3UyXeY(B3$_Ng^;;hYEbq9Y$OK?2wRM>SITA#IXwLwN4U;`ZRiI8?Svd~E zW!~SbP%zV{j$nC0jq>;yA`GYl=|d@~#g)E9kB73HteUgffkX9!@`Ymv?>q39h%kDd@YmlLonOKwnM-G8>rPnx=*G z>;xMKHYJ!B$0D7Y!m4tlUD}9PfS|A5C-{wT3HsuLK9?X;9&mzC$fc0kZ+_4gPBhu; zD8a@VxX9KOQqS&k(v4)fK+q3w;d<*ETpxa#buLm67=nlu2qCjUGAm|i;YhO~0MuYf z97{B53oI)~+7nMH7zq0HRb20Vk?Y+rBFo5t@PgC!n<2GDafog>)FxOy1c8i$)E2_QS~ypQh{2^h3_aN%&hAJR4M6s2;%cHWB{B8>JcJ-b zas^TwWbDkEDbTR7xU>gaJC3|3R)uT;e1s;1i7#es{E%CN;9Phm$ZdXkUmR^RVO9wQ z@5xxHZq*%n%5nEFx0`f;vL>%4a=C?KCIz29L~20f>Wze62b@WKLKS94+)+QyKmu;gh^G1#imW9p3}pLcMO!#e3_|C9!+-G?l5ypOvTiYVxx>S0+QamHII>$j?k9%(x!c>j zUs!MdO5-5axp2U4E(6Cr1t1hwJ+C4#9akIh=#_{PY4O6;Wr2b~EaAdKd#g0MIhvvx7=1iPKj zkt((UBnQk=vV~bocF38aKfyZO%Gy}Pdi408?nj38*m3*c*m~^tjS+iJ9Izu4IOz^( zcruh>G8X-U1szA-Lq~`&aZX|Ft%b8rCJd>=c+5J+jgG$Cg&lDU?|Fc3nFR+X46DOf z=CuqiXdQF68^s-b>AiR0xRd=?W!QWoW-=2&$Jp{HyES#h5scqoYb=gC%}b447*U4& zD>8Nt9a=`}c^oI$F)1#fv9-?@4tz4ewk3i|8JLb^I&;K=p212u{EqgP`i=czxhmag~?3o8;NJMPO*mw(Y;32zFRo+0w@-`QAfcQgGr!3+h9o?ezzqp#mgr9 z?f8s1^m51&`V`_NM>0*l#xedByPeUIsCAdycL$C=*&kGhWydo`eVWEW2kXICfXWTs zPiqj4y}F3>!pjvx2;MtGiFm2kI(k_zb#6zhzSYP7z`>V8*0S%a5X51h#ta#H2hDJ# zJ#49LS>^Q#TR8a)=na?WtHi5LWP&!`qno76XQ|rb?Y|q&z76_-(1uD1&M`~~WN04@ zKKhPds%DqoSGVF84nG5`gjThPW(<#8|L7z~-faOWSsiOLoPJscHCd0L6oUWW=zeR; z4FLR`(C4l2Ehb&(_LXT2#I&;%8lVJq-2}j(mwWVIy+6)D3gXTXdc-2C% zPh^~0GeETQGf%datXf0&)A7mCz*^{f4AfGvjbap!A%JD9!|hniQmo6p7dq&H9HB`u zvX5nej8;=Xq?~%|v~E$NR9oz?+aPpsX+3#iAiP$L{JW$zfi-H40bCMC*zq_j^)CDA zh8B(kD1FtZRSe>=#4^f4gFv{PaL3s#x2RJNZ1$+AVJ&nC_4%sd9Lo^bH3`rXS6&s$ zG`Y3UZYbgyfKuTNs`<7jFoef#6zG9t?U>u4NgKT7rBTF0sKwQ#9;@z^mV9c>0$kKO z+K$emMpIdP?}jQagf2h4Uqm@Lo{=d`aG7Z!;i$V^3_6rc4%F?Q(8bGOgU~3fsK*10 zrk9am93bVqNVSi|S10vZrq7<7Lnnd|COv3c^SxV;NzsiGasB+>V8zH+hVM zc0nUY18fjp2_6*@=0?#=x0ztTX&k58iWH^Up|OVsD%lMK;9OKxupLbs<(Xyz7Q&Zv&CxfwoYu@8e(3Jvm@Ghw3&xI%uZlk8c?D4cwn+WED9>!gq*V2@o8M|trmep<4 zY*3Y}-5rnLn)wC;Ugn59I*FDPltXkuF}q=dAFJmo3P&**%P_})(cqW<#tT73f@J5$ z>YJ;} zg(uL+LgN7w4!hMJYT=#5WyU}|-5wk}fp8gh-Fz?H&!@$F5G|*}$%kJjO3HQ6&r<+O z0|^Kh6^1|YD|uK0f=ikhKUyOKyE0~IprAhtc7|7Z1eJN*6KTNXG$2q)8cT{gl#}bA zp-pYLo?bYM$}YJFZsgNwLj9ISzoo(Qlj2sd6;Z7z)FIR%r!kdRrXDuc8jO!nHiPn5K_0~;(5PN24e?+&?` zz#2csy|jt6tX22+;}x{BlbQ~N3v4fJ#i z{43#fy6OnFD|3tL|7K30mK0bw6X{HeJ&fqov=xWM~; z(y_caso_6q_AaPvJUlGy2~R9csnPRZnX^=1+q}^K1mmpmIi{-|x`Dzzwws(%VKa*S z@i;S$X|88r;JY4SYgKVZDZ7-N6*Tr?VJ{FGgqNxm$HXyQ!P{bD=q^Xwng>qkF%MZ# z*~XbbD6AJYpvsj8b2tt=_iJR}!q$DWRZO|stQ{BXJK#f zV=gI9q0skE`-xnqzQxqAid_HRok~O5e*?8WJCpWj6aKqIrLJ~|Z2e!XHa2W}mT|(Z zp-$vI575XT=LGWxZJx{ID zKRsJ#`p{R<-GcLA82B<4-yB7` z?~T3_IY#RiqXR9L>tELq+|%x2`hxP_JGjYt6ybNP)GPm^v2iL>Trb1yFzT4&yu$%} zfrDM3y`F_I9E3MBzkdk@f8Jx*4zF!^;9|=W$KMm)`ui$X3hMio@bo(n6n>SjVthCb z$IyYNTYKm#M;r4F(KU(v7xZ@owBb4c{*O?Pl5f2t|2c>A)CVrH9An3dBDUOktoKBJ z)7}zFLh!6c(LWZ~#&DmG?evGCr`kI0@XKr`vBw4)d`Wn*-;c0W7*jQ7du@ZLZMu4c0fPCqjy<*%R$y0Urv(+xX@*Dl zTAV`gdDtq*QMkwm@n)x5&agF9Qh)vs*FcF&AW$2>%Og2<#gSfQ;t!!)aRK4K zeWH6&0~eVhSYW*RcJg_(gO&u;xCH7mES^XF?t%2UP2OcAn!E~Q#HJS*CmIuEIa(q1)!rq_+Ubd!U=HeyxT?;G?*k9F!yrG@l+CNTn-SZ zaxVaPw~*?$%f}H4!v1_n5Kz@+lpq=xSWY)CBaQqxP>e;DbBbYYA|m0#XySV!!bTC? z!Y~2%d>Sk?e1ZtfQD!VCa}+?mS9o_~NOXa{De6fKbQveO{OOi?7rzwhmV*?uIR~o8 z!#DOn#iNhmyweXE>2>A_R>wJ(bB!$}@YnZU-U4m5*T85H!h|X`Qji8w2ivL)6hz`e z<7~@Am~NB3mwJIZR~3V&T6iB?`JqX$kq!@Hq=3sm&Ya6yFjzL+|IS+|^n-x6{?U9_ z;d;SfN_wDzEJFpOzS&=D2SbhBW!Xib(Z%450m0z2Bn#aPpuz_+*i98M;X%*0Y-^rP z=7^m(Q0aDH;R>M=?acM32pZDO6+}z=T=*PsW|W_|o6@A9)9H4Ig;t>&4gH`*_>ly4 z#Rdy_vx_X}M?!Bg#P9|&hZHX;b+H}1O+t>}CR9flLZ&Y|=m%yC=q48#7edn|+5R@z zS+djY51+}IPMqKwgVlxLLSJ0sf z@<9uAK48xJT;6Cq+DV7;NNKSw2Wpkas}}_g6x>k_dDbtTcG*aA-m|>1OoU8tTD6X>Gh)j2e|gvc!N~G61E| z1H6rb5iM?fHNce$5XV>pRI?mS{+NgpPyw#{Sl|MdI_LUr1iC~XLNHr^_vR9~fV3nK zG*U>==j=o`5%AvJ0TuB;-;aJxAkq5g1aNQPj*jPG>|z8st$t3x}- z$tqA(V8tsa0P-C3gaEp~4<3IUz*4vM&YcG2IRsZa`k($rKpeDM?b12{8#n}qOg>DY z5cI?BOAtD#4jU`LL$_JkGS&k2ZNlQ^`54M@x}F>; zZ?dj+P6nXZe&OYq%ScS2^td3+V^yoI23OanKbSN#gUMVH!W$c2U=(<)Xtg5%sB0Fy zLW8h`;p{_wI98yb-g?%N0d!?OfY5^Z>`PB?TGD}QXIRS$q5-IRkUXJDrhZJQ;11_@ zFsndDy_IY#)B~Z=7lakz{;Oh0!+F}9Q3s?Q2N_nef`?rSjtv#Uu<#Od8pcF_9){uv z+Ul)g9kBpZJc=&?;YoZohDjB?{Wu@VxC0Vlk;nR#v8WmxQP3=m30F5_SOe+k$MrD$ zK-)v7S-fgJK*Q7f5fE-BG_9D|cPqf1f_w-7(QsWW*L4qr`UW7OGD^YXt;KP4HY-m{ zaK8Wz;5`azty&qc?EwbWhedC3G2(Z((AsSZak&@|?Lh5$1y-!3(Qv=O%J=;cizgN* z(cCW^#lC^exd6{X>(x&_6k5UYeEWmN4~z3XzV{O44dLF7oQuK>xUU4KfVHaSyi8yK z42NF$h5b=~bqW1Fs~@{}s0p**|K6DAc{aYAgp>Y>B?Z%WH$o#WsTc29)w;Wh`(NO5YtnjB9|36lV zLC){VrJ-yX%3M3p@x^~wB3PQP{r56~l_hV{1DmiZzW!apGKP7TKZghN|Dnv+0W)Fs z6~Sv&s^0RjOM$#S;EVg?__m3|&a*Jk^8(mEgbjOPYXF>o?;c>G6{%p$@c__XG8p`E z3R{z6`%7Y|mjtkPcmBE$lMw*mS^U^mqqF~B0YKJ8JA*G~VOvt{e@P7X8ejJB%CGmO zZ6G*+`qzHTHtSIRNwB3F;Fn%>{mX?7NpW@+hFkD|-6(#wANTemuo7_J_#R`Qkf*!>ZH$bH8I6K>E}Ft4I)fggwHkWf=91!pTU! zeE>Ue8QYHFBE_7yxJ8ZS#y$T#{@gSG$A*9PD1Iz_Md66>5(6)^`|-=2_|`3RV>s)l zBK5dQ-u&aDV4HNYRnAen+SfTEDJv>B&eH6rzPs&gP?IchZ42jnNI7r8 z`UO4lf8VF*r#e}R6~)_%w`I93819bp^74Xu=Dex7G$*GgfrmWz zT;atsQaf)VR0`EeRK-#~p76G|a%ZxXD=I>vp`jrdT$TuTQD#SS&Y+{Axhtp22hVkW zknrkNUX|3+G9i0|P?ku^ByuMp$!IH2OJR=o!oos(VPSi^B_Yl0Eh;K1@@8^|UE7+g znu~wcf4z>-{C)rGDpFln2>C+snkI13ohi+^#@=pUX%!n;JjQi|&a+6xEfbQ2+|TwSlE|J$)>LF29UUD- z&N-an^ifGk9#4|T<4N))c|1wpIIcv0vOn4H_b2=Pet)umlAq6nj>3wDhK7d1AM#|+ z^K{Sibi(k}NFB}<;(y-f{&{~QiPRY+PD4^uMMN3QUw^rvI+|}T0g;pn2yGe^rjQ9CT_W9%E{fYkgc-F%j zyS=cmu+VPzB_K>b$8$W#(>{kVzKT@n+%GRA2#Npr3D+)9Aa**cCU3SkyED6UV0=Ht zwR=~ttgBmDXK!zBPhay0g6VOEiO2n}!jv$5HB!L^rC@l?R`?T1#*nZY${h()k(kSLp1b;OA@$r6NGJaotVp;^Zm_%rYZeYN;~1B-7jiS_Wn zr^wd{;VTxedqY9BeJ*p$gpd_)xQ?>9u;TMUi6Da)-JTNLU-T;C Date: Thu, 24 Mar 2022 04:19:38 -0700 Subject: [PATCH 28/43] Update README.md (#326) --- README.md | 59 ------------------------------------------------------- 1 file changed, 59 deletions(-) diff --git a/README.md b/README.md index 5009d006..16187963 100644 --- a/README.md +++ b/README.md @@ -35,62 +35,3 @@ The PRs are reviewed every Thursday by our team. If you wish to suggest a new topic, want to request additional details, or raise any other issues, you can [Open an Issue](https://github.com/symblai/symbl-docs/issues/new). The resolution time for issues reported is the same as for PRs. - -## Setting up Docs locally - -1. Clone the Symbl Docs Repo - -- Using SSH: - -```js -$ git clone git@github.com:symblai/symbl-docs.git -``` - - OR - -- Using HTTPS: - -```js -$ git clone https://github.com/symblai/symbl-docs.git -``` - -2. Open your local directory where you cloned the docs - -```js -$ cd symbl-docs -``` - -3. Switch to develop branch to make changes - -```js -$ git checkout develop -``` -### Installation - -```js -$ yarn -``` - -### Local Development - -```js -$ 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 - -```js -$ yarn build -``` - -This command generates static content into the `build` directory and can be served using any static content hosting service. - -### Deployment - -```js -$ GIT_USER= USE_SSH=true 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. From 51dd29e204d869dd3684846e695a65b7496c420b Mon Sep 17 00:00:00 2001 From: harshal kaigaonkar <65395607+harshalkaigaonkar@users.noreply.github.com> Date: Thu, 24 Mar 2022 19:00:15 +0530 Subject: [PATCH 29/43] fix: TopBar highlighting bug fixed, hardcoded the slugs. (#449) * Updated the default routing for all the topbar links * fix: Active highlighting bug fixed, by hardcoding the slugs on regex * Handled for `/async-api/introduction` and `/async-api/reference` * corrects missing pages * change made on the stagging config for active links Co-authored-by: pema-s <81958801+pema-s@users.noreply.github.com> --- .../tutorials/get-real-time-data.md | 709 ++++++++++++++++++ docusaurus-staging.config.js | 19 +- docusaurus.config.js | 19 +- sidebars.js | 22 +- 4 files changed, 747 insertions(+), 22 deletions(-) create mode 100644 docs/streamingapi/tutorials/get-real-time-data.md diff --git a/docs/streamingapi/tutorials/get-real-time-data.md b/docs/streamingapi/tutorials/get-real-time-data.md new file mode 100644 index 00000000..ad0fca23 --- /dev/null +++ b/docs/streamingapi/tutorials/get-real-time-data.md @@ -0,0 +1,709 @@ +--- +id: get-real-time-data +title: Live speech to text and AI insights on local server +slug: /streamingapi/tutorials/get-real-time-data/ +--- + +--- + +In this guide you will be shown how to use Symbl's Javascript SDK to enable your device's microphone for recording audio and processing. This example was built to run on Mac or Windows PCs. You will learn how to use Symbl's API for speech-to-text transcription and real-time AI insights, such as [follow-ups](/docs/concepts/follow-ups), [action items](/docs/concepts/action-items), [topics](/docs/concepts/topics) and [questions](/docs/conversation-api/questions). + +Throughout the guide you'll find various references to these variable names, which you will have to replace with your values: + +Key | Description +---------- | ------- +```appId``` | The application ID you get from the [home page of the platform](https://platform.symbl.ai/). +```appSecret``` | The application secret you get from the [home page of the platform](https://platform.symbl.ai/). +```emailAddress``` | The email address you wish to send the summary email to. The summary email summarizes the conversation and any conversational insights gained from it. + +[View the full example on GitHub]( +https://github.com/symblai/receive-ai-insights-with-real-time-websockets) + +:::info Identification and Redaction of PII data +Symbl allows you to identify and redact Personally Identifiable Information (PII) from messages and insights with Streaming APIs. Learn more in the [PII Identification and Redaction](/docs/concepts/redaction-pii) page. +::: + +## Contents + +In this guide you will learn the following: + +* [Getting Started](#getting-started) +* [Initialize SDK](#initialize-sdk) +* [Real-time Request Configuration Options](#real-time-request-configuration-options) + * [Insight Types (insightTypes)](#insight-types-insighttypes) + * [Config (config)](#config-config) + * [Speaker (speaker)](#speaker-speaker) + * [Handlers (handlers)](#handlers-handlers) + * [Full Configuration Object](#full-configuration-object) +* [Handle the audio stream](#handle-the-audio-stream) +* [Process speech using device's microphone](#process-speech-using-the-devices-microphone) +* [Test](#test) +* [Grabbing the Conversation ID](#grabbing-the-conversation-id) +* [Full Code Sample](#full-code-sample) + +## Getting started + +To get this example running, you need to install the node packages `@symblai/symbl-js`, `uuid` and `mic`. You can do that via with `npm install @symblai/symbl-js`, `npm install uuid` and `npm install mic`. We're using `mic` to simply get audio from the microphone and pass it on to the WebSocket connection. + +`mic` also requires you to install `sox`. To install `sox` choose the option which fits your operating system: + +**Mac**: `brew install sox`
+**Windows and Linux**: [Installation of SoX on different Platforms](https://at.projects.genivi.org/wiki/display/PROJ/Installation+of+SoX+on+different+Platforms) + +```javascript +const {sdk} = require('@symblai/symbl-js'); +``` + +Simple setup for `mic`. You can view the full configuration options for `mic` [here](https://github.com/ashishbajaj99/mic) + + +```javascript +const mic = require('mic'); +const sampleRateHertz = 16000; +const micInstance = mic({ + rate: sampleRateHertz, + channels: '1', + debug: false, + exitOnSilence: 6 +}); +``` + +## Initialize SDK + + +You can get the `appId` and `appSecret` values from the [Symbl Platform](https://platform.symbl.ai). + +```javascript +(async () => { + try { + await sdk.init({ + appId: appId, + appSecret: appSecret, + basePath: 'https://api.symbl.ai' + }) + } catch (e) {} +})() +``` +You will also need a unique ID to associate with our Symbl request. You will create +this ID using `uuid` package + +```js +const id = uuid(); +``` + + +## Real-time Request Configuration Options + +Now you can start the connection using `sdk.startRealtimeRequest`. You will need to create a configuration object for the connection + + +```js +const connection = await sdk.startRealtimeRequest(configurationObject); +``` + +Here is the breakdown of the configuration types: + +### Insight Types (`insightTypes`) + +* `insightTypes` - This array represents the type of insights that are to be detected. Today the supported types are `action_item` and `question`. + +```js +{ + insightTypes: ['action_item', 'question'] +} +``` + +#### Action Item (`action_item`) + +An action item is a specific outcome recognized in the conversation that requires one or more people in the conversation to act in the future. Action items will be returned via the `onInsightResponse` callback. + +These actions can be definitive and owned with a commitment to working on a presentation, sharing a file, completing a task, etc. Or they can be non-definitive like an idea, suggestion or an opinion that could be worked upon. + +All action items are generated with action phrases, assignees and due dates so that you can build workflow automation with your tools. + + +##### Action Item JSON Response Example + +This is an example of an `action_item` returned via the `onInsightResponse` callback function. + +```js +[{ + "id": "94020eb9-b688-4d56-945c-a7e5282258cc", + "confidence": 0.9909798145016999, + "messageReference": { + "id": "94020eb9-b688-4d56-945c-a7e5282258cc" + }, + "hints": [{ + "key": "informationScore", + "value": "0.9782608695652174" + }, { + "key": "confidenceScore", + "value": "0.9999962500210938" + }, { + "key": "comprehensionScore", + "value": "0.9983848333358765" + }], + "type": "action_item", + "assignee": { + "id": "e2c5acf8-b9ed-421a-b3b3-02a5ae9796a0", + "name": "John Doe", + "userId": "emailAddress" + }, + "dueBy": { + "value": "2021-02-05T00:00:00-07:00" + }, + "tags": [{ + "type": "date", + "text": "today", + "beginOffset": 39, + "value": { + "value": { + "datetime": "2021-02-05" + } + } + }, { + "type": "person", + "text": "John Doe", + "beginOffset": 8, + "value": { + "value": { + "name": "John Doe", + "id": "e2c5acf8-b9ed-421a-b3b3-02a5ae9796a0", + "assignee": true, + "userId": "emailAddress" + } + } + }], + "dismissed": false, + "payload": { + "content": "Perhaps John Doe can submit the report today.", + "contentType": "text/plain" + }, + "from": { + "id": "e2c5acf8-b9ed-421a-b3b3-02a5ae9796a0", + "name": "John Doe", + "userId": "emailAddress" + } +}] +``` + + +#### Question (`question`) + +The API will find explicit questions or request for information that comes up during the conversation. Questions will be returned via the `onInsightResponse` callback. + +##### Question JSON Response Example + +This is an example of a `question` returned via the `onInsightResponse` callback function. + + +```js +[ + { + "id": "5a1fc496-bdda-4496-93cc-ef9714a63b1b", + "confidence": 0.9677371919681392, + "messageReference": { + "id": "541b6de9-1d0d-40af-a506-54fdf52b996d" + }, + "hints": [ + { + "key": "confidenceScore", + "value": "0.9998153329948111" + }, + { + "key": "comprehensionScore", + "value": "0.9356590509414673" + } + ], + "type": "question", + "assignee": { + "id": "7a717fc4-f292-4f26-88d3-ed63440e1f91", + "name": "John Doe", + "userId": "EMAIL_ADDRESS" + }, + "tags": [], + "dismissed": false, + "payload": { + "content": "How much will all of this cost?", + "contentType": "text/plain" + }, + "from": { + "id": "7a717fc4-f292-4f26-88d3-ed63440e1f91", + "name": "John Doe", + "userId": "EMAIL_ADDRESS" + } + } +] +``` + +### Config (`config`) + +```js +config: { + meetingTitle: 'My Test Meeting', + confidenceThreshold: 0.7, + timezoneOffset: 480, // Offset in minutes from UTC + languageCode: 'en-US', + sampleRateHertz +}, +``` + +* `config`: This configuration object encapsulates the properties which directly relate to the conversation generated by the audio being passed. + + * `meetingTitle`: This optional parameter specifies the name of the conversation generated. You can get more info on conversations [here](/docs/conversation-api/conversation-data) + + * `confidenceThreshold`: This optional parameter specifies the confidence threshold for detecting the insights. Only the insights that have `confidenceScore` more than this value will be returned. + + * `timezoneOffset`: This specifies the actual timezoneOffset used for detecting the time/date-related entities. + + * `languageCode`: It specifies the language to be used for transcribing the audio in BCP-47 format. (Needs to be same as the language in which audio is spoken) + + * `sampleRateHertz`: It specifies the sampleRate for this audio stream. + + +### Speaker (`speaker`) + +```js +speaker: { + // Optional, if not specified, will simply not send an email in the end. + userId: 'emailAddress', // Update with valid email + name: 'My name' +}, +``` + +`speaker`: Optionally specify the details of the speaker whose data is being passed in the stream. This enables an e-mail with the Summary UI URL to be sent after the end of the stream. + +### Handlers (`handlers`) + +```js +handlers: { + /** + * This will return live speech-to-text transcription of the call. + */ + onSpeechDetected: (data) => { + if (data) { + const {punctuated} = data + console.log('Live: ', punctuated && punctuated.transcript) + console.log(''); + } + console.log('onSpeechDetected ', JSON.stringify(data, null, 2)); + }, + /** + * When processed messages are available, this callback will be called. + */ + onMessageResponse: (data) => { + console.log('onMessageResponse', JSON.stringify(data, null, 2)) + }, + /** + * When Symbl detects an insight, this callback will be called. + */ + onInsightResponse: (data) => { + console.log('onInsightResponse', JSON.stringify(data, null, 2)) + }, + /** + * When Symbl detects a topic, this callback will be called. + */ + onTopicResponse: (data) => { + console.log('onTopicResponse', JSON.stringify(data, null, 2)) + } +} +``` + + +* `handlers`: This object has the callback functions for different events + + * `onSpeechDetected`: To retrieve the real-time transcription results as soon as they are detected. You can use this callback to render live transcription which is specific to the speaker of this audio stream. + + #### onSpeechDetected JSON Response Example + + ```js + { + "type": "recognition_result", + "isFinal": true, + "payload": { + "raw": { + "alternatives": [{ + "words": [{ + "word": "Hello", + "startTime": { + "seconds": "3", + "nanos": "800000000" + }, + "endTime": { + "seconds": "4", + "nanos": "200000000" + } + }, { + "word": "world.", + "startTime": { + "seconds": "4", + "nanos": "200000000" + }, + "endTime": { + "seconds": "4", + "nanos": "800000000" + } + }], + "transcript": "Hello world.", + "confidence": 0.9128385782241821 + }] + } + }, + "punctuated": { + "transcript": "Hello world." + }, + "user": { + "userId": "emailAddress", + "name": "John Doe", + "id": "23681108-355b-4fc3-9d94-ed47dd39fa56" + } + } + ``` + + * `onMessageResponse`: This callback function contains the "finalized" transcription data for this speaker and if used with multiple streams with other speakers this callback would also provide their messages. + The "finalized" messages mean that the automatic speech recognition has finalized the state of this part of transcription and has declared it "final". Therefore, this transcription will be more accurate than `onSpeechDetected`. + + #### onMessageResponse JSON Response Example + + ```js + [{ + "from": { + "id": "0a7a36b1-047d-4d8c-8958-910317ed9edc", + "name": "John Doe", + "userId": "emailAddress" + }, + "payload": { + "content": "Hello world.", + "contentType": "text/plain" + }, + "id": "59c224c2-54c5-4762-9582-961bf250b478", + "channel": { + "id": "realtime-api" + }, + "metadata": { + "disablePunctuation": true, + "timezoneOffset": 480, + "originalContent": "Hello world.", + "words": "[{\"word\":\"Hello\",\"startTime\":\"2021-02-04T20:34:59.029Z\",\"endTime\":\"2021-02-04T20:34:59.429Z\"},{\"word\":\"world.\",\"startTime\":\"2021-02-04T20:34:59.429Z\",\"endTime\":\"2021-02-04T20:35:00.029Z\"}]", + "originalMessageId": "59c224c2-54c5-4762-9582-961bf250b478" + }, + "dismissed": false, + "duration": { + "startTime": "2021-02-04T20:34:59.029Z", + "endTime": "2021-02-04T20:35:00.029Z" + } + }] + ``` + + * `onInsightResponse`: This callback provides you with any of the detected insights in real-time as they are detected. As with the `onMessageResponse` this would also return every speaker's insights in case of multiple streams. + + **View the examples for `onInsightResponse` [here](#insight-types-insighttypes).** + + * `onTrackerResponse`: This callback provides you with any of the detected trackers in real-time as they are detected. As with the `onMessageResponse` this would also return every tracker in case of multiple streams. + + #### onTrackerResponse JSON Response Example + + ```json + [ + { + "id": "4527907378937856", + "name": "My Awesome Tracker", + "matches": [ + { + "messageRefs": [ + { + "id": "4670860273123328", + "text": "Wearing mask is a good safety measure.", + "offset": -1 + } + ], + "type": "vocabulary", + "value": "wear mask", + "insightRefs": [] + } + ] + } + ] + ``` + + * `onTopicResponse`: This callback provides you with any of the detected topics in real-time as they are detected. As with the `onMessageResponse` this would also return every topic in case of multiple streams. + + #### onTopicResponse JSON Response Example + + ```json + [{ + "id": "e69a5556-6729-11eb-ab14-2aee2deabb1b", + "messageReferences": [{ + "id": "0df44422-0248-47e9-8814-e87f63404f2c", + "relation": "text instance" + }], + "phrases": "auto insurance", + "rootWords": [{ + "text": "auto" + }], + "score": 0.9, + "type": "topic" + }] + ``` + +### Full Configuration Object + +```js +const connection = await sdk.startRealtimeRequest({ + id, + insightTypes: ['action_item', 'question'], + config: { + meetingTitle: 'My Test Meeting', + confidenceThreshold: 0.7, + timezoneOffset: 480, // Offset in minutes from UTC + languageCode: 'en-US', + sampleRateHertz + }, + speaker: { + // Optional, if not specified, will simply not send an email in the end. + userId: 'emailAddress', // Update with valid email + name: 'My name' + }, + handlers: { + /** + * This will return live speech-to-text transcription of the call. + */ + onSpeechDetected: (data) => { + if (data) { + const {punctuated} = data + console.log('Live: ', punctuated && punctuated.transcript) + console.log(''); + } + console.log('onSpeechDetected ', JSON.stringify(data, null, 2)); + }, + /** + * When processed messages are available, this callback will be called. + */ + onMessageResponse: (data) => { + console.log('onMessageResponse', JSON.stringify(data, null, 2)) + }, + /** + * When Symbl detects an insight, this callback will be called. + */ + onInsightResponse: (data) => { + console.log('onInsightResponse', JSON.stringify(data, null, 2)) + }, + /** + * When Symbl detects a topic, this callback will be called. + */ + onTopicResponse: (data) => { + console.log('onTopicResponse', JSON.stringify(data, null, 2)) + }, + /** + * When trackers are detected, this callback will be called. + */ + onTrackerResponse: (data) => { + console.log('onTrackerResponse', JSON.stringify(data, null, 2)) + }, + } +}); +``` + +## Handle the audio stream + +The connection should now be established to the Web Socket. Now you must create several handlers which will handle the audio stream. You can view all the valid handlers [here](https://github.com/ashishbajaj99/mic): + +```js +const micInputStream = micInstance.getAudioStream() +/** Raw audio stream */ +micInputStream.on('data', (data) => { + // Push audio from Microphone to websocket connection + connection.sendAudio(data) +}) + +micInputStream.on('error', function (err) { + console.log('Error in Input Stream: ' + err) +}) + +micInputStream.on('startComplete', function () { + console.log('Started listening to Microphone.') +}) + +micInputStream.on('silence', function () { + console.log('Got SIGNAL silence') +}) +``` + +## Process speech using the device's microphone + +Now you start the recording: + + +```js +micInstance.start() +``` + +Your microphone should now be open to input which will be sent to the Web Socket for processing. The microphone will continue to accept input until the application is stopped or until you tell the connection to stop: + + +```js +/** + * Stop connection after 1 minute i.e. 60 secs + */ +setTimeout(async () => { + // Stop listening to microphone + micInstance.stop() + console.log('Stopped listening to Microphone.') + try { + // Stop connection + await connection.stop() + console.log('Connection Stopped.') + } catch (e) { + console.error('Error while stopping the connection.', e) + } +}, 60 * 1000) +``` + +## Test +To verify and check if the code is working: + +Run your code: +```bash +$ node index.js +``` + +## Grabbing the Conversation ID + +The Conversation ID is very useful for our other APIs such as the [Conversation API](/docs/conversation-api/introduction). We don't use it in this example because it's mainly used for non-real-time data gathering, but it's good to know how to grab it as you can use the Conversation ID later to extract the conversation insights again. + + +```js + const conversationId = connection.conversationId +``` + +With the Conversation ID you can do each of the following (and more!): + +**[View conversation topics](/docs/conversation-api/get-topics)**
+Summary topics provide a quick overview of the key things that were talked about in the conversation. + +**[View action items](/docs/conversation-api/action-items)**
+An action item is a specific outcome recognized in the conversation that requires one or more people in the conversation to take a specific action, e.g. set up a meeting, share a file, complete a task, etc. + +**[View follow-ups](/docs/conversation-api/follow-ups)**
+This is a category of action items with a connotation to follow-up a request or a task like sending an email or making a phone call or booking an appointment or setting up a meeting. + +## Full Code Sample + +Here's the full sample below which you can also [view on Github](https://github.com/symblai/receive-ai-insights-with-real-time-websockets): + +```js +const {sdk} = require('@symblai/symbl-js') +const uuid = require('uuid').v4 + +// For demo purposes, we're using mic to simply get audio from the microphone and pass it on to the WebSocket connection +const mic = require('mic') + +const sampleRateHertz = 16000 + +const micInstance = mic({ + rate: sampleRateHertz, + channels: '1', + debug: false, + exitOnSilence: 6, +}); + +(async () => { + try { + // Initialize the SDK + await sdk.init({ + appId: appId, + appSecret: appSecret, + basePath: 'https://api.symbl.ai', + }) + + // Need unique Id + const id = uuid() + + // Start Real-time Request (Uses Real-time WebSocket API behind the scenes) + const connection = await sdk.startRealtimeRequest({ + id, + insightTypes: ['action_item', 'question'], + config: { + meetingTitle: 'My Test Meeting', + confidenceThreshold: 0.7, + timezoneOffset: 480, // Offset in minutes from UTC + languageCode: 'en-US', + sampleRateHertz + }, + speaker: { + // Optional, if not specified, will simply not send an email in the end. + userId: 'emailAddress', // Update with valid email + name: 'My name' + }, + handlers: { + /** + * This will return live speech-to-text transcription of the call. + */ + onSpeechDetected: (data) => { + if (data) { + const {punctuated} = data + console.log('Live: ', punctuated && punctuated.transcript) + console.log(''); + } + console.log('onSpeechDetected ', JSON.stringify(data, null, 2)); + }, + /** + * When processed messages are available, this callback will be called. + */ + onMessageResponse: (data) => { + console.log('onMessageResponse', JSON.stringify(data, null, 2)) + }, + /** + * When Symbl detects an insight, this callback will be called. + */ + onInsightResponse: (data) => { + console.log('onInsightResponse', JSON.stringify(data, null, 2)) + }, + /** + * When Symbl detects a topic, this callback will be called. + */ + onTopicResponse: (data) => { + console.log('onTopicResponse', JSON.stringify(data, null, 2)) + } + } + }); + console.log('Successfully connected. Conversation ID: ', connection.conversationId); + + const micInputStream = micInstance.getAudioStream() + /** Raw audio stream */ + micInputStream.on('data', (data) => { + // Push audio from Microphone to websocket connection + connection.sendAudio(data) + }) + + micInputStream.on('error', function (err) { + console.log('Error in Input Stream: ' + err) + }) + + micInputStream.on('startComplete', function () { + console.log('Started listening to Microphone.') + }) + + micInputStream.on('silence', function () { + console.log('Got SIGNAL silence') + }) + + micInstance.start() + + setTimeout(async () => { + // Stop listening to microphone + micInstance.stop() + console.log('Stopped listening to Microphone.') + try { + // Stop connection + await connection.stop() + console.log('Connection Stopped.') + } catch (e) { + console.error('Error while stopping the connection.', e) + } + }, 60 * 1000) // Stop connection after 1 minute i.e. 60 secs + } catch (e) { + console.error('Error: ', e) + } +})(); +``` diff --git a/docusaurus-staging.config.js b/docusaurus-staging.config.js index c6481314..e8659ad0 100644 --- a/docusaurus-staging.config.js +++ b/docusaurus-staging.config.js @@ -259,30 +259,35 @@ module.exports = { label: "API Reference", to: '/api-reference/getting-started/', position: "left", + activeBaseRegex: "docs/(api-reference|async-api/(overview|introduction|reference)|streamingapi/introduction|streaming-api/api-reference|subscribe-api|telephony/introduction|telephony-api|conversation-api/api-reference|management-api|developer-tools/(authentication|error|postman|sample-apps))", }, { label: "SDKs", - href: '/sdk-intro/', + to: '/sdk-intro/', position: "left", + activeBaseRegex: "docs/(javascript-sdk|python-sdk|sdk-intro)" }, { label: "Tutorials", - href: '/tutorials/', + to: '/tutorials/', position: "left", + activeBaseRegex: "docs/(tutorials|streamingapi/(code-snippets|tutorials)|async-api/(code-snippets|tutorials)|telephony/(code-snippets|tutorials)|best-practices/best-practices-trackers)|pre-built-ui/(tuning-summary-page|custom-domain|user-engagement-analytics|supported-tracking-events)|concepts/(websockets|pstn-and-sip)" }, { label: "Integrations", - href: '/integrations/integrations-intro/', + to: '/integrations/integrations-intro/', position: "left", + activeBaseRegex: 'docs/integrations' }, { label: "Labs", - href: '/labs/', + to: '/labs/', position: "left", + activeBaseRegex: "docs/(labs|conversation-api/comprehensive-action-items|concepts/redaction-pii|guides/abstract-topics-labs)" }, { label: "Support", - href: '/support/', + to: '/support/', position: "left", }, { @@ -292,13 +297,13 @@ module.exports = { }, { label: 'Free Sign Up', - to: 'https://platform.symbl.ai/#/signup', + href: 'https://platform.symbl.ai/#/signup', position: "right", }, { label: "🆕Changelog", ImageData: "/img/tick-mark.png", - href: '/changelog', + to: '/changelog/', position: "right", }, ], diff --git a/docusaurus.config.js b/docusaurus.config.js index cd61c494..53b9b438 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -259,30 +259,35 @@ module.exports = { label: "API Reference", to: '/api-reference/getting-started/', position: "left", + activeBaseRegex: "docs/(api-reference|async-api/(overview|introduction|reference)|streamingapi/introduction|streaming-api/api-reference|subscribe-api|telephony/introduction|telephony-api|conversation-api/api-reference|management-api|developer-tools/(authentication|error|postman|sample-apps))", }, { label: "SDKs", - href: '/sdk-intro/', + to: '/sdk-intro/', position: "left", + activeBaseRegex: "docs/(javascript-sdk|python-sdk|sdk-intro)" }, { label: "Tutorials", - href: '/tutorials/', + to: '/tutorials/', position: "left", + activeBaseRegex: "docs/(tutorials|streamingapi/(code-snippets|tutorials)|async-api/(code-snippets|tutorials)|telephony/(code-snippets|tutorials)|best-practices/best-practices-trackers)|pre-built-ui/(tuning-summary-page|custom-domain|user-engagement-analytics|supported-tracking-events)|concepts/(websockets|pstn-and-sip)" }, { label: "Integrations", - href: '/integrations/integrations-intro/', + to: '/integrations/integrations-intro/', position: "left", + activeBaseRegex: 'docs/integrations' }, { label: "Labs", - href: '/labs/', + to: '/labs/', position: "left", + activeBaseRegex: "docs/(labs|conversation-api/comprehensive-action-items|concepts/redaction-pii|guides/abstract-topics-labs)" }, { label: "Support", - href: '/support/', + to: '/support/', position: "left", }, { @@ -292,13 +297,13 @@ module.exports = { }, { label: 'Free Sign Up', - to: 'https://platform.symbl.ai/#/signup', + href: 'https://platform.symbl.ai/#/signup', position: "right", }, { label: "🆕 Changelog", ImageData: "/img/tick-mark.png", - href: '/changelog', + to: '/changelog/', position: "right", }, ], diff --git a/sidebars.js b/sidebars.js index 2fcd42ab..71399776 100644 --- a/sidebars.js +++ b/sidebars.js @@ -400,7 +400,7 @@ id: 'developer-tools/postman', items: [ 'streamingapi/code-snippets/start-and-stop-streaming-api-connection', 'streamingapi/tutorials/get-real-time-transcription', - 'javascript-sdk/tutorials/push-audio-get-real-time-data', + 'streamingapi/tutorials/get-real-time-data', 'streamingapi/tutorials/get-real-time-sentiment-analysis', 'streamingapi/code-snippets/detect-key-phrases', 'streamingapi/code-snippets/receive-live-captioning', @@ -512,11 +512,17 @@ id: 'developer-tools/postman', "telephony/concepts/concepts", ], }, -// this is a duplicate as the code is buggy +// this is a duplicate code because the code is buggy { -type: "doc", -id: "faq" + label: 'Concepts', + type: 'category', + collapsed: true, + items: [ + "streamingapi/concepts", + "telephony/concepts/concepts", + ], }, + ], // Integrations Tab @@ -658,10 +664,10 @@ SDKsidebar: [{ }, ] }, - { - type: 'doc', - id: 'developer-tools/postman', - }, + { + type: 'doc', + id: 'python-sdk/python-sdk-reference', // added because of buggy code + }, ], From 5a43aa0e9335a646529edd921c8c2fa6d0785d3a Mon Sep 17 00:00:00 2001 From: Pema <81958801+pema-s@users.noreply.github.com> Date: Thu, 24 Mar 2022 19:27:27 +0530 Subject: [PATCH 30/43] Corrects grammar (#453) --- docs/introduction.md | 49 ++++++++++++++++---------------------------- docs/labs.md | 4 ++-- 2 files changed, 20 insertions(+), 33 deletions(-) diff --git a/docs/introduction.md b/docs/introduction.md index 11a6ca7f..1a476062 100644 --- a/docs/introduction.md +++ b/docs/introduction.md @@ -16,7 +16,7 @@ our APIs or SDKs, we've got you covered!
-
- -## What is Symbl? ---- - -[Symbl](https://symbl.ai/) is an AI-powered, API first, Conversation Intelligence platform for natural human conversations that works on audio, video, and textual content in real-time or recorded files. Symbl’s APIs let you generate real-time Sentiment Analysis, Action Items, Topics, Trackers, Summary and much more in your applications. - - -## Getting Started -### Step 1: Get Symbl API Credentials +## Getting Started with Symbl +### Step 1. Get API Credentials --- Sign up on the [Symbl Platform](https://platform.symbl.ai/#/login) and grab your API Credentials.
Using the Symbl credentials, you can [generate the authentication token](/docs/developer-tools/authentication) that you can use everytime you make Symbl API calls.   -### Step 2: Send Recorded Conversation OR Connect Live +### Step 2. Send Recorded Conversation OR Connect Live --- -Using the following APIs, send conversation data in real-time or after the conversation has taken place (async). +Using the APIs given below, send conversation data in real-time or after the conversation has taken place (async) i.e., with recorded data.     👉   [Async APIs](/docs/async-api/introduction) allow you to send text, audio, or video conversations in recorded format.
    👉   [Streaming APIs](/docs/streamingapi/introduction) allow you to connect Symbl on a live call via WebSocket protocol.
    👉   [Telephony APIs](/docs/telephony/introduction) allow you to connect Symbl on a live audio conversation via SIP and PSTN.
- -Before getting the Conversation Intelligence, you must wait for the processing job to complete. - - -### Step 3: Get Conversation Intelligence +### Step 3. Get Conversation Intelligence --- -Step 2 returns a `conversationId` by default. Use this in the **Conversation API** to generate any of the following Conversation Intelligence: +In Step 2, the `conversationId` is returned. Use the Conversation ID in the **Conversation API** to generate Symbl's Conversation Intelligence and insights: -   👉   [Speech-to-Text (Transcripts)](/docs/concepts/speech-to-text)
-   👉   [Topics](/docs/concepts/topics)
-   👉   [Sentiment Analysis](/docs/concepts/sentiment-analysis)
-   👉   [Action Items](/docs/concepts/action-items)
-   👉   [Follow-Ups](/docs/concepts/follow-ups)
-   👉   [Questions](/docs/concepts/questions)
-   👉   [Trackers](/docs/concepts/trackers)
-   👉   [Conversation Groups](/docs/concepts/conversation-groups)
-   👉   [Conversation Analytics](/docs/concepts/conversational-analytics)
-   👉   [Topic Hierarchy](/docs/concepts/topic-hierarchy)
+   👉   [Get Speech-to-Text (Transcripts)](/docs/concepts/speech-to-text)
+   👉   [Get Topics](/docs/concepts/topics)
+   👉   [Get Sentiment Analysis](/docs/concepts/sentiment-analysis)
+   👉   [Get Action Items](/docs/concepts/action-items)
+   👉   [Get Follow-Ups](/docs/concepts/follow-ups)
+   👉   [Get Questions](/docs/concepts/questions)
+   👉   [Get Trackers](/docs/concepts/trackers)
+   👉   [Get Conversation Groups](/docs/concepts/conversation-groups)
+   👉   [Get Conversation Analytics](/docs/concepts/conversational-analytics)
+   👉   [Get Topic Hierarchy](/docs/concepts/topic-hierarchy)
... and more. -Also check out our features in Labs such as Summarization, Comprehensive Action Items, Identifying and Redacting PII in the [Labs section](/docs/labs). - +Also, check out our features in the [Labs section](/docs/labs) that are currently being . Symbl Labs is an experimental wing that intends to apply and explore AI research on human conversations.
diff --git a/docs/labs.md b/docs/labs.md index 63de7d51..a76adf21 100644 --- a/docs/labs.md +++ b/docs/labs.md @@ -8,12 +8,12 @@ slug: /labs/ --- Symbl Labs is our experimental wing designed to share our bleeding edge AI research on human conversations with anyone who wants to explore its limits. -You can access the Labs features using your Symbl App Id and Secret. If you don't already have it, sign up on the platform to get your credentials. +You can access the Labs features using your Symbl App ID and Secret. If you don't already have it, [sign up](https://platform.symbl.ai/#/signup) on the Symbl Platform to get your credentials. Note that the base URL for all Symbl Labs feature is always `https://api-labs.symbl.ai` :::note -The usage of data for Labs projects is stored for enhancing our research. We may continue to build, iterate, mutate or discontinue any of the below given features on the sole discretion of our team as deemed necessary. +The usage of data for Labs projects is stored for enhancing our research. We may continue to build, iterate, mutate or discontinue any of the Labs features on the sole discretion of our team, as deemed necessary. ::: For any queries or feedback, please contact us at labs@symbl.ai. From 88decef21018d0a4ba09bb8dc333a37a5871e263 Mon Sep 17 00:00:00 2001 From: Amritesh Singh <88492460+amritesh-singh@users.noreply.github.com> Date: Tue, 29 Mar 2022 19:43:05 +0530 Subject: [PATCH 31/43] DC-377 (#458) --- docs/async-api/overview/audio/post-audio-url.md | 2 +- docs/async-api/overview/audio/post-audio.md | 2 +- docs/async-api/overview/audio/put-audio-url.md | 2 +- docs/async-api/overview/audio/put-audio.md | 2 +- docs/async-api/overview/text/post-text.md | 2 +- docs/async-api/overview/text/put-text.md | 2 +- docs/async-api/overview/video/post-video-url.md | 2 +- docs/async-api/overview/video/post-video.md | 2 +- docs/async-api/overview/video/put-video-url.md | 2 +- docs/async-api/overview/video/put-video.md | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/async-api/overview/audio/post-audio-url.md b/docs/async-api/overview/audio/post-audio-url.md index 2370ecfd..e24088c8 100644 --- a/docs/async-api/overview/audio/post-audio-url.md +++ b/docs/async-api/overview/audio/post-audio-url.md @@ -313,7 +313,7 @@ Parameters | Required | Type | Description ```channelMetadata``` | Optional | Object[] | This object parameter contains two variables `speaker` and `channel` to specific which speaker corresponds to which channel. This object **only** works when `enableSeparateRecognitionPerChannel` is set to `true`. Learn more in the [Channel Metadata](#channel-metadata) section below. ```trackers``` BETA | No | List | A `tracker` entity containing `name` and `vocabulary` (a list of key words and/or phrases to be tracked). Read more in the [Tracker API](/docs/management-api/trackers/overview) section. ```enableAllTrackers``` BETA | Optional | Boolean | Default value is `false`. Setting this parameter to `true` will enable detection of all the Trackers maintained for your account by the Management API.This will allow Symbl to detect all the available Trackers in a specific Conversation. Learn about this parameter [here](/docs/management-api/trackers/overview#step-2-submit-files-using-async-api-with-enablealltrackers-flag). -```enableSummary``` ALPHA | Optional | Boolean | Setting this parameter to `true` allows you to generate Summaries using [Summary API (Labs)](/conversation-api/summary). Ensure that you use `https://api-labs.symbl.ai` as the base URL. +```enableSummary``` ALPHA | Optional | Boolean | Setting this parameter to `true` allows you to generate Summaries using [Summary API](/conversation-api/summary). Ensure that you use `https://api.symbl.ai/` as the base URL. ```enableSpeakerDiarization``` | Optional | Boolean | Whether the diarization should be enabled for this conversation. Pass this as `true` to enable Speaker Separation. To learn more, refer to the [Speaker Separation](#speaker-separation) section below. ```diarizationSpeakerCount``` | Optional | String | The number of unique speakers in this conversation. To learn more, refer to the [Speaker Separation](#speaker-separation) section below. diff --git a/docs/async-api/overview/audio/post-audio.md b/docs/async-api/overview/audio/post-audio.md index 58564b17..c9230229 100644 --- a/docs/async-api/overview/audio/post-audio.md +++ b/docs/async-api/overview/audio/post-audio.md @@ -220,7 +220,7 @@ Parameters | Required | Type | Description ``` mode``` | Optional | String | Accepts `phone` or `default`.`phone` mode is best for audio that is generated from phone call(which is typically recorded at 8khz sampling rate).
`default` mode works best for audio generated from video or online meetings(which is typically recorded at 16khz or more sampling rate).
When you don't pass this parameter `default` is selected automatically. ```trackers``` BETA | Optional | List | A `tracker` entity containing name and vocabulary (a list of key words and/or phrases to be tracked). Read more in the [Tracker API](/docs/management-api/trackers/overview) section. ```enableAllTrackers``` BETA | Optional | Boolean | Default value is `false`. Setting this parameter to `true` will enable detection of all the Trackers maintained for your account by the Management API.This will allow Symbl to detect all the available Trackers in a specific Conversation. Learn about this parameter [here](/docs/management-api/trackers/overview#step-2-submit-files-using-async-api-with-enablealltrackers-flag). -```enableSummary``` ALPHA | Optional | Boolean | Setting this parameter to `true` allows you to generate Summaries using [Summary API (Labs)](/conversation-api/summary). Ensure that you use `https://api-labs.symbl.ai` as the base URL. +```enableSummary``` ALPHA | Optional | Boolean | Setting this parameter to `true` allows you to generate Summaries using [Summary API](/conversation-api/summary). Ensure that you use `https://api.symbl.ai/` as the base URL. ```enableSpeakerDiarization``` | Optional | Boolean | Whether the diarization should be enabled for this conversation. Pass this as `true` to enable Speaker Separation. To learn more, refer to the [Speaker Separation](#speaker-separation) section below. ```diarizationSpeakerCount``` | Optional | String | The number of unique speakers in this conversation. To learn more, refer to the [Speaker Separation](#speaker-separation) section below. diff --git a/docs/async-api/overview/audio/put-audio-url.md b/docs/async-api/overview/audio/put-audio-url.md index d949f62b..9019fd07 100644 --- a/docs/async-api/overview/audio/put-audio-url.md +++ b/docs/async-api/overview/audio/put-audio-url.md @@ -329,7 +329,7 @@ Parameters | Required | Type | Description ```channelMetadata``` | Optional | Object[] | This object parameter contains two variables `speaker` and `channel` to specific which speaker corresponds to which channel. This object **only** works when `enableSeparateRecognitionPerChannel` is set to `true`. Learn more in the [Channel Metadata](#channel-metadata) section below. ```trackers``` BETA | Optional | List | A `tracker` entity containing `name` and `vocabulary` (a list of key words and/or phrases to be tracked). Read more in the [Tracker API](/docs/management-api/trackers/overview) section. ```enableAllTrackers``` BETA | Optional | Boolean | Default value is `false`. Setting this parameter to `true` will enable detection of all the Trackers maintained for your account by the Management API.This will allow Symbl to detect all the available Trackers in a specific Conversation. Learn about this parameter [here](/docs/management-api/trackers/overview#step-2-submit-files-using-async-api-with-enablealltrackers-flag). -```enableSummary``` ALPHA | Optional | Boolean | Setting this parameter to `true` allows you to generate Summaries using [Summary API (Labs)](/conversation-api/summary). Ensure that you use `https://api-labs.symbl.ai` as the base URL. +```enableSummary``` ALPHA | Optional | Boolean | Setting this parameter to `true` allows you to generate Summaries using [Summary API](/conversation-api/summary). Ensure that you use `https://api.symbl.ai/` as the base URL. ```enableSpeakerDiarization``` | Optional | Boolean | Whether the diarization should be enabled for this conversation. Pass this as `true` to enable Speaker Separation. To learn more, refer to the [Speaker Separation](#speaker-separation) section below. ```diarizationSpeakerCount``` | Optional | String | The number of unique speakers in this conversation. To learn more, refer to the [Speaker Separation](#speaker-separation) section below. diff --git a/docs/async-api/overview/audio/put-audio.md b/docs/async-api/overview/audio/put-audio.md index dd65d0a0..01325a0c 100644 --- a/docs/async-api/overview/audio/put-audio.md +++ b/docs/async-api/overview/audio/put-audio.md @@ -225,7 +225,7 @@ Parameters | Required | Type | Description ``` mode``` | Optional | String | Accepts `phone` or `default`. `phone` mode is best for audio that is generated from phone call(which is typically recorded at 8khz sampling rate).
`default` mode works best for audio generated from video or online meetings(which is typically recorded at 16khz or more sampling rate).
When you don't pass this parameter `default` is selected automatically. ```trackers``` BETA | Optional | List | A `tracker` entity containing the `name` and `vocabulary` (a list of key words and/or phrases to be tracked). Read more in the [Tracker API](/docs/management-api/trackers/overview) section. ```enableAllTrackers``` BETA | Optional | Boolean | Default value is `false`. Setting this parameter to `true` will enable detection of all the Trackers maintained for your account by the Management API.This will allow Symbl to detect all the available Trackers in a specific Conversation. Learn about this parameter [here](/docs/management-api/trackers/overview#step-2-submit-files-using-async-api-with-enablealltrackers-flag). - ```enableSummary``` ALPHA | Optional | Boolean | Setting this parameter to `true` allows you to generate Summaries using [Summary API (Labs)](/conversation-api/summary). Ensure that you use `https://api-labs.symbl.ai` as the base URL. + ```enableSummary``` ALPHA | Optional | Boolean | Setting this parameter to `true` allows you to generate Summaries using [Summary API](/conversation-api/summary). Ensure that you use `https://api.symbl.ai/` as the base URL. ```enableSpeakerDiarization``` | Optional | Boolean | Whether the diarization should be enabled for this conversation. Pass this as `true` to enable Speaker Separation. To learn more, refer to the [Speaker Separation](#speaker-separation) section below. ```diarizationSpeakerCount``` | Optional | String | The number of unique speakers in this conversation. To learn more, refer to the [Speaker Separation](#speaker-separation) section below. diff --git a/docs/async-api/overview/text/post-text.md b/docs/async-api/overview/text/post-text.md index 446a3901..c7457da3 100644 --- a/docs/async-api/overview/text/post-text.md +++ b/docs/async-api/overview/text/post-text.md @@ -304,7 +304,7 @@ Field | Required | Type | Description ```messages``` | Mandatory | list | Input Messages to look for insights. [See the messages section below for more details.](#messages) ```trackers``` BETA | Optional | List | A `tracker` entity containing `name` and `vocabulary` (a list of key words and/or phrases to be tracked). Read more in the [Tracker API](/docs/management-api/trackers/overview) section. ```enableAllTrackers``` BETA | Optional | Boolean | Default value is `false`. Setting this parameter to `true` will enable detection of all the Trackers maintained for your account by the Management API. This will allow Symbl to detect all the available Trackers in a specific Conversation. Learn about this parameter [here](/docs/management-api/trackers/overview#step-2-submit-files-using-async-api-with-enablealltrackers-flag). -```enableSummary``` ALPHA | Optional | Boolean | Setting this parameter to `true` allows you to generate Summaries using [Summary API (Labs)](/conversation-api/summary). Ensure that you use `https://api-labs.symbl.ai` as the base URL. +```enableSummary``` ALPHA | Optional | Boolean | Setting this parameter to `true` allows you to generate Summaries using [Summary API](/conversation-api/summary). Ensure that you use `https://api.symbl.ai/` as the base URL. ```webhookUrl``` | Optional | String | Webhook URL on which job updates to be sent. This should be after making the API request. See the [Webhook section](/docs/async-api/overview/text/post-text#webhookurl) for more. #### messages diff --git a/docs/async-api/overview/text/put-text.md b/docs/async-api/overview/text/put-text.md index 5fb25ba2..6230dad3 100644 --- a/docs/async-api/overview/text/put-text.md +++ b/docs/async-api/overview/text/put-text.md @@ -342,7 +342,7 @@ Field | Required | Type | Description ```detectEntities``` | Optional | Boolean | Default value is `false`. If not set the [Entities API](/docs/conversation-api/entities) will not return any entities from the conversation. ```trackers``` BETA | Optional | String | A `tracker` entity containing name and vocabulary (a list of key words and/or phrases to be tracked). Read more in the[Tracker API](/docs/management-api/trackers/overview) section. ```enableAllTrackers``` BETA | Optional | Boolean | Default value is `false`. Setting this parameter to `true` will enable detection of all the Trackers maintained for your account by the Management API.This will allow Symbl to detect all the available Trackers in a specific Conversation. Learn about this parameter [here](/docs/management-api/trackers/overview#step-2-submit-files-using-async-api-with-enablealltrackers-flag). -```enableSummary``` ALPHA | Optional | Boolean | Setting this parameter to `true` allows you to generate Summaries using [Summary API (Labs)](/conversation-api/summary). Ensure that you use `https://api-labs.symbl.ai` as the base URL. +```enableSummary``` ALPHA | Optional | Boolean | Setting this parameter to `true` allows you to generate Summaries using [Summary API](/conversation-api/summary). Ensure that you use `https://api.symbl.ai/` as the base URL. ```webhookUrl``` | Optional | String | Webhook URL on which job updates to be sent. This should be post API. See [Webhook section](/docs/async-api/overview/text/post-text#webhookurl) below. #### messages diff --git a/docs/async-api/overview/video/post-video-url.md b/docs/async-api/overview/video/post-video-url.md index ae47cfe3..84efe0f7 100644 --- a/docs/async-api/overview/video/post-video-url.md +++ b/docs/async-api/overview/video/post-video-url.md @@ -290,7 +290,7 @@ Field | Required | Type | Description ```channelMetadata```| Optional | Object[] | This object parameter contains two variables `speaker` and `channel` to specify which speaker corresponds to which channel. This object only works when `enableSeparateRecognitionPerChannel` query param is set to `true`. Read more in the [Channel Metadata](#channel-metadata) section below. ```trackers``` BETA| Optional | List | A `tracker` entity containing `name` and `vocabulary` (a list of key words and/or phrases to be tracked). Read more in the [Tracker API](/docs/management-api/trackers/overview) section. ```enableAllTrackers``` BETA | Optional | Boolean | Default value is `false`. Setting this parameter to `true` will enable detection of all the Trackers maintained for your account by the Management API.This will allow Symbl to detect all the available Trackers in a specific Conversation. Learn about this parameter [here](/docs/management-api/trackers/overview#step-2-submit-files-using-async-api-with-enablealltrackers-flag). -```enableSummary``` ALPHA | Optional | Boolean | Setting this parameter to `true` allows you to generate Summaries using [Summary API (Labs)](/conversation-api/summary). Ensure that you use `https://api-labs.symbl.ai` as the base URL. +```enableSummary``` ALPHA | Optional | Boolean | Setting this parameter to `true` allows you to generate Summaries using [Summary API](/conversation-api/summary). Ensure that you use `https://api.symbl.ai/` as the base URL. ```enableSpeakerDiarization``` | Optional | Boolean | Whether the diarization should be enabled for this conversation. Pass this as `true` to enable Speaker Separation. To learn more, refer to the [Speaker Separation](#speaker-separation) section below. ```diarizationSpeakerCount``` | Optional | String | The number of unique speakers in this conversation. To learn more, refer to the [Speaker Separation](#speaker-separation) section below. diff --git a/docs/async-api/overview/video/post-video.md b/docs/async-api/overview/video/post-video.md index 50a5e85e..7b37b162 100644 --- a/docs/async-api/overview/video/post-video.md +++ b/docs/async-api/overview/video/post-video.md @@ -198,7 +198,7 @@ Parameter | Required | Type | Description ```channelMetadata```| Optional | Object[] | This object parameter contains two variables `speaker` and `channel` to specify which speaker corresponds to which channel. This object only works when `enableSeparateRecognitionPerChannel` query param is set to `true`. Read more in the [Channel Metadata](#channel-metadata) section below. ```trackers``` BETA | Optional | List | A `tracker` entity containing `name` and `vocabulary` (a list of key words and/or phrases to be tracked). Read more in the [Tracker API](/docs/management-api/trackers/overview) section. ```enableAllTrackers``` BETA | Optional | Boolean | Default value is `false`. Setting this parameter to `true` will enable detection of all the Trackers maintained for your account by the Management API.This will allow Symbl to detect all the available Trackers in a specific Conversation. Learn about this parameter [here](/docs/management-api/trackers/overview#step-2-submit-files-using-async-api-with-enablealltrackers-flag). -```enableSummary``` ALPHA | Optional | Boolean | Setting this parameter to `true` allows you to generate Summaries using [Summary API (Labs)](/conversation-api/summary). Ensure that you use the base URL as `https://api-labs.symbl.ai`. +```enableSummary``` ALPHA | Optional | Boolean | Setting this parameter to `true` allows you to generate Summaries using [Summary API](/conversation-api/summary). Ensure that you use `https://api.symbl.ai/` as the base URL. ```enableSpeakerDiarization``` | Optional | Boolean | Whether the diarization should be enabled for this conversation. Pass this as `true` to enable Speaker Separation. To learn more, refer to the [Speaker Separation](#speaker-separation) section below. ```diarizationSpeakerCount``` | Optional | String | The number of unique speakers in this conversation. To learn more, refer to the [Speaker Separation](#speaker-separation) section below. diff --git a/docs/async-api/overview/video/put-video-url.md b/docs/async-api/overview/video/put-video-url.md index 70b59959..d3df25fc 100644 --- a/docs/async-api/overview/video/put-video-url.md +++ b/docs/async-api/overview/video/put-video-url.md @@ -308,7 +308,7 @@ Field | Required | Type | Description ```channelMetadata```| Optional | Object[] | This object parameter contains two variables `speaker` and `channel` to specify which speaker corresponds to which channel. This object only works when `enableSeparateRecognitionPerChannel` query param is set to `true`. Read more in the [Channel Metadata](#channel-metadata) section below. ```trackers``` BETA| Optional | List | A `tracker` entity containing `name` and `vocabulary` (a list of key words and/or phrases to be tracked). Read more in the [Tracker API](/docs/management-api/trackers/overview) section. ```enableAllTrackers``` BETA | Optional | Boolean | Default value is `false`. Setting this parameter to `true` will enable detection of all the Trackers maintained for your account by the Management API.This will allow Symbl to detect all the available Trackers in a specific Conversation. Learn about this parameter [here](/docs/management-api/trackers/overview#step-2-submit-files-using-async-api-with-enablealltrackers-flag). -```enableSummary``` ALPHA | Optional | Boolean | Setting this parameter to `true` allows you to generate Summaries using [Summary API (Labs)](/conversation-api/summary). Ensure that you use the base URL as `https://api-labs.symbl.ai`. +```enableSummary``` ALPHA | Optional | Boolean | Setting this parameter to `true` allows you to generate Summaries using [Summary API](/conversation-api/summary). Ensure that you use `https://api.symbl.ai/` as the base URL. ```enableSpeakerDiarization``` | Optional | Boolean | Whether the diarization should be enabled for this conversation. Pass this as `true` to enable Speaker Separation. To learn more, refer to the [Speaker Separation](#speaker-separation) section below. ```diarizationSpeakerCount``` | Optional | String | The number of unique speakers in this conversation. To learn more, refer to the [Speaker Separation](#speaker-separation) section below. diff --git a/docs/async-api/overview/video/put-video.md b/docs/async-api/overview/video/put-video.md index 76e80ceb..0c59cc7b 100644 --- a/docs/async-api/overview/video/put-video.md +++ b/docs/async-api/overview/video/put-video.md @@ -215,7 +215,7 @@ Parameter | Required | Type | Description ```channelMetadata```| Optional | Object[] | This object parameter contains two variables `speaker` and `channel` to specify which speaker corresponds to which channel. This object only works when `enableSeparateRecognitionPerChannel` query param is set to `true`. Read more in the [Channel Metadata](#channel-metadata) section below. ```trackers``` BETA | Optional | List | A `tracker` entity containing `name` and `vocabulary` (a list of key words and/or phrases to be tracked). Read more in the [Tracker API](/docs/management-api/trackers/overview) section. ```enableAllTrackers``` BETA | Optional | Boolean | Default value is `false`. Setting this parameter to `true` will enable detection of all the Trackers maintained for your account by the Management API.This will allow Symbl to detect all the available Trackers in a specific Conversation. Learn about this parameter [here](/docs/management-api/trackers/overview#step-2-submit-files-using-async-api-with-enablealltrackers-flag). -```enableSummary``` ALPHA | Optional | Boolean | Setting this parameter to `true` allows you to generate Summaries using [Summary API (Labs)](/conversation-api/summary). Ensure that you use the base URL as `https://api-labs.symbl.ai`. +```enableSummary``` ALPHA | Optional | Boolean | Setting this parameter to `true` allows you to generate Summaries using [Summary API](/conversation-api/summary). Ensure that you use `https://api.symbl.ai/` as the base URL. ```enableSpeakerDiarization``` | Optional | Boolean | Whether the diarization should be enabled for this conversation. Pass this as `true` to enable Speaker Separation. To learn more, refer to the [Speaker Separation](#speaker-separation) section below. ```diarizationSpeakerCount``` | Optional | String | The number of unique speakers in this conversation. To learn more, refer to the [Speaker Separation](#speaker-separation) section below. From be56cca377c1d377ec3c45caf997c54c20f3f308 Mon Sep 17 00:00:00 2001 From: Pema <81958801+pema-s@users.noreply.github.com> Date: Tue, 29 Mar 2022 19:53:29 +0530 Subject: [PATCH 32/43] Update homepage cards (#459) * update ui cards * Makes dark mode default Co-authored-by: Kush Vora --- docs/introduction.md | 46 +++++++++++++------------ docs/tutorials.md | 65 ++++++++++++++---------------------- docusaurus-staging.config.js | 2 +- docusaurus.config.js | 2 +- src/css/custom.css | 64 +++++++++++++++++++++++++++++++++-- 5 files changed, 113 insertions(+), 66 deletions(-) diff --git a/docs/introduction.md b/docs/introduction.md index 1a476062..a0c92c63 100644 --- a/docs/introduction.md +++ b/docs/introduction.md @@ -11,20 +11,23 @@ slug: / Whether you're looking to understand Symbl's capabilities or get started with our APIs or SDKs, we've got you covered! -
- - - - + ## Getting Started with Symbl @@ -66,14 +69,15 @@ Also, check out our features in the [Labs section](/docs/labs) that are currentl
-


Try it in Postman

Our public collection in Postman has pre-configured API requests that gets you up-and-running in a jiffy. Try it now!
-
- -[![Run in Postman](https://run.pstmn.io/button.svg)](https://god.gw.postman.com/run-collection/13497402-108cafc3-da45-4b00-97fe-4819894f58bb?action=collection%2Ffork&collection-url=entityId%3D13497402-108cafc3-da45-4b00-97fe-4819894f58bb%26entityType%3Dcollection%26workspaceId%3D5f563cfe-42ef-4344-a98a-eae13183fb7c) +
+

Try it in Postman

+

Our public collection in Postman has pre-configured API requests that gets you up-and-running in a jiffy. Try it now!

-***If you're new to Postman, watch this [video tutorial](/docs/developer-tools/postman#how-to-use-symbl-postman-collection) to learn how***. + [![Run in Postman](https://run.pstmn.io/button.svg)](https://god.gw.postman.com/run-collection/13497402-108cafc3-da45-4b00-97fe-4819894f58bb?action=collection%2Ffork&collection-url=entityId%3D13497402-108cafc3-da45-4b00-97fe-4819894f58bb%26entityType%3Dcollection%26workspaceId%3D5f563cfe-42ef-4344-a98a-eae13183fb7c) -
-
+ If you're new to Postman, watch this video tutorial to learn how
+
+
+ diff --git a/docs/tutorials.md b/docs/tutorials.md index 1f68446b..7d474343 100644 --- a/docs/tutorials.md +++ b/docs/tutorials.md @@ -9,52 +9,37 @@ slug: /tutorials/ Find detailed tutorials on how to implement Conversation Intelligence on your conversation application or platform. -
-
-

Streaming API

- -* [Get Real-time Speech-To-Text Transcriptions Using Streaming API](/docs/streamingapi/tutorials/receive-ai-insights-from-your-web-browser) -* [Gain Real-time AI Insights From Your Device's Mic Using Symbl's Javascript SDK](/docs/javascript-sdk/tutorials/receive-ai-insights-from-your-computer) -* [Start and Stop Streaming API Connection](/docs/streamingapi/code-snippets/start-and-stop-connection) -* [Receive Live Captioning](/docs/streamingapi/code-snippets/receive-live-captioning) - -
+
+ -
-

Async APIs

- - -* [How To Use Sentiment Analysis](/docs/async-api/code-snippets/how-to-use-sentiment-analysis) -* [Track Phrases In A Conversation](/docs/async-api/code-snippets/track-phrases-in-a-conversation) -* [Speaker Separation with Async API](/async-api/tutorials/get-speaker-separation-audio-video) -* [Receive Speech-to-Text and AI Insights](/docs/async-api/code-snippets/receive-speech-to-text-and-ai-insights) -* [Generate a Pre-built UI From Video Recordings](/docs/async-api/code-snippets/generate-pre-built-ui-from-video-recordings) - - -
+ -
-

Telephony API

- -* [Gain AI Insights On Your Zoom Call](/docs/telephony/tutorials/connect-to-zoom) -* [Get A Live Transcription From A Phone Call](/docs/telephony/tutorials/connect-to-phone-call) -* [Connect to a PSTN connection to get Speech to Text and AI Insights](/docs/telephony/code-snippets/connect-to-pstn) -* [Connect to a SIP connection to get Speech to Text and AI Insights](/docs/telephony/code-snippets/connect-to-sip) -* [Receive Speech to Text for a different language in a conversation](/docs/telephony/code-snippets/receive-speech-to-text-for-a-different-language) - - - + -
- -
-
-
-
-
+ \ No newline at end of file diff --git a/docusaurus-staging.config.js b/docusaurus-staging.config.js index e8659ad0..2668ae80 100644 --- a/docusaurus-staging.config.js +++ b/docusaurus-staging.config.js @@ -231,7 +231,7 @@ module.exports = { colorMode: { - defaultMode: 'light', + defaultMode: 'dark', disableSwitch: false, respectPrefersColorScheme: true }, diff --git a/docusaurus.config.js b/docusaurus.config.js index 53b9b438..60b5d464 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -237,7 +237,7 @@ module.exports = { colorMode: { - defaultMode: 'light', + defaultMode: 'dark', disableSwitch: false, respectPrefersColorScheme: true }, diff --git a/src/css/custom.css b/src/css/custom.css index 822a557f..3e2bae83 100644 --- a/src/css/custom.css +++ b/src/css/custom.css @@ -389,13 +389,26 @@ th:empty { width: 200%; background-color: #c7ebc0; } + .card2 { box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2); /* this adds the "card" effect */ - padding: 16px; + padding: 26px; text-align: left; width: 200%; - background-color: #FFA500 + background-color: #FFA500; + border-radius: 30px; + transition:0.3s; + } + + html[data-theme='dark'] .card2 { + color:black; } + + .card2:hover{ + box-shadow: 5px 10px 8px #888888; + } + + .card1:hover { box-shadow: 0 8px 16px 0 rgba(214, 215, 221, 0.2); @@ -488,4 +501,49 @@ html[data-theme='dark'] .sdk-card:hover { .sdk-card-header{ margin-left:25px; margin-bottom: 0px; -} \ No newline at end of file +} + +.card-container { + display: flex; + flex-wrap: wrap; + margin: -1.25rem; + margin-top: 0; +} + +.intro-card { + width:360px; + margin: 1.25rem; + padding: 1.5rem; + display:flex; + flex-direction: column; + text-decoration: none; + font-size: var(--font-size-normal); + color:black; + background-color: #F0F1F5; + transition:0.3s; + border-radius: 10px; +} + +.intro-card:hover{ + box-shadow: 5px 10px 8px #888888; + text-decoration: none; + color:black; +} + +html[data-theme="dark"] .intro-card{ + color:white; + background-color: #262833; +} + +.intro-card > ul { + list-style-type: none; +} + +.tutorial-button { + color:black; +} + +.tutorial-button:hover { + color:black; +} + From 5906ceaddce2f3c59363b2461b669e55f68f0c43 Mon Sep 17 00:00:00 2001 From: Pema <81958801+pema-s@users.noreply.github.com> Date: Tue, 29 Mar 2022 20:19:21 +0530 Subject: [PATCH 33/43] DC-380 (#460) --- docs/conversation-api/api-reference/put-all-conversation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/conversation-api/api-reference/put-all-conversation.md b/docs/conversation-api/api-reference/put-all-conversation.md index 35b5016c..c377fef1 100644 --- a/docs/conversation-api/api-reference/put-all-conversation.md +++ b/docs/conversation-api/api-reference/put-all-conversation.md @@ -114,7 +114,7 @@ The following fields cannot be updated/deleted: ### Request Body -Given below is an example of the request along with optional query parameters. For a complete list of query parameters and their description, see the [table](#query-parameters) below. +Given below is an example of the request body: ```json { From b11a2d67b409741c3960192d95fdd2f4eadb44ac Mon Sep 17 00:00:00 2001 From: Amritesh Singh <88492460+amritesh-singh@users.noreply.github.com> Date: Thu, 31 Mar 2022 19:45:16 +0530 Subject: [PATCH 34/43] DC-365 (#462) --- docs/telephony/code-snippets/connect-to-pstn.md | 7 +++++-- docs/telephony/code-snippets/connect-to-sip.md | 8 +++++--- .../receive-prebuilt-ui-email-after-conversation.md | 6 +++++- .../receive-speech-to-text-for-a-different-language.md | 6 +++++- docs/telephony/reference/reference.md | 3 ++- .../tutorials/connect-to-zoom-with-telephony-api.md | 2 ++ .../tutorials/get-live-transcription-telephony-api.md | 3 ++- 7 files changed, 26 insertions(+), 9 deletions(-) diff --git a/docs/telephony/code-snippets/connect-to-pstn.md b/docs/telephony/code-snippets/connect-to-pstn.md index 2c3a4ed1..73f081d0 100644 --- a/docs/telephony/code-snippets/connect-to-pstn.md +++ b/docs/telephony/code-snippets/connect-to-pstn.md @@ -12,12 +12,15 @@ import TabItem from '@theme/TabItem'; The following code example shows how you can connect the Telephony API to your cell phone or any other type of phone number using PSTN (**Currently, only US phone numbers work**). Making a phone call is also the quickest way to test Symbl’s Telephony API. It can make an outbound call to a phone number using a traditional public switched telephony network ([PSTN](https://en.wikipedia.org/wiki/Public_switched_telephone_network)). -#### Code Example - :::info The Symbl SDK (Node.js) snippet must be run using Node.js, while the Native Javascript snippet can be run in your web browser. ::: +### Authentication +Before using this API, you must generate your authentication token (`AUTH_TOKEN`). To learn how to get the authentication token, see the [Authentication](/docs/developer-tools/authentication) page. + +#### Code Example + Code Example - :::info The Symbl SDK (Node.js) snippet must be run using Node.js, while the Native Javascript snippet can be run in your web browser. ::: +### Authentication +Before using this API, you must generate your authentication token (`AUTH_TOKEN`). To learn how to get the authentication token, see the [Authentication](/docs/developer-tools/authentication) page. + +#### Code Example + Full Code Example :::info The Symbl SDK (Node.js) snippet must be run using Node.js, while the Native Javascript snippet can be run in your web browser. ::: +### Authentication +Before using this API, you must generate your authentication token (`AUTH_TOKEN`). To learn how to get the authentication token, see the [Authentication](/docs/developer-tools/authentication) page. + +#### Full Code Example + Full Code Example :::info The Symbl SDK (Node.js) snippet must be run using Node.js, while the Native Javascript snippet can be run in your web browser. ::: +### Authentication +Before using this API, you must generate your authentication token (`AUTH_TOKEN`). To learn how to get the authentication token, see the [Authentication](/docs/developer-tools/authentication) page. + +### Full Code Example + Retrieve your credentials Your credentials include your appId and appSecret. You can find them on the home page of the platform. ![credentials page](/img/credentials.png) - ### Initialize SDK Create a new file named index.js in your project and add the following lines to initialize the Symbl SDK: From 8190fdce81a5207a1da11a8e17fd562a2af84dbd Mon Sep 17 00:00:00 2001 From: Amritesh Singh <88492460+amritesh-singh@users.noreply.github.com> Date: Thu, 31 Mar 2022 19:52:41 +0530 Subject: [PATCH 35/43] DC-361 (#456) * DC-358 * DC-361 * Revert "DC-361" This reverts commit 06086abfa1ffa4239d28354fd6adbc25dd6fa4e1. * DC-361 * DC-361 --- .../code-snippets/how-to-use-sentiment-analysis.md | 7 +++---- .../code-snippets/receive-conversation-analytics.md | 7 +++---- docs/async-api/code-snippets/receive-entities.md | 7 +++---- .../receive-speech-to-text-and-ai-insights.md | 7 +++---- .../code-snippets/sentiment-analysis-on-messages.md | 3 +++ .../code-snippets/sentiment-analysis-on-topics.md | 3 +++ .../code-snippets/track-phrases-in-a-conversation.md | 7 +++---- docs/async-api/overview/audio/post-audio-url.md | 5 +++-- docs/async-api/overview/audio/post-audio.md | 5 +++-- docs/async-api/overview/audio/put-audio-url.md | 5 ++--- docs/async-api/overview/audio/put-audio.md | 4 ++-- docs/async-api/overview/text/post-text.md | 5 +++-- docs/async-api/overview/text/put-text.md | 6 +++--- docs/async-api/overview/video/post-video-url.md | 5 ++--- docs/async-api/overview/video/post-video.md | 6 +++--- docs/async-api/overview/video/put-video-url.md | 5 +++-- docs/async-api/overview/video/put-video.md | 7 +++---- .../generate-pre-built-ui-from-video-recordings.md | 8 +++----- .../tutorials/get-speaker-separation-audio-video.md | 7 ++++--- 19 files changed, 55 insertions(+), 54 deletions(-) diff --git a/docs/async-api/code-snippets/how-to-use-sentiment-analysis.md b/docs/async-api/code-snippets/how-to-use-sentiment-analysis.md index ab638e9b..93724596 100644 --- a/docs/async-api/code-snippets/how-to-use-sentiment-analysis.md +++ b/docs/async-api/code-snippets/how-to-use-sentiment-analysis.md @@ -23,11 +23,10 @@ You must wait for the job to complete processing before you proceed with getting While we provide you with a default video URL for the API to process, which can be downloaded [here](https://symbltestdata.s3.us-east-2.amazonaws.com/sample_video_file.mp4), you can replace that with any other video URL. -### Request Example +### Authentication +Before using this API, you must generate your authentication token (`AUTH_TOKEN`). To learn how to get the authentication token, see the [Authentication](/docs/developer-tools/authentication) page. -:::info -Before using the Async API you must get the authentication token (`AUTH_TOKEN`) from [our authentication process](/docs/developer-tools/authentication). -::: +### Request Example mp4
file formats video. If you have any other type of file, you need to first convert the file to the supported format in order to use the API. ::: +### Authentication +Before using this API, you must generate your authentication token (`AUTH_TOKEN`). To learn how to get the authentication token, see the [Authentication](/docs/developer-tools/authentication) page. ### API Endpoint `POST https://api.symbl.ai/v1/process/video/url` - ### Example API Call -Before using the Async Video API you must get the authentication token (`AUTH_TOKEN`) from [our authentication process](/docs/developer-tools/authentication). - mp4 file formats. If you have any other type of file, you need to first convert the file to the supported format in order to use the API. ::: +### Authentication +Before using this API, you must generate your authentication token (`AUTH_TOKEN`). To learn how to get the authentication token, see the [Authentication](/docs/developer-tools/authentication) page. + ### API Endpoint `POST https://api.symbl.ai/v1/process/video` - ### Example API Call -Before using the Async Video API you must get the authentication token (`AUTH_TOKEN`) from [our authentication process](/docs/developer-tools/authentication). - Date: Mon, 4 Apr 2022 11:58:24 +0530 Subject: [PATCH 36/43] DC-381, DC-382 (#465) Adds bug fixes --- docs/streamingapi/introduction.md | 2 +- docs/streamingapi/reference/reference.md | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/streamingapi/introduction.md b/docs/streamingapi/introduction.md index e26737ff..8fa33989 100644 --- a/docs/streamingapi/introduction.md +++ b/docs/streamingapi/introduction.md @@ -35,7 +35,7 @@ Here is a list of code snippets to help you get started on your journey with the - [Start and Stop Streaming API Connection](/docs/streamingapi/code-snippets/start-and-stop-connection) - [Receive Live Captioning](/docs/streamingapi/code-snippets/receive-live-captioning) - [Receive Live Topics](/docs/streamingapi/code-snippets/receive-live-topics) -- [Receive Live AI Insights](/docs/streamingapi/code-snippets/receive-ai-insights) +- [Receive Live AI Insights](/docs/streamingapi/code-snippets/receive-live-insights/) - [Receive Speech to Text for a different language in a conversation](/docs/streamingapi/code-snippets/receive-speech-to-text-for-different-languages) diff --git a/docs/streamingapi/reference/reference.md b/docs/streamingapi/reference/reference.md index 7759303e..eb53506b 100644 --- a/docs/streamingapi/reference/reference.md +++ b/docs/streamingapi/reference/reference.md @@ -16,7 +16,6 @@ Symbl's Streaming API is based on the WebSocket protocol and can be used for rea Currently, Streaming API is supported in English only. However, the support for Spanish is available as a part of [Symbl Labs](/docs/labs/). ::: -## Request Parameters ### Authentication @@ -24,12 +23,14 @@ Before using this API, you must generate your authentication token (`AUTH_TOKEN` ### Endpoint -`wss://api.symbl.ai/v1/streaming/{CONVERSATION_ID}?access_token=ACCESS_TOKEN` +`wss://api.symbl.ai/v1/streaming/{CONNECTION_ID}?access_token=ACCESS_TOKEN` :::note Backward Compatibility The previous endpoint `wss://api.symbl.ai/v1/realtime/insights/` is now updated to `wss://api.symbl.ai/v1/streaming/` to standardize our API nomenclature. This change is backward compatible. However, we recommend you to use the new endpoint. ::: +### Request Parameters + #### Main Message Body Field | Required | Supported Value | Description From c7e03df0ba906cdaed0dd997972cb3afd6dcad59 Mon Sep 17 00:00:00 2001 From: Pema <81958801+pema-s@users.noreply.github.com> Date: Mon, 4 Apr 2022 17:04:37 +0530 Subject: [PATCH 37/43] Bug fixes 04 04 (#466) * DC-381, DC-382 Adds bug fixes * DC-129, DC-372 --- docs/async-api/introduction.md | 1 + docs/conversation-api/concepts/action-items.md | 1 + docs/conversation-api/concepts/analytics.md | 1 + .../concepts/comprehensive-action-items.md | 1 + .../concepts/conversation-groups.md | 1 + docs/conversation-api/concepts/follow-ups.md | 1 + docs/conversation-api/concepts/questions.md | 1 + docs/conversation-api/concepts/redacting-pii.md | 1 + docs/conversation-api/concepts/sentiment.md | 1 + docs/conversation-api/concepts/speech-to-text.md | 1 + docs/conversation-api/concepts/summarization.md | 1 + docs/conversation-api/concepts/summary-topic.md | 1 + docs/conversation-api/concepts/topic-hierarchy.md | 1 + docs/conversation-api/concepts/trackers.md | 1 + docs/conversation-api/concepts/ui-components.md | 1 + docs/conversation-api/introduction.md | 1 + docs/guides.md | 1 + docs/integrations/integrations-intro.md | 1 + docs/introduction.md | 1 + docs/javascript-sdk/overview/introduction.md | 1 + docs/labs.md | 2 +- docs/labs/abstract-topics-labs.md | 1 + .../conversation-groups-intro.md | 3 ++- docs/management-api/introduction.md | 1 + docs/management-api/trackers/overview.md | 1 + docs/python-sdk/overview.md | 1 + docs/sdk-intro.md | 2 +- docs/streamingapi/introduction.md | 1 + docs/support.md | 1 + docs/telephony/introduction.md | 1 + docs/tutorials.md | 1 + docusaurus.config.js | 15 ++++++++------- 32 files changed, 40 insertions(+), 10 deletions(-) diff --git a/docs/async-api/introduction.md b/docs/async-api/introduction.md index 842160ea..37a86bbc 100644 --- a/docs/async-api/introduction.md +++ b/docs/async-api/introduction.md @@ -4,6 +4,7 @@ title: Async API description: Symbl.ai Async APIs provides a REST interface for submitting any recorded or saved conversations for transcription. Check out our Async APIs documentation to get started. sidebar_label: Introduction slug: /async-api/introduction/ +pagination_label: Async API --- diff --git a/docs/conversation-api/concepts/action-items.md b/docs/conversation-api/concepts/action-items.md index c8bbf664..a9bb7a14 100644 --- a/docs/conversation-api/concepts/action-items.md +++ b/docs/conversation-api/concepts/action-items.md @@ -3,6 +3,7 @@ id: action-items title: Action Items sidebar_label: Action Items slug: /concepts/action-items/ +pagination_label: Action Items --- import Tabs from '@theme/Tabs'; diff --git a/docs/conversation-api/concepts/analytics.md b/docs/conversation-api/concepts/analytics.md index 964b7e57..3f73c758 100644 --- a/docs/conversation-api/concepts/analytics.md +++ b/docs/conversation-api/concepts/analytics.md @@ -3,6 +3,7 @@ id: analytics title: Conversational Analytics sidebar_label: Introduction slug: /concepts/conversational-analytics/ +pagination_label: Conversation Analytics --- import Tabs from '@theme/Tabs'; diff --git a/docs/conversation-api/concepts/comprehensive-action-items.md b/docs/conversation-api/concepts/comprehensive-action-items.md index d589fea7..bd8b8b11 100644 --- a/docs/conversation-api/concepts/comprehensive-action-items.md +++ b/docs/conversation-api/concepts/comprehensive-action-items.md @@ -2,6 +2,7 @@ id: comprehensive-action-items title: Comprehensive Action Items (Labs) sidebar_label: Introduction +pagination_label: Comprehensive Action Items slug: /concepts/comprehensive-action-items/ --- diff --git a/docs/conversation-api/concepts/conversation-groups.md b/docs/conversation-api/concepts/conversation-groups.md index e1524d15..4d2cbc76 100644 --- a/docs/conversation-api/concepts/conversation-groups.md +++ b/docs/conversation-api/concepts/conversation-groups.md @@ -2,6 +2,7 @@ id: conversation-groups title: Conversation Groups (Beta) sidebar_label: Introduction +pagination_label: Conversation Groups slug: /concepts/conversation-groups/ --- diff --git a/docs/conversation-api/concepts/follow-ups.md b/docs/conversation-api/concepts/follow-ups.md index 56ea29c9..09c9956c 100644 --- a/docs/conversation-api/concepts/follow-ups.md +++ b/docs/conversation-api/concepts/follow-ups.md @@ -3,6 +3,7 @@ id: follow-ups title: Follow Ups sidebar_label: Follow Ups slug: /concepts/follow-ups/ +pagination_label: Follow Ups --- import Tabs from '@theme/Tabs'; diff --git a/docs/conversation-api/concepts/questions.md b/docs/conversation-api/concepts/questions.md index 0b61088c..f2b7a434 100644 --- a/docs/conversation-api/concepts/questions.md +++ b/docs/conversation-api/concepts/questions.md @@ -3,6 +3,7 @@ id: questions title: Questions sidebar_label: Introduction slug: /concepts/questions/ +pagination_label: Questions --- import Tabs from '@theme/Tabs'; diff --git a/docs/conversation-api/concepts/redacting-pii.md b/docs/conversation-api/concepts/redacting-pii.md index c2307fe8..e46c60fa 100644 --- a/docs/conversation-api/concepts/redacting-pii.md +++ b/docs/conversation-api/concepts/redacting-pii.md @@ -3,6 +3,7 @@ id: redaction-pii title: Identifying and Redacting PII and PCI Data sidebar_label: PII and PCI Identification and Redaction slug: /concepts/redaction-pii/ +pagination_label: PII and PCI Identification and Redaction --- import Tabs from '@theme/Tabs'; diff --git a/docs/conversation-api/concepts/sentiment.md b/docs/conversation-api/concepts/sentiment.md index b7b7f30c..5a3a544a 100644 --- a/docs/conversation-api/concepts/sentiment.md +++ b/docs/conversation-api/concepts/sentiment.md @@ -4,6 +4,7 @@ title: Sentiment Analysis (Beta) sidebar_label: Introduction description: Sentiment API enables developers to detect positive or negative sentiment from conversations in real-time. Learn more. slug: /concepts/sentiment-analysis/ +pagination_label: Sentiment Analysis --- diff --git a/docs/conversation-api/concepts/speech-to-text.md b/docs/conversation-api/concepts/speech-to-text.md index 8db0fc01..912938ae 100644 --- a/docs/conversation-api/concepts/speech-to-text.md +++ b/docs/conversation-api/concepts/speech-to-text.md @@ -4,6 +4,7 @@ title: Speech-to-Text description: Get real-time speech-to-text data and analytics from your conversations with Symbl.ai APIs. Learn more. sidebar_label: Introduction slug: /concepts/speech-to-text/ +pagination_label: Speech-to-text --- diff --git a/docs/conversation-api/concepts/summarization.md b/docs/conversation-api/concepts/summarization.md index 7d730d2b..3c2dbd76 100644 --- a/docs/conversation-api/concepts/summarization.md +++ b/docs/conversation-api/concepts/summarization.md @@ -3,6 +3,7 @@ id: summarization title: Summarization (Labs) description: Use Symbl.ai’s summarization API to capture key points in a conversation and create succinct summaries. Learn more. sidebar_label: Introduction +pagination_label: Summarization slug: /concepts/summarization/ --- diff --git a/docs/conversation-api/concepts/summary-topic.md b/docs/conversation-api/concepts/summary-topic.md index 45d7a47e..edd12f82 100644 --- a/docs/conversation-api/concepts/summary-topic.md +++ b/docs/conversation-api/concepts/summary-topic.md @@ -4,6 +4,7 @@ title: Topics description: Automatically identify and extract topics from conversations with Symbl.ai's Topic API. sidebar_label: Introduction slug: /concepts/topics/ +pagination_label: Topics --- diff --git a/docs/conversation-api/concepts/topic-hierarchy.md b/docs/conversation-api/concepts/topic-hierarchy.md index 1bd6d17e..fcc969fd 100644 --- a/docs/conversation-api/concepts/topic-hierarchy.md +++ b/docs/conversation-api/concepts/topic-hierarchy.md @@ -3,6 +3,7 @@ id: topic-hierarchy title: Topic Hierarchy (Beta) sidebar_label: Introduction slug: /concepts/topic-hierarchy/ +pagination_label: Topic Hierarchy --- import Tabs from '@theme/Tabs'; diff --git a/docs/conversation-api/concepts/trackers.md b/docs/conversation-api/concepts/trackers.md index 8bfc3c4d..d9663034 100644 --- a/docs/conversation-api/concepts/trackers.md +++ b/docs/conversation-api/concepts/trackers.md @@ -3,6 +3,7 @@ id: trackers title: Trackers (Beta) sidebar_label: Introduction slug: /concepts/trackers/ +pagination_label: Trackers --- import Tabs from '@theme/Tabs'; diff --git a/docs/conversation-api/concepts/ui-components.md b/docs/conversation-api/concepts/ui-components.md index 38e9b82d..0596d132 100644 --- a/docs/conversation-api/concepts/ui-components.md +++ b/docs/conversation-api/concepts/ui-components.md @@ -3,6 +3,7 @@ id: ui-components title: Reusable and Customizable UI Components sidebar_label: Introduction slug: /conversation-api/concepts/ui-components/ +pagination_label: Reusable and Customizable UI Components --- import Tabs from '@theme/Tabs'; diff --git a/docs/conversation-api/introduction.md b/docs/conversation-api/introduction.md index 5fd7584f..7af2b232 100644 --- a/docs/conversation-api/introduction.md +++ b/docs/conversation-api/introduction.md @@ -4,6 +4,7 @@ title: Introduction description: Use Symbl.ai Conversation APIs to get speech-to-text data and actionable insights from your conversations. Learn more. sidebar_label: Introduction slug: /conversation-api/introduction/ +pagination_label: Conversation API --- diff --git a/docs/guides.md b/docs/guides.md index 0947511d..ef372331 100644 --- a/docs/guides.md +++ b/docs/guides.md @@ -3,6 +3,7 @@ id: guides-intro title: Guides sidebar_label: Getting Started slug: /guides/ +pagination_next: null --- --- diff --git a/docs/integrations/integrations-intro.md b/docs/integrations/integrations-intro.md index c1b0d790..1b2501cf 100644 --- a/docs/integrations/integrations-intro.md +++ b/docs/integrations/integrations-intro.md @@ -2,6 +2,7 @@ id: integrations-intro title: Integrations slug: /integrations/integrations-intro/ +pagination_next: null --- import Tabs from '@theme/Tabs'; diff --git a/docs/introduction.md b/docs/introduction.md index a0c92c63..0aacfea2 100644 --- a/docs/introduction.md +++ b/docs/introduction.md @@ -3,6 +3,7 @@ id: introduction title: Symbl Documentation sidebar_label: Documentation slug: / +pagination_next: null --- --- diff --git a/docs/javascript-sdk/overview/introduction.md b/docs/javascript-sdk/overview/introduction.md index c389a70f..1fe8f9e4 100644 --- a/docs/javascript-sdk/overview/introduction.md +++ b/docs/javascript-sdk/overview/introduction.md @@ -3,6 +3,7 @@ id: introduction title: Symbl SDK (Node.js) sidebar_label: Introduction slug: /javascript-sdk/introduction/ +pagination_label: JavaScript SDK --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/labs.md b/docs/labs.md index a76adf21..05cc24ab 100644 --- a/docs/labs.md +++ b/docs/labs.md @@ -3,7 +3,7 @@ id: labs-intro title: Symbl Labs sidebar_label: Symbl Labs slug: /labs/ - +pagination_next: null --- --- Symbl Labs is our experimental wing designed to share our bleeding edge AI research on human conversations with anyone who wants to explore its limits. diff --git a/docs/labs/abstract-topics-labs.md b/docs/labs/abstract-topics-labs.md index 650bcb9b..061b3791 100644 --- a/docs/labs/abstract-topics-labs.md +++ b/docs/labs/abstract-topics-labs.md @@ -3,6 +3,7 @@ id: abstract-topics-labs title: Abstract Topics (Labs) sidebar_label: Introduction slug: /guides/abstract-topics-labs/ +pagination_label: Abstract Topics --- import Tabs from '@theme/Tabs'; diff --git a/docs/management-api/conversation-groups/conversation-groups-intro.md b/docs/management-api/conversation-groups/conversation-groups-intro.md index b2ff8f6a..dcce7e41 100644 --- a/docs/management-api/conversation-groups/conversation-groups-intro.md +++ b/docs/management-api/conversation-groups/conversation-groups-intro.md @@ -1,8 +1,9 @@ --- id: conversation-groups-intro title: Conversation Groups (Beta) -sidebar_label: Overview +sidebar_label: Introduction slug: /management-api/conversation-groups/conversation-groups-intro/ +pagination_label: Conversation Groups --- import Tabs from '@theme/Tabs'; diff --git a/docs/management-api/introduction.md b/docs/management-api/introduction.md index e19f3fef..d99d82f2 100644 --- a/docs/management-api/introduction.md +++ b/docs/management-api/introduction.md @@ -3,6 +3,7 @@ id: introduction title: Management API (Beta) sidebar_label: Introduction slug: /management-api/introduction/ +pagination_label: Management API --- :::note In Beta Phase This feature is in the Beta phase. If you have any questions, ideas or suggestions please reach out to us at devrelations@symbl.ai. diff --git a/docs/management-api/trackers/overview.md b/docs/management-api/trackers/overview.md index ae7e92bb..3b74b964 100644 --- a/docs/management-api/trackers/overview.md +++ b/docs/management-api/trackers/overview.md @@ -3,6 +3,7 @@ id: trackers-overview title: Trackers API (Beta) sidebar_label: Introduction slug: /management-api/trackers/overview/ +pagination_label: Trackers API --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/python-sdk/overview.md b/docs/python-sdk/overview.md index 599a6c80..98747a67 100644 --- a/docs/python-sdk/overview.md +++ b/docs/python-sdk/overview.md @@ -3,6 +3,7 @@ id: python-sdk title: Symbl Python SDK sidebar_label: Introduction slug: /python-sdk/overview/ +pagination_label: Python SDK --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; diff --git a/docs/sdk-intro.md b/docs/sdk-intro.md index 3ed844db..be5b3d8b 100644 --- a/docs/sdk-intro.md +++ b/docs/sdk-intro.md @@ -3,7 +3,7 @@ id: sdk-intro title: Symbl SDKs sidebar_label: Symbl SDKs slug: /sdk-intro/ - +pagination_next: null --- import Tabs from '@theme/Tabs'; diff --git a/docs/streamingapi/introduction.md b/docs/streamingapi/introduction.md index 8fa33989..cdee3332 100644 --- a/docs/streamingapi/introduction.md +++ b/docs/streamingapi/introduction.md @@ -4,6 +4,7 @@ title: Streaming API description: Streaming API can provide real-time transcription and extract actionable insights from your conversations. Learn how to implement Symbl.ai’s Streaming API now. sidebar_label: Introduction slug: /streamingapi/introduction/ +pagination_label: Streaming API --- diff --git a/docs/support.md b/docs/support.md index ed498470..a788f7d7 100644 --- a/docs/support.md +++ b/docs/support.md @@ -3,6 +3,7 @@ id: support title: Support sidebar_label: Support slug: /support/ +pagination_next: null --- --- diff --git a/docs/telephony/introduction.md b/docs/telephony/introduction.md index f4f793a7..1adea2c2 100644 --- a/docs/telephony/introduction.md +++ b/docs/telephony/introduction.md @@ -4,6 +4,7 @@ title: Telephony API description: Telephony API enables developers to add Symbl.ai to bridges and join VoIP calls to get real-time intelligence. Check out the Telephony API tutorials to help you get started. sidebar_label: Introduction slug: /telephony/introduction/ +pagination_label: Telephony API --- diff --git a/docs/tutorials.md b/docs/tutorials.md index 7d474343..31ff7f90 100644 --- a/docs/tutorials.md +++ b/docs/tutorials.md @@ -3,6 +3,7 @@ id: tutorials-page title: Tutorials sidebar_label: Tutorials slug: /tutorials/ +pagination_next: null --- --- diff --git a/docusaurus.config.js b/docusaurus.config.js index 60b5d464..3ca646a5 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -227,13 +227,14 @@ module.exports = { munchkin: { applicationId: process.env.MUNCHKIN_ID, }, - announcementBar: { - id: 'new_docs_announcement', // Any value that will identify this message. - content:'New Release Announcement: We have released the Symbl-Agora Marketplace extension with Agora SDK for Android applications. Head to our Integrations section to learn more.', - backgroundColor: '#fafbfc', // Defaults to `#fff`. - textColor: '#091E42', // Defaults to `#000`. - isCloseable: true, // Defaults to `true`. - }, + + // announcementBar: { + // id: 'new_docs_announcement', // Any value that will identify this message. + // content:'New Release Announcement: We have released the Symbl-Agora Marketplace extension with Agora SDK for Android applications. Head to our Integrations section to learn more.', + // backgroundColor: '#fafbfc', // Defaults to `#fff`. + // textColor: '#091E42', // Defaults to `#000`. + // isCloseable: true, // Defaults to `true`. + // }, colorMode: { From 76b3cfe5b84b7f69a198827f72b27ed620f29e97 Mon Sep 17 00:00:00 2001 From: warunawijesinhaarachchige <100723638+warunawijesinhaarachchige@users.noreply.github.com> Date: Fri, 8 Apr 2022 01:04:07 -0700 Subject: [PATCH 38/43] PUT text sample (#464) PUT text python sample fixed --- docs/async-api/overview/text/put-text.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/async-api/overview/text/put-text.md b/docs/async-api/overview/text/put-text.md index 2b89ee60..bc77d3d4 100644 --- a/docs/async-api/overview/text/put-text.md +++ b/docs/async-api/overview/text/put-text.md @@ -218,7 +218,7 @@ payload = { "confidenceThreshold": 0.6, # - "detectPhrases": true, # + "detectPhrases": "true", # "messages": [ { "payload": { @@ -269,7 +269,7 @@ responses = { 500: 'Something went wrong! Please contact support@symbl.ai' } -response = requests.request("PUT", url, headers=headers, data=json.dumps(payload), params=json.dumps(params))) +response = requests.request("PUT", url, headers=headers, data=json.dumps(payload)) if response.status_code == 201: # Successful API execution @@ -483,4 +483,4 @@ Here, the value of `X` can be found in [FAQ](/docs/faq). :::caution You must wait for the job to complete processing before you proceed with getting the Conversation Intelligence. If you immediately make a GET request to Conversation API, it is possible that you'll receive incomplete insights. Therefore, ensure that you wait for the job to complete. -::: \ No newline at end of file +::: From 374f2d066681ec69542d3e05c446e2460138d1c9 Mon Sep 17 00:00:00 2001 From: Pema <81958801+pema-s@users.noreply.github.com> Date: Mon, 11 Apr 2022 14:44:37 +0530 Subject: [PATCH 39/43] DC-198, DC-395, DC-158, DC-400, DC- 379, DC-398 (#471) --- docs/async-api/overview/audio/post-audio-url.md | 2 +- docs/async-api/overview/audio/post-audio.md | 2 +- docs/async-api/overview/audio/put-audio-url.md | 5 ++--- docs/async-api/overview/audio/put-audio.md | 2 +- docs/async-api/overview/text/post-text.md | 2 +- docs/async-api/overview/text/put-text.md | 4 ++-- docs/async-api/overview/video/post-video-url.md | 2 +- docs/async-api/overview/video/post-video.md | 2 +- docs/async-api/overview/video/put-video-url.md | 5 ++--- docs/async-api/overview/video/put-video.md | 5 ++--- .../tutorials/get-speaker-separation-audio-video.md | 2 +- docs/faq.md | 2 ++ docs/integrations/agora-sdk-plugin.md | 2 +- docs/streamingapi/reference/reference.md | 2 +- docs/subscribe-api.md | 2 +- 15 files changed, 20 insertions(+), 21 deletions(-) diff --git a/docs/async-api/overview/audio/post-audio-url.md b/docs/async-api/overview/audio/post-audio-url.md index b67f8a34..f189e38f 100644 --- a/docs/async-api/overview/audio/post-audio-url.md +++ b/docs/async-api/overview/audio/post-audio-url.md @@ -302,7 +302,7 @@ Parameters | Required | Type | Description ---------- | ------- | ------- | ------- ```url``` | Mandatory | String | A valid url string. The URL must be a publicly accessible url. ```customVocabulary``` | Optional | String[] | Contains a list of words and phrases that provide hints to the speech recognition task. -```confidenceThreshold``` | Optional | Double | Minimum confidence score that you can set for an API to consider it as a valid insight (action items, follow-ups, topics, and questions). It should be in the range <=0.5 to <=1.0 (i.e., greater than or equal to `0.5` and less than or equal to `1.0`.). The default value is `0.5`. +```confidenceThreshold``` | Optional | Double | Minimum confidence score that you can set for an API to consider it as a valid insight (action items, follow-ups, topics, and questions). It should be in the range >=0.5 to <=1.0 (i.e., greater than or equal to `0.5` and less than or equal to `1.0`.). The default value is `0.5`. ```detectPhrases```| Optional | Boolean | It shows Actionable Phrases in each sentence of conversation. These sentences can be found using the Conversation's Messages API. It's a boolean value where the default value is `false`. ```name``` | Optional | String | Your meeting name. Default name set to `conversationId`. ```webhookUrl``` | Optional | String | Webhook URL on which job updates to be sent. This should be after the API call is made. For Webhook payload, refer to the [Using Webhook](#using-webhook) section below. diff --git a/docs/async-api/overview/audio/post-audio.md b/docs/async-api/overview/audio/post-audio.md index 2689dbbf..85f43718 100644 --- a/docs/async-api/overview/audio/post-audio.md +++ b/docs/async-api/overview/audio/post-audio.md @@ -211,7 +211,7 @@ Parameters | Required | Type | Description ```name``` | Optional | String | Your meeting name. Default name set to `conversationId`. ```webhookUrl``` | Optional | String | Webhook URL on which job updates to be sent. This should be after the API call is made. For Webhook payload, refer to the [Using Webhook](#using-webhook) section below. ```customVocabulary``` | Optional | String[] | Contains a list of words and phrases that provide hints to the speech recognition task. -```confidenceThreshold``` | Optional | Double | Minimum confidence score that you can set for an API to consider it as a valid insight (action items, follow-ups, topics, and questions). It should be in the range <=0.5 to <=1.0 (i.e., greater than or equal to `0.5` and less than or equal to `1.0`.). The default value is `0.5`. +```confidenceThreshold``` | Optional | Double | Minimum confidence score that you can set for an API to consider it as a valid insight (action items, follow-ups, topics, and questions). It should be in the range >=0.5 to <=1.0 (i.e., greater than or equal to `0.5` and less than or equal to `1.0`.). The default value is `0.5`. ```entities``` | Optional | Object[] | Input custom entities which can be detected in your conversation using [Entities API](/docs/conversation-api/entities). See sample request under [Custom Entity](#custom-entity) section. ```detectEntities``` | Optional | Boolean | Default value is `false`. If not set the [Entities API](/docs/conversation-api/entities) will not return any entities from the conversation. ```detectPhrases```| Optional | Boolean | Accepted values are `true` & `false`. It shows Actionable Phrases in each sentence of conversation. These sentences can be found in the Conversation's Messages API. diff --git a/docs/async-api/overview/audio/put-audio-url.md b/docs/async-api/overview/audio/put-audio-url.md index b5c1a07a..c3b88f22 100644 --- a/docs/async-api/overview/audio/put-audio-url.md +++ b/docs/async-api/overview/audio/put-audio-url.md @@ -14,8 +14,7 @@ It can be useful in any use case where you have access to multiple recorded audi :::important -If there are multiple requests are submitted for the same Conversation ID, all the requests will be processed synchronously -in order to maintain the order of the requests for the conversation. +If multiple requests are submitted for the same Conversation ID, all the requests are processed synchronously in order to maintain the order of the requests for the conversation. ::: ### Authentication @@ -316,7 +315,7 @@ Parameters | Required | Type | Description ---------- | ------- | ------- | ----- ```url``` | Mandatory | String | A valid url string. The URL must be a publicly accessible url. ```customVocabulary``` | Optional | String[] | Contains a list of words and phrases that provide hints to the speech recognition task. -```confidenceThreshold``` | Optional | Double | Minimum confidence score that you can set for an API to consider it as a valid insight (action items, follow-ups, topics, and questions). It should be in the range <=0.5 to <=1.0 (i.e., greater than or equal to `0.5` and less than or equal to `1.0`.). The default value is `0.5`. +```confidenceThreshold``` | Optional | Double | Minimum confidence score that you can set for an API to consider it as a valid insight (action items, follow-ups, topics, and questions). It should be in the range >=0.5 to <=1.0 (i.e., greater than or equal to `0.5` and less than or equal to `1.0`.). The default value is `0.5`. ```detectPhrases```| Optional | Boolean | It shows Actionable Phrases in each sentence of conversation. These sentences can be found using the Conversation's Messages API. It's a boolean value where the default value is `false`. ```name``` | Optional | String | Your meeting name. Default name set to `conversationId`. ```webhookUrl``` | Optional | String | Webhook URL on which job updates to be sent. This should be post making the API call. For Webhook payload, refer to the [Using Webhook](#using-webhook) section below. diff --git a/docs/async-api/overview/audio/put-audio.md b/docs/async-api/overview/audio/put-audio.md index cdd8e4e7..b99dbdb7 100644 --- a/docs/async-api/overview/audio/put-audio.md +++ b/docs/async-api/overview/audio/put-audio.md @@ -215,7 +215,7 @@ Parameters | Required | Type | Description ```name``` | Optional | String | Your meeting name. Default name set to `conversationId`. ```webhookUrl``` | Optional | String | Webhook url on which job updates to be sent. This should be post making the API call. For Webhook payload, refer to the [Using Webhook](#using-webhook) section below. ```customVocabulary``` | Optional | String[] | Contains a list of words and phrases that provide hints to the speech recognition task. -```confidenceThreshold``` | Optional | Double | Minimum confidence score that you can set for an API to consider it as a valid insight (action items, follow-ups, topics, and questions). It should be in the range <=0.5 to <=1.0 (i.e., greater than or equal to `0.5` and less than or equal to `1.0`.). The default value is `0.5`. +```confidenceThreshold``` | Optional | Double | Minimum confidence score that you can set for an API to consider it as a valid insight (action items, follow-ups, topics, and questions). It should be in the range >=0.5 to <=1.0 (i.e., greater than or equal to `0.5` and less than or equal to `1.0`.). The default value is `0.5`. ```detectPhrases```| Optional | Boolean | Accepted values are `true` & `false`. It shows Actionable Phrases in each sentence of conversation. These sentences can be found in the Conversation's Messages API. ```entities``` | Optional | Object[] | Input custom entities which can be detected in your conversation using [Entities API](/docs/conversation-api/entities). See sample request under [Custom Entity](#custom-entity) section below. ```detectEntities``` | Optional | Boolean | Default value is `false`. If not set the [Entities API](/docs/conversation-api/entities) will not return any entities from the conversation. diff --git a/docs/async-api/overview/text/post-text.md b/docs/async-api/overview/text/post-text.md index ede13464..e64403ab 100644 --- a/docs/async-api/overview/text/post-text.md +++ b/docs/async-api/overview/text/post-text.md @@ -299,7 +299,7 @@ Field | Required | Type | Description ---------- | ------- | ------- | ------- | ```name``` | Optional | String | Your meeting name. Default name set to `conversationId`. ```detectPhrases```| Optional | Boolean | It shows Actionable Phrases in each sentence of conversation. These sentences can be found using the Conversation's Messages API. Default value is `false`. -```confidenceThreshold``` | Optional | Double | Minimum confidence score that you can set for an API to consider it as a valid insight (action items, follow-ups, topics, and questions). It should be in the range <=0.5 to <=1.0 (i.e., greater than or equal to `0.5` and less than or equal to `1.0`.). The default value is `0.5`. +```confidenceThreshold``` | Optional | Double | Minimum confidence score that you can set for an API to consider it as a valid insight (action items, follow-ups, topics, and questions). It should be in the range >=0.5 to <=1.0 (i.e., greater than or equal to `0.5` and less than or equal to `1.0`.). The default value is `0.5`. ```entities``` | Optional | List | Input custom entities which can be detected in conversation using [Entities API](/docs/conversation-api/entities). ```detectEntities``` | Optional | Boolean | Default value is `false`. If not set the [Entities API](/docs/conversation-api/entities) will not return any entities from the conversation. ```messages``` | Mandatory | list | Input Messages to look for insights. [See the messages section below for more details.](#messages) diff --git a/docs/async-api/overview/text/put-text.md b/docs/async-api/overview/text/put-text.md index bc77d3d4..b4bf467a 100644 --- a/docs/async-api/overview/text/put-text.md +++ b/docs/async-api/overview/text/put-text.md @@ -13,7 +13,7 @@ The PUT Async Text API allows you to process any text payload to append the tran It can be useful in cases where you have new information like chats, emails or messages which keep generating for single entity. Using this API, you can add all the new entity data to the existing Conversation ID (`conversationId`). :::info -If there are multiple requests are submitted for the same Conversation ID, all the requests will be processed synchronously in order to maintain the order of the requests for the conversation. +If multiple requests are submitted for the same Conversation ID, all the requests are processed synchronously in order to maintain the order of the requests for the conversation. ::: ### Authentication @@ -336,7 +336,7 @@ Field | Required | Type | Description ---------- | ------- | ------- | ------- | ```name``` | Optional | String | Your meeting name. Default name set to `conversationId`. ```messages``` | Mandatory | List | Input Messages to look for insights. [See the messages section below for more details.](#messages) -```confidenceThreshold``` | Optional | Double | Minimum confidence score that you can set for an API to consider it as a valid insight (action items, follow-ups, topics, and questions). It should be in the range <=0.5 to <=1.0 (i.e., greater than or equal to `0.5` and less than or equal to `1.0`.). The default value is `0.5`. +```confidenceThreshold``` | Optional | Double | Minimum confidence score that you can set for an API to consider it as a valid insight (action items, follow-ups, topics, and questions). It should be in the range >=0.5 to <=1.0 (i.e., greater than or equal to `0.5` and less than or equal to `1.0`.). The default value is `0.5`. ```detectPhrases```| Optional | Boolean | It shows Actionable Phrases in each sentence of a conversation. These sentences can be found using the Conversation's Messages API. The default value is `false`. ```entities``` | Optional | List | Input custom entities which can be detected in your conversation using [Entities API](/docs/conversation-api/entities). ```detectEntities``` | Optional | Boolean | Default value is `false`. If not set the [Entities API](/docs/conversation-api/entities) will not return any entities from the conversation. diff --git a/docs/async-api/overview/video/post-video-url.md b/docs/async-api/overview/video/post-video-url.md index f78a981c..bf4eda6e 100644 --- a/docs/async-api/overview/video/post-video-url.md +++ b/docs/async-api/overview/video/post-video-url.md @@ -277,7 +277,7 @@ Field | Required | Type | Description ----- | ------- | -------- | ------- | ```url``` | Mandatory | String | A valid URL string. The URL must be a publicly accessible URL. ```customVocabulary``` | Optional | String[] | Contains a list of words and phrases that provide hints to the speech recognition task. -```confidenceThreshold``` | Optional | Double | Minimum confidence score that you can set for an API to consider it as a valid insight (action items, follow-ups, topics, and questions). It should be in the range <=0.5 to <=1.0 (i.e., greater than or equal to `0.5` and less than or equal to `1.0`.). The default value is `0.5`. +```confidenceThreshold``` | Optional | Double | Minimum confidence score that you can set for an API to consider it as a valid insight (action items, follow-ups, topics, and questions). It should be in the range >=0.5 to <=1.0 (i.e., greater than or equal to `0.5` and less than or equal to `1.0`.). The default value is `0.5`. ```detectPhrases```| Optional | Boolean | It shows [Actionable Phrases](/docs/concepts/action-items) in each sentence of conversation. These sentences can be found using the [Conversation's Messages API](/docs/conversation-api/messages). Accepts `true` or `false`. ```name``` | Optional | String | Your meeting name. Default name set to `conversationId`. ```webhookUrl``` | Optional | String | Webhook URL on which job updates to be sent. This should be after the API call is made. For Webhook payload, refer to the [Using Webhook](#using-webhook) section below. diff --git a/docs/async-api/overview/video/post-video.md b/docs/async-api/overview/video/post-video.md index 1e16a531..e65d9c8c 100644 --- a/docs/async-api/overview/video/post-video.md +++ b/docs/async-api/overview/video/post-video.md @@ -188,7 +188,7 @@ Parameter | Required | Type | Description ```name``` | Optional | String | Your meeting name. Default name set to `conversationId`. ```webhookUrl``` | Optional | String | Webhook URL on which job updates to be sent. This should be post API. For Webhook payload, refer to the [Using Webhook](#using-webhook) section below. ```customVocabulary``` | Optional | String[] | Contains a list of words and phrases that provide hints to the speech recognition task. -```confidenceThreshold``` | Optional | Double | Minimum confidence score that you can set for an API to consider it as a valid insight (action items, follow-ups, topics, and questions). It should be in the range <=0.5 to <=1.0 (i.e., greater than or equal to `0.5` and less than or equal to `1.0`.). The default value is `0.5`. +```confidenceThreshold``` | Optional | Double | Minimum confidence score that you can set for an API to consider it as a valid insight (action items, follow-ups, topics, and questions). It should be in the range >=0.5 to <=1.0 (i.e., greater than or equal to `0.5` and less than or equal to `1.0`.). The default value is `0.5`. ```detectPhrases```| Optional | Boolean | Accepted values are `true` & `false`. It shows [Actionable Phrases](/docs/conversation-api/action-items) in each sentence of conversation. These sentences can be found in the [Conversation's Messages API](/docs/conversation-api/messages). ```entities``` | Optional | Object[] | Input custom entities which can be detected in your conversation using [Entities API](/docs/conversation-api/entities). Sample request for Custom Entity is given in the [Custom Entity](#custom-entity) section below. ```detectEntities``` | Optional | Boolean | Default value is `false`. If not set the [Entities API](/docs/conversation-api/entities) will not return any entities from the conversation. diff --git a/docs/async-api/overview/video/put-video-url.md b/docs/async-api/overview/video/put-video-url.md index eafd3c4a..28ac10bc 100644 --- a/docs/async-api/overview/video/put-video-url.md +++ b/docs/async-api/overview/video/put-video-url.md @@ -18,8 +18,7 @@ This API supports only mp4 file formats video. If you have any other type ::: :::note -If there are multiple requests are submitted for the same Conversation ID all the requests will be processed synchronously -in order to maintain the order of the requests for the conversation. +If multiple requests are submitted for the same Conversation ID, all the requests are processed synchronously in order to maintain the order of the requests for the conversation. ::: ### Authentication @@ -297,7 +296,7 @@ Field | Required | Type | Description ----- | ------- | -------- | ------- | ```url``` | Mandatory | String | A valid URL string. The URL must be a publicly accessible URL. ```customVocabulary``` | Optional | String[] | Contains a list of words and phrases that provide hints to the speech recognition task. -```confidenceThreshold``` | Optional | Double | Minimum confidence score that you can set for an API to consider it as a valid insight (action items, follow-ups, topics, and questions). It should be in the range <=0.5 to <=1.0 (i.e., greater than or equal to `0.5` and less than or equal to `1.0`.). The default value is `0.5`. +```confidenceThreshold``` | Optional | Double | Minimum confidence score that you can set for an API to consider it as a valid insight (action items, follow-ups, topics, and questions). It should be in the range >=0.5 to <=1.0 (i.e., greater than or equal to `0.5` and less than or equal to `1.0`.). The default value is `0.5`. ```detectPhrases```| Optional | Boolean | It shows [Actionable Phrases](/docs/concepts/action-items) in each sentence of conversation. These sentences can be found using the [Conversation's Messages API](/docs/conversation-api/messages). Accepts `true` or `false`. ```name``` | Optional | String | Your meeting name. Default name set to `conversationId`. ```webhookUrl``` | Optional | String | Webhook URL on which job updates to be sent. This should be after the API call is made. For Webhook payload, refer to the [Using Webhook](#using-webhook) section below. diff --git a/docs/async-api/overview/video/put-video.md b/docs/async-api/overview/video/put-video.md index ff219728..efbc219b 100644 --- a/docs/async-api/overview/video/put-video.md +++ b/docs/async-api/overview/video/put-video.md @@ -18,8 +18,7 @@ This API supports only mp4 file formats video. If you have any other type ::: :::note -If there are multiple requests are submitted for the same Conversation ID, all the requests will be processed synchronously -in order to maintain the order of the requests for the conversation. +If multiple requests are submitted for the same Conversation ID, all the requests are processed synchronously in order to maintain the order of the requests for the conversation. ::: ### Authentication @@ -204,7 +203,7 @@ Parameter | Required | Type | Description ```name``` | Optional | String | Your meeting name. Default name set to `conversationId`. ```webhookUrl``` | Optional | String | Webhook URL on which job updates to be sent. This should be after the API call is made. For Webhook payload, refer to the [Using Webhook](#using-webhook) section below. ```customVocabulary``` | Optional | String[] | Contains a list of words and phrases that provide hints to the speech recognition task. -```confidenceThreshold``` | Optional | Double | Minimum confidence score that you can set for an API to consider it as a valid insight (action items, follow-ups, topics, and questions). It should be in the range <=0.5 to <=1.0 (i.e., greater than or equal to `0.5` and less than or equal to `1.0`.). The default value is `0.5`. +```confidenceThreshold``` | Optional | Double | Minimum confidence score that you can set for an API to consider it as a valid insight (action items, follow-ups, topics, and questions). It should be in the range >=0.5 to <=1.0 (i.e., greater than or equal to `0.5` and less than or equal to `1.0`.). The default value is `0.5`. ```detectPhrases```| Optional | Boolean | Accepted values are `true` & `false`. It shows [Actionable Phrases](/docs/conversation-api/action-items) in each sentence of conversation. These sentences can be found in the [Conversation's Messages API](/docs/conversation-api/messages). ```entities``` | Optional | Object[] | Input custom entities which can be detected in your conversation using [Entities API](/docs/conversation-api/entities). Sample request for Custom Entity is given in the [Custom Entity](#custom-entity) section below. ```detectEntities``` | Optional | Boolean | Default value is `false`. If not set the [Entities API](/docs/conversation-api/entities) will not return any entities from the conversation. diff --git a/docs/async-api/tutorials/get-speaker-separation-audio-video.md b/docs/async-api/tutorials/get-speaker-separation-audio-video.md index f3854bee..103d76df 100644 --- a/docs/async-api/tutorials/get-speaker-separation-audio-video.md +++ b/docs/async-api/tutorials/get-speaker-separation-audio-video.md @@ -12,7 +12,7 @@ import TabItem from '@theme/TabItem'; -[Symbl's Async API](/docs/async-api/introduction) allows you to process stored recordings of audio or video from files or URLs or even textual content from a conversation. In this guide, we will walk you through how to implement [Speaker Separation](/docs/async-api/reference/reference/#speaker-separation) with audio or video files. Speaker Separation, in short, is the ability to detect and separate unique speakers in a single stream of audio & video without the need for separate speaker events. +[Symbl's Async API](/docs/async-api/introduction) allows you to process stored recordings of audio or video from files or URLs or even textual content from a conversation. In this guide, we will walk you through how to implement [Speaker Separation](/docs/async-api/overview/speaker-separation/) with audio or video files. Speaker Separation, in short, is the ability to detect and separate unique speakers in a single stream of audio & video without the need for separate speaker events. :::info Speaker Diarization Language Support diff --git a/docs/faq.md b/docs/faq.md index 96c1f3af..1f303281 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -25,6 +25,8 @@ We store transcripts, insights, and metadata of the conversation, which is persi For trial, [Streaming API](/docs/streamingapi/introduction) has a limit of 2 concurrent connections, and [Async APIs](/docs/async-api/overview/introduction) has a limit of 2 concurrent jobs. After you upgrade your account, it has a limit of 50 concurrent connections for Streaming API and 50 concurrent jobs for Async API. If you are looking to scale, and need more concurrent jobs than this limit, please contact us at support@symbl.ai. +### What happens when multiple requests are sent for the same Conversation ID? +If multiple requests are submitted for the same Conversation ID, all the requests are processed synchronously in order to maintain the order of the requests for the conversation. ### What is the maximum length of meeting duration the [Async API](/docs/async-api/overview/introduction) supports? diff --git a/docs/integrations/agora-sdk-plugin.md b/docs/integrations/agora-sdk-plugin.md index 3ffb5732..23c9f4cf 100644 --- a/docs/integrations/agora-sdk-plugin.md +++ b/docs/integrations/agora-sdk-plugin.md @@ -191,7 +191,7 @@ The following table lists the parameters and their descriptions used in the samp | `symbl_token_api` | The URL for secure token generation. | `symbl_meeting_encoding` | The audio encoding in which the audio will be sent over the WebSocket connection. | `symbl_meeting_sampleRateHertz` | The rate of the incoming audio stream. -| `symbl_confidence_threshold` | The minimum confidence score that you can set for an API to consider it as valid insight. The minimum confidence score should be in the range <=0.5 to <=1.0 (greater than or equal to 0.5 and less than or equal to 1.0.). Default value is 0.5. +| `symbl_confidence_threshold` | The minimum confidence score that you can set for an API to consider it as valid insight. The minimum confidence score should be in the range >=0.5 to <=1 (greater than or equal to 0.5 and less than or equal to 1.0.). Default value is 0.5. You would have to call the method above during the initialization of the Agora Engine in your application. diff --git a/docs/streamingapi/reference/reference.md b/docs/streamingapi/reference/reference.md index eb53506b..22d333c8 100644 --- a/docs/streamingapi/reference/reference.md +++ b/docs/streamingapi/reference/reference.md @@ -61,7 +61,7 @@ Field | Required | Supported Value | Description Field | Required | Supported value | Default Value | Description ---------- | ------- | ------- | ------- | ------- | -```confidenceThreshold``` | false | <=0.5 to <=1.0 | 0.5 | Minimum confidence score that you can set for an API to consider it as valid insight. The minimum confidence score should be in the range <=0.5 to <=1.0 (greater than or equal to `0.5` and less than or equal to `1.0`.). Default value is `0.5`. +```confidenceThreshold``` | false | <=0.5 to <=1.0 | 0.5 | Minimum confidence score that you can set for an API to consider it as valid insight. The minimum confidence score should be in the range >=0.5 to <=1 (greater than or equal to `0.5` and less than or equal to `1.0`.). Default value is `0.5`. ```speechRecognition``` | false | | | See Speech Recognition section [below](#speech-recognition). ```meetingTitle``` | false | | | The name of the meeting. diff --git a/docs/subscribe-api.md b/docs/subscribe-api.md index 75a06511..3bf4c1bf 100644 --- a/docs/subscribe-api.md +++ b/docs/subscribe-api.md @@ -23,7 +23,7 @@ While users connected on websocket are charged per user, the listen-only partici This can be turned on or off for a conversation, on demand. :::info -The Subscribe APIs does not have a limit to the number of participants that can join. You can seamlessly add up to 10,000 participants. +The Subscribe API allows you to add up to 10,000 participants per call. ::: ### API Endpoint From 361d680f3fe7546e937ce1c8b94987eef46abbf3 Mon Sep 17 00:00:00 2001 From: Mukulika <60316606+Mukulikaa@users.noreply.github.com> Date: Tue, 12 Apr 2022 14:34:40 +0530 Subject: [PATCH 40/43] DC-218 Add closing bracket (#473) --- docs/python-sdk/overview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/python-sdk/overview.md b/docs/python-sdk/overview.md index 98747a67..52a93bb2 100644 --- a/docs/python-sdk/overview.md +++ b/docs/python-sdk/overview.md @@ -94,7 +94,7 @@ In the example given below, we are calling the real-time audio processing servic local_path = r'c:/Users/john/Downloads/business_meeting.mp3' conversation_object = symbl.Audio.process_file( -file_path=local_path +file_path=local_path) ``` From 347add3d2ccd7f8d52f314fc4bc683241105c722 Mon Sep 17 00:00:00 2001 From: warunawijesinhaarachchige <100723638+warunawijesinhaarachchige@users.noreply.github.com> Date: Tue, 12 Apr 2022 02:05:24 -0700 Subject: [PATCH 41/43] Python code sample fixed (#463) Python code sample was not working. It is fixed now --- docs/async-api/overview/text/post-text.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/async-api/overview/text/post-text.md b/docs/async-api/overview/text/post-text.md index e64403ab..0dc465ac 100644 --- a/docs/async-api/overview/text/post-text.md +++ b/docs/async-api/overview/text/post-text.md @@ -201,7 +201,7 @@ payload = { "confidenceThreshold": 0.6, # - "detectPhrases": true, + "detectPhrases": "true", # "messages": [ @@ -238,7 +238,7 @@ responses = { 500: 'Something went wrong! Please contact support@symbl.ai' } -response = requests.request("POST", url, headers=headers, data=json.dumps(payload), params=json.dumps(params))) +response = requests.request("POST", url, headers=headers, data=json.dumps(payload)) if response.status_code == 201: # Successful API execution @@ -435,4 +435,4 @@ Here value of `X` can be found in [FAQ](/docs/faq). :::caution You must wait for the job to complete processing before you proceed with getting the Conversation Intelligence. If you immediately make a GET request to Conversation API, it is possible that you'll receive incomplete insights. Therefore, ensure that you wait for the job to complete. -::: \ No newline at end of file +::: From f6a65a1128740092f10c8aaf06891485981b8987 Mon Sep 17 00:00:00 2001 From: pema-s <81958801+pema-s@users.noreply.github.com> Date: Tue, 12 Apr 2022 18:57:35 +0530 Subject: [PATCH 42/43] DC-399 Adds web sdk documentation --- docs/changelog.md | 17 ++ docs/sdk-intro.md | 11 +- ...ve_transcrips_conversation_intelligence.md | 126 ++++++++ docs/web-sdk/introduction.md | 274 ++++++++++++++++++ .../web-sdk/sending_external_audio_streams.md | 42 +++ docs/web-sdk/updating-audio-streaming.md | 20 ++ sidebars.js | 26 +- 7 files changed, 509 insertions(+), 7 deletions(-) create mode 100644 docs/web-sdk/getting_live_transcrips_conversation_intelligence.md create mode 100644 docs/web-sdk/introduction.md create mode 100644 docs/web-sdk/sending_external_audio_streams.md create mode 100644 docs/web-sdk/updating-audio-streaming.md diff --git a/docs/changelog.md b/docs/changelog.md index 1ddf164a..52c1ce0f 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -11,6 +11,22 @@ import TabItem from '@theme/TabItem'; We continuously add new features and enhancements, fix critical bugs, and regularly deploy changes to improve performance. Keep a tab of our latest updates on this page. +### 12 April 2022 + +![sdk](/img/sdk-icon.png)
+- **Availability of a new Web SDK package** that allows you to add Symbl’s Conversation Intelligence into your JavaScript application directly into the browser.
+[Read more here](/docs/web-sdk/overview).

+ #### Known Issues + - When an empty array is passed for `insightTypes` on `createConnection`, users still get those insights available on “ON” handlers for `questions`, `topics`, `action_items`, `follow_ups`. + - Web SDK does not show any errors when users do not pass or use or send invalid(v4 format) `connectionID` to subscribe to existing stream. + - If a user loses network for 30-40 seconds, the WebSocket connection does not recover with `noConnectionTimeout: 900`. + - If 2nd speaker joins the existing stream and passes the tracker object, Streaming API only returns the trackers that were passed by the original speaker. + - When the WebSocket Connection breaks and when the user switches network change from wifi to mobile hotspot, the connection does not recover. + - Web SDK does not handle Safari browser seamlessly. + - `session_modified` hander is not supported. + - Update Element is working for `Linear16` but not for `OPUS`. + + ### 14 March 2022 ![api update](/img/api-update.png) @@ -192,3 +208,4 @@ Availability of parameters with Streaming API for keeping the WebSocket connecti ### [Connect with us on Slack](https://symbldotai.slack.com/join/shared_invite/zt-4sic2s11-D3x496pll8UHSJ89cm78CA#/shared-invite/email) 💬 + diff --git a/docs/sdk-intro.md b/docs/sdk-intro.md index be5b3d8b..9ff538c8 100644 --- a/docs/sdk-intro.md +++ b/docs/sdk-intro.md @@ -22,6 +22,10 @@ Use Symbl's SDKs to directly add Symbl's capabilities onto your web conferencing  
+ + +

Web SDK

+

JavaScript

@@ -31,12 +35,6 @@ Use Symbl's SDKs to directly add Symbl's capabilities onto your web conferencing

Python

- - - -

Web SDK

-
-

C#

@@ -51,3 +49,4 @@ Use Symbl's SDKs to directly add Symbl's capabilities onto your web conferencing --- + diff --git a/docs/web-sdk/getting_live_transcrips_conversation_intelligence.md b/docs/web-sdk/getting_live_transcrips_conversation_intelligence.md new file mode 100644 index 00000000..465b55c5 --- /dev/null +++ b/docs/web-sdk/getting_live_transcrips_conversation_intelligence.md @@ -0,0 +1,126 @@ +--- +id: web-sdk-getting-live-transcripts +title: Getting Live Transcripts and Conversation Intelligence +sidebar_label: Getting Live Transcripts and Conversation Intelligence +slug: /web-sdk/web-sdk-getting-live-transcripts/ +pagination_label: Getting Live Transcripts and Conversation Intelligence +--- +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +--- + +This tutorial provides step-by-step instructions on how to receive live transcripts and Conversation Intelligence such as action items, topics, questions, trackers, and more using the Web SDK. + +### Prerequisites + +Following are the prerequisites for using the Web SDK: + +- **App ID and Secret**: Ensure that you have your API Credentials which are the App ID and App Secret handy. You can get them from the [Symbl Platform](https://platform.symbl.ai/#/login). Alternatively, you can use your access token for authentication as well, see the [Authentication](https://docs.symbl.ai/docs/developer-tools/authentication/) page to learn more. +- **`npm` package manager**: Install the latest version of the `npm` package manager (Version 6.0.0 +). + +See the list of web browsers supported in the [Browsers Supported](/docs/web-sdk/overview/#supported-browsers) section. + +### Step 1: Install the Web SDK +#### Using npm + +Install the Web SDK using npm with the following command: + +```shell +npm i @symblai/symbl-web-sdk@1.0.0-beta.38 +``` +:::note +You must have the latest version of npm package installed. If you don’t have it, run the following commands to get the latest: +```shell +npm install +``` +::: + +### Step 2: Import and Initialize +You can import the Web SDK in ES5 and ES6 syntax using the following code: + + + + + +```js +var Symbl = require('@symblai/symbl-web-sdk'); +var symbl = Symbl({ + accesssToken: '' +}); +}); +``` + + + + + +```js +import Symbl from '@symblai/symbl-web-sdk'; +var symbl = Symbl({ + accesssToken: '' +}); + +``` + + + +To initialize the Web SDK, you can pass in an access token generated using [Symbl’s Authentication mechanism](https://docs.symbl.ai/docs/developer-tools/authentication/). Alternatively, you can use the App ID and App Secret from the [Symbl Platform](https://platform.symbl.ai). Using the App ID and App Secret is not meant for production usage, as those are meant be secret. + +```js +const symbl = new Symbl(({ + appId: '', + appSecret: '', + // accessToken: '', // Can be used instead of appId and appSecret + // basePath: '',// optional + // logLevel: 'debug' // Sets which log level you want to view +}); +``` +### Step 3: Set Configuration and Start Connection +The code below shows the configuration as well as the Streaming API functions that will enable you to start live connection and receive Conversation Intelligence: + +```js +const connectionConfig = { + disconnectOnStopRequest: false, + disconnectOnStopRequestTimeout: 1800, + noConnectionTimeout: 900, + insightTypes: ["follow_up", "action_item"], + config: { + meetingTitle: "Mic Test", // Name for meeting + confidenceThreshold: 0.7, //Minimum confidence score set for the API to consider an insight as valid. + timezoneOffset: 480, // Offset in minutes from UTC + languageCode: "en-US", + + encoding: "OPUS",// Also supports LINEAR16 + sampleRateHertz: 48000 // Rate of the incoming audio stream. Make sure the correct sample rate is provided for best results + }, + trackers: [{ + name: "Promotion Mention", // Name of the Tracker + vocabulary: ["We have a special promotion going on", "We have a sale right now on", "offer"] // Words or phrases that should be tracked + }], + speaker: { + userId: "john@example.com", // Unique identifier of the speaker + name: "john" + } +} + +const connection = await symbl.createConnection(id) //this creates connection with streaming API + +await connection.startProcessing(connectionConfig) //this starts processing +``` +#### Configuration Parameters +You can pass any of the following `config` parameters: + +Field | Required | Supported value | Default Value | Description +---------- | ------- | ------- | ------- | ------- | +```confidenceThreshold``` | Optional | >=0.5 to <=1.0 | 0.5 | Minimum confidence score that you can set for an API to consider it as valid insight. The minimum confidence score should be in the range >=0.5 to <=1 (greater than or equal to `0.5` and less than or equal to `1.0`.). Default value is `0.5`. +```speechRecognition``` | Optional | | | See Speech Recognition details on the [Speech Recognition](https://docs.symbl.ai/docs/streaming-api/api-reference/#speech-recognition) section. +```meetingTitle``` | Optional | | | The name of the meeting. + +For more information, read the [Request Parameters](https://docs.symbl.ai/docs/streaming-api/api-reference/#request-parameters) section of the Streaming API. diff --git a/docs/web-sdk/introduction.md b/docs/web-sdk/introduction.md new file mode 100644 index 00000000..4fae30d1 --- /dev/null +++ b/docs/web-sdk/introduction.md @@ -0,0 +1,274 @@ +--- +id: web-sdk +title: Symbl Web SDK +sidebar_label: Introduction +slug: /web-sdk/overview/ +pagination_label: Web SDK +--- +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +--- + +The Web SDK allows you to add Symbl’s Conversation Intelligence into your JavaScript application directly into the browser. It provides a pre-defined set of classes for easy utilization of our APIs. + +:::info +The Web SDK is currently available with Symbl’s Streaming and Subscribe APIs. +::: + +### Supported Browsers +The following web browser supported with the Web SDK are given below: + +Operating System | Chrome | Edge | Firefox | Brave| ------ +---------- | ------- | ------- | ------ +macOS | ✅ | ✅ | ✅ | - | +Windows | ✅ | ✅ | ✅ | ✅ | +Linux| ✅ | - | ✅ | - | + +:::caution note +Currently, the support for Safari browser is not available. +::: + +### Supported Languages +- JavaScript +- TypeScript + +### Prerequisites + +Following are the prerequisites for using the Web SDK: + +- **App ID and Secret**: Ensure that you have your API Credentials which are the App ID and App Secret handy. You can get them from the [Symbl Platform](https://platform.symbl.ai/#/login). Alternatively, you can use your access token for authentication as well, see the [Authentication](https://docs.symbl.ai/docs/developer-tools/authentication/) page to learn more. +- **`npm` package manager**: Install the latest version of the `npm` package manager (Version 6.0.0 +). + +### Installation + +**Using npm** + +Install the Web SDK using `npm` with the following command: + +```shell +npm i @symblai/symbl-web-sdk +``` + +:::note +You must have the latest version of npm package installed. If you don’t have it, run the following commands to get the latest: +```shell +npm install +``` +::: + +### Initialization +To initialize the Web SDK, you can pass in an access token generated using [Symbl’s Authentication method](https://docs.symbl.ai/docs/developer-tools/authentication/). Alternatively, you can use the App ID and App Secret from the [Symbl Platform](https://platform.symbl.ai). Using the App ID and App Secret is not meant for production usage, as those are meant be secret. + + +The code given below initializes the Web SDK: + +```js +await symbl.init({ + accessToken: '' + // appId: '', // Should only be used for development environment + // appSecret: '', // Should only be used for development environment + // basePath: '',// optional + // logLevel: 'debug' // Sets which log level you want to view +}); +``` +You can import the Web SDK in ES5 and ES6 syntax: + + + + + +```js +var Symbl = require('@symblai/symbl-web-sdk'); +var symbl = Symbl({ + accesssToken: '' +}); +}); +``` + + + + + +```js +import Symbl from '@symblai/symbl-web-sdk'; +var symbl = Symbl({ + accesssToken: '' +}); + +``` + + + +### Configuration + +The following code shows an example configuration for Web SDK. All fields are optional: + +```js +{ + disconnectOnStopRequest: false, + disconnectOnStopRequestTimeout: 1800, + noConnectionTimeout: 900, + insightTypes: ["follow_up", "action_item"], + config: { + meetingTitle: "Mic Test", // Name for meeting + confidenceThreshold: 0.7, //Minimum confidence score set for the API to consider an insight as valid. + timezoneOffset: 480, // Offset in minutes from UTC + languageCode: "en-US", + encoding: "OPUS",// Also supports LINEAR16 + sampleRateHertz: 48000 // Rate of the incoming audio stream. Make sure the correct sample rate is provided for best results + }, + trackers: [{ + name: "Promotion Mention", // Name of the Tracker + vocabulary: ["We have a special promotion going on", "We have a sale right now on", "offer"] // Words or phrases that should be tracked + }], + speaker: { + userId: "john@example.com", // Unique identifier of the speaker + name: "john" + } +} +``` + + +#### Configuration Parameters +You can pass any of the following `config` parameters: + +Field | Required | Supported value | Default Value | Description +---------- | ------- | ------- | ------- | ------- | +```confidenceThreshold``` | Optional | >=0.5 to <=1.0 | 0.5 | Minimum confidence score that you can set for an API to consider it as valid insight. The minimum confidence score should be in the range >=0.5 to <=1 (greater than or equal to `0.5` and less than or equal to `1.0`.). Default value is `0.5`. +```speechRecognition``` | Optional | | | See Speech Recognition details on the [Speech Recognition](https://docs.symbl.ai/docs/streaming-api/api-reference/#speech-recognition) section. +```meetingTitle``` | Optional | | | The name of the meeting. + +For more information, read the [Request Parameters](https://docs.symbl.ai/docs/streaming-api/api-reference/#request-parameters) section of the Streaming API. + +### Usage +You can use the Web SDK to perform the following capabilities. These capabilities are Streaming API: + +#### Open a New Connection +To create a new connection, call the function createConnection. If no userId is passed, a UUID is generated for you. After the connection is successful, the connected callback is fired. + +```js +const connection = await symbl.createConnection(userId); +``` + +#### Start Processing Audio Data +Once a connection is established, you can start processing the audio data by calling the function startProcessing, as shown below. By default, startProcessing will connect your default audio input device to Symbl and start processing audio. startProcessing takes connectionConfig which is the same config defined in the Configuration section. + +```js +await connection.startProcessing(connectionConfig); +``` + +#### - Open a New Connection and Start Processing +If you want to skip multiple steps, and open a new connection and start processing audio in one go, you can make use of the `createAndStartNewConnection` as shown below. This takes `connectionConfig` which is the same `config` defined in the [Configuration](#configuration) section. + +```js +const connection = await symbl.createAndStartNewConnection(connectionConfig); +``` + +#### Stop Processing Audio + +To stop processing audio, use the `connection.stopProcessing()` method, as shown below. This puts the connection back into non-processing mode. If the `disconnectOnStopRequest` config is `false`, the connection can be started again later. If not, a new connection has to be made. + +```js +await connection.stopProcessing(); +``` + +#### Close a Connection +To disconnect from the WebSocket permanently, call the function connection.disconnect as shown below. This will completely sever the connection and if you wish to establish the connection again, a new one would have to be created. + +```js +await connection.disconnect(); +``` + +#### Create a Hello World Application +To create a simple “Hello World” application with Symbl Web SDK, use the code given below: + +```js +import { Symbl } from "@symblai/symbl-web-sdk"; + +try { + const symbl = new Symbl(); + await symbl.init({ + appId: '', + appSecret: '', + }); + + const connection = await symbl.createConnection(); + await connection.startProcessing({ + config: { + encoding: "OPUS" + } + }); + + await symbl.wait(10000); + + await connection.stopProcessing(); + await connection.disconect(); +} catch(e) { + // Handle errors here. +} +``` + +#### Subscribe to Stream +You can subscribe to an on-going stream and get live transcripts and Conversation insights with `subscribeToConnection(id)` as shown below. You must have the conversation ID to subscribe to a stream: + +```js +const subscription = await symbl.subscribeToConnection(id); +``` +#### Disconnect from Stream +To stop subscribing to events, you can disconnect from the Subscribe object using the code given below. You will not be able to see the transcription and insights once the stream is disconnected. + +```js +await subscription.disconnect() +``` + +### Events +The `on` method available with the connection and subscription objects (example, `connection.on` and `subscription.on` allows you to listen to data from the Streaming API. + +```js +connection.on("topic", (topicData) => { + // Callback logic here +}); + +connection.on("disconnected", () => { + alert("User has been disconnected") +}); +``` + +Listeners can be enabled for the following events: + +| Event | Description | Code Snippet | +| --------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `connected` | When the WebSocket connection is successfully established. | `connection.on("connected", (data) => {            console.log("connected", data);});` | +| `disconnected` | When the WebSocket connection is disconnected. | `connection.on("disconnected", (data) => {          console.log("disconnected", data);});` | +| `started_listening` | Started listening to input device. | `connection.on("started\_listening", (data) => {     console.log("started\_listening", data);});` | +| `stopped_listening` | Stopped listening to input device. | `connection.on("stopped\_listening", (data) => {      console.log("stopped\_listening", data);});` | +| `processing_started` | Audio data processing successfully started. | `connection.on("processing\_started", (data) => {     console.log("processing\_started", data);});` | +| `processing_stopped` | Audio data processing stopped. | `connection.on("processing\_stopped", (data) => {       console.log("processing\_stopped", data);       });` | +| `conversation_created` | Conversation is created and an ID is generated. | `connection.on("conversation\_created", (data) => {          console.log("conversation\_created", data); }); ` | +| `conversation_completed` | Conversation is ended. | `connection.on("conversation\_completed", (data) => {           console.log("conversation\_completed", data);});` | +| `error` | Errors recorded when there are potential anti-patterns or non-recommended coding. | `window.addEventListener("error", (data) => {console.log("error", data);});` | +| `speech_recognition` | When data is being transferred between the client and server | `connection.on("speech\_recognition", (data) => {             console.log("speech\_recognition", data);             console.log(data.punctuated.transcript);});` | +| message | When the message object is detected. | `connection.on("message", (data) => {             console.log("message", data);});` | +| `topic` | When topics are detected. | `connection.on("topic", (data) => { console.log("topic", data);});` | +| `tracker` | When Trackers are detected. | `connection.on("tracker", (data) => { console.log("tracker", data);}); ` | +| `action_item` | When Action Items are detected. | `connection.on("action\_item", (data) => { console.log("action\_item", data); });` | +| `follow_up` | When follow-ups are detected. | `connection.on("follow\_up", (data) => { console.log("follow\_up", data);});` | +| `question` | When questions are detected. | `connection.on("question", (data) => { console.log("question", data);});` | +| `audio_source_connected` | The audio source is connected to Symbl. | `connection.audioStream.on('audio\_source\_connected', (data) => { console.log('audio\_source\_connected', data);});` | +| `audio_source_disconnected` | The audio source is connected. | `connection.audioStream.on("audio\_source\_disconnected", (data) => {console.log("audio\_source\_disconnected", data);});` | +| `audio_source_changed` | A new default device is detected | `connection.audioStream.on(“audio\_source\_changed”, () => {});` | +### Known Issues + +In this version of the Web SDK, a few Known Issues have been observed. You can see the complete list of Known Issues [here](/docs/changelog/#known-issues). +### Read more + +- [Getting Live Transcripts and Conversation Intelligence](/docs/web-sdk/web-sdk-getting-live-transcripts/) +- [Sending external Audio Streams](/docs/web-sdk/web-sdk-sending-external-audio-streams/) +- [Updating Audio Source Mid-Stream](/docs/web-sdk/web-sdk-updating-audio-streams/) diff --git a/docs/web-sdk/sending_external_audio_streams.md b/docs/web-sdk/sending_external_audio_streams.md new file mode 100644 index 00000000..692231b5 --- /dev/null +++ b/docs/web-sdk/sending_external_audio_streams.md @@ -0,0 +1,42 @@ +--- +id: web-sdk-sending-external-audio-streams +title: Sending external Audio Streams +sidebar_label: Sending external Audio Streams +slug: /web-sdk/web-sdk-sending-external-audio-streams/ +pagination_label: Sending external Audio Streams +--- +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +--- + +You can send a custom external audio source or audio stream using the `AudioStream` interface. The `AudioStream` represents a stream of audio that performs various operations depending on the Audio Stream’s configuration provided. + +:::info +The Web SDK supports the following Audio codecs with the sample rates as mentioned below: +- `Linear16` - At sample rates of 8000 Hertz, 16000 Hertz, 24000 Hertz, 441000 Hertz, 48000 Hertz. +- `Opus` - At sample rates of 8000 Hertz, 16000 Hertz, 24000 Hertz, and 48000 Hertz. +If you mention the `AudioStream` without specifying the sample rate, then the default sample rate of 48000 Hertz is considered. +::: + +Use the code given below to send custom audio stream externally: + +```js +import { OpusAudioStream, LINEAR16AudioStream } from "@symblai/symbl-web-sdk"; + +const stream = await navigator.mediaDevices.getUserMedia({ +audio: true, +video: false, +}); +const context = new AudioContext(); +const sourceNode = context.createMediaStreamSource(stream); +const audioStream = new OpusAudioStream(sourceNode); +// const audioStream = new LINEAR16AudioStream(sourceNode); // For LINEAR16 encoding + +const connection = await symbl.createAndStartNewConnection(config, audioStream); +``` + +#### Using AudioContext +The `AudioStream` creates a new instance of [AudioContext](https://developer.mozilla.org/en-US/docs/Web/API/AudioContext) to create the audio processing. The `AudioContext` interface represents an audio-processing graph built from audio modules linked together, each represented by an [AudioNode](https://developer.mozilla.org/en-US/docs/Web/API/AudioNode). The `AudioContext` initializes the `AudioStream` to use an externally maintained or initialized `AudioContext` in the browser. + + diff --git a/docs/web-sdk/updating-audio-streaming.md b/docs/web-sdk/updating-audio-streaming.md new file mode 100644 index 00000000..bf6b9bea --- /dev/null +++ b/docs/web-sdk/updating-audio-streaming.md @@ -0,0 +1,20 @@ +--- +id: web-sdk-updating-audio-streams +title: Updating Audio Source Mid-Stream +sidebar_label: Updating Audio Source Mid-Stream +slug: /web-sdk/web-sdk-updating-audio-streams/ +pagination_label: Updating Audio Source Mid-Stream +--- +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +--- + +## Updating Audio Source Mid-Stream +You can update an audio source during a live stream by using the `updateAudioDevice` method. This method allows you to change devices mid-stream (i.e., laptop microphone to the headset microphone) without stopping or closing the connection. +Use the code given below to achieve this: + +```js +audioStream.updateAudioDevice(deviceId); +``` + diff --git a/sidebars.js b/sidebars.js index 71399776..df4dc71b 100644 --- a/sidebars.js +++ b/sidebars.js @@ -551,6 +551,23 @@ SDKsidebar: [{ id: "sdk-intro", type: "doc", }, + { + label: "Web SDK", + type: "category", + collapsed: false, + items: [ + 'web-sdk/web-sdk', + { + type: 'category', + label: 'Streaming API', + items: [ + 'web-sdk/web-sdk-getting-live-transcripts', + 'web-sdk/web-sdk-sending-external-audio-streams', + 'web-sdk/web-sdk-updating-audio-streams', + ], + }, + ] +}, { label: "Javascript SDK", collapsed: false, @@ -725,6 +742,14 @@ ChangelogSidebar: [{ id: "changelog", type: "doc", }, +{ + type: 'doc', + id: 'changelog', + customProps: { + hash: '#12-april-2022', + label: '12 April 2022', + } +}, { type: 'doc', id: 'changelog', @@ -921,4 +946,3 @@ ChangelogSidebar: [{ }, ], }; - From 5585c2a047610f6ef0b51d1acccf319b8c628af4 Mon Sep 17 00:00:00 2001 From: avoliva Date: Tue, 12 Apr 2022 11:33:45 -0700 Subject: [PATCH 43/43] Fix issue with intro. --- docs/web-sdk/introduction.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/web-sdk/introduction.md b/docs/web-sdk/introduction.md index 4fae30d1..91879561 100644 --- a/docs/web-sdk/introduction.md +++ b/docs/web-sdk/introduction.md @@ -19,14 +19,15 @@ The Web SDK is currently available with Symbl’s Streaming and Subscribe APIs. ### Supported Browsers The following web browser supported with the Web SDK are given below: -Operating System | Chrome | Edge | Firefox | Brave| ------ +Operating System | Chrome | Edge | Firefox | Safari | ------ ---------- | ------- | ------- | ------ -macOS | ✅ | ✅ | ✅ | - | -Windows | ✅ | ✅ | ✅ | ✅ | -Linux| ✅ | - | ✅ | - | +macOS | ✅ | - | ✅ | - | ✅ +Windows | ✅ | ✅ | ✅ | | ✅ +Linux| ✅ | - | ✅ | - | - + :::caution note -Currently, the support for Safari browser is not available. +Currently, the OPUS encoder support in Safari browser is not available. ::: ### Supported Languages @@ -85,11 +86,10 @@ You can import the Web SDK in ES5 and ES6 syntax: ```js -var Symbl = require('@symblai/symbl-web-sdk'); -var symbl = Symbl({ +const {Symbl} = require('@symblai/symbl-web-sdk'); +const symbl = Symbl({ accesssToken: '' }); -}); ``` @@ -97,8 +97,8 @@ var symbl = Symbl({ ```js -import Symbl from '@symblai/symbl-web-sdk'; -var symbl = Symbl({ +import { Symbl } from '@symblai/symbl-web-sdk'; +const symbl = Symbl({ accesssToken: '' }); @@ -115,7 +115,7 @@ The following code shows an example configuration for Web SDK. All fields are op disconnectOnStopRequest: false, disconnectOnStopRequestTimeout: 1800, noConnectionTimeout: 900, - insightTypes: ["follow_up", "action_item"], + insightTypes: ["follow_up", "action_item", "question"], config: { meetingTitle: "Mic Test", // Name for meeting confidenceThreshold: 0.7, //Minimum confidence score set for the API to consider an insight as valid.